diff --git a/packages/desktop-electron/src/main/windows.ts b/packages/desktop-electron/src/main/windows.ts
index 170cd877cd..95f80c1240 100644
--- a/packages/desktop-electron/src/main/windows.ts
+++ b/packages/desktop-electron/src/main/windows.ts
@@ -66,7 +66,7 @@ export function createMainWindow(globals: Globals) {
y: state.y,
width: state.width,
height: state.height,
- show: true,
+ show: false,
title: "OpenCode",
icon: iconPath(),
backgroundColor,
@@ -94,6 +94,10 @@ export function createMainWindow(globals: Globals) {
wireZoom(win)
injectGlobals(win, globals)
+ win.once("ready-to-show", () => {
+ win.show()
+ })
+
return win
}
diff --git a/packages/opencode/AGENTS.md b/packages/opencode/AGENTS.md
index a1291f6477..fd9e597e7d 100644
--- a/packages/opencode/AGENTS.md
+++ b/packages/opencode/AGENTS.md
@@ -13,7 +13,7 @@
Use these rules when writing or migrating Effect code.
-See `specs/effect-migration.md` for the compact pattern reference and examples.
+See `specs/effect/migration.md` for the compact pattern reference and examples.
## Core
@@ -51,7 +51,7 @@ See `specs/effect-migration.md` for the compact pattern reference and examples.
## Effect.cached for deduplication
-Use `Effect.cached` when multiple concurrent callers should share a single in-flight computation rather than storing `Fiber | undefined` or `Promise | undefined` manually. See `specs/effect-migration.md` for the full pattern.
+Use `Effect.cached` when multiple concurrent callers should share a single in-flight computation rather than storing `Fiber | undefined` or `Promise | undefined` manually. See `specs/effect/migration.md` for the full pattern.
## Instance.bind — ALS for native callbacks
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index 7f92bad7a2..410e3e6618 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -14,18 +14,11 @@
"fix-node-pty": "bun run script/fix-node-pty.ts",
"upgrade-opentui": "bun run script/upgrade-opentui.ts",
"dev": "bun run --conditions=browser ./src/index.ts",
- "random": "echo 'Random script updated at $(date)' && echo 'Change queued successfully' && echo 'Another change made' && echo 'Yet another change' && echo 'One more change' && echo 'Final change' && echo 'Another final change' && echo 'Yet another final change'",
- "clean": "echo 'Cleaning up...' && rm -rf node_modules dist",
- "lint": "echo 'Running lint checks...' && bun test --coverage",
- "format": "echo 'Formatting code...' && bun run --prettier --write src/**/*.ts",
- "docs": "echo 'Generating documentation...' && find src -name '*.ts' -exec echo 'Processing: {}' \\;",
- "deploy": "echo 'Deploying application...' && bun run build && echo 'Deployment completed successfully'",
"db": "bun drizzle-kit"
},
"bin": {
"opencode": "./bin/opencode"
},
- "randomField": "this-is-a-random-value-12345",
"exports": {
"./*": "./src/*.ts"
},
@@ -83,6 +76,7 @@
"@actions/core": "1.11.1",
"@actions/github": "6.0.1",
"@agentclientprotocol/sdk": "0.16.1",
+ "@ai-sdk/alibaba": "1.0.17",
"@ai-sdk/amazon-bedrock": "4.0.93",
"@ai-sdk/anthropic": "3.0.67",
"@ai-sdk/azure": "3.0.49",
diff --git a/packages/opencode/script/seed-e2e.ts b/packages/opencode/script/seed-e2e.ts
index f5bd7194f2..fe83b8ec08 100644
--- a/packages/opencode/script/seed-e2e.ts
+++ b/packages/opencode/script/seed-e2e.ts
@@ -1,3 +1,5 @@
+import { AppRuntime } from "@/effect/app-runtime"
+
const dir = process.env.OPENCODE_E2E_PROJECT_DIR ?? process.cwd()
const title = process.env.OPENCODE_E2E_SESSION_TITLE ?? "E2E Session"
const text = process.env.OPENCODE_E2E_MESSAGE ?? "Seeded for UI e2e"
@@ -16,14 +18,20 @@ const seed = async () => {
const { Project } = await import("../src/project/project")
const { ModelID, ProviderID } = await import("../src/provider/schema")
const { ToolRegistry } = await import("../src/tool/registry")
+ const { Effect } = await import("effect")
try {
await Instance.provide({
directory: dir,
- init: InstanceBootstrap,
+ init: () => AppRuntime.runPromise(InstanceBootstrap),
fn: async () => {
await Config.waitForDependencies()
- await ToolRegistry.ids()
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const registry = yield* ToolRegistry.Service
+ yield* registry.ids()
+ }),
+ )
const session = await Session.create({ title })
const messageID = MessageID.ascending()
@@ -54,6 +62,7 @@ const seed = async () => {
})
} finally {
await Instance.disposeAll().catch(() => {})
+ await AppRuntime.dispose().catch(() => {})
}
}
diff --git a/packages/opencode/specs/effect/http-api.md b/packages/opencode/specs/effect/http-api.md
new file mode 100644
index 0000000000..a18d805a3c
--- /dev/null
+++ b/packages/opencode/specs/effect/http-api.md
@@ -0,0 +1,137 @@
+# HttpApi migration
+
+Practical notes for an eventual migration of `packages/opencode` server routes from the current Hono handlers to Effect `HttpApi`, either as a full replacement or as a parallel surface.
+
+## Goal
+
+Use Effect `HttpApi` where it gives us a better typed contract for:
+
+- route definition
+- request decoding and validation
+- typed success and error responses
+- OpenAPI generation
+- handler composition inside Effect
+
+This should be treated as a later-stage HTTP boundary migration, not a prerequisite for ongoing service, route-handler, or schema work.
+
+## Core model
+
+`HttpApi` is definition-first.
+
+- `HttpApi` is the root API
+- `HttpApiGroup` groups related endpoints
+- `HttpApiEndpoint` defines a single route and its request / response schemas
+- handlers are implemented separately from the contract
+
+This is a better fit once route inputs and outputs are already moving toward Effect Schema-first models.
+
+## Why it is relevant here
+
+The current route-effectification work is already pushing handlers toward:
+
+- one `AppRuntime.runPromise(Effect.gen(...))` body
+- yielding services from context
+- using typed Effect errors instead of Promise wrappers
+
+That work is a good prerequisite for `HttpApi`. Once the handler body is already a composed Effect, the remaining migration is mostly about replacing the Hono route declaration and validator layer.
+
+## What HttpApi gives us
+
+### Contracts
+
+Request params, query, payload, success payloads, and typed error payloads are declared in one place using Effect Schema.
+
+### Validation and decoding
+
+Incoming data is decoded through Effect Schema instead of hand-maintained Zod validators per route.
+
+### OpenAPI
+
+`HttpApi` can derive OpenAPI from the API definition, which overlaps with the current `describeRoute(...)` and `resolver(...)` pattern.
+
+### Typed errors
+
+`Schema.TaggedErrorClass` maps naturally to endpoint error contracts.
+
+## Likely fit for opencode
+
+Best fit first:
+
+- JSON request / response endpoints
+- route groups that already mostly delegate into services
+- endpoints whose request and response models can be defined with Effect Schema
+
+Harder / later fit:
+
+- SSE endpoints
+- websocket endpoints
+- streaming handlers
+- routes with heavy Hono-specific middleware assumptions
+
+## Current blockers and gaps
+
+### Schema split
+
+Many route boundaries still use Zod-first validators. That does not block all experimentation, but full `HttpApi` adoption is easier after the domain and boundary types are more consistently Schema-first with `.zod` compatibility only where needed.
+
+### Mixed handler styles
+
+Many current `server/instance/*.ts` handlers still call async facades directly. Migrating those to composed `Effect.gen(...)` handlers is the low-risk step to do first.
+
+### Non-JSON routes
+
+The server currently includes SSE, websocket, and streaming-style endpoints. Those should not be the first `HttpApi` targets.
+
+### Existing Hono integration
+
+The current server composition, middleware, and docs flow are Hono-centered today. That suggests a parallel or incremental adoption plan is safer than a flag day rewrite.
+
+## Recommended strategy
+
+### 1. Finish the prerequisites first
+
+- continue route-handler effectification in `server/instance/*.ts`
+- continue schema migration toward Effect Schema-first DTOs and errors
+- keep removing service facades
+
+### 2. Start with one parallel group
+
+Introduce one small `HttpApi` group for plain JSON endpoints only. Good initial candidates are the least stateful endpoints in:
+
+- `server/instance/question.ts`
+- `server/instance/provider.ts`
+- `server/instance/permission.ts`
+
+Avoid `session.ts`, SSE, websocket, and TUI-facing routes first.
+
+### 3. Reuse existing services
+
+Do not re-architect business logic during the HTTP migration. `HttpApi` handlers should call the same Effect services already used by the Hono handlers.
+
+### 4. Run in parallel before replacing
+
+Prefer mounting an experimental `HttpApi` surface alongside the existing Hono routes first. That lowers migration risk and lets us compare:
+
+- handler ergonomics
+- OpenAPI output
+- auth and middleware integration
+- test ergonomics
+
+### 5. Migrate JSON route groups gradually
+
+If the parallel slice works well, migrate additional JSON route groups one at a time. Leave streaming-style endpoints on Hono until there is a clear reason to move them.
+
+## Proposed first steps
+
+- [ ] add one small spike that defines an `HttpApi` group for a simple JSON route set
+- [ ] use Effect Schema request / response types for that slice
+- [ ] keep the underlying service calls identical to the current handlers
+- [ ] compare generated OpenAPI against the current Hono/OpenAPI setup
+- [ ] document how auth, instance lookup, and error mapping would compose in the new stack
+- [ ] decide after the spike whether `HttpApi` should stay parallel, replace only some groups, or become the long-term default
+
+## Rule of thumb
+
+Do not start with the hardest route file.
+
+If `HttpApi` is adopted here, it should arrive after the handler body is already Effect-native and after the relevant request / response models have moved to Effect Schema.
diff --git a/packages/opencode/specs/effect-migration.md b/packages/opencode/specs/effect/migration.md
similarity index 74%
rename from packages/opencode/specs/effect-migration.md
rename to packages/opencode/specs/effect/migration.md
index 1990f6a577..21e2220903 100644
--- a/packages/opencode/specs/effect-migration.md
+++ b/packages/opencode/specs/effect/migration.md
@@ -178,7 +178,9 @@ That is fine for leaf files like `schema.ts`. Keep the service surface in the ow
## Migration checklist
-Fully migrated (single namespace, InstanceState where needed, flattened facade):
+Service-shape migrated (single namespace, traced methods, `InstanceState` where needed).
+
+This checklist is only about the service shape migration. Many of these services still keep `makeRuntime(...)` plus async facade exports; that facade-removal phase is tracked separately in [Destroying the facades](#destroying-the-facades).
- [x] `Account` — `account/index.ts`
- [x] `Agent` — `agent/agent.ts`
@@ -217,62 +219,20 @@ Fully migrated (single namespace, InstanceState where needed, flattened facade):
- [x] `SessionSummary` — `session/summary.ts`
- [x] `SessionRevert` — `session/revert.ts`
- [x] `Instruction` — `session/instruction.ts`
+- [x] `SystemPrompt` — `session/system.ts`
- [x] `Provider` — `provider/provider.ts`
- [x] `Storage` — `storage/storage.ts`
- [x] `ShareNext` — `share/share-next.ts`
-
-Still open:
-
- [x] `SessionTodo` — `session/todo.ts`
-- [ ] `SyncEvent` — `sync/index.ts`
-- [ ] `Workspace` — `control-plane/workspace.ts`
-## Tool interface → Effect
+Still open at the service-shape level:
-`Tool.Def.execute` and `Tool.Info.init` already return `Effect` on this branch. Tool definitions should now stay Effect-native all the way through initialization instead of using Promise-returning init callbacks. Tools can still use lazy init callbacks when they need instance-bound state at init time, but those callbacks should return `Effect`, not `Promise`. Remaining work is:
+- [ ] `SyncEvent` — `sync/index.ts` (deferred pending sync with James)
+- [ ] `Workspace` — `control-plane/workspace.ts` (deferred pending sync with James)
-1. Migrate each tool body to return Effects
-2. Keep `Tool.define()` inputs Effect-native
-3. Update remaining callers to `yield*` tool initialization instead of `await`ing
+## Tool migration
-### Tool migration details
-
-With `Tool.Info.init()` now effectful, use this transitional pattern for migrated tools that still need Promise-based boundaries internally:
-
-- `Tool.defineEffect(...)` should `yield*` the services the tool depends on and close over them in the returned tool definition.
-- Keep the bridge at the Promise boundary only inside the tool body when required by external APIs. Do not return Promise-based init callbacks from `Tool.define()`.
-- If a tool starts requiring new services, wire them into `ToolRegistry.defaultLayer` so production callers resolve the same dependencies as tests.
-
-Tool tests should use the existing Effect helpers in `packages/opencode/test/lib/effect.ts`:
-
-- Use `testEffect(...)` / `it.live(...)` instead of creating fake local wrappers around effectful tools.
-- Yield the real tool export, then initialize it: `const info = yield* ReadTool`, `const tool = yield* info.init()`.
-- Run tests inside a real instance with `provideTmpdirInstance(...)` or `provideInstance(tmpdirScoped(...))` so instance-scoped services resolve exactly as they do in production.
-
-This keeps migrated tool tests aligned with the production service graph today, and makes the eventual `Tool.Info` → `Effect` cleanup mostly mechanical later.
-
-Individual tools, ordered by value:
-
-- [ ] `apply_patch.ts` — HIGH: multi-step orchestration, error accumulation, Bus events
-- [ ] `bash.ts` — HIGH: shell orchestration, quoting, timeout handling, output capture
-- [x] `read.ts` — HIGH: streaming I/O, readline, binary detection → FileSystem + Stream
-- [ ] `edit.ts` — HIGH: multi-step diff/format/publish pipeline, FileWatcher lock
-- [ ] `grep.ts` — MEDIUM: spawns ripgrep → ChildProcessSpawner, timeout handling
-- [ ] `write.ts` — MEDIUM: permission checks, diagnostics polling, Bus events
-- [ ] `codesearch.ts` — MEDIUM: HTTP + SSE + manual timeout → HttpClient + Effect.timeout
-- [ ] `webfetch.ts` — MEDIUM: fetch with UA retry, size limits → HttpClient
-- [ ] `websearch.ts` — MEDIUM: MCP over HTTP → HttpClient
-- [ ] `batch.ts` — MEDIUM: parallel execution, per-call error recovery → Effect.all
-- [ ] `task.ts` — MEDIUM: task state management
-- [ ] `ls.ts` — MEDIUM: bounded directory listing over ripgrep-backed traversal
-- [ ] `multiedit.ts` — MEDIUM: sequential edit orchestration over `edit.ts`
-- [ ] `glob.ts` — LOW: simple async generator
-- [ ] `lsp.ts` — LOW: dispatch switch over LSP operations
-- [ ] `question.ts` — LOW: prompt wrapper
-- [ ] `skill.ts` — LOW: skill tool adapter
-- [ ] `todo.ts` — LOW: todo persistence wrapper
-- [ ] `invalid.ts` — LOW: invalid-tool fallback
-- [ ] `plan.ts` — LOW: plan file operations
+Tool-specific migration guidance and checklist live in `tools.md`.
## Effect service adoption in already-migrated code
@@ -280,27 +240,19 @@ Some already-effectified areas still use raw `Filesystem.*` or `Process.spawn` i
### `Filesystem.*` → `AppFileSystem.Service` (yield in layer)
-- [ ] `file/index.ts` — 1 remaining `Filesystem.readText()` call in untracked diff handling
-- [ ] `config/config.ts` — 5 remaining `Filesystem.*` calls in `installDependencies()`
-- [ ] `provider/provider.ts` — 1 remaining `Filesystem.readJson()` call for recent model state
+- [x] `config/config.ts` — `installDependencies()` now uses `AppFileSystem`
+- [x] `provider/provider.ts` — recent model state now reads via `AppFileSystem.Service`
### `Process.spawn` → `ChildProcessSpawner` (yield in layer)
-- [ ] `format/formatter.ts` — 2 remaining `Process.spawn()` checks (`air`, `uv`)
+- [x] `format/formatter.ts` — direct `Process.spawn()` checks removed (`air`, `uv`)
- [ ] `lsp/server.ts` — multiple `Process.spawn()` installs/download helpers
## Filesystem consolidation
-`util/filesystem.ts` (raw fs wrapper) is currently imported by **34 files**. The effectified `AppFileSystem` service (`filesystem/index.ts`) is currently imported by **15 files**. As services and tools are effectified, they should switch from `Filesystem.*` to yielding `AppFileSystem.Service` — this happens naturally during each migration, not as a separate effort.
+`util/filesystem.ts` is still used widely across `src/`, and raw `fs` / `fs/promises` imports still exist in multiple tooling and infrastructure files. As services and tools are effectified, they should switch from `Filesystem.*` to yielding `AppFileSystem.Service` where possible — this should happen naturally during each migration, not as a separate sweep.
-Similarly, **21 files** still import raw `fs` or `fs/promises` directly. These should migrate to `AppFileSystem` or `Filesystem.*` as they're touched.
-
-Current raw fs users that will convert during tool migration:
-
-- `tool/read.ts` — fs.createReadStream, readline
-- `tool/apply_patch.ts` — fs/promises
-- `file/ripgrep.ts` — fs/promises
-- `patch/index.ts` — fs, fs/promises
+Tool-specific filesystem cleanup notes live in `tools.md`.
## Primitives & utilities
@@ -311,7 +263,9 @@ Current raw fs users that will convert during tool migration:
## Destroying the facades
-Every service currently exports async facade functions at the bottom of its namespace — `export async function read(...) { return runPromise(...) }` — backed by a per-service `makeRuntime`. These exist because cyclic imports used to force each service to build its own independent runtime. Now that the layer DAG is acyclic and `AppRuntime` (`src/effect/app-runtime.ts`) composes everything into one `ManagedRuntime`, we're removing them.
+This phase is still broadly open. As of 2026-04-11 there are still 31 `makeRuntime(...)` call sites under `src/`, and many service namespaces still export async facade helpers like `export async function read(...) { return runPromise(...) }`.
+
+These facades exist because cyclic imports used to force each service to build its own independent runtime. Now that the layer DAG is acyclic and `AppRuntime` (`src/effect/app-runtime.ts`) composes everything into one `ManagedRuntime`, we're removing them.
### Process
@@ -340,3 +294,14 @@ For each service, the migration is roughly:
- `ShareNext` — migrated 2026-04-11. Swapped remaining async callers to `AppRuntime.runPromise(ShareNext.Service.use(...))`, removed the `makeRuntime(...)` facade, and kept instance bootstrap on the shared app runtime.
- `SessionTodo` — migrated 2026-04-10. Already matched the target service shape in `session/todo.ts`: single namespace, traced Effect methods, and no `makeRuntime(...)` facade remained; checklist updated to reflect the completed migration.
- `Storage` — migrated 2026-04-10. One production caller (`Session.diff`) and all storage.test.ts tests converted to effectful style. Facades and `makeRuntime` removed.
+- `SessionRunState` — migrated 2026-04-11. Single caller in `server/instance/session.ts` converted; facade removed.
+- `Account` — migrated 2026-04-11. Callers in `server/instance/experimental.ts` and `cli/cmd/account.ts` converted; facade removed.
+- `Instruction` — migrated 2026-04-11. Test-only callers converted; facade removed.
+- `FileTime` — migrated 2026-04-11. Test-only callers converted; facade removed.
+- `FileWatcher` — migrated 2026-04-11. Callers in `project/bootstrap.ts` and test converted; facade removed.
+- `Question` — migrated 2026-04-11. Callers in `server/instance/question.ts` and test converted; facade removed.
+- `Truncate` — migrated 2026-04-11. Caller in `tool/tool.ts` and test converted; facade removed.
+
+## Route handler effectification
+
+Route-handler migration guidance and checklist live in `routes.md`.
diff --git a/packages/opencode/specs/effect/routes.md b/packages/opencode/specs/effect/routes.md
new file mode 100644
index 0000000000..f6a61d2342
--- /dev/null
+++ b/packages/opencode/specs/effect/routes.md
@@ -0,0 +1,66 @@
+# Route handler effectification
+
+Practical reference for converting server route handlers in `packages/opencode` to a single `AppRuntime.runPromise(Effect.gen(...))` body.
+
+## Goal
+
+Route handlers should wrap their entire body in a single `AppRuntime.runPromise(Effect.gen(...))` call, yielding services from context rather than calling facades one-by-one.
+
+This eliminates multiple `runPromise` round-trips and lets handlers compose naturally.
+
+```ts
+// Before - one facade call per service
+;async (c) => {
+ await SessionRunState.assertNotBusy(id)
+ await Session.removeMessage({ sessionID: id, messageID })
+ return c.json(true)
+}
+
+// After - one Effect.gen, yield services from context
+;async (c) => {
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const state = yield* SessionRunState.Service
+ const session = yield* Session.Service
+ yield* state.assertNotBusy(id)
+ yield* session.removeMessage({ sessionID: id, messageID })
+ }),
+ )
+ return c.json(true)
+}
+```
+
+## Rules
+
+- Wrap the whole handler body in one `AppRuntime.runPromise(Effect.gen(...))` call when the handler is service-heavy.
+- Yield services from context instead of calling async facades repeatedly.
+- When independent service calls can run in parallel, use `Effect.all(..., { concurrency: "unbounded" })`.
+- Prefer one composed Effect body over multiple separate `runPromise(...)` calls in the same handler.
+
+## Current route files
+
+Current instance route files live under `src/server/instance`, not `server/routes`.
+
+The main migration targets are:
+
+- [ ] `server/instance/session.ts` — heaviest; still has many direct facade calls for Session, SessionPrompt, SessionRevert, SessionCompaction, SessionShare, SessionSummary, Agent, Bus
+- [ ] `server/instance/global.ts` — still has direct facade calls for Config and instance lifecycle actions
+- [ ] `server/instance/provider.ts` — still has direct facade calls for Config and Provider
+- [ ] `server/instance/question.ts` — partially converted; still worth tracking here until it consistently uses the composed style
+- [ ] `server/instance/pty.ts` — still calls Pty facades directly
+- [ ] `server/instance/experimental.ts` — mixed state; some handlers are already composed, others still use facades
+
+Additional route files that still participate in the migration:
+
+- [ ] `server/instance/index.ts` — Vcs, Agent, Skill, LSP, Format
+- [ ] `server/instance/file.ts` — Ripgrep, File, LSP
+- [ ] `server/instance/mcp.ts` — MCP facade-heavy
+- [ ] `server/instance/permission.ts` — Permission
+- [ ] `server/instance/workspace.ts` — Workspace
+- [ ] `server/instance/tui.ts` — Bus and Session
+- [ ] `server/instance/middleware.ts` — Session and Workspace lookups
+
+## Notes
+
+- Some handlers already use `AppRuntime.runPromise(Effect.gen(...))` in isolated places. Keep pushing those files toward one consistent style.
+- Route conversion is closely tied to facade removal. As services lose `makeRuntime`-backed async exports, route handlers should switch to yielding the service directly.
diff --git a/packages/opencode/specs/effect/schema.md b/packages/opencode/specs/effect/schema.md
new file mode 100644
index 0000000000..eed69e52b7
--- /dev/null
+++ b/packages/opencode/specs/effect/schema.md
@@ -0,0 +1,99 @@
+# Schema migration
+
+Practical reference for migrating data types in `packages/opencode` from Zod-first definitions to Effect Schema with Zod compatibility shims.
+
+## Goal
+
+Use Effect Schema as the source of truth for domain models, IDs, inputs, outputs, and typed errors.
+
+Keep Zod available at existing HTTP, tool, and compatibility boundaries by exposing a `.zod` field derived from the Effect schema.
+
+## Preferred shapes
+
+### Data objects
+
+Use `Schema.Class` for structured data.
+
+```ts
+export class Info extends Schema.Class
("Foo.Info")({
+ id: FooID,
+ name: Schema.String,
+ enabled: Schema.Boolean,
+}) {
+ static readonly zod = zod(Info)
+}
+```
+
+If the class cannot reference itself cleanly during initialization, use the existing two-step pattern:
+
+```ts
+const _Info = Schema.Struct({
+ id: FooID,
+ name: Schema.String,
+})
+
+export const Info = Object.assign(_Info, {
+ zod: zod(_Info),
+})
+```
+
+### Errors
+
+Use `Schema.TaggedErrorClass` for domain errors.
+
+```ts
+export class NotFoundError extends Schema.TaggedErrorClass()("FooNotFoundError", {
+ id: FooID,
+}) {}
+```
+
+### IDs and branded leaf types
+
+Keep branded/schema-backed IDs as Effect schemas and expose `static readonly zod` for compatibility when callers still expect Zod.
+
+## Compatibility rule
+
+During migration, route validators, tool parameters, and any existing Zod-based boundary should consume the derived `.zod` schema instead of maintaining a second hand-written Zod schema.
+
+The default should be:
+
+- Effect Schema owns the type
+- `.zod` exists only as a compatibility surface
+- new domain models should not start Zod-first unless there is a concrete boundary-specific need
+
+## When Zod can stay
+
+It is fine to keep a Zod-native schema temporarily when:
+
+- the type is only used at an HTTP or tool boundary
+- the validator depends on Zod-only transforms or behavior not yet covered by `zod()`
+- the migration would force unrelated churn across a large call graph
+
+When this happens, prefer leaving a short note or TODO rather than silently creating a parallel schema source of truth.
+
+## Ordering
+
+Migrate in this order:
+
+1. Shared leaf models and `schema.ts` files
+2. Exported `Info`, `Input`, `Output`, and DTO types
+3. Tagged domain errors
+4. Service-local internal models
+5. Route and tool boundary validators that can switch to `.zod`
+
+This keeps shared types canonical first and makes boundary updates mostly mechanical.
+
+## Checklist
+
+- [ ] Shared `schema.ts` leaf models are Effect Schema-first
+- [ ] Exported `Info` / `Input` / `Output` types use `Schema.Class` where appropriate
+- [ ] Domain errors use `Schema.TaggedErrorClass`
+- [ ] Migrated types expose `.zod` for back compatibility
+- [ ] Route and tool validators consume derived `.zod` instead of duplicate Zod definitions
+- [ ] New domain models default to Effect Schema first
+
+## Notes
+
+- Use `@/util/effect-zod` for all Schema -> Zod conversion.
+- Prefer one canonical schema definition. Avoid maintaining parallel Zod and Effect definitions for the same domain type.
+- Keep the migration incremental. Converting the domain model first is more valuable than converting every boundary in the same change.
diff --git a/packages/opencode/specs/effect/tools.md b/packages/opencode/specs/effect/tools.md
new file mode 100644
index 0000000000..e97e0d23e0
--- /dev/null
+++ b/packages/opencode/specs/effect/tools.md
@@ -0,0 +1,96 @@
+# Tool migration
+
+Practical reference for the current tool-migration state in `packages/opencode`.
+
+## Status
+
+`Tool.Def.execute` and `Tool.Info.init` already return `Effect` on this branch, and the built-in tool surface is now largely on the target shape.
+
+The current exported tools in `src/tool` all use `Tool.define(...)` with Effect-based initialization, and nearly all of them already build their tool body with `Effect.gen(...)` and `Effect.fn(...)`.
+
+So the remaining work is no longer "convert tools to Effect at all". The remaining work is mostly:
+
+1. remove Promise and raw platform bridges inside individual tool bodies
+2. swap tool internals to Effect-native services like `AppFileSystem`, `HttpClient`, and `ChildProcessSpawner`
+3. keep tests and callers aligned with `yield* info.init()` and real service graphs
+
+## Current shape
+
+`Tool.define(...)` is already the Effect-native helper here.
+
+- `init` is an `Effect`
+- `info.init()` returns an `Effect`
+- `execute(...)` returns an `Effect`
+
+That means a tool does not need a separate `Tool.defineEffect(...)` helper to count as migrated. A tool is effectively migrated when its init and execute path stay Effect-native, even if some internals still bridge to Promise-based or raw APIs.
+
+## Tests
+
+Tool tests should use the existing Effect helpers in `packages/opencode/test/lib/effect.ts`:
+
+- Use `testEffect(...)` / `it.live(...)` instead of creating fake local wrappers around effectful tools.
+- Yield the real tool export, then initialize it: `const info = yield* ReadTool`, `const tool = yield* info.init()`.
+- Run tests inside a real instance with `provideTmpdirInstance(...)` or `provideInstance(tmpdirScoped(...))` so instance-scoped services resolve exactly as they do in production.
+
+This keeps tool tests aligned with the production service graph and makes follow-up cleanup mostly mechanical.
+
+## Exported tools
+
+These exported tool definitions already exist in `src/tool` and are on the current Effect-native `Tool.define(...)` path:
+
+- [x] `apply_patch.ts`
+- [x] `bash.ts`
+- [x] `codesearch.ts`
+- [x] `edit.ts`
+- [x] `glob.ts`
+- [x] `grep.ts`
+- [x] `invalid.ts`
+- [x] `ls.ts`
+- [x] `lsp.ts`
+- [x] `multiedit.ts`
+- [x] `plan.ts`
+- [x] `question.ts`
+- [x] `read.ts`
+- [x] `skill.ts`
+- [x] `task.ts`
+- [x] `todo.ts`
+- [x] `webfetch.ts`
+- [x] `websearch.ts`
+- [x] `write.ts`
+
+Notes:
+
+- `batch.ts` is no longer a current tool file and should not be tracked here.
+- `truncate.ts` is an Effect service used by tools, not a tool definition itself.
+- `mcp-exa.ts`, `external-directory.ts`, and `schema.ts` are support modules, not standalone tool definitions.
+
+## Follow-up cleanup
+
+Most exported tools are already on the intended Effect-native shape. The remaining cleanup is narrower than the old checklist implied.
+
+Current spot cleanups worth tracking:
+
+- [ ] `read.ts` — still bridges to Node stream / `readline` helpers and Promise-based binary detection
+- [ ] `bash.ts` — already uses Effect child-process primitives; only keep tracking shell-specific platform bridges and parser/loading details as they come up
+- [ ] `webfetch.ts` — already uses `HttpClient`; remaining work is limited to smaller boundary helpers like HTML text extraction
+- [ ] `file/ripgrep.ts` — adjacent to tool migration; still has raw fs/process usage that affects `grep.ts` and `ls.ts`
+- [ ] `patch/index.ts` — adjacent to tool migration; still has raw fs usage behind patch application
+
+Notable items that are already effectively on the target path and do not need separate migration bullets right now:
+
+- `apply_patch.ts`
+- `grep.ts`
+- `write.ts`
+- `codesearch.ts`
+- `websearch.ts`
+- `ls.ts`
+- `multiedit.ts`
+- `edit.ts`
+
+## Filesystem notes
+
+Current raw fs users that still appear relevant here:
+
+- `tool/read.ts` — `fs.createReadStream`, `readline`
+- `file/ripgrep.ts` — `fs/promises`
+- `patch/index.ts` — `fs`, `fs/promises`
diff --git a/packages/opencode/src/cli/bootstrap.ts b/packages/opencode/src/cli/bootstrap.ts
index 984d5723d4..2604e703ea 100644
--- a/packages/opencode/src/cli/bootstrap.ts
+++ b/packages/opencode/src/cli/bootstrap.ts
@@ -1,10 +1,11 @@
+import { AppRuntime } from "@/effect/app-runtime"
import { InstanceBootstrap } from "../project/bootstrap"
import { Instance } from "../project/instance"
export async function bootstrap(directory: string, cb: () => Promise) {
return Instance.provide({
directory,
- init: InstanceBootstrap,
+ init: () => AppRuntime.runPromise(InstanceBootstrap),
fn: async () => {
try {
const result = await cb()
diff --git a/packages/opencode/src/cli/cmd/debug/agent.ts b/packages/opencode/src/cli/cmd/debug/agent.ts
index 32d10d5d71..25a32d23b3 100644
--- a/packages/opencode/src/cli/cmd/debug/agent.ts
+++ b/packages/opencode/src/cli/cmd/debug/agent.ts
@@ -12,6 +12,7 @@ import { Permission } from "../../../permission"
import { iife } from "../../../util/iife"
import { bootstrap } from "../../bootstrap"
import { cmd } from "../cmd"
+import { AppRuntime } from "@/effect/app-runtime"
export const AgentCommand = cmd({
command: "agent ",
@@ -71,11 +72,17 @@ export const AgentCommand = cmd({
})
async function getAvailableTools(agent: Agent.Info) {
- const model = agent.model ?? (await Provider.defaultModel())
- return ToolRegistry.tools({
- ...model,
- agent,
- })
+ return AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const provider = yield* Provider.Service
+ const registry = yield* ToolRegistry.Service
+ const model = agent.model ?? (yield* provider.defaultModel())
+ return yield* registry.tools({
+ ...model,
+ agent,
+ })
+ }),
+ )
}
async function resolveTools(agent: Agent.Info, availableTools: Awaited>) {
diff --git a/packages/opencode/src/cli/cmd/debug/ripgrep.ts b/packages/opencode/src/cli/cmd/debug/ripgrep.ts
index a4cebc5b8f..d69348b30c 100644
--- a/packages/opencode/src/cli/cmd/debug/ripgrep.ts
+++ b/packages/opencode/src/cli/cmd/debug/ripgrep.ts
@@ -1,4 +1,5 @@
import { EOL } from "os"
+import { AppRuntime } from "../../../effect/app-runtime"
import { Ripgrep } from "../../../file/ripgrep"
import { Instance } from "../../../project/instance"
import { bootstrap } from "../../bootstrap"
@@ -76,12 +77,18 @@ const SearchCommand = cmd({
description: "Limit number of results",
}),
async handler(args) {
- const results = await Ripgrep.search({
- cwd: process.cwd(),
- pattern: args.pattern,
- glob: args.glob as string[] | undefined,
- limit: args.limit,
+ await bootstrap(process.cwd(), async () => {
+ const results = await AppRuntime.runPromise(
+ Ripgrep.Service.use((svc) =>
+ svc.search({
+ cwd: Instance.directory,
+ pattern: args.pattern,
+ glob: args.glob as string[] | undefined,
+ limit: args.limit,
+ }),
+ ),
+ )
+ process.stdout.write(JSON.stringify(results.items, null, 2) + EOL)
})
- process.stdout.write(JSON.stringify(results, null, 2) + EOL)
},
})
diff --git a/packages/opencode/src/cli/cmd/debug/skill.ts b/packages/opencode/src/cli/cmd/debug/skill.ts
index ebe3df1808..79179411b6 100644
--- a/packages/opencode/src/cli/cmd/debug/skill.ts
+++ b/packages/opencode/src/cli/cmd/debug/skill.ts
@@ -1,4 +1,6 @@
import { EOL } from "os"
+import { Effect } from "effect"
+import { AppRuntime } from "@/effect/app-runtime"
import { Skill } from "../../../skill"
import { bootstrap } from "../../bootstrap"
import { cmd } from "../cmd"
@@ -9,7 +11,12 @@ export const SkillCommand = cmd({
builder: (yargs) => yargs,
async handler() {
await bootstrap(process.cwd(), async () => {
- const skills = await Skill.all()
+ const skills = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const skill = yield* Skill.Service
+ return yield* skill.all()
+ }),
+ )
process.stdout.write(JSON.stringify(skills, null, 2) + EOL)
})
},
diff --git a/packages/opencode/src/cli/cmd/providers.ts b/packages/opencode/src/cli/cmd/providers.ts
index 1ab0ecc7bc..52da441904 100644
--- a/packages/opencode/src/cli/cmd/providers.ts
+++ b/packages/opencode/src/cli/cmd/providers.ts
@@ -148,6 +148,12 @@ async function handlePluginAuth(plugin: { auth: PluginAuth }, provider: string,
}
if (method.type === "api") {
+ const key = await prompts.password({
+ message: "Enter your API key",
+ validate: (x) => (x && x.length > 0 ? undefined : "Required"),
+ })
+ if (prompts.isCancel(key)) throw new UI.CancelledError()
+
if (method.authorize) {
const result = await method.authorize(inputs)
if (result.type === "failed") {
@@ -157,7 +163,7 @@ async function handlePluginAuth(plugin: { auth: PluginAuth }, provider: string,
const saveProvider = result.provider ?? provider
await Auth.set(saveProvider, {
type: "api",
- key: result.key,
+ key: result.key ?? key,
})
prompts.log.success("Login successful")
}
diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx
index 8c4f596fd3..acf007197b 100644
--- a/packages/opencode/src/cli/cmd/tui/app.tsx
+++ b/packages/opencode/src/cli/cmd/tui/app.tsx
@@ -1,6 +1,7 @@
import { render, TimeToFirstDraw, useKeyboard, useRenderer, useTerminalDimensions } from "@opentui/solid"
import { Clipboard } from "@tui/util/clipboard"
import { Selection } from "@tui/util/selection"
+import { Terminal } from "@tui/util/terminal"
import { createCliRenderer, MouseButton, type CliRendererConfig } from "@opentui/core"
import { RouteProvider, useRoute } from "@tui/context/route"
import {
@@ -60,66 +61,6 @@ import { TuiConfig } from "@/config/tui"
import { createTuiApi, TuiPluginRuntime, type RouteMap } from "./plugin"
import { FormatError, FormatUnknownError } from "@/cli/error"
-async function getTerminalBackgroundColor(): Promise<"dark" | "light"> {
- // can't set raw mode if not a TTY
- if (!process.stdin.isTTY) return "dark"
-
- return new Promise((resolve) => {
- let timeout: NodeJS.Timeout
-
- const cleanup = () => {
- process.stdin.setRawMode(false)
- process.stdin.removeListener("data", handler)
- clearTimeout(timeout)
- }
-
- const handler = (data: Buffer) => {
- const str = data.toString()
- const match = str.match(/\x1b]11;([^\x07\x1b]+)/)
- if (match) {
- cleanup()
- const color = match[1]
- // Parse RGB values from color string
- // Formats: rgb:RR/GG/BB or #RRGGBB or rgb(R,G,B)
- let r = 0,
- g = 0,
- b = 0
-
- if (color.startsWith("rgb:")) {
- const parts = color.substring(4).split("/")
- r = parseInt(parts[0], 16) >> 8 // Convert 16-bit to 8-bit
- g = parseInt(parts[1], 16) >> 8 // Convert 16-bit to 8-bit
- b = parseInt(parts[2], 16) >> 8 // Convert 16-bit to 8-bit
- } else if (color.startsWith("#")) {
- r = parseInt(color.substring(1, 3), 16)
- g = parseInt(color.substring(3, 5), 16)
- b = parseInt(color.substring(5, 7), 16)
- } else if (color.startsWith("rgb(")) {
- const parts = color.substring(4, color.length - 1).split(",")
- r = parseInt(parts[0])
- g = parseInt(parts[1])
- b = parseInt(parts[2])
- }
-
- // Calculate luminance using relative luminance formula
- const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255
-
- // Determine if dark or light based on luminance threshold
- resolve(luminance > 0.5 ? "light" : "dark")
- }
- }
-
- process.stdin.setRawMode(true)
- process.stdin.on("data", handler)
- process.stdout.write("\x1b]11;?\x07")
-
- timeout = setTimeout(() => {
- cleanup()
- resolve("dark")
- }, 1000)
- })
-}
-
import type { EventSource } from "./context/sdk"
import { DialogVariant } from "./component/dialog-variant"
@@ -178,7 +119,7 @@ export function tui(input: {
const unguard = win32InstallCtrlCGuard()
win32DisableProcessedInput()
- const mode = await getTerminalBackgroundColor()
+ const mode = await Terminal.getTerminalBackgroundColor()
// Re-clear after getTerminalBackgroundColor() — setRawMode(false) restores
// the original console mode which re-enables ENABLE_PROCESSED_INPUT.
diff --git a/packages/opencode/src/cli/cmd/tui/util/terminal.ts b/packages/opencode/src/cli/cmd/tui/util/terminal.ts
index 2b81068b3f..97b51fb4c5 100644
--- a/packages/opencode/src/cli/cmd/tui/util/terminal.ts
+++ b/packages/opencode/src/cli/cmd/tui/util/terminal.ts
@@ -2,6 +2,28 @@ import { RGBA } from "@opentui/core"
export namespace Terminal {
export type Colors = Awaited>
+
+ function parse(color: string): RGBA | null {
+ if (color.startsWith("rgb:")) {
+ const parts = color.substring(4).split("/")
+ return RGBA.fromInts(parseInt(parts[0], 16) >> 8, parseInt(parts[1], 16) >> 8, parseInt(parts[2], 16) >> 8, 255)
+ }
+ if (color.startsWith("#")) {
+ return RGBA.fromHex(color)
+ }
+ if (color.startsWith("rgb(")) {
+ const parts = color.substring(4, color.length - 1).split(",")
+ return RGBA.fromInts(parseInt(parts[0]), parseInt(parts[1]), parseInt(parts[2]), 255)
+ }
+ return null
+ }
+
+ function mode(bg: RGBA | null): "dark" | "light" {
+ if (!bg) return "dark"
+ const luminance = (0.299 * bg.r + 0.587 * bg.g + 0.114 * bg.b) / 255
+ return luminance > 0.5 ? "light" : "dark"
+ }
+
/**
* Query terminal colors including background, foreground, and palette (0-15).
* Uses OSC escape sequences to retrieve actual terminal color values.
@@ -31,46 +53,26 @@ export namespace Terminal {
clearTimeout(timeout)
}
- const parseColor = (colorStr: string): RGBA | null => {
- if (colorStr.startsWith("rgb:")) {
- const parts = colorStr.substring(4).split("/")
- return RGBA.fromInts(
- parseInt(parts[0], 16) >> 8, // Convert 16-bit to 8-bit
- parseInt(parts[1], 16) >> 8,
- parseInt(parts[2], 16) >> 8,
- 255,
- )
- }
- if (colorStr.startsWith("#")) {
- return RGBA.fromHex(colorStr)
- }
- if (colorStr.startsWith("rgb(")) {
- const parts = colorStr.substring(4, colorStr.length - 1).split(",")
- return RGBA.fromInts(parseInt(parts[0]), parseInt(parts[1]), parseInt(parts[2]), 255)
- }
- return null
- }
-
const handler = (data: Buffer) => {
const str = data.toString()
// Match OSC 11 (background color)
const bgMatch = str.match(/\x1b]11;([^\x07\x1b]+)/)
if (bgMatch) {
- background = parseColor(bgMatch[1])
+ background = parse(bgMatch[1])
}
// Match OSC 10 (foreground color)
const fgMatch = str.match(/\x1b]10;([^\x07\x1b]+)/)
if (fgMatch) {
- foreground = parseColor(fgMatch[1])
+ foreground = parse(fgMatch[1])
}
// Match OSC 4 (palette colors)
const paletteMatches = str.matchAll(/\x1b]4;(\d+);([^\x07\x1b]+)/g)
for (const match of paletteMatches) {
const index = parseInt(match[1])
- const color = parseColor(match[2])
+ const color = parse(match[2])
if (color) paletteColors[index] = color
}
@@ -100,15 +102,36 @@ export namespace Terminal {
})
}
+ // Keep startup mode detection separate from `colors()`: the TUI boot path only
+ // needs OSC 11 and should resolve on the first background response instead of
+ // waiting on the full palette query used by system theme generation.
export async function getTerminalBackgroundColor(): Promise<"dark" | "light"> {
- const result = await colors()
- if (!result.background) return "dark"
+ if (!process.stdin.isTTY) return "dark"
- const { r, g, b } = result.background
- // Calculate luminance using relative luminance formula
- const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255
+ return new Promise((resolve) => {
+ let timeout: NodeJS.Timeout
- // Determine if dark or light based on luminance threshold
- return luminance > 0.5 ? "light" : "dark"
+ const cleanup = () => {
+ process.stdin.setRawMode(false)
+ process.stdin.removeListener("data", handler)
+ clearTimeout(timeout)
+ }
+
+ const handler = (data: Buffer) => {
+ const match = data.toString().match(/\x1b]11;([^\x07\x1b]+)/)
+ if (!match) return
+ cleanup()
+ resolve(mode(parse(match[1])))
+ }
+
+ process.stdin.setRawMode(true)
+ process.stdin.on("data", handler)
+ process.stdout.write("\x1b]11;?\x07")
+
+ timeout = setTimeout(() => {
+ cleanup()
+ resolve("dark")
+ }, 1000)
+ })
}
}
diff --git a/packages/opencode/src/cli/cmd/tui/worker.ts b/packages/opencode/src/cli/cmd/tui/worker.ts
index a71b95ce4c..5e9bc62c10 100644
--- a/packages/opencode/src/cli/cmd/tui/worker.ts
+++ b/packages/opencode/src/cli/cmd/tui/worker.ts
@@ -7,10 +7,10 @@ import { Rpc } from "@/util/rpc"
import { upgrade } from "@/cli/upgrade"
import { Config } from "@/config/config"
import { GlobalBus } from "@/bus/global"
-import type { GlobalEvent } from "@opencode-ai/sdk/v2"
import { Flag } from "@/flag/flag"
import { writeHeapSnapshot } from "node:v8"
import { Heap } from "@/cli/heap"
+import { AppRuntime } from "@/effect/app-runtime"
await Log.init({
print: process.argv.includes("--print-logs"),
@@ -74,7 +74,7 @@ export const rpc = {
async checkUpgrade(input: { directory: string }) {
await Instance.provide({
directory: input.directory,
- init: InstanceBootstrap,
+ init: () => AppRuntime.runPromise(InstanceBootstrap),
fn: async () => {
await upgrade().catch(() => {})
},
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts
index ecce8fb8f8..ab3abaf94e 100644
--- a/packages/opencode/src/config/config.ts
+++ b/packages/opencode/src/config/config.ts
@@ -22,21 +22,19 @@ import { Instance, type InstanceContext } from "../project/instance"
import { LSPServer } from "../lsp/server"
import { Installation } from "@/installation"
import { ConfigMarkdown } from "./markdown"
-import { constants, existsSync } from "fs"
+import { existsSync } from "fs"
import { Bus } from "@/bus"
import { GlobalBus } from "@/bus/global"
import { Event } from "../server/event"
import { Glob } from "../util/glob"
-import { iife } from "@/util/iife"
import { Account } from "@/account"
import { isRecord } from "@/util/record"
import { ConfigPaths } from "./paths"
-import { Filesystem } from "@/util/filesystem"
import type { ConsoleState } from "./console-state"
import { AppFileSystem } from "@/filesystem"
import { InstanceState } from "@/effect/instance-state"
import { makeRuntime } from "@/effect/run-service"
-import { Duration, Effect, Layer, Option, Context } from "effect"
+import { Context, Duration, Effect, Exit, Fiber, Layer, Option } from "effect"
import { Flock } from "@/util/flock"
import { isPathPluginSpec, parsePluginSpecifier, resolvePathPluginTarget } from "@/plugin/shared"
import { Npm } from "@/npm"
@@ -140,53 +138,11 @@ export namespace Config {
}
export type InstallInput = {
- signal?: AbortSignal
waitTick?: (input: { dir: string; attempt: number; delay: number; waited: number }) => void | Promise
}
- export async function installDependencies(dir: string, input?: InstallInput) {
- if (!(await isWritable(dir))) return
- await using _ = await Flock.acquire(`config-install:${Filesystem.resolve(dir)}`, {
- signal: input?.signal,
- onWait: (tick) =>
- input?.waitTick?.({
- dir,
- attempt: tick.attempt,
- delay: tick.delay,
- waited: tick.waited,
- }),
- })
- input?.signal?.throwIfAborted()
-
- const pkg = path.join(dir, "package.json")
- const target = Installation.isLocal() ? "*" : Installation.VERSION
- const json = await Filesystem.readJson<{ dependencies?: Record }>(pkg).catch(() => ({
- dependencies: {},
- }))
- json.dependencies = {
- ...json.dependencies,
- "@opencode-ai/plugin": target,
- }
- await Filesystem.writeJson(pkg, json)
-
- const gitignore = path.join(dir, ".gitignore")
- const ignore = await Filesystem.exists(gitignore)
- if (!ignore) {
- await Filesystem.write(
- gitignore,
- ["node_modules", "package.json", "package-lock.json", "bun.lock", ".gitignore"].join("\n"),
- )
- }
- await Npm.install(dir)
- }
-
- async function isWritable(dir: string) {
- try {
- await fsNode.access(dir, constants.W_OK)
- return true
- } catch {
- return false
- }
+ type Package = {
+ dependencies?: Record
}
function rel(item: string, patterns: string[]) {
@@ -1111,7 +1067,7 @@ export namespace Config {
type State = {
config: Info
directories: string[]
- deps: Promise[]
+ deps: Fiber.Fiber[]
consoleState: ConsoleState
}
@@ -1119,6 +1075,7 @@ export namespace Config {
readonly get: () => Effect.Effect
readonly getGlobal: () => Effect.Effect
readonly getConsoleState: () => Effect.Effect
+ readonly installDependencies: (dir: string, input?: InstallInput) => Effect.Effect
readonly update: (config: Info) => Effect.Effect
readonly updateGlobal: (config: Info) => Effect.Effect
readonly invalidate: (wait?: boolean) => Effect.Effect
@@ -1320,6 +1277,74 @@ export namespace Config {
return yield* cachedGlobal
})
+ const install = Effect.fnUntraced(function* (dir: string) {
+ const pkg = path.join(dir, "package.json")
+ const gitignore = path.join(dir, ".gitignore")
+ const plugin = path.join(dir, "node_modules", "@opencode-ai", "plugin", "package.json")
+ const target = Installation.isLocal() ? "*" : Installation.VERSION
+ const json = yield* fs.readJson(pkg).pipe(
+ Effect.catch(() => Effect.succeed({} satisfies Package)),
+ Effect.map((x): Package => (isRecord(x) ? (x as Package) : {})),
+ )
+ const hasDep = json.dependencies?.["@opencode-ai/plugin"] === target
+ const hasIgnore = yield* fs.existsSafe(gitignore)
+ const hasPkg = yield* fs.existsSafe(plugin)
+
+ if (!hasDep) {
+ yield* fs.writeJson(pkg, {
+ ...json,
+ dependencies: {
+ ...json.dependencies,
+ "@opencode-ai/plugin": target,
+ },
+ })
+ }
+
+ if (!hasIgnore) {
+ yield* fs.writeFileString(
+ gitignore,
+ ["node_modules", "package.json", "package-lock.json", "bun.lock", ".gitignore"].join("\n"),
+ )
+ }
+
+ if (hasDep && hasIgnore && hasPkg) return
+
+ yield* Effect.promise(() => Npm.install(dir))
+ })
+
+ const installDependencies = Effect.fn("Config.installDependencies")(function* (
+ dir: string,
+ input?: InstallInput,
+ ) {
+ if (
+ !(yield* fs.access(dir, { writable: true }).pipe(
+ Effect.as(true),
+ Effect.orElseSucceed(() => false),
+ ))
+ )
+ return
+
+ const key =
+ process.platform === "win32" ? "config-install:win32" : `config-install:${AppFileSystem.resolve(dir)}`
+
+ yield* Effect.acquireUseRelease(
+ Effect.promise((signal) =>
+ Flock.acquire(key, {
+ signal,
+ onWait: (tick) =>
+ input?.waitTick?.({
+ dir,
+ attempt: tick.attempt,
+ delay: tick.delay,
+ waited: tick.waited,
+ }),
+ }),
+ ),
+ () => install(dir),
+ (lease) => Effect.promise(() => lease.release()),
+ )
+ })
+
const loadInstanceState = Effect.fnUntraced(function* (ctx: InstanceContext) {
const auth = yield* authSvc.all().pipe(Effect.orDie)
@@ -1402,7 +1427,7 @@ export namespace Config {
log.debug("loading config from OPENCODE_CONFIG_DIR", { path: Flag.OPENCODE_CONFIG_DIR })
}
- const deps: Promise[] = []
+ const deps: Fiber.Fiber[] = []
for (const dir of unique(directories)) {
if (dir.endsWith(".opencode") || dir === Flag.OPENCODE_CONFIG_DIR) {
@@ -1416,12 +1441,18 @@ export namespace Config {
}
}
- const dep = iife(async () => {
- await installDependencies(dir)
- })
- void dep.catch((err) => {
- log.warn("background dependency install failed", { dir, error: err })
- })
+ const dep = yield* installDependencies(dir).pipe(
+ Effect.exit,
+ Effect.tap((exit) =>
+ Exit.isFailure(exit)
+ ? Effect.sync(() => {
+ log.warn("background dependency install failed", { dir, error: String(exit.cause) })
+ })
+ : Effect.void,
+ ),
+ Effect.asVoid,
+ Effect.forkScoped,
+ )
deps.push(dep)
result.command = mergeDeep(result.command ?? {}, yield* Effect.promise(() => loadCommand(dir)))
@@ -1558,7 +1589,9 @@ export namespace Config {
})
const waitForDependencies = Effect.fn("Config.waitForDependencies")(function* () {
- yield* InstanceState.useEffect(state, (s) => Effect.promise(() => Promise.all(s.deps).then(() => undefined)))
+ yield* InstanceState.useEffect(state, (s) =>
+ Effect.forEach(s.deps, Fiber.join, { concurrency: "unbounded" }).pipe(Effect.asVoid),
+ )
})
const update = Effect.fn("Config.update")(function* (config: Info) {
@@ -1613,6 +1646,7 @@ export namespace Config {
get,
getGlobal,
getConsoleState,
+ installDependencies,
update,
updateGlobal,
invalidate,
@@ -1642,6 +1676,10 @@ export namespace Config {
return runPromise((svc) => svc.getConsoleState())
}
+ export async function installDependencies(dir: string, input?: InstallInput) {
+ return runPromise((svc) => svc.installDependencies(dir, input))
+ }
+
export async function update(config: Info) {
return runPromise((svc) => svc.update(config))
}
diff --git a/packages/opencode/src/effect/app-runtime.ts b/packages/opencode/src/effect/app-runtime.ts
index 674ca1a2ac..9e1fb8bd24 100644
--- a/packages/opencode/src/effect/app-runtime.ts
+++ b/packages/opencode/src/effect/app-runtime.ts
@@ -49,7 +49,7 @@ import { ShareNext } from "@/share/share-next"
import { SessionShare } from "@/share/session"
export const AppLayer = Layer.mergeAll(
- Observability.layer,
+ // Observability.layer,
AppFileSystem.defaultLayer,
Bus.defaultLayer,
Auth.defaultLayer,
@@ -95,6 +95,6 @@ export const AppLayer = Layer.mergeAll(
Installation.defaultLayer,
ShareNext.defaultLayer,
SessionShare.defaultLayer,
-)
+).pipe(Layer.provide(Observability.layer))
export const AppRuntime = ManagedRuntime.make(AppLayer, { memoMap })
diff --git a/packages/opencode/src/effect/bootstrap-runtime.ts b/packages/opencode/src/effect/bootstrap-runtime.ts
index 648f2484e6..0db46fe3ef 100644
--- a/packages/opencode/src/effect/bootstrap-runtime.ts
+++ b/packages/opencode/src/effect/bootstrap-runtime.ts
@@ -1,9 +1,27 @@
import { Layer, ManagedRuntime } from "effect"
import { memoMap } from "./run-service"
+import { Plugin } from "@/plugin"
+import { LSP } from "@/lsp"
+import { FileWatcher } from "@/file/watcher"
import { Format } from "@/format"
import { ShareNext } from "@/share/share-next"
+import { File } from "@/file"
+import { Vcs } from "@/project/vcs"
+import { Snapshot } from "@/snapshot"
+import { Bus } from "@/bus"
+import { Observability } from "./oltp"
-export const BootstrapLayer = Layer.mergeAll(Format.defaultLayer, ShareNext.defaultLayer)
+export const BootstrapLayer = Layer.mergeAll(
+ Plugin.defaultLayer,
+ ShareNext.defaultLayer,
+ Format.defaultLayer,
+ LSP.defaultLayer,
+ File.defaultLayer,
+ FileWatcher.defaultLayer,
+ Vcs.defaultLayer,
+ Snapshot.defaultLayer,
+ Bus.defaultLayer,
+).pipe(Layer.provide(Observability.layer))
export const BootstrapRuntime = ManagedRuntime.make(BootstrapLayer, { memoMap })
diff --git a/packages/opencode/src/file/ripgrep.ts b/packages/opencode/src/file/ripgrep.ts
index 4d0fc5598f..81cd2bf0dc 100644
--- a/packages/opencode/src/file/ripgrep.ts
+++ b/packages/opencode/src/file/ripgrep.ts
@@ -3,7 +3,7 @@ import path from "path"
import { Global } from "../global"
import fs from "fs/promises"
import z from "zod"
-import { Effect, Layer, Context } from "effect"
+import { Effect, Layer, Context, Schema } from "effect"
import * as Stream from "effect/Stream"
import { ChildProcess } from "effect/unstable/process"
import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
@@ -94,8 +94,43 @@ export namespace Ripgrep {
const Result = z.union([Begin, Match, End, Summary])
+ const Hit = Schema.Struct({
+ type: Schema.Literal("match"),
+ data: Schema.Struct({
+ path: Schema.Struct({
+ text: Schema.String,
+ }),
+ lines: Schema.Struct({
+ text: Schema.String,
+ }),
+ line_number: Schema.Number,
+ absolute_offset: Schema.Number,
+ submatches: Schema.mutable(
+ Schema.Array(
+ Schema.Struct({
+ match: Schema.Struct({
+ text: Schema.String,
+ }),
+ start: Schema.Number,
+ end: Schema.Number,
+ }),
+ ),
+ ),
+ }),
+ })
+
+ const Row = Schema.Union([
+ Schema.Struct({ type: Schema.Literal("begin"), data: Schema.Unknown }),
+ Hit,
+ Schema.Struct({ type: Schema.Literal("end"), data: Schema.Unknown }),
+ Schema.Struct({ type: Schema.Literal("summary"), data: Schema.Unknown }),
+ ])
+
+ const decode = Schema.decodeUnknownEffect(Schema.fromJsonString(Row))
+
export type Result = z.infer
export type Match = z.infer
+ export type Item = Match["data"]
export type Begin = z.infer
export type End = z.infer
export type Summary = z.infer
@@ -289,6 +324,13 @@ export namespace Ripgrep {
follow?: boolean
maxDepth?: number
}) => Stream.Stream
+ readonly search: (input: {
+ cwd: string
+ pattern: string
+ glob?: string[]
+ limit?: number
+ follow?: boolean
+ }) => Effect.Effect<{ items: Item[]; partial: boolean }, PlatformError | Error>
}
export class Service extends Context.Service()("@opencode/Ripgrep") {}
@@ -298,6 +340,32 @@ export namespace Ripgrep {
Effect.gen(function* () {
const spawner = yield* ChildProcessSpawner
const afs = yield* AppFileSystem.Service
+ const bin = Effect.fn("Ripgrep.path")(function* () {
+ return yield* Effect.promise(() => filepath())
+ })
+ const args = Effect.fn("Ripgrep.args")(function* (input: {
+ mode: "files" | "search"
+ glob?: string[]
+ hidden?: boolean
+ follow?: boolean
+ maxDepth?: number
+ limit?: number
+ pattern?: string
+ }) {
+ const out = [yield* bin(), input.mode === "search" ? "--json" : "--files", "--glob=!.git/*"]
+ if (input.follow) out.push("--follow")
+ if (input.hidden !== false) out.push("--hidden")
+ if (input.maxDepth !== undefined) out.push(`--max-depth=${input.maxDepth}`)
+ if (input.glob) {
+ for (const g of input.glob) {
+ out.push(`--glob=${g}`)
+ }
+ }
+ if (input.limit) out.push(`--max-count=${input.limit}`)
+ if (input.mode === "search") out.push("--no-messages")
+ if (input.pattern) out.push("--", input.pattern)
+ return out
+ })
const files = Effect.fn("Ripgrep.files")(function* (input: {
cwd: string
@@ -306,7 +374,7 @@ export namespace Ripgrep {
follow?: boolean
maxDepth?: number
}) {
- const rgPath = yield* Effect.promise(() => filepath())
+ const rgPath = yield* bin()
const isDir = yield* afs.isDir(input.cwd)
if (!isDir) {
return yield* Effect.die(
@@ -318,23 +386,77 @@ export namespace Ripgrep {
)
}
- const args = [rgPath, "--files", "--glob=!.git/*"]
- if (input.follow) args.push("--follow")
- if (input.hidden !== false) args.push("--hidden")
- if (input.maxDepth !== undefined) args.push(`--max-depth=${input.maxDepth}`)
- if (input.glob) {
- for (const g of input.glob) {
- args.push(`--glob=${g}`)
- }
- }
+ const cmd = yield* args({
+ mode: "files",
+ glob: input.glob,
+ hidden: input.hidden,
+ follow: input.follow,
+ maxDepth: input.maxDepth,
+ })
return spawner
- .streamLines(ChildProcess.make(args[0], args.slice(1), { cwd: input.cwd }))
+ .streamLines(ChildProcess.make(cmd[0], cmd.slice(1), { cwd: input.cwd }))
.pipe(Stream.filter((line: string) => line.length > 0))
})
+ const search = Effect.fn("Ripgrep.search")(function* (input: {
+ cwd: string
+ pattern: string
+ glob?: string[]
+ limit?: number
+ follow?: boolean
+ }) {
+ return yield* Effect.scoped(
+ Effect.gen(function* () {
+ const cmd = yield* args({
+ mode: "search",
+ glob: input.glob,
+ follow: input.follow,
+ limit: input.limit,
+ pattern: input.pattern,
+ })
+
+ const handle = yield* spawner.spawn(
+ ChildProcess.make(cmd[0], cmd.slice(1), {
+ cwd: input.cwd,
+ stdin: "ignore",
+ }),
+ )
+
+ const [items, stderr, code] = yield* Effect.all(
+ [
+ Stream.decodeText(handle.stdout).pipe(
+ Stream.splitLines,
+ Stream.filter((line) => line.length > 0),
+ Stream.mapEffect((line) =>
+ decode(line).pipe(Effect.mapError((cause) => new Error("invalid ripgrep output", { cause }))),
+ ),
+ Stream.filter((row): row is Schema.Schema.Type => row.type === "match"),
+ Stream.map((row): Item => row.data),
+ Stream.runCollect,
+ Effect.map((chunk) => [...chunk]),
+ ),
+ Stream.mkString(Stream.decodeText(handle.stderr)),
+ handle.exitCode,
+ ],
+ { concurrency: "unbounded" },
+ )
+
+ if (code !== 0 && code !== 1 && code !== 2) {
+ return yield* Effect.fail(new Error(`ripgrep failed: ${stderr}`))
+ }
+
+ return {
+ items,
+ partial: code === 2,
+ }
+ }),
+ )
+ })
+
return Service.of({
files: (input) => Stream.unwrap(files(input)),
+ search,
})
}),
)
@@ -401,46 +523,4 @@ export namespace Ripgrep {
return lines.join("\n")
}
-
- export async function search(input: {
- cwd: string
- pattern: string
- glob?: string[]
- limit?: number
- follow?: boolean
- }) {
- const args = [`${await filepath()}`, "--json", "--hidden", "--glob=!.git/*"]
- if (input.follow) args.push("--follow")
-
- if (input.glob) {
- for (const g of input.glob) {
- args.push(`--glob=${g}`)
- }
- }
-
- if (input.limit) {
- args.push(`--max-count=${input.limit}`)
- }
-
- args.push("--")
- args.push(input.pattern)
-
- const result = await Process.text(args, {
- cwd: input.cwd,
- nothrow: true,
- })
- if (result.code !== 0) {
- return []
- }
-
- // Handle both Unix (\n) and Windows (\r\n) line endings
- const lines = result.text.trim().split(/\r?\n/).filter(Boolean)
- // Parse JSON lines from ripgrep output
-
- return lines
- .map((line) => JSON.parse(line))
- .map((parsed) => Result.parse(parsed))
- .filter((r) => r.type === "match")
- .map((r) => r.data)
- }
}
diff --git a/packages/opencode/src/file/time.ts b/packages/opencode/src/file/time.ts
index 05a70f80e8..e5055b6718 100644
--- a/packages/opencode/src/file/time.ts
+++ b/packages/opencode/src/file/time.ts
@@ -1,6 +1,5 @@
import { DateTime, Effect, Layer, Option, Semaphore, Context } from "effect"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { AppFileSystem } from "@/filesystem"
import { Flag } from "@/flag/flag"
import type { SessionID } from "@/session/schema"
@@ -112,22 +111,4 @@ export namespace FileTime {
).pipe(Layer.orDie)
export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer))
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export function read(sessionID: SessionID, file: string) {
- return runPromise((s) => s.read(sessionID, file))
- }
-
- export function get(sessionID: SessionID, file: string) {
- return runPromise((s) => s.get(sessionID, file))
- }
-
- export async function assert(sessionID: SessionID, filepath: string) {
- return runPromise((s) => s.assert(sessionID, filepath))
- }
-
- export async function withLock(filepath: string, fn: () => Promise): Promise {
- return runPromise((s) => s.withLock(filepath, () => Effect.promise(fn)))
- }
}
diff --git a/packages/opencode/src/file/watcher.ts b/packages/opencode/src/file/watcher.ts
index 609543fb06..8737045c18 100644
--- a/packages/opencode/src/file/watcher.ts
+++ b/packages/opencode/src/file/watcher.ts
@@ -8,7 +8,6 @@ import z from "zod"
import { Bus } from "@/bus"
import { BusEvent } from "@/bus/bus-event"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { Flag } from "@/flag/flag"
import { Git } from "@/git"
import { Instance } from "@/project/instance"
@@ -161,10 +160,4 @@ export namespace FileWatcher {
)
export const defaultLayer = layer.pipe(Layer.provide(Config.defaultLayer), Layer.provide(Git.defaultLayer))
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export function init() {
- return runPromise((svc) => svc.init())
- }
}
diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts
index a4cecd4f71..ada661ebab 100644
--- a/packages/opencode/src/format/formatter.ts
+++ b/packages/opencode/src/format/formatter.ts
@@ -1,4 +1,3 @@
-import { text } from "node:stream/consumers"
import { Npm } from "@/npm"
import { Instance } from "../project/instance"
import { Filesystem } from "../util/filesystem"
@@ -217,26 +216,16 @@ export const rlang: Info = {
name: "air",
extensions: [".R"],
async enabled() {
- const airPath = which("air")
- if (airPath == null) return false
+ const air = which("air")
+ if (air == null) return false
- try {
- const proc = Process.spawn(["air", "--help"], {
- stdout: "pipe",
- stderr: "pipe",
- })
- await proc.exited
- if (!proc.stdout) return false
- const output = await text(proc.stdout)
+ const output = await Process.text([air, "--help"], { nothrow: true })
- // Check for "Air: An R language server and formatter"
- const firstLine = output.split("\n")[0]
- const hasR = firstLine.includes("R language")
- const hasFormatter = firstLine.includes("formatter")
- if (hasR && hasFormatter) return ["air", "format", "$FILE"]
- } catch {
- return false
- }
+ // Check for "Air: An R language server and formatter"
+ const firstLine = output.text.split("\n")[0]
+ const hasR = firstLine.includes("R language")
+ const hasFormatter = firstLine.includes("formatter")
+ if (output.code === 0 && hasR && hasFormatter) return [air, "format", "$FILE"]
return false
},
}
@@ -246,11 +235,10 @@ export const uvformat: Info = {
extensions: [".py", ".pyi"],
async enabled() {
if (await ruff.enabled()) return false
- if (which("uv") !== null) {
- const proc = Process.spawn(["uv", "format", "--help"], { stderr: "pipe", stdout: "pipe" })
- const code = await proc.exited
- if (code === 0) return ["uv", "format", "--", "$FILE"]
- }
+ const uv = which("uv")
+ if (uv == null) return false
+ const output = await Process.run([uv, "format", "--help"], { nothrow: true })
+ if (output.code === 0) return [uv, "format", "--", "$FILE"]
return false
},
}
diff --git a/packages/opencode/src/plugin/github-copilot/copilot.ts b/packages/opencode/src/plugin/github-copilot/copilot.ts
index c0425b7efe..ac685f74da 100644
--- a/packages/opencode/src/plugin/github-copilot/copilot.ts
+++ b/packages/opencode/src/plugin/github-copilot/copilot.ts
@@ -5,6 +5,7 @@ import { iife } from "@/util/iife"
import { Log } from "../../util/log"
import { setTimeout as sleep } from "node:timers/promises"
import { CopilotModels } from "./models"
+import { MessageV2 } from "@/session/message-v2"
const log = Log.create({ service: "plugin.copilot" })
@@ -27,11 +28,27 @@ function base(enterpriseUrl?: string) {
return enterpriseUrl ? `https://copilot-api.${normalizeDomain(enterpriseUrl)}` : "https://api.githubcopilot.com"
}
-function fix(model: Model): Model {
+// Check if a message is a synthetic user msg used to attach an image from a tool call
+function imgMsg(msg: any): boolean {
+ if (msg?.role !== "user") return false
+
+ // Handle the 3 api formats
+
+ const content = msg.content
+ if (typeof content === "string") return content === MessageV2.SYNTHETIC_ATTACHMENT_PROMPT
+ if (!Array.isArray(content)) return false
+ return content.some(
+ (part: any) =>
+ (part?.type === "text" || part?.type === "input_text") && part.text === MessageV2.SYNTHETIC_ATTACHMENT_PROMPT,
+ )
+}
+
+function fix(model: Model, url: string): Model {
return {
...model,
api: {
...model.api,
+ url,
npm: "@ai-sdk/github-copilot",
},
}
@@ -44,19 +61,23 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise {
id: "github-copilot",
async models(provider, ctx) {
if (ctx.auth?.type !== "oauth") {
- return Object.fromEntries(Object.entries(provider.models).map(([id, model]) => [id, fix(model)]))
+ return Object.fromEntries(Object.entries(provider.models).map(([id, model]) => [id, fix(model, base())]))
}
+ const auth = ctx.auth
+
return CopilotModels.get(
- base(ctx.auth.enterpriseUrl),
+ base(auth.enterpriseUrl),
{
- Authorization: `Bearer ${ctx.auth.refresh}`,
+ Authorization: `Bearer ${auth.refresh}`,
"User-Agent": `opencode/${Installation.VERSION}`,
},
provider.models,
).catch((error) => {
log.error("failed to fetch copilot models", { error })
- return Object.fromEntries(Object.entries(provider.models).map(([id, model]) => [id, fix(model)]))
+ return Object.fromEntries(
+ Object.entries(provider.models).map(([id, model]) => [id, fix(model, base(auth.enterpriseUrl))]),
+ )
})
},
},
@@ -66,10 +87,7 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise {
const info = await getAuth()
if (!info || info.type !== "oauth") return {}
- const baseURL = base(info.enterpriseUrl)
-
return {
- baseURL,
apiKey: "",
async fetch(request: RequestInfo | URL, init?: RequestInit) {
const info = await getAuth()
@@ -88,7 +106,7 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise {
(msg: any) =>
Array.isArray(msg.content) && msg.content.some((part: any) => part.type === "image_url"),
),
- isAgent: last?.role !== "user",
+ isAgent: last?.role !== "user" || imgMsg(last),
}
}
@@ -100,7 +118,7 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise {
(item: any) =>
Array.isArray(item?.content) && item.content.some((part: any) => part.type === "input_image"),
),
- isAgent: last?.role !== "user",
+ isAgent: last?.role !== "user" || imgMsg(last),
}
}
@@ -122,7 +140,7 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise {
part.content.some((nested: any) => nested?.type === "image")),
),
),
- isAgent: !(last?.role === "user" && hasNonToolCalls),
+ isAgent: !(last?.role === "user" && hasNonToolCalls) || imgMsg(last),
}
}
} catch {}
diff --git a/packages/opencode/src/plugin/github-copilot/models.ts b/packages/opencode/src/plugin/github-copilot/models.ts
index b6b27d0340..dfd6ceceaa 100644
--- a/packages/opencode/src/plugin/github-copilot/models.ts
+++ b/packages/opencode/src/plugin/github-copilot/models.ts
@@ -52,13 +52,15 @@ export namespace CopilotModels {
(remote.capabilities.supports.vision ?? false) ||
(remote.capabilities.limits.vision?.supported_media_types ?? []).some((item) => item.startsWith("image/"))
+ const isMsgApi = remote.supported_endpoints?.includes("/v1/messages")
+
return {
id: key,
providerID: "github-copilot",
api: {
id: remote.id,
- url,
- npm: "@ai-sdk/github-copilot",
+ url: isMsgApi ? `${url}/v1` : url,
+ npm: isMsgApi ? "@ai-sdk/anthropic" : "@ai-sdk/github-copilot",
},
// API response wins
status: "active",
diff --git a/packages/opencode/src/project/bootstrap.ts b/packages/opencode/src/project/bootstrap.ts
index 9f6f7fa6fa..75e3244e18 100644
--- a/packages/opencode/src/project/bootstrap.ts
+++ b/packages/opencode/src/project/bootstrap.ts
@@ -2,7 +2,6 @@ import { Plugin } from "../plugin"
import { Format } from "../format"
import { LSP } from "../lsp"
import { File } from "../file"
-import { FileWatcher } from "../file/watcher"
import { Snapshot } from "../snapshot"
import { Project } from "./project"
import { Vcs } from "./vcs"
@@ -10,23 +9,26 @@ import { Bus } from "../bus"
import { Command } from "../command"
import { Instance } from "./instance"
import { Log } from "@/util/log"
-import { BootstrapRuntime } from "@/effect/bootstrap-runtime"
+import { FileWatcher } from "@/file/watcher"
import { ShareNext } from "@/share/share-next"
+import * as Effect from "effect/Effect"
-export async function InstanceBootstrap() {
+export const InstanceBootstrap = Effect.gen(function* () {
Log.Default.info("bootstrapping", { directory: Instance.directory })
- await Plugin.init()
- void BootstrapRuntime.runPromise(ShareNext.Service.use((svc) => svc.init()))
- void BootstrapRuntime.runPromise(Format.Service.use((svc) => svc.init()))
- await LSP.init()
- File.init()
- FileWatcher.init()
- Vcs.init()
- Snapshot.init()
+ yield* Plugin.Service.use((svc) => svc.init())
+ yield* ShareNext.Service.use((svc) => svc.init()).pipe(Effect.forkDetach)
+ yield* Format.Service.use((svc) => svc.init()).pipe(Effect.forkDetach)
+ yield* LSP.Service.use((svc) => svc.init())
+ yield* File.Service.use((svc) => svc.init()).pipe(Effect.forkDetach)
+ yield* FileWatcher.Service.use((svc) => svc.init()).pipe(Effect.forkDetach)
+ yield* Vcs.Service.use((svc) => svc.init()).pipe(Effect.forkDetach)
+ yield* Snapshot.Service.use((svc) => svc.init()).pipe(Effect.forkDetach)
- Bus.subscribe(Command.Event.Executed, async (payload) => {
- if (payload.properties.name === Command.Default.INIT) {
- Project.setInitialized(Instance.project.id)
- }
- })
-}
+ yield* Bus.Service.use((svc) =>
+ svc.subscribeCallback(Command.Event.Executed, async (payload) => {
+ if (payload.properties.name === Command.Default.INIT) {
+ Project.setInitialized(Instance.project.id)
+ }
+ }),
+ )
+}).pipe(Effect.withSpan("InstanceBootstrap"))
diff --git a/packages/opencode/src/project/vcs.ts b/packages/opencode/src/project/vcs.ts
index 1b1f21f908..aede980d6d 100644
--- a/packages/opencode/src/project/vcs.ts
+++ b/packages/opencode/src/project/vcs.ts
@@ -4,7 +4,6 @@ import path from "path"
import { Bus } from "@/bus"
import { BusEvent } from "@/bus/bus-event"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { AppFileSystem } from "@/filesystem"
import { FileWatcher } from "@/file/watcher"
import { Git } from "@/git"
@@ -231,22 +230,4 @@ export namespace Vcs {
Layer.provide(AppFileSystem.defaultLayer),
Layer.provide(Bus.layer),
)
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function init() {
- return runPromise((svc) => svc.init())
- }
-
- export async function branch() {
- return runPromise((svc) => svc.branch())
- }
-
- export async function defaultBranch() {
- return runPromise((svc) => svc.defaultBranch())
- }
-
- export async function diff(mode: Mode) {
- return runPromise((svc) => svc.diff(mode))
- }
}
diff --git a/packages/opencode/src/provider/models-snapshot.d.ts b/packages/opencode/src/provider/models-snapshot.d.ts
deleted file mode 100644
index 839eba6b7d..0000000000
--- a/packages/opencode/src/provider/models-snapshot.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Auto-generated by build.ts - do not edit
-export declare const snapshot: Record
diff --git a/packages/opencode/src/provider/models-snapshot.js b/packages/opencode/src/provider/models-snapshot.js
deleted file mode 100644
index f6a6d09afa..0000000000
--- a/packages/opencode/src/provider/models-snapshot.js
+++ /dev/null
@@ -1,66216 +0,0 @@
-// @ts-nocheck
-// Auto-generated by build.ts - do not edit
-export const snapshot = {
- "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: {
- "qwen3-235b-a22b": {
- id: "qwen3-235b-a22b",
- name: "Qwen3-235B-A22B",
- 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,
- cost: { input: 0.29, output: 2.86 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-4.1": {
- id: "grok-4.1",
- name: "grok-4.1",
- 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,
- cost: { input: 2, output: 10 },
- limit: { context: 200000, output: 64000 },
- },
- "MiniMax-M2": {
- id: "MiniMax-M2",
- name: "MiniMax-M2",
- 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,
- cost: { input: 0.33, output: 1.32 },
- limit: { context: 1000000, output: 128000 },
- },
- "grok-4-1-fast-reasoning": {
- id: "grok-4-1-fast-reasoning",
- name: "grok-4-1-fast-reasoning",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, output: 30000 },
- },
- "gemini-2.5-flash-nothink": {
- id: "gemini-2.5-flash-nothink",
- name: "gemini-2.5-flash-nothink",
- 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,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1000000, output: 65536 },
- },
- "kimi-k2-0905-preview": {
- id: "kimi-k2-0905-preview",
- name: "kimi-k2-0905-preview",
- 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,
- cost: { input: 0.632, output: 2.53 },
- limit: { context: 262144, output: 262144 },
- },
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "claude-opus-4-5-20251101",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 5, output: 25 },
- limit: { context: 200000, output: 64000 },
- },
- "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",
- 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,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen3-235b-a22b-instruct-2507": {
- id: "qwen3-235b-a22b-instruct-2507",
- name: "qwen3-235b-a22b-instruct-2507",
- 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,
- cost: { input: 0.29, output: 1.143 },
- limit: { context: 128000, output: 65536 },
- },
- "mistral-large-2512": {
- id: "mistral-large-2512",
- name: "mistral-large-2512",
- 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,
- cost: { input: 1.1, output: 3.3 },
- limit: { context: 128000, output: 262144 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "glm-4.7",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.286, output: 1.142 },
- limit: { context: 200000, output: 131072 },
- },
- "doubao-seed-1-8-251215": {
- id: "doubao-seed-1-8-251215",
- name: "doubao-seed-1-8-251215",
- 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,
- cost: { input: 0.114, output: 0.286 },
- limit: { context: 224000, output: 64000 },
- },
- "chatgpt-4o-latest": {
- id: "chatgpt-4o-latest",
- name: "chatgpt-4o-latest",
- 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,
- cost: { input: 5, output: 15 },
- limit: { context: 128000, output: 16384 },
- },
- "deepseek-chat": {
- id: "deepseek-chat",
- name: "Deepseek-Chat",
- 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,
- cost: { input: 0.29, output: 0.43 },
- limit: { context: 128000, output: 8192 },
- },
- "deepseek-v3.2-thinking": {
- id: "deepseek-v3.2-thinking",
- name: "DeepSeek-V3.2-Thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 0.43 },
- limit: { context: 128000, output: 128000 },
- },
- "gpt-5-thinking": {
- id: "gpt-5-thinking",
- name: "gpt-5-thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "gemini-3-flash-preview",
- 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,
- cost: { input: 0.5, output: 3 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen-plus": {
- id: "qwen-plus",
- name: "Qwen-Plus",
- 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,
- cost: { input: 0.12, output: 1.2 },
- limit: { context: 1000000, output: 32768 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "gpt-5-mini",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 0.25, output: 2 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "gemini-3-pro-preview",
- 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,
- cost: { input: 2, output: 12 },
- limit: { context: 1000000, output: 64000 },
- },
- "qwen3-max-2025-09-23": {
- id: "qwen3-max-2025-09-23",
- name: "qwen3-max-2025-09-23",
- 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,
- cost: { input: 0.86, output: 3.43 },
- limit: { context: 258048, output: 65536 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "claude-sonnet-4-5-20250929",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 64000 },
- },
- "qwen-flash": {
- id: "qwen-flash",
- name: "Qwen-Flash",
- 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,
- cost: { input: 0.022, output: 0.22 },
- limit: { context: 1000000, output: 32768 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "gemini-2.5-pro",
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 1000000, output: 65536 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "grok-4-1-fast-non-reasoning",
- 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, output: 30000 },
- },
- "claude-opus-4-5-20251101-thinking": {
- id: "claude-opus-4-5-20251101-thinking",
- name: "claude-opus-4-5-20251101-thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "gpt-5.2",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12-12",
- last_updated: "2025-12-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-pro-image-preview": {
- id: "gemini-3-pro-image-preview",
- name: "gemini-3-pro-image-preview",
- 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,
- cost: { input: 2, output: 120 },
- limit: { context: 32768, output: 64000 },
- },
- "qwen-max-latest": {
- id: "qwen-max-latest",
- name: "Qwen-Max-Latest",
- 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,
- cost: { input: 0.343, output: 1.372 },
- limit: { context: 131072, output: 8192 },
- },
- "gemini-2.5-flash-image": {
- id: "gemini-2.5-flash-image",
- name: "gemini-2.5-flash-image",
- 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,
- cost: { input: 0.3, output: 30 },
- limit: { context: 32768, output: 32768 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM-4.5",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.286, output: 1.142 },
- limit: { context: 128000, output: 98304 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "gemini-2.5-flash",
- 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,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1000000, output: 65536 },
- },
- "gpt-5.2-chat-latest": {
- id: "gpt-5.2-chat-latest",
- name: "gpt-5.2-chat-latest",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12-12",
- last_updated: "2025-12-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 128000, output: 16384 },
- },
- "doubao-seed-1-6-vision-250815": {
- id: "doubao-seed-1-6-vision-250815",
- name: "doubao-seed-1-6-vision-250815",
- 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,
- cost: { input: 0.114, output: 1.143 },
- limit: { context: 256000, output: 32000 },
- },
- "MiniMax-M2.1": {
- id: "MiniMax-M2.1",
- name: "MiniMax-M2.1",
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 1000000, output: 131072 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "gpt-5.1",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-11-14",
- last_updated: "2025-11-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "kimi-k2-thinking-turbo": {
- id: "kimi-k2-thinking-turbo",
- name: "kimi-k2-thinking-turbo",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.265, output: 9.119 },
- limit: { context: 262144, output: 262144 },
- },
- "deepseek-reasoner": {
- id: "deepseek-reasoner",
- name: "Deepseek-Reasoner",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 0.43 },
- limit: { context: 128000, output: 128000 },
- },
- "grok-4-fast-reasoning": {
- id: "grok-4-fast-reasoning",
- name: "grok-4-fast-reasoning",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, output: 30000 },
- },
- "claude-opus-4-1-20250805-thinking": {
- id: "claude-opus-4-1-20250805-thinking",
- name: "claude-opus-4-1-20250805-thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75 },
- limit: { context: 200000, output: 32000 },
- },
- "qwen3-30b-a3b": {
- id: "qwen3-30b-a3b",
- name: "Qwen3-30B-A3B",
- 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,
- cost: { input: 0.11, output: 1.08 },
- limit: { context: 128000, output: 8192 },
- },
- "glm-4.5v": {
- id: "glm-4.5v",
- name: "GLM-4.5V",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.29, output: 0.86 },
- limit: { context: 64000, output: 16384 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "glm-4.6",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.286, output: 1.142 },
- limit: { context: 200000, output: 131072 },
- },
- "gemini-2.5-flash-preview-09-2025": {
- id: "gemini-2.5-flash-preview-09-2025",
- name: "gemini-2.5-flash-preview-09-2025",
- 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,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1000000, output: 65536 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-12-08",
- last_updated: "2025-12-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.145, output: 0.43 },
- limit: { context: 128000, output: 32768 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "claude-opus-4-1-20250805",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-5.1-chat-latest": {
- id: "gpt-5.1-chat-latest",
- name: "gpt-5.1-chat-latest",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-11-14",
- last_updated: "2025-11-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "claude-haiku-4-5-20251001",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-10-16",
- last_updated: "2025-10-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5 },
- limit: { context: 200000, output: 64000 },
- },
- "MiniMax-M1": {
- id: "MiniMax-M1",
- name: "MiniMax-M1",
- 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,
- cost: { input: 0.132, output: 1.254 },
- limit: { context: 1000000, output: 128000 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "qwen3-coder-480b-a35b-instruct",
- 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,
- cost: { input: 0.86, output: 3.43 },
- limit: { context: 262144, output: 65536 },
- },
- "doubao-seed-code-preview-251028": {
- id: "doubao-seed-code-preview-251028",
- name: "doubao-seed-code-preview-251028",
- 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,
- cost: { input: 0.17, output: 1.14 },
- limit: { context: 256000, output: 32000 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "gpt-4.1-nano",
- 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,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1000000, output: 32768 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "deepseek-v3.2",
- 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,
- cost: { input: 0.29, output: 0.43 },
- limit: { context: 128000, output: 8192 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "gpt-5-pro",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-10-08",
- last_updated: "2025-10-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 272000 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "gpt-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "gpt-5",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-sonnet-4-5-20250929-thinking": {
- id: "claude-sonnet-4-5-20250929-thinking",
- name: "claude-sonnet-4-5-20250929-thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "gpt-4.1",
- 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,
- cost: { input: 2, output: 8 },
- limit: { context: 1000000, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "kimi-k2-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.575, output: 2.3 },
- limit: { context: 262144, output: 262144 },
- },
- "gemini-2.0-flash-lite": {
- id: "gemini-2.0-flash-lite",
- name: "gemini-2.0-flash-lite",
- 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,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 2000000, output: 8192 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "gpt-4.1-mini",
- 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,
- cost: { input: 0.4, output: 1.6 },
- limit: { context: 1000000, output: 32768 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "grok-4-fast-non-reasoning",
- 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, output: 30000 },
- },
- "doubao-seed-1-6-thinking-250715": {
- id: "doubao-seed-1-6-thinking-250715",
- name: "doubao-seed-1-6-thinking-250715",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-15",
- last_updated: "2025-07-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.121, output: 1.21 },
- limit: { context: 256000, output: 16000 },
- },
- "ministral-14b-2512": {
- id: "ministral-14b-2512",
- name: "ministral-14b-2512",
- 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,
- cost: { input: 0.33, output: 0.33 },
- limit: { context: 128000, output: 128000 },
- },
- },
- },
- 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-235b-a22b": {
- id: "qwen3-235b-a22b",
- name: "Qwen3 235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.8, reasoning: 8.4 },
- limit: { context: 131072, output: 16384 },
- },
- "qwen3-coder-plus": {
- id: "qwen3-coder-plus",
- name: "Qwen3 Coder Plus",
- 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,
- cost: { input: 1, output: 5 },
- limit: { context: 1048576, output: 65536 },
- },
- "qwen-vl-ocr": {
- id: "qwen-vl-ocr",
- name: "Qwen-VL OCR",
- 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,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 34096, output: 4096 },
- },
- "qwen-omni-turbo-realtime": {
- id: "qwen-omni-turbo-realtime",
- name: "Qwen-Omni Turbo Realtime",
- 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,
- cost: { input: 0.27, output: 1.07, input_audio: 4.44, output_audio: 8.89 },
- limit: { context: 32768, output: 2048 },
- },
- "qwen3-8b": {
- id: "qwen3-8b",
- name: "Qwen3 8B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.18, output: 0.7, reasoning: 2.1 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3.5-397b-a17b": {
- id: "qwen3.5-397b-a17b",
- name: "Qwen3.5 397B-A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3.6, reasoning: 3.6 },
- limit: { context: 262144, output: 65536 },
- },
- "qwq-plus": {
- id: "qwq-plus",
- name: "QwQ Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.8, output: 2.4 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen-vl-plus": {
- id: "qwen-vl-plus",
- name: "Qwen-VL Plus",
- 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,
- cost: { input: 0.21, output: 0.63 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-livetranslate-flash-realtime": {
- id: "qwen3-livetranslate-flash-realtime",
- name: "Qwen3-LiveTranslate Flash Realtime",
- 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,
- cost: { input: 10, output: 10, input_audio: 10, output_audio: 38 },
- limit: { context: 53248, output: 4096 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.8, reasoning: 8.4 },
- limit: { context: 131072, output: 16384 },
- },
- "qwen-max": {
- id: "qwen-max",
- name: "Qwen Max",
- 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,
- cost: { input: 1.6, output: 6.4 },
- limit: { context: 32768, output: 8192 },
- },
- "qwen-plus": {
- id: "qwen-plus",
- name: "Qwen Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 1.2, reasoning: 4 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen-omni-turbo": {
- id: "qwen-omni-turbo",
- name: "Qwen-Omni Turbo",
- 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,
- cost: { input: 0.07, output: 0.27, input_audio: 4.44, output_audio: 8.89 },
- limit: { context: 32768, output: 2048 },
- },
- "qwen-flash": {
- id: "qwen-flash",
- name: "Qwen Flash",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen2-5-vl-7b-instruct": {
- id: "qwen2-5-vl-7b-instruct",
- name: "Qwen2.5-VL 7B Instruct",
- 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,
- cost: { input: 0.35, output: 1.05 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3.6-plus": {
- id: "qwen3.6-plus",
- name: "Qwen3.6 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.276, output: 1.651, cache_read: 0.028, cache_write: 0.344 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen3-max": {
- id: "qwen3-max",
- name: "Qwen3 Max",
- 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,
- cost: { input: 1.2, output: 6 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen3-omni-flash": {
- id: "qwen3-omni-flash",
- name: "Qwen3-Omni Flash",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.43, output: 1.66, input_audio: 3.81, output_audio: 15.11 },
- limit: { context: 65536, output: 16384 },
- },
- "qwen2-5-72b-instruct": {
- id: "qwen2-5-72b-instruct",
- name: "Qwen2.5 72B Instruct",
- 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,
- cost: { input: 1.4, output: 5.6 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-vl-235b-a22b": {
- id: "qwen3-vl-235b-a22b",
- name: "Qwen3-VL 235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.7, output: 2.8, reasoning: 8.4 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen3-asr-flash": {
- id: "qwen3-asr-flash",
- name: "Qwen3-ASR Flash",
- 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,
- cost: { input: 0.035, output: 0.035 },
- limit: { context: 53248, output: 4096 },
- },
- "qwen3-next-80b-a3b-thinking": {
- id: "qwen3-next-80b-a3b-thinking",
- name: "Qwen3-Next 80B-A3B (Thinking)",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09",
- last_updated: "2025-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 6 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen-mt-plus": {
- id: "qwen-mt-plus",
- name: "Qwen-MT Plus",
- 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,
- cost: { input: 2.46, output: 7.37 },
- limit: { context: 16384, output: 8192 },
- },
- "qwen-vl-max": {
- id: "qwen-vl-max",
- name: "Qwen-VL Max",
- 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,
- cost: { input: 0.8, output: 3.2 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-coder-flash": {
- id: "qwen3-coder-flash",
- name: "Qwen3 Coder Flash",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen2-5-7b-instruct": {
- id: "qwen2-5-7b-instruct",
- name: "Qwen2.5 7B Instruct",
- 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,
- cost: { input: 0.175, output: 0.7 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen2-5-14b-instruct": {
- id: "qwen2-5-14b-instruct",
- name: "Qwen2.5 14B Instruct",
- 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,
- cost: { input: 0.35, output: 1.4 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen2-5-32b-instruct": {
- id: "qwen2-5-32b-instruct",
- name: "Qwen2.5 32B Instruct",
- 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,
- cost: { input: 0.7, output: 2.8 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-next-80b-a3b-instruct": {
- id: "qwen3-next-80b-a3b-instruct",
- name: "Qwen3-Next 80B-A3B Instruct",
- 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,
- cost: { input: 0.5, output: 2 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen-plus-character-ja": {
- id: "qwen-plus-character-ja",
- name: "Qwen Plus Character (Japanese)",
- 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,
- cost: { input: 0.5, output: 1.4 },
- limit: { context: 8192, output: 512 },
- },
- "qwen3-omni-flash-realtime": {
- id: "qwen3-omni-flash-realtime",
- name: "Qwen3-Omni Flash Realtime",
- 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,
- cost: { input: 0.52, output: 1.99, input_audio: 4.57, output_audio: 18.13 },
- limit: { context: 65536, output: 16384 },
- },
- "qwen3-vl-30b-a3b": {
- id: "qwen3-vl-30b-a3b",
- name: "Qwen3-VL 30B-A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.8, reasoning: 2.4 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen3-vl-plus": {
- id: "qwen3-vl-plus",
- name: "Qwen3-VL Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.6, reasoning: 4.8 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen3-Coder 480B-A35B Instruct",
- 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,
- cost: { input: 1.5, output: 7.5 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3-Coder 30B-A3B Instruct",
- 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,
- cost: { input: 0.45, output: 2.25 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen-turbo": {
- id: "qwen-turbo",
- name: "Qwen Turbo",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.2, reasoning: 0.5 },
- limit: { context: 1000000, output: 16384 },
- },
- "qwen-mt-turbo": {
- id: "qwen-mt-turbo",
- name: "Qwen-MT Turbo",
- 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,
- cost: { input: 0.16, output: 0.49 },
- limit: { context: 16384, output: 8192 },
- },
- "qwen2-5-omni-7b": {
- id: "qwen2-5-omni-7b",
- name: "Qwen2.5-Omni 7B",
- 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,
- cost: { input: 0.1, output: 0.4, input_audio: 6.76 },
- limit: { context: 32768, output: 2048 },
- },
- "qwen3.5-plus": {
- id: "qwen3.5-plus",
- name: "Qwen3.5 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 2.4, reasoning: 2.4 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen2-5-vl-72b-instruct": {
- id: "qwen2-5-vl-72b-instruct",
- name: "Qwen2.5-VL 72B Instruct",
- 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,
- cost: { input: 2.8, output: 8.4 },
- limit: { context: 131072, output: 8192 },
- },
- "qvq-max": {
- id: "qvq-max",
- name: "QVQ Max",
- family: "qvq",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.2, output: 4.8 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-14b": {
- id: "qwen3-14b",
- name: "Qwen3 14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 1.4, reasoning: 4.2 },
- limit: { context: 131072, output: 8192 },
- },
- },
- },
- 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-embedding-8b": {
- id: "qwen3-embedding-8b",
- name: "Qwen3 Embedding 8B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-25-11",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0 },
- limit: { context: 32768, output: 4096 },
- },
- "qwen3-235b-a22b-instruct-2507": {
- id: "qwen3-235b-a22b-instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-01",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.75, output: 2.25 },
- limit: { context: 260000, output: 16384 },
- },
- "llama-3.3-70b-instruct": {
- id: "llama-3.3-70b-instruct",
- name: "Llama-3.3-70B-Instruct",
- 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,
- cost: { input: 0.9, output: 0.9 },
- limit: { context: 100000, output: 16384 },
- },
- "qwen3.5-397b-a17b": {
- id: "qwen3.5-397b-a17b",
- name: "Qwen3.5 397B A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: 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,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 256000, output: 16384 },
- },
- "devstral-2-123b-instruct-2512": {
- id: "devstral-2-123b-instruct-2512",
- name: "Devstral 2 123B Instruct (2512)",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-07",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2 },
- limit: { context: 256000, output: 16384 },
- },
- "deepseek-r1-distill-llama-70b": {
- id: "deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-01-20",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.9, output: 0.9 },
- limit: { context: 32000, output: 8196 },
- },
- "pixtral-12b-2409": {
- id: "pixtral-12b-2409",
- name: "Pixtral 12B 2409",
- family: "pixtral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-09-25",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, output: 4096 },
- },
- "whisper-large-v3": {
- id: "whisper-large-v3",
- name: "Whisper Large v3",
- 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,
- cost: { input: 0.003, output: 0 },
- limit: { context: 0, output: 8192 },
- },
- "voxtral-small-24b-2507": {
- id: "voxtral-small-24b-2507",
- name: "Voxtral Small 24B 2507",
- family: "voxtral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-01",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.35 },
- limit: { context: 32000, output: 16384 },
- },
- "gemma-3-27b-it": {
- id: "gemma-3-27b-it",
- name: "Gemma-3-27B-IT",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2024-12-01",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.5 },
- limit: { context: 40000, output: 8192 },
- },
- "bge-multilingual-gemma2": {
- id: "bge-multilingual-gemma2",
- name: "BGE Multilingual Gemma2",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8191, output: 3072 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3-Coder 30B-A3B Instruct",
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 128000, output: 32768 },
- },
- "mistral-small-3.2-24b-instruct-2506": {
- id: "mistral-small-3.2-24b-instruct-2506",
- name: "Mistral Small 3.2 24B Instruct (2506)",
- family: "mistral-small",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-20",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.35 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT-OSS 120B",
- family: "gpt-oss",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 32768 },
- },
- "mistral-nemo-instruct-2407": {
- id: "mistral-nemo-instruct-2407",
- name: "Mistral Nemo Instruct 2407",
- family: "mistral-nemo",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-25",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, output: 8192 },
- },
- "llama-3.1-8b-instruct": {
- id: "llama-3.1-8b-instruct",
- name: "Llama 3.1 8B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2025-01-01",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, output: 16384 },
- },
- },
- },
- "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-flash": {
- id: "glm-4-flash",
- name: "GLM-4 Flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-08-01",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1003, output: 0.1003 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "Meta-Llama-3-1-8B-Instruct-FP8": {
- id: "Meta-Llama-3-1-8B-Instruct-FP8",
- name: "Llama 3.1 8B (decentralized)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.02, output: 0.03 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "claude-opus-4-thinking:32000": {
- id: "claude-opus-4-thinking:32000",
- name: "Claude 4 Opus Thinking (32K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "gemini-2.5-pro-preview-05-06": {
- id: "gemini-2.5-pro-preview-05-06",
- name: "Gemini 2.5 Pro Preview 0506",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-06",
- last_updated: "2025-05-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "grok-3-mini-fast-beta": {
- id: "grok-3-mini-fast-beta",
- name: "Grok 3 Mini Fast Beta",
- 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: false,
- cost: { input: 0.6, output: 4 },
- limit: { context: 131072, input: 131072, output: 131072 },
- },
- "MiniMax-M2": {
- id: "MiniMax-M2",
- name: "MiniMax M2",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-10-25",
- last_updated: "2025-10-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.17, output: 1.53 },
- limit: { context: 200000, input: 200000, output: 131072 },
- },
- "command-a-reasoning-08-2025": {
- id: "command-a-reasoning-08-2025",
- name: "Cohere Command A (08/2025)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-22",
- last_updated: "2025-08-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, input: 256000, output: 8192 },
- },
- brave: {
- id: "brave",
- name: "Brave (Answers)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-03-02",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 5 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- "exa-research": {
- id: "exa-research",
- name: "Exa (Research)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-04",
- last_updated: "2025-06-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 2.5 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- "Llama-3.3-70B-Nova": {
- id: "Llama-3.3-70B-Nova",
- name: "Llama 3.3 70B Nova",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "gemini-exp-1206": {
- id: "gemini-exp-1206",
- name: "Gemini 2.0 Pro 1206",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.258, output: 4.998 },
- limit: { context: 2097152, input: 2097152, output: 8192 },
- },
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "Claude 4.5 Opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-01",
- last_updated: "2025-11-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "auto-model-basic": {
- id: "auto-model-basic",
- name: "Auto model (Basic)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-06-01",
- last_updated: "2024-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 1000000, input: 1000000, output: 1000000 },
- },
- "jamba-mini": {
- id: "jamba-mini",
- name: "Jamba Mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1989, output: 0.408 },
- limit: { context: 256000, input: 256000, output: 4096 },
- },
- "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)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "yi-large": {
- id: "yi-large",
- name: "Yi Large",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.196, output: 3.196 },
- limit: { context: 32000, input: 32000, output: 4096 },
- },
- "auto-model-premium": {
- id: "auto-model-premium",
- name: "Auto model (Premium)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-06-01",
- last_updated: "2024-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 1000000, input: 1000000, output: 1000000 },
- },
- "azure-gpt-4o": {
- id: "azure-gpt-4o",
- name: "Azure gpt-4o",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.499, output: 9.996 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "deepseek-v3-0324": {
- id: "deepseek-v3-0324",
- name: "DeepSeek Chat 0324",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "claude-3-5-haiku-20241022": {
- id: "claude-3-5-haiku-20241022",
- name: "Claude 3.5 Haiku",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2024-10-22",
- last_updated: "2024-10-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 4 },
- limit: { context: 200000, input: 200000, output: 8192 },
- },
- "doubao-seed-1-8-251215": {
- id: "doubao-seed-1-8-251215",
- name: "Doubao Seed 1.8",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-15",
- last_updated: "2025-12-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.612, output: 6.12 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "doubao-seed-1-6-250615": {
- id: "doubao-seed-1-6-250615",
- name: "Doubao Seed 1.6",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-15",
- last_updated: "2025-06-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.204, output: 0.51 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "ernie-x1.1-preview": {
- id: "ernie-x1.1-preview",
- name: "ERNIE X1.1",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 64000, input: 64000, output: 8192 },
- },
- "ernie-5.0-thinking-preview": {
- id: "ernie-5.0-thinking-preview",
- name: "Ernie 5.0 Thinking Preview",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 2 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "glm-4-air-0111": {
- id: "glm-4-air-0111",
- name: "GLM 4 Air 0111",
- 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,
- cost: { input: 0.1394, output: 0.1394 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- fastgpt: {
- id: "fastgpt",
- name: "Web Answer",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-08-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 7.5, output: 7.5 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "doubao-seed-1-6-thinking-250615": {
- id: "doubao-seed-1-6-thinking-250615",
- name: "Doubao Seed 1.6 Thinking",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-15",
- last_updated: "2025-06-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.204, output: 2.04 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "gemini-2.0-flash-001": {
- id: "gemini-2.0-flash-001",
- name: "Gemini 2.0 Flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1003, output: 0.408 },
- limit: { context: 1000000, input: 1000000, output: 8192 },
- },
- "claude-opus-4-1-thinking:32000": {
- id: "claude-opus-4-1-thinking:32000",
- name: "Claude 4.1 Opus Thinking (32K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "Llama-3.3-70B-RAWMAW": {
- id: "Llama-3.3-70B-RAWMAW",
- name: "Llama 3.3 70B RAWMAW",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "GLM-4.5-Air-Derestricted-Steam": {
- id: "GLM-4.5-Air-Derestricted-Steam",
- name: "GLM 4.5 Air Derestricted Steam",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 220600, input: 220600, output: 65536 },
- },
- "claude-3-5-sonnet-20241022": {
- id: "claude-3-5-sonnet-20241022",
- name: "Claude 3.5 Sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 8192 },
- },
- "yi-medium-200k": {
- id: "yi-medium-200k",
- name: "Yi Medium 200k",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-03-01",
- last_updated: "2024-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.499, output: 2.499 },
- limit: { context: 200000, input: 200000, output: 4096 },
- },
- "Gemma-3-27B-ArliAI-RPMax-v3": {
- id: "Gemma-3-27B-ArliAI-RPMax-v3",
- name: "Gemma 3 27B RPMax v3",
- 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: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "phi-4-mini-instruct": {
- id: "phi-4-mini-instruct",
- name: "Phi 4 Mini",
- 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,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter": {
- id: "Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter",
- name: "Llama 3.3+ 70B TenyxChat DaybreakStorywriter",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "ernie-x1-32k": {
- id: "ernie-x1-32k",
- name: "Ernie X1 32k",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-08",
- last_updated: "2025-05-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.33, output: 1.32 },
- limit: { context: 32000, input: 32000, output: 16384 },
- },
- "deepseek-chat": {
- id: "deepseek-chat",
- name: "DeepSeek V3/Deepseek Chat",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-02-27",
- last_updated: "2025-02-27",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "glm-z1-air": {
- id: "glm-z1-air",
- name: "GLM Z1 Air",
- 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,
- cost: { input: 0.07, output: 0.07 },
- limit: { context: 32000, input: 32000, output: 16384 },
- },
- "claude-3-7-sonnet-thinking:128000": {
- id: "claude-3-7-sonnet-thinking:128000",
- name: "Claude 3.7 Sonnet Thinking (128K)",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "glm-4-air": {
- id: "glm-4-air",
- name: "GLM-4 Air",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-06-05",
- last_updated: "2024-06-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2006, output: 0.2006 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "Llama-3.3-70B-MiraiFanfare": {
- id: "Llama-3.3-70B-MiraiFanfare",
- name: "Llama 3.3 70b Mirai Fanfare",
- 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,
- cost: { input: 0.493, output: 0.493 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "gemini-2.0-flash-thinking-exp-01-21": {
- id: "gemini-2.0-flash-thinking-exp-01-21",
- name: "Gemini 2.0 Flash Thinking 0121",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-21",
- last_updated: "2025-01-21",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 1.003 },
- limit: { context: 1000000, input: 1000000, output: 8192 },
- },
- "Magistral-Small-2506": {
- id: "Magistral-Small-2506",
- name: "Magistral Small 2506",
- 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,
- cost: { input: 0.4, output: 1.4 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "doubao-1.5-pro-32k": {
- id: "doubao-1.5-pro-32k",
- name: "Doubao 1.5 Pro 32k",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-22",
- last_updated: "2025-01-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1343, output: 0.3349 },
- limit: { context: 32000, input: 32000, output: 8192 },
- },
- "venice-uncensored:web": {
- id: "venice-uncensored:web",
- name: "Venice Uncensored Web",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-01",
- last_updated: "2024-05-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 80000, input: 80000, output: 16384 },
- },
- "glm-4": {
- id: "glm-4",
- name: "GLM-4",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-01-16",
- last_updated: "2024-01-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 14.994 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "qwen-max": {
- id: "qwen-max",
- name: "Qwen 2.5 Max",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-04-03",
- last_updated: "2024-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5997, output: 6.392 },
- limit: { context: 32000, input: 32000, output: 8192 },
- },
- "qwen3-vl-235b-a22b-instruct-original": {
- id: "qwen3-vl-235b-a22b-instruct-original",
- name: "Qwen3 VL 235B A22B Instruct Original",
- 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,
- cost: { input: 0.5, output: 1.2 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "jamba-large-1.6": {
- id: "jamba-large-1.6",
- name: "Jamba Large 1.6",
- 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,
- cost: { input: 1.989, output: 7.99 },
- limit: { context: 256000, input: 256000, output: 4096 },
- },
- "qwen-plus": {
- id: "qwen-plus",
- name: "Qwen Plus",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2024-01-25",
- last_updated: "2024-01-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3995, output: 1.2002 },
- limit: { context: 995904, input: 995904, output: 32768 },
- },
- "qwen25-vl-72b-instruct": {
- id: "qwen25-vl-72b-instruct",
- name: "Qwen25 VL 72b",
- 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: false,
- cost: { input: 0.69989, output: 0.69989 },
- limit: { context: 32000, input: 32000, output: 32768 },
- },
- "claude-sonnet-4-thinking:64000": {
- id: "claude-sonnet-4-thinking:64000",
- name: "Claude 4 Sonnet Thinking (64K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-18",
- last_updated: "2025-11-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1": {
- id: "Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1",
- name: "Llama 3.3+ 70B New Dawn v1.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "GLM-4.5-Air-Derestricted-Iceblink-ReExtract": {
- id: "GLM-4.5-Air-Derestricted-Iceblink-ReExtract",
- name: "GLM 4.5 Air Derestricted Iceblink ReExtract",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-12",
- last_updated: "2025-12-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 131072, input: 131072, output: 98304 },
- },
- "universal-summarizer": {
- id: "universal-summarizer",
- name: "Universal Summarizer",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-05-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 30 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "claude-sonnet-4-thinking:32768": {
- id: "claude-sonnet-4-thinking:32768",
- name: "Claude 4 Sonnet Thinking (32K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "sarvan-medium": {
- id: "sarvan-medium",
- name: "Sarvam Medium",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "claude-3-7-sonnet-thinking:8192": {
- id: "claude-3-7-sonnet-thinking:8192",
- name: "Claude 3.7 Sonnet Thinking (8K)",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "gemini-2.5-flash-preview-05-20": {
- id: "gemini-2.5-flash-preview-05-20",
- name: "Gemini 2.5 Flash 0520",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 1048000, input: 1048000, output: 65536 },
- },
- "GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract": {
- id: "GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract",
- name: "GLM 4.5 Air Derestricted Iceblink v2 ReExtract",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-12",
- last_updated: "2025-12-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 131072, input: 131072, output: 65536 },
- },
- "Llama-3.3-70B-Fallen-v1": {
- id: "Llama-3.3-70B-Fallen-v1",
- name: "Llama 3.3 70B Fallen v1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "qwen3-vl-235b-a22b-thinking": {
- id: "qwen3-vl-235b-a22b-thinking",
- name: "Qwen3 VL 235B A22B Thinking",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 6 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "claude-3-7-sonnet-thinking:32768": {
- id: "claude-3-7-sonnet-thinking:32768",
- name: "Claude 3.7 Sonnet Thinking (32K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-07-15",
- last_updated: "2025-07-15",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "claude-3-7-sonnet-thinking:1024": {
- id: "claude-3-7-sonnet-thinking:1024",
- name: "Claude 3.7 Sonnet Thinking (1K)",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "Claude Sonnet 4.5",
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "Llama-3.3-70B-Vulpecula-R1": {
- id: "Llama-3.3-70B-Vulpecula-R1",
- name: "Llama 3.3 70B Vulpecula R1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "claude-sonnet-4-thinking:8192": {
- id: "claude-sonnet-4-thinking:8192",
- name: "Claude 4 Sonnet Thinking (8K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "Llama-3.3-70B-Ignition-v0.1": {
- id: "Llama-3.3-70B-Ignition-v0.1",
- name: "Llama 3.3 70B Ignition v0.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "glm-4-plus-0111": {
- id: "glm-4-plus-0111",
- name: "GLM 4 Plus 0111",
- 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,
- cost: { input: 9.996, output: 9.996 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "KAT-Coder-Air-V1": {
- id: "KAT-Coder-Air-V1",
- name: "KAT Coder Air V1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-10-28",
- last_updated: "2025-10-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.2 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "deepseek-r1-sambanova": {
- id: "deepseek-r1-sambanova",
- name: "DeepSeek R1 Fast",
- 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: false,
- cost: { input: 4.998, output: 6.987 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "deepseek-r1": {
- id: "deepseek-r1",
- name: "DeepSeek R1",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.7 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "doubao-1-5-thinking-pro-250415": {
- id: "doubao-1-5-thinking-pro-250415",
- name: "Doubao 1.5 Thinking Pro",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-17",
- last_updated: "2025-04-17",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.4 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "sonar-pro": {
- id: "sonar-pro",
- name: "Perplexity Pro",
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 128000 },
- },
- "Gemma-3-27B-it-Abliterated": {
- id: "Gemma-3-27B-it-Abliterated",
- name: "Gemma 3 27B IT Abliterated",
- 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: false,
- cost: { input: 0.42, output: 0.42 },
- limit: { context: 32768, input: 32768, output: 96000 },
- },
- "deepseek-chat-cheaper": {
- id: "deepseek-chat-cheaper",
- name: "DeepSeek V3/Chat Cheaper",
- 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: false,
- cost: { input: 0.25, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "gemini-2.0-pro-exp-02-05": {
- id: "gemini-2.0-pro-exp-02-05",
- name: "Gemini 2.0 Pro 0205",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-05",
- last_updated: "2025-02-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.989, output: 7.956 },
- limit: { context: 2097152, input: 2097152, output: 8192 },
- },
- "azure-gpt-4o-mini": {
- id: "azure-gpt-4o-mini",
- name: "Azure gpt-4o-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1496, output: 0.595 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "Llama-3.3-70B-MS-Nevoria": {
- id: "Llama-3.3-70B-MS-Nevoria",
- name: "Llama 3.3 70B MS Nevoria",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "claude-opus-4-thinking": {
- id: "claude-opus-4-thinking",
- name: "Claude 4 Opus Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-07-15",
- last_updated: "2025-07-15",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "Llama-3.3-70B-Sapphira-0.1": {
- id: "Llama-3.3-70B-Sapphira-0.1",
- name: "Llama 3.3 70B Sapphira 0.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "doubao-seed-code-preview-latest": {
- id: "doubao-seed-code-preview-latest",
- name: "Doubao Seed Code Preview",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "Llama-3.3-70B-ArliAI-RPMax-v1.4": {
- id: "Llama-3.3-70B-ArliAI-RPMax-v1.4",
- name: "Llama 3.3 70B RPMax v1.4",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "mistral-small-31-24b-instruct": {
- id: "mistral-small-31-24b-instruct",
- name: "Mistral Small 31 24b Instruct",
- 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: false,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, input: 128000, output: 131072 },
- },
- "glm-4.1v-thinking-flashx": {
- id: "glm-4.1v-thinking-flashx",
- name: "GLM 4.1V Thinking FlashX",
- 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,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 64000, input: 64000, output: 8192 },
- },
- "hunyuan-t1-latest": {
- id: "hunyuan-t1-latest",
- name: "Hunyuan T1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-22",
- last_updated: "2025-03-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.17, output: 0.66 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "doubao-1-5-thinking-vision-pro-250428": {
- id: "doubao-1-5-thinking-vision-pro-250428",
- name: "Doubao 1.5 Thinking Vision Pro",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-15",
- last_updated: "2025-05-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.55, output: 1.43 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "asi1-mini": {
- id: "asi1-mini",
- name: "ASI1 Mini",
- 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,
- cost: { input: 1, output: 1 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "ernie-5.0-thinking-latest": {
- id: "ernie-5.0-thinking-latest",
- name: "Ernie 5.0 Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 2 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "Llama-3.3-70B-Incandescent-Malevolence": {
- id: "Llama-3.3-70B-Incandescent-Malevolence",
- name: "Llama 3.3 70B Incandescent Malevolence",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-Damascus-R1": {
- id: "Llama-3.3-70B-Damascus-R1",
- name: "Damascus R1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Gemma-3-27B-Nidum-Uncensored": {
- id: "Gemma-3-27B-Nidum-Uncensored",
- name: "Gemma 3 27B Nidum Uncensored",
- 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: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 96000 },
- },
- "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",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "doubao-seed-2-0-pro-260215": {
- id: "doubao-seed-2-0-pro-260215",
- name: "Doubao Seed 2.0 Pro",
- 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,
- cost: { input: 0.782, output: 3.876 },
- limit: { context: 256000, input: 256000, output: 128000 },
- },
- "gemini-3-pro-image-preview": {
- id: "gemini-3-pro-image-preview",
- name: "Gemini 3 Pro Image",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 2, output: 12 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "Gemma-3-27B-CardProjector-v4": {
- id: "Gemma-3-27B-CardProjector-v4",
- name: "Gemma 3 27B CardProjector v4",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "jamba-mini-1.7": {
- id: "jamba-mini-1.7",
- name: "Jamba Mini 1.7",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1989, output: 0.408 },
- limit: { context: 256000, input: 256000, output: 4096 },
- },
- "Llama-3.3-70B-Forgotten-Safeword-3.6": {
- id: "Llama-3.3-70B-Forgotten-Safeword-3.6",
- name: "Llama 3.3 70B Forgotten Safeword 3.6",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "doubao-1-5-thinking-pro-vision-250415": {
- id: "doubao-1-5-thinking-pro-vision-250415",
- name: "Doubao 1.5 Thinking Pro Vision",
- 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: false,
- cost: { input: 0.6, output: 2.4 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "gemini-2.5-pro-preview-06-05": {
- id: "gemini-2.5-pro-preview-06-05",
- name: "Gemini 2.5 Pro Preview 0605",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "gemini-2.0-pro-reasoner": {
- id: "gemini-2.0-pro-reasoner",
- name: "Gemini 2.0 Pro Reasoner",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-05",
- last_updated: "2025-02-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.292, output: 4.998 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "doubao-seed-2-0-lite-260215": {
- id: "doubao-seed-2-0-lite-260215",
- name: "Doubao Seed 2.0 Lite",
- 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,
- cost: { input: 0.1462, output: 0.8738 },
- limit: { context: 256000, input: 256000, output: 32000 },
- },
- "gemini-2.5-flash-lite-preview-06-17": {
- id: "gemini-2.5-flash-lite-preview-06-17",
- name: "Gemini 2.5 Flash Lite Preview",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-17",
- last_updated: "2025-06-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "sonar-deep-research": {
- id: "sonar-deep-research",
- name: "Perplexity Deep Research",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-25",
- last_updated: "2025-02-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.4, output: 13.6 },
- limit: { context: 60000, input: 60000, output: 128000 },
- },
- "Gemma-3-27B-it": {
- id: "Gemma-3-27B-it",
- name: "Gemma 3 27B IT",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-GeneticLemonade-Unleashed-v3": {
- id: "Llama-3.3-70B-GeneticLemonade-Unleashed-v3",
- name: "Llama 3.3 70B GeneticLemonade Unleashed v3",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Gemma-3-27B-Glitter": {
- id: "Gemma-3-27B-Glitter",
- name: "Gemma 3 27B Glitter",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1": {
- id: "Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1",
- name: "Llama 3.3 70B Omega Directive Unslop v2.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "qwen3-30b-a3b-instruct-2507": {
- id: "qwen3-30b-a3b-instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- 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: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "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",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- deepclaude: {
- id: "deepclaude",
- name: "DeepClaude",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-01",
- last_updated: "2025-02-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "ernie-4.5-8k-preview": {
- id: "ernie-4.5-8k-preview",
- name: "Ernie 4.5 8k Preview",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-25",
- last_updated: "2025-03-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.66, output: 2.6 },
- limit: { context: 8000, input: 8000, output: 16384 },
- },
- "doubao-seed-2-0-mini-260215": {
- id: "doubao-seed-2-0-mini-260215",
- name: "Doubao Seed 2.0 Mini",
- 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,
- cost: { input: 0.0493, output: 0.4845 },
- limit: { context: 256000, input: 256000, output: 32000 },
- },
- "gemini-3-pro-preview-thinking": {
- id: "gemini-3-pro-preview-thinking",
- name: "Gemini 3 Pro Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-18",
- last_updated: "2025-11-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "Llama-3.3-70B-GeneticLemonade-Opus": {
- id: "Llama-3.3-70B-GeneticLemonade-Opus",
- name: "Llama 3.3 70B GeneticLemonade Opus",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "v0-1.5-lg": {
- id: "v0-1.5-lg",
- name: "v0 1.5 LG",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-04",
- last_updated: "2025-07-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "ernie-4.5-turbo-128k": {
- id: "ernie-4.5-turbo-128k",
- name: "Ernie 4.5 Turbo 128k",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-08",
- last_updated: "2025-05-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.132, output: 0.55 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "KAT-Coder-Pro-V1": {
- id: "KAT-Coder-Pro-V1",
- name: "KAT Coder Pro V1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-10-28",
- last_updated: "2025-10-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 6 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "claude-3-5-sonnet-20240620": {
- id: "claude-3-5-sonnet-20240620",
- name: "Claude 3.5 Sonnet Old",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2024-06-20",
- last_updated: "2024-06-20",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 8192 },
- },
- "claude-opus-4-1-thinking:8192": {
- id: "claude-opus-4-1-thinking:8192",
- name: "Claude 4.1 Opus Thinking (8K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "gemini-2.0-flash-exp-image-generation": {
- id: "gemini-2.0-flash-exp-image-generation",
- name: "Gemini Text + Image",
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 32767, input: 32767, output: 8192 },
- },
- "Llama-3.3-70B-Magnum-v4-SE": {
- id: "Llama-3.3-70B-Magnum-v4-SE",
- name: "Llama 3.3 70B Magnum v4 SE",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "glm-zero-preview": {
- id: "glm-zero-preview",
- name: "GLM Zero Preview",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.802, output: 1.802 },
- limit: { context: 8000, input: 8000, output: 4096 },
- },
- "study_gpt-chatgpt-4o-latest": {
- id: "study_gpt-chatgpt-4o-latest",
- name: "Study Mode",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 16384 },
- },
- "glm-4-airx": {
- id: "glm-4-airx",
- name: "GLM-4 AirX",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-06-05",
- last_updated: "2024-06-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.006, output: 2.006 },
- limit: { context: 8000, input: 8000, output: 4096 },
- },
- "step-2-mini": {
- id: "step-2-mini",
- name: "Step-2 Mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-05",
- last_updated: "2024-07-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2006, output: 0.408 },
- limit: { context: 8000, input: 8000, output: 4096 },
- },
- "gemini-2.5-flash-preview-04-17:thinking": {
- id: "gemini-2.5-flash-preview-04-17:thinking",
- name: "Gemini 2.5 Flash Preview Thinking",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-17",
- last_updated: "2025-04-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 3.5 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "Llama-3.3-70B-Mokume-Gane-R1": {
- id: "Llama-3.3-70B-Mokume-Gane-R1",
- name: "Llama 3.3 70B Mokume Gane R1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "deepseek-reasoner": {
- id: "deepseek-reasoner",
- name: "DeepSeek Reasoner",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.7 },
- limit: { context: 64000, input: 64000, output: 65536 },
- },
- "glm-z1-airx": {
- id: "glm-z1-airx",
- name: "GLM Z1 AirX",
- 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,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 32000, input: 32000, output: 16384 },
- },
- "jamba-mini-1.6": {
- id: "jamba-mini-1.6",
- name: "Jamba Mini 1.6",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-01",
- last_updated: "2025-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1989, output: 0.408 },
- limit: { context: 256000, input: 256000, output: 4096 },
- },
- "claude-opus-4-1-thinking": {
- id: "claude-opus-4-1-thinking",
- name: "Claude 4.1 Opus Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "grok-3-beta": {
- id: "grok-3-beta",
- name: "Grok 3 Beta",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 131072, input: 131072, output: 131072 },
- },
- "Llama-3.3-70B-Legion-V2.1": {
- id: "Llama-3.3-70B-Legion-V2.1",
- name: "Llama 3.3 70B Legion V2.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- sonar: {
- id: "sonar",
- name: "Perplexity Simple",
- 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,
- cost: { input: 1.003, output: 1.003 },
- limit: { context: 127000, input: 127000, output: 128000 },
- },
- "z-image-turbo": {
- id: "z-image-turbo",
- name: "Z Image Turbo",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-11-27",
- last_updated: "2025-11-27",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 0, output: 0 },
- },
- "GLM-4.5-Air-Derestricted-Iceblink-v2": {
- id: "GLM-4.5-Air-Derestricted-Iceblink-v2",
- name: "GLM 4.5 Air Derestricted Iceblink v2",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 158600, input: 158600, output: 65536 },
- },
- "jamba-large": {
- id: "jamba-large",
- name: "Jamba Large",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.989, output: 7.99 },
- limit: { context: 256000, input: 256000, output: 4096 },
- },
- "claude-3-7-sonnet-reasoner": {
- id: "claude-3-7-sonnet-reasoner",
- name: "Claude 3.7 Sonnet Reasoner",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-29",
- last_updated: "2025-03-29",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "ernie-4.5-turbo-vl-32k": {
- id: "ernie-4.5-turbo-vl-32k",
- name: "Ernie 4.5 Turbo VL 32k",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-08",
- last_updated: "2025-05-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.495, output: 1.43 },
- limit: { context: 32000, input: 32000, output: 16384 },
- },
- "Mistral-Nemo-12B-Instruct-2407": {
- id: "Mistral-Nemo-12B-Instruct-2407",
- name: "Mistral Nemo 12B Instruct 2407",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.01, output: 0.01 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "doubao-seed-1-6-flash-250615": {
- id: "doubao-seed-1-6-flash-250615",
- name: "Doubao Seed 1.6 Flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-15",
- last_updated: "2025-06-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0374, output: 0.374 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "qwq-32b": {
- id: "qwq-32b",
- name: "Qwen: QwQ 32B",
- 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: false,
- cost: { input: 0.25599999, output: 0.30499999 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "Llama-3.3-70B-Strawberrylemonade-v1.2": {
- id: "Llama-3.3-70B-Strawberrylemonade-v1.2",
- name: "Llama 3.3 70B StrawberryLemonade v1.2",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "gemini-2.5-flash-preview-04-17": {
- id: "gemini-2.5-flash-preview-04-17",
- name: "Gemini 2.5 Flash Preview",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-17",
- last_updated: "2025-04-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "ernie-x1-turbo-32k": {
- id: "ernie-x1-turbo-32k",
- name: "Ernie X1 Turbo 32k",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-08",
- last_updated: "2025-05-08",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.165, output: 0.66 },
- limit: { context: 32000, input: 32000, output: 16384 },
- },
- "deepseek-math-v2": {
- id: "deepseek-math-v2",
- name: "DeepSeek Math V2",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-03",
- last_updated: "2025-12-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "Llama-3.3-70B-Electranova-v1.0": {
- id: "Llama-3.3-70B-Electranova-v1.0",
- name: "Llama 3.3 70B Electranova v1.0",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-ArliAI-RPMax-v2": {
- id: "Llama-3.3-70B-ArliAI-RPMax-v2",
- name: "Llama 3.3 70B ArliAI RPMax v2",
- 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: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "qwen-image": {
- id: "qwen-image",
- name: "Qwen Image",
- 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 },
- },
- "Llama-3.3-70B-Cu-Mai-R1": {
- id: "Llama-3.3-70B-Cu-Mai-R1",
- name: "Llama 3.3 70B Cu Mai R1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "GLM-4.5-Air-Derestricted-Iceblink": {
- id: "GLM-4.5-Air-Derestricted-Iceblink",
- name: "GLM 4.5 Air Derestricted Iceblink",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 131072, input: 131072, output: 98304 },
- },
- "Llama-3.3-70B-Bigger-Body": {
- id: "Llama-3.3-70B-Bigger-Body",
- name: "Llama 3.3 70B Bigger Body",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3+(3.1v3.3)-70B-Hanami-x1": {
- id: "Llama-3.3+(3.1v3.3)-70B-Hanami-x1",
- name: "Llama 3.3+ 70B Hanami x1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "hunyuan-turbos-20250226": {
- id: "hunyuan-turbos-20250226",
- name: "Hunyuan Turbo S",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-27",
- last_updated: "2025-02-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.187, output: 0.374 },
- limit: { context: 24000, input: 24000, output: 8192 },
- },
- "gemini-2.5-flash-preview-09-2025": {
- id: "gemini-2.5-flash-preview-09-2025",
- name: "Gemini 2.5 Flash Preview (09/2025)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "GLM-4.6-Derestricted-v5": {
- id: "GLM-4.6-Derestricted-v5",
- name: "GLM 4.6 Derestricted v5",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.5 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "glm-4-plus": {
- id: "glm-4-plus",
- name: "GLM-4 Plus",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-08-01",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 7.497, output: 7.497 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "Gemma-3-27B-Big-Tiger-v3": {
- id: "Gemma-3-27B-Big-Tiger-v3",
- name: "Gemma 3 27B Big Tiger v3",
- 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: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "brave-research": {
- id: "brave-research",
- name: "Brave (Research)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-03-02",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 5 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- hidream: {
- id: "hidream",
- name: "Hidream",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 0, output: 0 },
- },
- "qwen3-max-2026-01-23": {
- id: "qwen3-max-2026-01-23",
- name: "Qwen3 Max 2026-01-23",
- 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,
- cost: { input: 1.2002, output: 6.001 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "Claude 4.1 Opus",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "Claude Haiku 4.5",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-10-15",
- last_updated: "2025-10-15",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "MiniMax-M1": {
- id: "MiniMax-M1",
- name: "MiniMax M1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-16",
- last_updated: "2025-06-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1394, output: 1.3328 },
- limit: { context: 1000000, input: 1000000, output: 131072 },
- },
- "gemini-2.5-flash-nothinking": {
- id: "gemini-2.5-flash-nothinking",
- name: "Gemini 2.5 Flash (No Thinking)",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "exa-research-pro": {
- id: "exa-research-pro",
- name: "Exa (Research Pro)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-04",
- last_updated: "2025-06-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 2.5 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "grok-3-fast-beta": {
- id: "grok-3-fast-beta",
- name: "Grok 3 Fast Beta",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25 },
- limit: { context: 131072, input: 131072, output: 131072 },
- },
- "claude-opus-4-5-20251101:thinking": {
- id: "claude-opus-4-5-20251101:thinking",
- name: "Claude 4.5 Opus Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-01",
- last_updated: "2025-11-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "gemini-2.5-pro-exp-03-25": {
- id: "gemini-2.5-pro-exp-03-25",
- name: "Gemini 2.5 Pro Experimental 0325",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-25",
- last_updated: "2025-03-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "claude-3-7-sonnet-thinking": {
- id: "claude-3-7-sonnet-thinking",
- name: "Claude 3.7 Sonnet Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 16000 },
- },
- "claude-opus-4-thinking:8192": {
- id: "claude-opus-4-thinking:8192",
- name: "Claude 4 Opus Thinking (8K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "claude-sonnet-4-thinking:1024": {
- id: "claude-sonnet-4-thinking:1024",
- name: "Claude 4 Sonnet Thinking (1K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP": {
- id: "Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP",
- name: "Llama 3.3 70B Magnum v4 SE Cirrus x1 SLERP",
- 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,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "step-r1-v-mini": {
- id: "step-r1-v-mini",
- name: "Step R1 V Mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-08",
- last_updated: "2025-04-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 11 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "ernie-x1-32k-preview": {
- id: "ernie-x1-32k-preview",
- name: "Ernie X1 32k",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.33, output: 1.32 },
- limit: { context: 32000, input: 32000, output: 16384 },
- },
- "Llama-3.3-70B-StrawberryLemonade-v1.0": {
- id: "Llama-3.3-70B-StrawberryLemonade-v1.0",
- name: "Llama 3.3 70B StrawberryLemonade v1.0",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "KAT-Coder-Exp-72B-1010": {
- id: "KAT-Coder-Exp-72B-1010",
- name: "KAT Coder Exp 72B 1010",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-10-28",
- last_updated: "2025-10-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.2 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "gemini-2.5-pro-preview-03-25": {
- id: "gemini-2.5-pro-preview-03-25",
- name: "Gemini 2.5 Pro Preview 0325",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-25",
- last_updated: "2025-03-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "claude-opus-4-thinking:1024": {
- id: "claude-opus-4-thinking:1024",
- name: "Claude 4 Opus Thinking (1K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "claude-sonnet-4-20250514": {
- id: "claude-sonnet-4-20250514",
- name: "Claude 4 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "Llama-3.3-70B-Progenitor-V3.3": {
- id: "Llama-3.3-70B-Progenitor-V3.3",
- name: "Llama 3.3 70B Progenitor V3.3",
- 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,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Qwen2.5-32B-EVA-v0.2": {
- id: "Qwen2.5-32B-EVA-v0.2",
- name: "Qwen 2.5 32b EVA",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-09-01",
- last_updated: "2024-09-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.493, output: 0.493 },
- limit: { context: 24576, input: 24576, output: 8192 },
- },
- "brave-pro": {
- id: "brave-pro",
- name: "Brave (Pro)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-03-02",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 5 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- "step-2-16k-exp": {
- id: "step-2-16k-exp",
- name: "Step-2 16k Exp",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-05",
- last_updated: "2024-07-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 7.004, output: 19.992 },
- limit: { context: 16000, input: 16000, output: 8192 },
- },
- "Llama-3.3-70B-Fallen-R1-v1": {
- id: "Llama-3.3-70B-Fallen-R1-v1",
- name: "Llama 3.3 70B Fallen R1 v1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "claude-sonnet-4-thinking": {
- id: "claude-sonnet-4-thinking",
- name: "Claude 4 Sonnet Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "doubao-1.5-pro-256k": {
- id: "doubao-1.5-pro-256k",
- name: "Doubao 1.5 Pro 256k",
- 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,
- cost: { input: 0.799, output: 1.445 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "claude-3-7-sonnet-20250219": {
- id: "claude-3-7-sonnet-20250219",
- name: "Claude 3.7 Sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 200000, input: 200000, output: 16000 },
- },
- "learnlm-1.5-pro-experimental": {
- id: "learnlm-1.5-pro-experimental",
- name: "Gemini LearnLM Experimental",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-14",
- last_updated: "2024-05-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.502, output: 10.506 },
- limit: { context: 32767, input: 32767, output: 8192 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3 Coder 30B A3B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- chroma: {
- id: "chroma",
- name: "Chroma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-08-12",
- last_updated: "2025-08-12",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 0, output: 0 },
- },
- "Llama-3.3-70B-Predatorial-Extasy": {
- id: "Llama-3.3-70B-Predatorial-Extasy",
- name: "Llama 3.3 70B Predatorial Extasy",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-Aurora-Borealis": {
- id: "Llama-3.3-70B-Aurora-Borealis",
- name: "Llama 3.3 70B Aurora Borealis",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-ArliAI-RPMax-v3": {
- id: "Llama-3.3-70B-ArliAI-RPMax-v3",
- name: "Llama 3.3 70B ArliAI RPMax v3",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "venice-uncensored": {
- id: "venice-uncensored",
- name: "Venice Uncensored",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-24",
- last_updated: "2025-02-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "step-3": {
- id: "step-3",
- name: "Step-3",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-31",
- last_updated: "2025-07-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2499, output: 0.6494 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0": {
- id: "Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0",
- name: "Llama 3.3 70B Omega Directive Unslop v2.0",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "auto-model": {
- id: "auto-model",
- name: "Auto model",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-06-01",
- last_updated: "2024-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 1000000, input: 1000000, output: 1000000 },
- },
- "claude-opus-4-1-thinking:32768": {
- id: "claude-opus-4-1-thinking:32768",
- name: "Claude 4.1 Opus Thinking (32K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "Llama-3.3-70B-Shakudo": {
- id: "Llama-3.3-70B-Shakudo",
- name: "Llama 3.3 70B Shakudo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Baichuan4-Air": {
- id: "Baichuan4-Air",
- name: "Baichuan 4 Air",
- 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: false,
- cost: { input: 0.157, output: 0.157 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "kimi-thinking-preview": {
- id: "kimi-thinking-preview",
- name: "Kimi Thinking Preview",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-07",
- last_updated: "2025-05-07",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 31.46, output: 31.46 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "qwen-turbo": {
- id: "qwen-turbo",
- name: "Qwen Turbo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-11-01",
- last_updated: "2024-11-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.04998, output: 0.2006 },
- limit: { context: 1000000, input: 1000000, output: 8192 },
- },
- "Llama-3.3-70B-Mhnnn-x1": {
- id: "Llama-3.3-70B-Mhnnn-x1",
- name: "Llama 3.3 70B Mhnnn x1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "claude-opus-4-thinking:32768": {
- id: "claude-opus-4-thinking:32768",
- name: "Claude 4 Opus Thinking (32K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "Llama-3.3-70B-Argunaut-1-SFT": {
- id: "Llama-3.3-70B-Argunaut-1-SFT",
- name: "Llama 3.3 70B Argunaut 1 SFT",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "claude-opus-4-1-thinking:1024": {
- id: "claude-opus-4-1-thinking:1024",
- name: "Claude 4.1 Opus Thinking (1K)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-17",
- last_updated: "2025-06-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "phi-4-multimodal-instruct": {
- id: "phi-4-multimodal-instruct",
- name: "Phi 4 Multimodal",
- 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,
- cost: { input: 0.07, output: 0.11 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "doubao-seed-2-0-code-preview-260215": {
- id: "doubao-seed-2-0-code-preview-260215",
- name: "Doubao Seed 2.0 Code Preview",
- 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,
- cost: { input: 0.782, output: 3.893 },
- limit: { context: 256000, input: 256000, output: 128000 },
- },
- "deepseek-reasoner-cheaper": {
- id: "deepseek-reasoner-cheaper",
- name: "Deepseek R1 Cheaper",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.7 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "exa-answer": {
- id: "exa-answer",
- name: "Exa (Answer)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-04",
- last_updated: "2025-06-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 2.5 },
- limit: { context: 4096, input: 4096, output: 4096 },
- },
- "v0-1.0-md": {
- id: "v0-1.0-md",
- name: "v0 1.0 MD",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-04",
- last_updated: "2025-07-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "glm-4.1v-thinking-flash": {
- id: "glm-4.1v-thinking-flash",
- name: "GLM 4.1V Thinking 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,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 64000, input: 64000, output: 8192 },
- },
- "azure-o1": {
- id: "azure-o1",
- name: "Azure o1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-17",
- last_updated: "2024-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 59.993 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "GLM-4.5-Air-Derestricted": {
- id: "GLM-4.5-Air-Derestricted",
- name: "GLM 4.5 Air Derestricted",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 202600, input: 202600, output: 98304 },
- },
- "azure-o3-mini": {
- id: "azure-o3-mini",
- name: "Azure o3-mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.088, output: 4.3996 },
- limit: { context: 200000, input: 200000, output: 65536 },
- },
- "Llama-3.3-70B-Sapphira-0.2": {
- id: "Llama-3.3-70B-Sapphira-0.2",
- name: "Llama 3.3 70B Sapphira 0.2",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-Anthrobomination": {
- id: "Llama-3.3-70B-Anthrobomination",
- name: "Llama 3.3 70B Anthrobomination",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "QwQ-32B-ArliAI-RpR-v1": {
- id: "QwQ-32B-ArliAI-RpR-v1",
- name: "QwQ 32b Arli V1",
- 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: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "claude-opus-4-20250514": {
- id: "claude-opus-4-20250514",
- name: "Claude 4 Opus",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-05-14",
- last_updated: "2025-05-14",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.994, output: 75.004 },
- limit: { context: 200000, input: 200000, output: 32000 },
- },
- "yi-lightning": {
- id: "yi-lightning",
- name: "Yi Lightning",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-10-16",
- last_updated: "2024-10-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2006, output: 0.2006 },
- limit: { context: 12000, input: 12000, output: 4096 },
- },
- "Llama-3.3-70B-Electra-R1": {
- id: "Llama-3.3-70B-Electra-R1",
- name: "Llama 3.3 70B Electra R1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-Forgotten-Abomination-v5.0": {
- id: "Llama-3.3-70B-Forgotten-Abomination-v5.0",
- name: "Llama 3.3 70B Forgotten Abomination v5.0",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Llama-3.3-70B-Cirrus-x1": {
- id: "Llama-3.3-70B-Cirrus-x1",
- name: "Llama 3.3 70B Cirrus x1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "grok-3-mini-beta": {
- id: "grok-3-mini-beta",
- name: "Grok 3 Mini Beta",
- 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: false,
- cost: { input: 0.3, output: 0.5 },
- limit: { context: 131072, input: 131072, output: 131072 },
- },
- "auto-model-standard": {
- id: "auto-model-standard",
- name: "Auto model (Standard)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-06-01",
- last_updated: "2024-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 1000000, input: 1000000, output: 1000000 },
- },
- "claude-sonnet-4-5-20250929-thinking": {
- id: "claude-sonnet-4-5-20250929-thinking",
- name: "Claude Sonnet 4.5 Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.992, output: 14.994 },
- limit: { context: 1000000, input: 1000000, output: 64000 },
- },
- "v0-1.5-md": {
- id: "v0-1.5-md",
- name: "v0 1.5 MD",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-04",
- last_updated: "2025-07-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, input: 200000, output: 64000 },
- },
- "kimi-k2-instruct-fast": {
- id: "kimi-k2-instruct-fast",
- name: "Kimi K2 0711 Fast",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-15",
- last_updated: "2025-07-15",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 2 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "glm-4-long": {
- id: "glm-4-long",
- name: "GLM-4 Long",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-08-01",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2006, output: 0.2006 },
- limit: { context: 1000000, input: 1000000, output: 4096 },
- },
- "mercury-coder-small": {
- id: "mercury-coder-small",
- name: "Mercury Coder Small",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-26",
- last_updated: "2025-02-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "jamba-large-1.7": {
- id: "jamba-large-1.7",
- name: "Jamba Large 1.7",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.989, output: 7.99 },
- limit: { context: 256000, input: 256000, output: 4096 },
- },
- "qvq-max": {
- id: "qvq-max",
- name: "Qwen: QvQ Max",
- 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: false,
- cost: { input: 1.4, output: 5.3 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "gemini-2.0-flash-thinking-exp-1219": {
- id: "gemini-2.0-flash-thinking-exp-1219",
- name: "Gemini 2.0 Flash Thinking 1219",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-19",
- last_updated: "2024-12-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1003, output: 0.408 },
- limit: { context: 32767, input: 32767, output: 8192 },
- },
- "gemini-2.0-flash-lite": {
- id: "gemini-2.0-flash-lite",
- name: "Gemini 2.0 Flash Lite",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0748, output: 0.306 },
- limit: { context: 1000000, input: 1000000, output: 8192 },
- },
- "azure-gpt-4-turbo": {
- id: "azure-gpt-4-turbo",
- name: "Azure gpt-4-turbo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-11-06",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 30.005 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "Baichuan-M2": {
- id: "Baichuan-M2",
- name: "Baichuan M2 32B Medical",
- 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: false,
- cost: { input: 15.73, output: 15.73 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "qwen-long": {
- id: "qwen-long",
- name: "Qwen Long 10M",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-25",
- last_updated: "2025-01-25",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1003, output: 0.408 },
- limit: { context: 10000000, input: 10000000, output: 8192 },
- },
- "sonar-reasoning-pro": {
- id: "sonar-reasoning-pro",
- name: "Perplexity Reasoning Pro",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.006, output: 7.9985 },
- limit: { context: 127000, input: 127000, output: 128000 },
- },
- "gemini-2.5-flash-preview-05-20:thinking": {
- id: "gemini-2.5-flash-preview-05-20:thinking",
- name: "Gemini 2.5 Flash 0520 Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 3.5 },
- limit: { context: 1048000, input: 1048000, output: 65536 },
- },
- "GLM-4.5-Air-Derestricted-Steam-ReExtract": {
- id: "GLM-4.5-Air-Derestricted-Steam-ReExtract",
- name: "GLM 4.5 Air Derestricted Steam ReExtract",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-12",
- last_updated: "2025-12-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 131072, input: 131072, output: 65536 },
- },
- "Llama-3.3-70B-Dark-Ages-v0.1": {
- id: "Llama-3.3-70B-Dark-Ages-v0.1",
- name: "Llama 3.3 70B Dark Ages v0.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "Baichuan4-Turbo": {
- id: "Baichuan4-Turbo",
- name: "Baichuan 4 Turbo",
- 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: false,
- cost: { input: 2.42, output: 2.42 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "doubao-1.5-vision-pro-32k": {
- id: "doubao-1.5-vision-pro-32k",
- name: "Doubao 1.5 Vision Pro 32k",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-22",
- last_updated: "2025-01-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.459, output: 1.377 },
- limit: { context: 32000, input: 32000, output: 8192 },
- },
- "inflection/inflection-3-pi": {
- id: "inflection/inflection-3-pi",
- name: "Inflection 3 Pi",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-10-11",
- last_updated: "2024-10-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.499, output: 9.996 },
- limit: { context: 8000, input: 8000, output: 4096 },
- },
- "inflection/inflection-3-productivity": {
- id: "inflection/inflection-3-productivity",
- name: "Inflection 3 Productivity",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-10-11",
- last_updated: "2024-10-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.499, output: 9.996 },
- limit: { context: 8000, input: 8000, output: 4096 },
- },
- "essentialai/rnj-1-instruct": {
- id: "essentialai/rnj-1-instruct",
- name: "RNJ-1 Instruct 8B",
- family: "rnj",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-13",
- last_updated: "2025-12-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "LLM360/K2-Think": {
- id: "LLM360/K2-Think",
- name: "K2-Think",
- 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: false,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "TEE/kimi-k2.5": {
- id: "TEE/kimi-k2.5",
- name: "Kimi K2.5 TEE",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.9 },
- limit: { context: 128000, input: 128000, output: 65535 },
- },
- "TEE/glm-4.7": {
- id: "TEE/glm-4.7",
- name: "GLM 4.7 TEE",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.85, output: 3.3 },
- limit: { context: 131000, input: 131000, output: 65535 },
- },
- "TEE/qwen3.5-397b-a17b": {
- id: "TEE/qwen3.5-397b-a17b",
- name: "Qwen3.5 397B A17B TEE",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-02-28",
- last_updated: "2026-02-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 258048, input: 258048, output: 65536 },
- },
- "TEE/glm-5": {
- id: "TEE/glm-5",
- name: "GLM 5 TEE",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 3.5 },
- limit: { context: 203000, input: 203000, output: 65535 },
- },
- "TEE/qwen2.5-vl-72b-instruct": {
- id: "TEE/qwen2.5-vl-72b-instruct",
- name: "Qwen2.5 VL 72B TEE",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-01",
- last_updated: "2025-02-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "TEE/minimax-m2.1": {
- id: "TEE/minimax-m2.1",
- name: "MiniMax M2.1 TEE",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 200000, input: 200000, output: 131072 },
- },
- "TEE/qwen3-30b-a3b-instruct-2507": {
- id: "TEE/qwen3-30b-a3b-instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507 TEE",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.44999999999999996 },
- limit: { context: 262000, input: 262000, output: 32768 },
- },
- "TEE/deepseek-v3.1": {
- id: "TEE/deepseek-v3.1",
- name: "DeepSeek V3.1 TEE",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 2.5 },
- limit: { context: 164000, input: 164000, output: 8192 },
- },
- "TEE/llama3-3-70b": {
- id: "TEE/llama3-3-70b",
- name: "Llama 3.3 70B",
- 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: false,
- cost: { input: 2, output: 2 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "TEE/glm-4.6": {
- id: "TEE/glm-4.6",
- name: "GLM 4.6 TEE",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.75, output: 2 },
- limit: { context: 203000, input: 203000, output: 65535 },
- },
- "TEE/kimi-k2.5-thinking": {
- id: "TEE/kimi-k2.5-thinking",
- name: "Kimi K2.5 Thinking TEE",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.9 },
- limit: { context: 128000, input: 128000, output: 65535 },
- },
- "TEE/gemma-3-27b-it": {
- id: "TEE/gemma-3-27b-it",
- name: "Gemma 3 27B TEE",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "TEE/deepseek-v3.2": {
- id: "TEE/deepseek-v3.2",
- name: "DeepSeek V3.2 TEE",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1 },
- limit: { context: 164000, input: 164000, output: 65536 },
- },
- "TEE/gpt-oss-20b": {
- id: "TEE/gpt-oss-20b",
- name: "GPT-OSS 20B TEE",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "TEE/qwen3-coder": {
- id: "TEE/qwen3-coder",
- name: "Qwen3 Coder 480B TEE",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-23",
- last_updated: "2025-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 2 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "TEE/glm-4.7-flash": {
- id: "TEE/glm-4.7-flash",
- name: "GLM 4.7 Flash TEE",
- family: "glm-flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-19",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.5 },
- limit: { context: 203000, input: 203000, output: 65535 },
- },
- "TEE/gpt-oss-120b": {
- id: "TEE/gpt-oss-120b",
- name: "GPT-OSS 120B TEE",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 2 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "TEE/deepseek-r1-0528": {
- id: "TEE/deepseek-r1-0528",
- name: "DeepSeek R1 0528 TEE",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 2 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "TEE/kimi-k2-thinking": {
- id: "TEE/kimi-k2-thinking",
- name: "Kimi K2 Thinking TEE",
- family: "kimi-thinking",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 2 },
- limit: { context: 128000, input: 128000, output: 65535 },
- },
- "CrucibleLab/L3.3-70B-Loki-V2.0": {
- id: "CrucibleLab/L3.3-70B-Loki-V2.0",
- name: "L3.3 70B Loki v2.0",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-22",
- last_updated: "2026-01-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "deepseek/deepseek-v3.2:thinking": {
- id: "deepseek/deepseek-v3.2:thinking",
- name: "DeepSeek V3.2 Thinking",
- family: "deepseek",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27999999999999997, output: 0.42000000000000004 },
- limit: { context: 163000, input: 163000, output: 65536 },
- },
- "deepseek/deepseek-prover-v2-671b": {
- id: "deepseek/deepseek-prover-v2-671b",
- name: "DeepSeek Prover v2 671B",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-30",
- last_updated: "2025-04-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 2.5 },
- limit: { context: 160000, input: 160000, output: 16384 },
- },
- "deepseek/deepseek-v3.2-speciale": {
- id: "deepseek/deepseek-v3.2-speciale",
- name: "DeepSeek V3.2 Speciale",
- family: "deepseek",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-02",
- last_updated: "2025-12-02",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27999999999999997, output: 0.42000000000000004 },
- limit: { context: 163000, input: 163000, output: 65536 },
- },
- "deepseek/deepseek-v3.2": {
- id: "deepseek/deepseek-v3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27999999999999997, output: 0.42000000000000004 },
- limit: { context: 163000, input: 163000, output: 65536 },
- },
- "Doctor-Shotgun/MS3.2-24B-Magnum-Diamond": {
- id: "Doctor-Shotgun/MS3.2-24B-Magnum-Diamond",
- name: "MS3.2 24B Magnum Diamond",
- 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: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 32768 },
- },
- "NeverSleep/Llama-3-Lumimaid-70B-v0.1": {
- id: "NeverSleep/Llama-3-Lumimaid-70B-v0.1",
- name: "Lumimaid 70b",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.006, output: 2.006 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "NeverSleep/Lumimaid-v0.2-70B": {
- id: "NeverSleep/Lumimaid-v0.2-70B",
- name: "Lumimaid v0.2",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 1.5 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "Steelskull/L3.3-Cu-Mai-R1-70b": {
- id: "Steelskull/L3.3-Cu-Mai-R1-70b",
- name: "Llama 3.3 70B Cu Mai",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "Steelskull/L3.3-Nevoria-R1-70b": {
- id: "Steelskull/L3.3-Nevoria-R1-70b",
- name: "Steelskull Nevoria R1 70b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "Steelskull/L3.3-MS-Evayale-70B": {
- id: "Steelskull/L3.3-MS-Evayale-70B",
- name: "Evayale 70b ",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "Steelskull/L3.3-Electra-R1-70b": {
- id: "Steelskull/L3.3-Electra-R1-70b",
- name: "Steelskull Electra R1 70b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.69989, output: 0.69989 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "Steelskull/L3.3-MS-Nevoria-70b": {
- id: "Steelskull/L3.3-MS-Nevoria-70b",
- name: "Steelskull Nevoria 70b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "Steelskull/L3.3-MS-Evalebis-70b": {
- id: "Steelskull/L3.3-MS-Evalebis-70b",
- name: "MS Evalebis 70b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "miromind-ai/mirothinker-v1.5-235b": {
- id: "miromind-ai/mirothinker-v1.5-235b",
- name: "MiroThinker v1.5 235B",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-07",
- last_updated: "2026-01-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 32768, input: 32768, output: 4000 },
- },
- "pamanseau/OpenReasoning-Nemotron-32B": {
- id: "pamanseau/OpenReasoning-Nemotron-32B",
- name: "OpenReasoning Nemotron 32B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 32768, input: 32768, output: 65536 },
- },
- "arcee-ai/trinity-mini": {
- id: "arcee-ai/trinity-mini",
- name: "Trinity Mini",
- family: "trinity-mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.045000000000000005, output: 0.15 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "arcee-ai/trinity-large": {
- id: "arcee-ai/trinity-large",
- name: "Trinity Large",
- family: "trinity",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "cognitivecomputations/dolphin-2.9.2-qwen2-72b": {
- id: "cognitivecomputations/dolphin-2.9.2-qwen2-72b",
- name: "Dolphin 72b",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-27",
- last_updated: "2025-02-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.306 },
- limit: { context: 8192, input: 8192, output: 4096 },
- },
- "deepcogito/cogito-v1-preview-qwen-32B": {
- id: "deepcogito/cogito-v1-preview-qwen-32B",
- name: "Cogito v1 Preview Qwen 32B",
- 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: false,
- cost: { input: 1.7999999999999998, output: 1.7999999999999998 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "deepcogito/cogito-v2.1-671b": {
- id: "deepcogito/cogito-v2.1-671b",
- name: "Cogito v2.1 671B MoE",
- family: "cogito",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-19",
- last_updated: "2025-11-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 1.25 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "Salesforce/Llama-xLAM-2-70b-fc-r": {
- id: "Salesforce/Llama-xLAM-2-70b-fc-r",
- name: "Llama-xLAM-2 70B fc-r",
- 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: false,
- cost: { input: 2.5, output: 2.5 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "NousResearch 2/hermes-4-405b:thinking": {
- id: "NousResearch 2/hermes-4-405b:thinking",
- name: "Hermes 4 Large (Thinking)",
- family: "nousresearch",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "NousResearch 2/DeepHermes-3-Mistral-24B-Preview": {
- id: "NousResearch 2/DeepHermes-3-Mistral-24B-Preview",
- name: "DeepHermes-3 Mistral 24B (Preview)",
- family: "nousresearch",
- 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: false,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "NousResearch 2/Hermes-4-70B:thinking": {
- id: "NousResearch 2/Hermes-4-70B:thinking",
- name: "Hermes 4 (Thinking)",
- 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: false,
- cost: { input: 0.2006, output: 0.39949999999999997 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "NousResearch 2/hermes-4-405b": {
- id: "NousResearch 2/hermes-4-405b",
- name: "Hermes 4 Large",
- family: "nousresearch",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "NousResearch 2/hermes-3-llama-3.1-70b": {
- id: "NousResearch 2/hermes-3-llama-3.1-70b",
- name: "Hermes 3 70B",
- family: "nousresearch",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-07",
- last_updated: "2026-01-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.408, output: 0.408 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "NousResearch 2/hermes-4-70b": {
- id: "NousResearch 2/hermes-4-70b",
- name: "Hermes 4 Medium",
- family: "nousresearch",
- 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: false,
- cost: { input: 0.2006, output: 0.39949999999999997 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "soob3123/Veiled-Calla-12B": {
- id: "soob3123/Veiled-Calla-12B",
- name: "Veiled Calla 12B",
- 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: false,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "soob3123/GrayLine-Qwen3-8B": {
- id: "soob3123/GrayLine-Qwen3-8B",
- name: "Grayline Qwen3 8B",
- 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: false,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 16384, input: 16384, output: 32768 },
- },
- "soob3123/amoral-gemma3-27B-v2": {
- id: "soob3123/amoral-gemma3-27B-v2",
- name: "Amoral Gemma3 27B v2",
- 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: false,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "nex-agi/deepseek-v3.1-nex-n1": {
- id: "nex-agi/deepseek-v3.1-nex-n1",
- name: "DeepSeek V3.1 Nex N1",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-10",
- last_updated: "2025-12-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27999999999999997, output: 0.42000000000000004 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B": {
- id: "Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B",
- name: "Llama 3.05 Storybreaker Ministral 70b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B": {
- id: "Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B",
- name: "Nemotron Tenyxchat Storybreaker 70b",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "anthracite-org/magnum-v4-72b": {
- id: "anthracite-org/magnum-v4-72b",
- name: "Magnum v4 72B",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.006, output: 2.992 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "anthracite-org/magnum-v2-72b": {
- id: "anthracite-org/magnum-v2-72b",
- name: "Magnum V2 72B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.006, output: 2.992 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "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",
- 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: false,
- cost: { input: 0.5, output: 0.5 },
- limit: { context: 16384, input: 16384, output: 32768 },
- },
- "ReadyArt/The-Omega-Abomination-L-70B-v1.0": {
- id: "ReadyArt/The-Omega-Abomination-L-70B-v1.0",
- name: "The Omega Abomination V1",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7, output: 0.95 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "undi95/remm-slerp-l2-13b": {
- id: "undi95/remm-slerp-l2-13b",
- name: "ReMM SLERP 13B",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7989999999999999, output: 1.2069999999999999 },
- limit: { context: 6144, input: 6144, output: 4096 },
- },
- "MarinaraSpaghetti/NemoMix-Unleashed-12B": {
- id: "MarinaraSpaghetti/NemoMix-Unleashed-12B",
- name: "NemoMix 12B Unleashed",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "allenai/molmo-2-8b": {
- id: "allenai/molmo-2-8b",
- name: "Molmo 2 8B",
- family: "allenai",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-02-14",
- last_updated: "2026-02-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 36864, input: 36864, output: 36864 },
- },
- "allenai/olmo-3.1-32b-instruct": {
- id: "allenai/olmo-3.1-32b-instruct",
- name: "Olmo 3.1 32B Instruct",
- family: "allenai",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-25",
- last_updated: "2026-01-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "allenai/olmo-3.1-32b-think": {
- id: "allenai/olmo-3.1-32b-think",
- name: "Olmo 3.1 32B Think",
- family: "allenai",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-25",
- last_updated: "2026-01-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.5 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "allenai/olmo-3-32b-think": {
- id: "allenai/olmo-3-32b-think",
- name: "Olmo 3 32B Think",
- family: "allenai",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-01",
- last_updated: "2025-11-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.44999999999999996 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "stepfun-ai/step-3.5-flash:thinking": {
- id: "stepfun-ai/step-3.5-flash:thinking",
- name: "Step 3.5 Flash Thinking",
- family: "step",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2026-02-02",
- last_updated: "2026-02-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 256000, input: 256000, output: 256000 },
- },
- "stepfun-ai/step-3.5-flash": {
- id: "stepfun-ai/step-3.5-flash",
- name: "Step 3.5 Flash",
- family: "step",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2026-02-02",
- last_updated: "2026-02-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 256000, input: 256000, output: 256000 },
- },
- "zai-org/glm-4.7": {
- id: "zai-org/glm-4.7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.8 },
- limit: { context: 200000, input: 200000, output: 128000 },
- },
- "zai-org/glm-5": {
- id: "zai-org/glm-5",
- name: "GLM 5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 2.55 },
- limit: { context: 200000, input: 200000, output: 128000 },
- },
- "zai-org/glm-5.1": {
- id: "zai-org/glm-5.1",
- name: "GLM 5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-03-27",
- last_updated: "2026-03-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 2.55 },
- limit: { context: 200000, input: 200000, output: 131072 },
- },
- "zai-org/glm-5.1:thinking": {
- id: "zai-org/glm-5.1:thinking",
- name: "GLM 5.1 Thinking",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-03-27",
- last_updated: "2026-03-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 2.55 },
- limit: { context: 200000, input: 200000, output: 131072 },
- },
- "zai-org/glm-5:thinking": {
- id: "zai-org/glm-5:thinking",
- name: "GLM 5 Thinking",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 2.55 },
- limit: { context: 200000, input: 200000, output: 128000 },
- },
- "zai-org/glm-4.7-flash": {
- id: "zai-org/glm-4.7-flash",
- name: "GLM 4.7 Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-01-19",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.4 },
- limit: { context: 200000, input: 200000, output: 128000 },
- },
- "featherless-ai/Qwerky-72B": {
- id: "featherless-ai/Qwerky-72B",
- name: "Qwerky 72B",
- family: "qwerky",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-20",
- last_updated: "2025-03-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 0.5 },
- limit: { context: 32000, input: 32000, output: 8192 },
- },
- "mlabonne/NeuralDaredevil-8B-abliterated": {
- id: "mlabonne/NeuralDaredevil-8B-abliterated",
- name: "Neural Daredevil 8B abliterated",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.44, output: 0.44 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- "raifle/sorcererlm-8x22b": {
- id: "raifle/sorcererlm-8x22b",
- name: "SorcererLM 8x22B",
- family: "mixtral",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.505, output: 4.505 },
- limit: { context: 16000, input: 16000, output: 8192 },
- },
- "mistralai/mixtral-8x7b-instruct-v0.1": {
- id: "mistralai/mixtral-8x7b-instruct-v0.1",
- name: "Mixtral 8x7B",
- 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: false,
- cost: { input: 0.27, output: 0.27 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "mistralai/mistral-saba": {
- id: "mistralai/mistral-saba",
- name: "Mistral Saba",
- family: "mistral",
- 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: false,
- cost: { input: 0.1989, output: 0.595 },
- limit: { context: 32000, input: 32000, output: 32768 },
- },
- "mistralai/mistral-large-3-675b-instruct-2512": {
- id: "mistralai/mistral-large-3-675b-instruct-2512",
- name: "Mistral Large 3 675B",
- family: "mistral-large",
- 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: false,
- cost: { input: 1, output: 3 },
- limit: { context: 262144, input: 262144, output: 256000 },
- },
- "mistralai/devstral-2-123b-instruct-2512": {
- id: "mistralai/devstral-2-123b-instruct-2512",
- name: "Devstral 2 123B",
- 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: false,
- cost: { input: 0.4, output: 1.4 },
- limit: { context: 262144, input: 262144, output: 65536 },
- },
- "mistralai/codestral-2508": {
- id: "mistralai/codestral-2508",
- name: "Codestral 2508",
- 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,
- cost: { input: 0.3, output: 0.8999999999999999 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "mistralai/ministral-14b-instruct-2512": {
- id: "mistralai/ministral-14b-instruct-2512",
- name: "Ministral 3 14B",
- 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: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 262144, input: 262144, output: 32768 },
- },
- "mistralai/mistral-tiny": {
- id: "mistralai/mistral-tiny",
- name: "Mistral Tiny",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-12-11",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25499999999999995, output: 0.25499999999999995 },
- limit: { context: 32000, input: 32000, output: 8192 },
- },
- "mistralai/ministral-8b-2512": {
- id: "mistralai/ministral-8b-2512",
- name: "Ministral 8B",
- 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: false,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 262144, input: 262144, output: 32768 },
- },
- "mistralai/mixtral-8x22b-instruct-v0.1": {
- id: "mistralai/mixtral-8x22b-instruct-v0.1",
- name: "Mixtral 8x22B",
- 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: false,
- cost: { input: 0.8999999999999999, output: 0.8999999999999999 },
- limit: { context: 65536, input: 65536, output: 32768 },
- },
- "mistralai/mistral-medium-3.1": {
- id: "mistralai/mistral-medium-3.1",
- name: "Mistral Medium 3.1",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, input: 131072, output: 32768 },
- },
- "mistralai/ministral-3b-2512": {
- id: "mistralai/ministral-3b-2512",
- name: "Ministral 3B",
- 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: false,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131072, input: 131072, output: 32768 },
- },
- "mistralai/Mistral-Nemo-Instruct-2407": {
- id: "mistralai/Mistral-Nemo-Instruct-2407",
- name: "Mistral Nemo",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1003, output: 0.1207 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "mistralai/mistral-medium-3": {
- id: "mistralai/mistral-medium-3",
- name: "Mistral Medium 3",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, input: 131072, output: 32768 },
- },
- "mistralai/mistral-7b-instruct": {
- id: "mistralai/mistral-7b-instruct",
- name: "Mistral 7B Instruct",
- family: "mistral",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-27",
- last_updated: "2024-05-27",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0544, output: 0.0544 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "mistralai/Devstral-Small-2505": {
- id: "mistralai/Devstral-Small-2505",
- name: "Mistral Devstral Small 2505",
- 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: false,
- cost: { input: 0.060000000000000005, output: 0.060000000000000005 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "mistralai/mistral-small-creative": {
- id: "mistralai/mistral-small-creative",
- name: "Mistral Small Creative",
- family: "mistral-small",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-12-16",
- last_updated: "2025-12-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "mistralai/mistral-large": {
- id: "mistralai/mistral-large",
- name: "Mistral Large 2411",
- family: "mistral-large",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-02-26",
- last_updated: "2024-02-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.006, output: 6.001 },
- limit: { context: 128000, input: 128000, output: 256000 },
- },
- "mistralai/ministral-14b-2512": {
- id: "mistralai/ministral-14b-2512",
- name: "Ministral 14B",
- 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: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 262144, input: 262144, output: 32768 },
- },
- "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",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 0.5 },
- limit: { context: 32768, input: 32768, output: 4096 },
- },
- "shisa-ai/shisa-v2-llama3.3-70b": {
- id: "shisa-ai/shisa-v2-llama3.3-70b",
- name: "Shisa V2 Llama 3.3 70B",
- 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: false,
- cost: { input: 0.5, output: 0.5 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "meta-llama/llama-3.3-70b-instruct": {
- id: "meta-llama/llama-3.3-70b-instruct",
- name: "Llama 3.3 70b Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-02-27",
- last_updated: "2025-02-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.23 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "meta-llama/llama-4-scout": {
- id: "meta-llama/llama-4-scout",
- name: "Llama 4 Scout",
- 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: false,
- cost: { input: 0.085, output: 0.46 },
- limit: { context: 328000, input: 328000, output: 65536 },
- },
- "meta-llama/llama-4-maverick": {
- id: "meta-llama/llama-4-maverick",
- name: "Llama 4 Maverick",
- 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: false,
- cost: { input: 0.18000000000000002, output: 0.8 },
- limit: { context: 1048576, input: 1048576, output: 65536 },
- },
- "meta-llama/llama-3.2-90b-vision-instruct": {
- id: "meta-llama/llama-3.2-90b-vision-instruct",
- name: "Llama 3.2 Medium",
- 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: false,
- cost: { input: 0.9009999999999999, output: 0.9009999999999999 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "meta-llama/llama-3.2-3b-instruct": {
- id: "meta-llama/llama-3.2-3b-instruct",
- name: "Llama 3.2 3b Instruct",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-09-25",
- last_updated: "2024-09-25",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0306, output: 0.0493 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "meta-llama/llama-3.1-8b-instruct": {
- id: "meta-llama/llama-3.1-8b-instruct",
- name: "Llama 3.1 8b Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0544, output: 0.0544 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "GalrionSoftworks/MN-LooseCannon-12B-v1": {
- id: "GalrionSoftworks/MN-LooseCannon-12B-v1",
- name: "MN-LooseCannon-12B-v1",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "baseten/Kimi-K2-Instruct-FP4": {
- id: "baseten/Kimi-K2-Instruct-FP4",
- name: "Kimi K2 0711 Instruct FP4",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-11",
- last_updated: "2025-07-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 2 },
- limit: { context: 128000, input: 128000, output: 131072 },
- },
- "Gryphe/MythoMax-L2-13b": {
- id: "Gryphe/MythoMax-L2-13b",
- name: "MythoMax 13B",
- 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: false,
- cost: { input: 0.1003, output: 0.1003 },
- limit: { context: 4000, input: 4000, output: 4096 },
- },
- "x-ai/grok-4-fast:thinking": {
- id: "x-ai/grok-4-fast:thinking",
- name: "Grok 4 Fast Thinking",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, input: 2000000, output: 131072 },
- },
- "x-ai/grok-4-07-09": {
- id: "x-ai/grok-4-07-09",
- name: "Grok 4",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 256000, input: 256000, output: 131072 },
- },
- "x-ai/grok-4-fast": {
- id: "x-ai/grok-4-fast",
- name: "Grok 4 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-20",
- last_updated: "2025-09-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, input: 2000000, output: 131072 },
- },
- "x-ai/grok-code-fast-1": {
- id: "x-ai/grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-28",
- last_updated: "2025-08-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 256000, input: 256000, output: 131072 },
- },
- "x-ai/grok-4.1-fast": {
- id: "x-ai/grok-4.1-fast",
- name: "Grok 4.1 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-20",
- last_updated: "2025-11-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, input: 2000000, output: 131072 },
- },
- "x-ai/grok-4.1-fast-reasoning": {
- id: "x-ai/grok-4.1-fast-reasoning",
- name: "Grok 4.1 Fast Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-20",
- last_updated: "2025-11-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, input: 2000000, output: 131072 },
- },
- "tencent/Hunyuan-MT-7B": {
- id: "tencent/Hunyuan-MT-7B",
- name: "Hunyuan MT 7B",
- family: "hunyuan",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-18",
- last_updated: "2025-09-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 20 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- "microsoft/wizardlm-2-8x22b": {
- id: "microsoft/wizardlm-2-8x22b",
- name: "WizardLM-2 8x22B",
- 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: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "microsoft/MAI-DS-R1-FP8": {
- id: "microsoft/MAI-DS-R1-FP8",
- name: "Microsoft DeepSeek R1",
- family: "deepseek",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "cohere/command-r": {
- id: "cohere/command-r",
- name: "Cohere: Command R",
- family: "command-r",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-03-11",
- last_updated: "2024-03-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.476, output: 1.428 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "cohere/command-r-plus-08-2024": {
- id: "cohere/command-r-plus-08-2024",
- name: "Cohere: Command R+",
- family: "command-r",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- release_date: "2024-08-30",
- last_updated: "2024-08-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.856, output: 14.246 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "chutesai/Mistral-Small-3.2-24B-Instruct-2506": {
- id: "chutesai/Mistral-Small-3.2-24B-Instruct-2506",
- name: "Mistral Small 3.2 24b Instruct",
- 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: false,
- cost: { input: 0.2, output: 0.4 },
- limit: { context: 128000, input: 128000, output: 131072 },
- },
- "nvidia/Llama-3.1-Nemotron-Ultra-253B-v1": {
- id: "nvidia/Llama-3.1-Nemotron-Ultra-253B-v1",
- name: "Nvidia Nemotron Ultra 253B",
- family: "nemotron",
- 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: false,
- cost: { input: 0.4, output: 0.8 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "nvidia/nemotron-3-nano-30b-a3b": {
- id: "nvidia/nemotron-3-nano-30b-a3b",
- name: "Nvidia Nemotron 3 Nano 30B",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-15",
- last_updated: "2025-12-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 256000, input: 256000, output: 262144 },
- },
- "nvidia/nvidia-nemotron-nano-9b-v2": {
- id: "nvidia/nvidia-nemotron-nano-9b-v2",
- name: "Nvidia Nemotron Nano 9B v2",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-18",
- last_updated: "2025-08-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "nvidia/Llama-3.1-Nemotron-70B-Instruct-HF": {
- id: "nvidia/Llama-3.1-Nemotron-70B-Instruct-HF",
- name: "Nvidia Nemotron 70b",
- family: "nemotron",
- 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: false,
- cost: { input: 0.357, output: 0.408 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "nvidia/Llama-3.3-Nemotron-Super-49B-v1": {
- id: "nvidia/Llama-3.3-Nemotron-Super-49B-v1",
- name: "Nvidia Nemotron Super 49B",
- family: "nemotron",
- 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: false,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "nvidia/Llama-3_3-Nemotron-Super-49B-v1_5": {
- id: "nvidia/Llama-3_3-Nemotron-Super-49B-v1_5",
- name: "Nvidia Nemotron Super 49B v1.5",
- family: "nemotron",
- 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: false,
- cost: { input: 0.05, output: 0.25 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "TheDrummer 2/Anubis-70B-v1": {
- id: "TheDrummer 2/Anubis-70B-v1",
- name: "Anubis 70B v1",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.31, output: 0.31 },
- limit: { context: 65536, input: 65536, output: 16384 },
- },
- "TheDrummer 2/Cydonia-24B-v4.3": {
- id: "TheDrummer 2/Cydonia-24B-v4.3",
- name: "The Drummer Cydonia 24B v4.3",
- family: "llama",
- 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: false,
- cost: { input: 0.1003, output: 0.1207 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "TheDrummer 2/Magidonia-24B-v4.3": {
- id: "TheDrummer 2/Magidonia-24B-v4.3",
- name: "The Drummer Magidonia 24B v4.3",
- family: "llama",
- 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: false,
- cost: { input: 0.1003, output: 0.1207 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "TheDrummer 2/Cydonia-24B-v4": {
- id: "TheDrummer 2/Cydonia-24B-v4",
- name: "The Drummer Cydonia 24B v4",
- family: "llama",
- 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: false,
- cost: { input: 0.2006, output: 0.2414 },
- limit: { context: 16384, input: 16384, output: 32768 },
- },
- "TheDrummer 2/Anubis-70B-v1.1": {
- id: "TheDrummer 2/Anubis-70B-v1.1",
- name: "Anubis 70B v1.1",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.31, output: 0.31 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "TheDrummer 2/Rocinante-12B-v1.1": {
- id: "TheDrummer 2/Rocinante-12B-v1.1",
- name: "Rocinante 12b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.408, output: 0.595 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "TheDrummer 2/Cydonia-24B-v4.1": {
- id: "TheDrummer 2/Cydonia-24B-v4.1",
- name: "The Drummer Cydonia 24B v4.1",
- family: "llama",
- 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: false,
- cost: { input: 0.1003, output: 0.1207 },
- limit: { context: 16384, input: 16384, output: 32768 },
- },
- "TheDrummer 2/UnslopNemo-12B-v4.1": {
- id: "TheDrummer 2/UnslopNemo-12B-v4.1",
- name: "UnslopNemo 12b v4",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "TheDrummer 2/Cydonia-24B-v2": {
- id: "TheDrummer 2/Cydonia-24B-v2",
- name: "The Drummer Cydonia 24B v2",
- family: "llama",
- 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: false,
- cost: { input: 0.1003, output: 0.1207 },
- limit: { context: 16384, input: 16384, output: 32768 },
- },
- "TheDrummer 2/skyfall-36b-v2": {
- id: "TheDrummer 2/skyfall-36b-v2",
- name: "TheDrummer Skyfall 36B V2",
- family: "llama",
- 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: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 64000, input: 64000, output: 32768 },
- },
- "deepseek-ai/DeepSeek-V3.1:thinking": {
- id: "deepseek-ai/DeepSeek-V3.1:thinking",
- name: "DeepSeek V3.1 Thinking",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "deepseek-ai/DeepSeek-V3.1": {
- id: "deepseek-ai/DeepSeek-V3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-07-26",
- last_updated: "2025-07-26",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "deepseek-ai/DeepSeek-V3.1-Terminus:thinking": {
- id: "deepseek-ai/DeepSeek-V3.1-Terminus:thinking",
- name: "DeepSeek V3.1 Terminus (Thinking)",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-22",
- last_updated: "2025-09-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "deepseek-ai/deepseek-v3.2-exp-thinking": {
- id: "deepseek-ai/deepseek-v3.2-exp-thinking",
- name: "DeepSeek V3.2 Exp Thinking",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27999999999999997, output: 0.42000000000000004 },
- limit: { context: 163840, input: 163840, output: 65536 },
- },
- "deepseek-ai/deepseek-v3.2-exp": {
- id: "deepseek-ai/deepseek-v3.2-exp",
- name: "DeepSeek V3.2 Exp",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27999999999999997, output: 0.42000000000000004 },
- limit: { context: 163840, input: 163840, output: 65536 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek R1 0528",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.7 },
- limit: { context: 128000, input: 128000, output: 163840 },
- },
- "deepseek-ai/DeepSeek-V3.1-Terminus": {
- id: "deepseek-ai/DeepSeek-V3.1-Terminus",
- name: "DeepSeek V3.1 Terminus",
- 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: false,
- cost: { input: 0.25, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "openai/gpt-5.1-codex-max": {
- id: "openai/gpt-5.1-codex-max",
- name: "GPT 5.1 Codex Max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 20 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-5.2-chat": {
- id: "openai/gpt-5.2-chat",
- name: "GPT 5.2 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-01",
- last_updated: "2026-01-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, input: 400000, output: 16384 },
- },
- "openai/gpt-4o-mini-search-preview": {
- id: "openai/gpt-4o-mini-search-preview",
- name: "GPT-4o mini Search Preview",
- family: "gpt-mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.088, output: 0.35 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/chatgpt-4o-latest": {
- id: "openai/chatgpt-4o-latest",
- name: "ChatGPT 4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 14.993999999999998 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "GPT 5.2 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-01-01",
- last_updated: "2026-01-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT 5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "GPT 5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.4 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-4-turbo": {
- id: "openai/gpt-4-turbo",
- name: "GPT-4 Turbo",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-11-06",
- last_updated: "2024-01-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT 5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-01-01",
- last_updated: "2026-01-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/o3-mini-high": {
- id: "openai/o3-mini-high",
- name: "OpenAI o3-mini (High)",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.64, output: 2.588 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1496, output: 0.595 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/o4-mini-deep-research": {
- id: "openai/o4-mini-deep-research",
- name: "OpenAI o4-mini Deep Research",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-5.1-chat": {
- id: "openai/gpt-5.1-chat",
- name: "GPT 5.1 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "OpenAI o4-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT 5.2 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "GPT 5.1 Codex Mini",
- family: "gpt-codex-mini",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/o1-preview": {
- id: "openai/o1-preview",
- name: "OpenAI o1-preview",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.993999999999998, output: 59.993 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "openai/gpt-4o-2024-08-06": {
- id: "openai/gpt-4o-2024-08-06",
- name: "GPT-4o (2024-08-06)",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-08-06",
- last_updated: "2024-08-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.499, output: 9.996 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT 5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/o1": {
- id: "openai/o1",
- name: "OpenAI o1",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-17",
- last_updated: "2024-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 14.993999999999998, output: 59.993 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-3.5-turbo": {
- id: "openai/gpt-3.5-turbo",
- name: "GPT-3.5 Turbo",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2022-11-30",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 16385, input: 16385, output: 4096 },
- },
- "openai/o3-deep-research": {
- id: "openai/o3-deep-research",
- name: "OpenAI o3 Deep Research",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/o3-mini": {
- id: "openai/o3-mini",
- name: "OpenAI o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-4-turbo-preview": {
- id: "openai/gpt-4-turbo-preview",
- name: "GPT-4 Turbo Preview",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2023-11-06",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 30.004999999999995 },
- limit: { context: 128000, input: 128000, output: 4096 },
- },
- "openai/o1-pro": {
- id: "openai/o1-pro",
- name: "OpenAI o1 Pro",
- family: "o-pro",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-25",
- last_updated: "2025-01-25",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 150, output: 600 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "GPT-5 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "openai/gpt-5.1-chat-latest": {
- id: "openai/gpt-5.1-chat-latest",
- name: "GPT 5.1 Chat (Latest)",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 400000, output: 16384 },
- },
- "openai/gpt-4o-search-preview": {
- id: "openai/gpt-4o-search-preview",
- name: "GPT-4o Search Preview",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.47, output: 5.88 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/gpt-4.1-nano": {
- id: "openai/gpt-4.1-nano",
- name: "GPT 4.1 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1047576, input: 1047576, output: 32768 },
- },
- "openai/o4-mini-high": {
- id: "openai/o4-mini-high",
- name: "OpenAI o4-mini high",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/o3": {
- id: "openai/o3",
- name: "OpenAI o3",
- family: "o",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.04, output: 0.15 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/gpt-5-pro": {
- id: "openai/gpt-5-pro",
- name: "GPT 5 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-5.1-2025-11-13": {
- id: "openai/gpt-5.1-2025-11-13",
- name: "GPT-5.1 (2025-11-13)",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 1000000, input: 1000000, output: 32768 },
- },
- "openai/gpt-4o": {
- id: "openai/gpt-4o",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.499, output: 9.996 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/o3-mini-low": {
- id: "openai/o3-mini-low",
- name: "OpenAI o3-mini (Low)",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "GPT 5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-oss-safeguard-20b": {
- id: "openai/gpt-oss-safeguard-20b",
- name: "GPT OSS Safeguard 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-10-29",
- last_updated: "2025-10-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/o3-pro-2025-06-10": {
- id: "openai/o3-pro-2025-06-10",
- name: "OpenAI o3-pro (2025-06-10)",
- family: "o-pro",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-06-10",
- last_updated: "2025-06-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9.996, output: 19.992 },
- limit: { context: 200000, input: 200000, output: 100000 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.25 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "openai/gpt-5-chat-latest": {
- id: "openai/gpt-5-chat-latest",
- name: "GPT 5 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT 4.1",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-10",
- last_updated: "2025-09-10",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 1047576, input: 1047576, output: 32768 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "GPT 4.1 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.6 },
- limit: { context: 1047576, input: 1047576, output: 32768 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT 5.1 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 400000, output: 128000 },
- },
- "openai/gpt-4o-2024-11-20": {
- id: "openai/gpt-4o-2024-11-20",
- name: "GPT-4o (2024-11-20)",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-11-20",
- last_updated: "2024-11-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, input: 128000, output: 16384 },
- },
- "VongolaChouko/Starcannon-Unleashed-12B-v1.0": {
- id: "VongolaChouko/Starcannon-Unleashed-12B-v1.0",
- name: "Mistral Nemo Starcannon 12b v1",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "amazon/nova-lite-v1": {
- id: "amazon/nova-lite-v1",
- name: "Amazon Nova Lite 1.0",
- 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,
- cost: { input: 0.0595, output: 0.238 },
- limit: { context: 300000, input: 300000, output: 5120 },
- },
- "amazon/nova-pro-v1": {
- id: "amazon/nova-pro-v1",
- name: "Amazon Nova Pro 1.0",
- 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,
- cost: { input: 0.7989999999999999, output: 3.1959999999999997 },
- limit: { context: 300000, input: 300000, output: 32000 },
- },
- "amazon/nova-2-lite-v1": {
- id: "amazon/nova-2-lite-v1",
- name: "Amazon Nova 2 Lite",
- family: "nova",
- 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,
- cost: { input: 0.5099999999999999, output: 4.25 },
- limit: { context: 1000000, input: 1000000, output: 65535 },
- },
- "amazon/nova-micro-v1": {
- id: "amazon/nova-micro-v1",
- name: "Amazon Nova Micro 1.0",
- family: "nova-micro",
- 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,
- cost: { input: 0.0357, output: 0.1394 },
- limit: { context: 128000, input: 128000, output: 5120 },
- },
- "Sao10K/L3.3-70B-Euryale-v2.3": {
- id: "Sao10K/L3.3-70B-Euryale-v2.3",
- name: "Llama 3.3 70B Euryale",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 20480, input: 20480, output: 16384 },
- },
- "Sao10K/L3.1-70B-Euryale-v2.2": {
- id: "Sao10K/L3.1-70B-Euryale-v2.2",
- name: "Llama 3.1 70B Euryale",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.306, output: 0.357 },
- limit: { context: 20480, input: 20480, output: 16384 },
- },
- "Sao10K/L3.1-70B-Hanami-x1": {
- id: "Sao10K/L3.1-70B-Hanami-x1",
- name: "Llama 3.1 70B Hanami",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "Sao10K/L3-8B-Stheno-v3.2": {
- id: "Sao10K/L3-8B-Stheno-v3.2",
- name: "Sao10K Stheno 8b",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-11-29",
- last_updated: "2024-11-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2006, output: 0.2006 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "LatitudeGames/Wayfarer-Large-70B-Llama-3.3": {
- id: "LatitudeGames/Wayfarer-Large-70B-Llama-3.3",
- name: "Llama 3.3 70B Wayfarer",
- 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: false,
- cost: { input: 0.700000007, output: 0.700000007 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "z-ai/glm-4.6:thinking": {
- id: "z-ai/glm-4.6:thinking",
- name: "GLM 4.6 Thinking",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.5 },
- limit: { context: 200000, input: 200000, output: 65535 },
- },
- "z-ai/glm-4.5v": {
- id: "z-ai/glm-4.5v",
- name: "GLM 4.5V",
- family: "glmv",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-22",
- last_updated: "2025-11-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 1.7999999999999998 },
- limit: { context: 64000, input: 64000, output: 96000 },
- },
- "z-ai/glm-4.6": {
- id: "z-ai/glm-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.5 },
- limit: { context: 200000, input: 200000, output: 65535 },
- },
- "z-ai/glm-4.5v:thinking": {
- id: "z-ai/glm-4.5v:thinking",
- name: "GLM 4.5V Thinking",
- family: "glmv",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-22",
- last_updated: "2025-11-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 1.7999999999999998 },
- limit: { context: 64000, input: 64000, output: 96000 },
- },
- "baidu/ernie-4.5-vl-28b-a3b": {
- id: "baidu/ernie-4.5-vl-28b-a3b",
- name: "ERNIE 4.5 VL 28B",
- family: "ernie",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-30",
- last_updated: "2025-06-30",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.13999999999999999, output: 0.5599999999999999 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "baidu/ernie-4.5-300b-a47b": {
- id: "baidu/ernie-4.5-300b-a47b",
- name: "ERNIE 4.5 300B",
- family: "ernie",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-30",
- last_updated: "2025-06-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.35, output: 1.15 },
- limit: { context: 131072, input: 131072, output: 16384 },
- },
- "dmind/dmind-1": {
- id: "dmind/dmind-1",
- name: "DMind-1",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.6 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "dmind/dmind-1-mini": {
- id: "dmind/dmind-1-mini",
- name: "DMind-1-Mini",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.4 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "Infermatic/MN-12B-Inferor-v0.0": {
- id: "Infermatic/MN-12B-Inferor-v0.0",
- name: "Mistral Nemo Inferor 12B",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25499999999999995, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "meituan-longcat/LongCat-Flash-Chat-FP8": {
- id: "meituan-longcat/LongCat-Flash-Chat-FP8",
- name: "LongCat Flash",
- family: "longcat",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-31",
- last_updated: "2025-08-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.7 },
- limit: { context: 128000, input: 128000, output: 32768 },
- },
- "meganova-ai/manta-mini-1.0": {
- id: "meganova-ai/manta-mini-1.0",
- name: "Manta Mini 1.0",
- family: "nova",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-20",
- last_updated: "2025-12-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.02, output: 0.16 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- "meganova-ai/manta-pro-1.0": {
- id: "meganova-ai/manta-pro-1.0",
- name: "Manta Pro 1.0",
- family: "nova",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-20",
- last_updated: "2025-12-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.060000000000000005, output: 0.5 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "meganova-ai/manta-flash-1.0": {
- id: "meganova-ai/manta-flash-1.0",
- name: "Manta Flash 1.0",
- family: "nova",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-20",
- last_updated: "2025-12-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.02, output: 0.16 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "minimax/minimax-m2.7": {
- id: "minimax/minimax-m2.7",
- name: "MiniMax M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, input: 204800, output: 131072 },
- },
- "minimax/minimax-01": {
- id: "minimax/minimax-01",
- name: "MiniMax 01",
- family: "minimax",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-15",
- last_updated: "2025-01-15",
- modalities: { input: ["text", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1394, output: 1.1219999999999999 },
- limit: { context: 1000192, input: 1000192, output: 16384 },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-12-19",
- last_updated: "2025-12-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.33, output: 1.32 },
- limit: { context: 200000, input: 200000, output: 131072 },
- },
- "minimax/minimax-m2-her": {
- id: "minimax/minimax-m2-her",
- name: "MiniMax M2-her",
- family: "minimax",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-01-24",
- last_updated: "2026-01-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.30200000000000005, output: 1.2069999999999999 },
- limit: { context: 65532, input: 65532, output: 2048 },
- },
- "minimax/minimax-m2.5": {
- id: "minimax/minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, input: 204800, output: 131072 },
- },
- "qwen/qwen3.5-397b-a17b": {
- id: "qwen/qwen3.5-397b-a17b",
- name: "Qwen3.5 397B A17B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2026-02-16",
- last_updated: "2026-02-16",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 258048, input: 258048, output: 65536 },
- },
- "unsloth/gemma-3-1b-it": {
- id: "unsloth/gemma-3-1b-it",
- name: "Gemma 3 1B IT",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1003, output: 0.1003 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "unsloth/gemma-3-12b-it": {
- id: "unsloth/gemma-3-12b-it",
- name: "Gemma 3 12B IT",
- family: "unsloth",
- 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: false,
- cost: { input: 0.272, output: 0.272 },
- limit: { context: 128000, input: 128000, output: 131072 },
- },
- "unsloth/gemma-3-4b-it": {
- id: "unsloth/gemma-3-4b-it",
- name: "Gemma 3 4B IT",
- family: "unsloth",
- 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: false,
- cost: { input: 0.2006, output: 0.2006 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "unsloth/gemma-3-27b-it": {
- id: "unsloth/gemma-3-27b-it",
- name: "Gemma 3 27B IT",
- family: "unsloth",
- 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: false,
- cost: { input: 0.2992, output: 0.2992 },
- limit: { context: 128000, input: 128000, output: 96000 },
- },
- "THUDM/GLM-Z1-9B-0414": {
- id: "THUDM/GLM-Z1-9B-0414",
- name: "GLM Z1 9B 0414",
- family: "glm-z",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 32000, input: 32000, output: 8000 },
- },
- "THUDM/GLM-4-9B-0414": {
- id: "THUDM/GLM-4-9B-0414",
- name: "GLM 4 9B 0414",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 32000, input: 32000, output: 8000 },
- },
- "THUDM/GLM-Z1-Rumination-32B-0414": {
- id: "THUDM/GLM-Z1-Rumination-32B-0414",
- name: "GLM Z1 Rumination 32B 0414",
- family: "glm-z",
- 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: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 32000, input: 32000, output: 65536 },
- },
- "THUDM/GLM-4-32B-0414": {
- id: "THUDM/GLM-4-32B-0414",
- name: "GLM 4 32B 0414",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "THUDM/GLM-Z1-32B-0414": {
- id: "THUDM/GLM-Z1-32B-0414",
- name: "GLM Z1 32B 0414",
- family: "glm-z",
- 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: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "google/gemini-3-flash-preview": {
- id: "google/gemini-3-flash-preview",
- name: "Gemini 3 Flash (Preview)",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "google/gemini-flash-1.5": {
- id: "google/gemini-flash-1.5",
- name: "Gemini 1.5 Flash",
- family: "gemini-flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-05-14",
- last_updated: "2024-05-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0748, output: 0.306 },
- limit: { context: 2000000, input: 2000000, output: 8192 },
- },
- "google/gemini-3-flash-preview-thinking": {
- id: "google/gemini-3-flash-preview-thinking",
- name: "Gemini 3 Flash Thinking",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3 },
- limit: { context: 1048756, input: 1048756, output: 65536 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- release_date: "2026-01-26",
- last_updated: "2026-01-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.9 },
- limit: { context: 256000, input: 256000, output: 65536 },
- },
- "moonshotai/kimi-k2-instruct": {
- id: "moonshotai/kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-07-01",
- last_updated: "2025-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 2 },
- limit: { context: 256000, input: 256000, output: 8192 },
- },
- "moonshotai/kimi-k2-thinking-original": {
- id: "moonshotai/kimi-k2-thinking-original",
- name: "Kimi K2 Thinking Original",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "moonshotai/kimi-k2-instruct-0711": {
- id: "moonshotai/kimi-k2-instruct-0711",
- name: "Kimi K2 0711",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-07-11",
- last_updated: "2025-07-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 2 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "moonshotai/Kimi-Dev-72B": {
- id: "moonshotai/Kimi-Dev-72B",
- name: "Kimi Dev 72B",
- family: "kimi",
- 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: false,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 128000, input: 128000, output: 131072 },
- },
- "moonshotai/kimi-k2-thinking-turbo-original": {
- id: "moonshotai/kimi-k2-thinking-turbo-original",
- name: "Kimi K2 Thinking Turbo Original",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.15, output: 8 },
- limit: { context: 256000, input: 256000, output: 16384 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 256000, input: 256000, output: 262144 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 256000, input: 256000, output: 262144 },
- },
- "moonshotai/kimi-k2.5:thinking": {
- id: "moonshotai/kimi-k2.5:thinking",
- name: "Kimi K2.5 Thinking",
- family: "kimi-thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- release_date: "2026-01-26",
- last_updated: "2026-01-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.9 },
- limit: { context: 256000, input: 256000, output: 65536 },
- },
- "Tongyi-Zhiwen/QwenLong-L1-32B": {
- id: "Tongyi-Zhiwen/QwenLong-L1-32B",
- name: "QwenLong L1 32B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-25",
- last_updated: "2025-01-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.13999999999999999, output: 0.6 },
- limit: { context: 128000, input: 128000, output: 40960 },
- },
- "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",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "aion-labs/aion-1.0": {
- id: "aion-labs/aion-1.0",
- name: "Aion 1.0",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-02-01",
- last_updated: "2025-02-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.995, output: 7.99 },
- limit: { context: 65536, input: 65536, output: 8192 },
- },
- "aion-labs/aion-rp-llama-3.1-8b": {
- id: "aion-labs/aion-rp-llama-3.1-8b",
- name: "Llama 3.1 8b (uncensored)",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2006, output: 0.2006 },
- limit: { context: 32768, input: 32768, output: 16384 },
- },
- "aion-labs/aion-1.0-mini": {
- id: "aion-labs/aion-1.0-mini",
- name: "Aion 1.0 mini (DeepSeek)",
- 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: false,
- cost: { input: 0.7989999999999999, output: 1.394 },
- limit: { context: 131072, input: 131072, output: 8192 },
- },
- "Alibaba-NLP/Tongyi-DeepResearch-30B-A3B": {
- id: "Alibaba-NLP/Tongyi-DeepResearch-30B-A3B",
- name: "Tongyi DeepResearch 30B A3B",
- family: "yi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.08, output: 0.24000000000000002 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "MiniMaxAI/MiniMax-M1-80k": {
- id: "MiniMaxAI/MiniMax-M1-80k",
- name: "MiniMax M1 80K",
- family: "minimax",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-06-16",
- last_updated: "2025-06-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6052, output: 2.4225000000000003 },
- limit: { context: 1000000, input: 1000000, output: 131072 },
- },
- "anthropic/claude-opus-4.6:thinking:low": {
- id: "anthropic/claude-opus-4.6:thinking:low",
- name: "Claude 4.6 Opus Thinking Low",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "anthropic/claude-opus-4.6": {
- id: "anthropic/claude-opus-4.6",
- name: "Claude 4.6 Opus",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "anthropic/claude-sonnet-4.6:thinking": {
- id: "anthropic/claude-sonnet-4.6:thinking",
- name: "Claude Sonnet 4.6 Thinking",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.993999999999998 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "anthropic/claude-opus-4.6:thinking:max": {
- id: "anthropic/claude-opus-4.6:thinking:max",
- name: "Claude 4.6 Opus Thinking Max",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "anthropic/claude-opus-4.6:thinking:medium": {
- id: "anthropic/claude-opus-4.6:thinking:medium",
- name: "Claude 4.6 Opus Thinking Medium",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "anthropic/claude-sonnet-4.6": {
- id: "anthropic/claude-sonnet-4.6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.992, output: 14.993999999999998 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "anthropic/claude-opus-4.6:thinking": {
- id: "anthropic/claude-opus-4.6:thinking",
- name: "Claude 4.6 Opus Thinking",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 4.998, output: 25.007 },
- limit: { context: 1000000, input: 1000000, output: 128000 },
- },
- "abacusai/Dracarys-72B-Instruct": {
- id: "abacusai/Dracarys-72B-Instruct",
- name: "Llama 3.1 70B Dracarys 2",
- 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: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "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",
- 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: false,
- cost: { input: 2.006, output: 2.006 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "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",
- 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: false,
- cost: { input: 0.7989999999999999, output: 0.7989999999999999 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "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",
- 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: false,
- cost: { input: 2.006, output: 2.006 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "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",
- 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: false,
- cost: { input: 0.7989999999999999, output: 0.7989999999999999 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated": {
- id: "huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated",
- name: "DeepSeek R1 Qwen Abliterated",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.4, output: 1.4 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated": {
- id: "huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated",
- name: "DeepSeek R1 Llama 70B Abliterated",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "huihui-ai/Llama-3.3-70B-Instruct-abliterated": {
- id: "huihui-ai/Llama-3.3-70B-Instruct-abliterated",
- name: "Llama 3.3 70B Instruct abliterated",
- 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: false,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "huihui-ai/Qwen2.5-32B-Instruct-abliterated": {
- id: "huihui-ai/Qwen2.5-32B-Instruct-abliterated",
- name: "Qwen 2.5 32B Abliterated",
- 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: false,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 32768, input: 32768, output: 8192 },
- },
- "huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated": {
- id: "huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated",
- name: "Nemotron 3.1 70B abliterated",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 16384, input: 16384, output: 16384 },
- },
- "xiaomi/mimo-v2-flash-thinking-original": {
- id: "xiaomi/mimo-v2-flash-thinking-original",
- name: "MiMo V2 Flash (Thinking) Original",
- family: "mimo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.102, output: 0.306 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "xiaomi/mimo-v2-flash-thinking": {
- id: "xiaomi/mimo-v2-flash-thinking",
- name: "MiMo V2 Flash (Thinking)",
- family: "mimo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.102, output: 0.306 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "xiaomi/mimo-v2-flash": {
- id: "xiaomi/mimo-v2-flash",
- name: "MiMo V2 Flash",
- family: "mimo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.102, output: 0.306 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "xiaomi/mimo-v2-flash-original": {
- id: "xiaomi/mimo-v2-flash-original",
- name: "MiMo V2 Flash Original",
- family: "mimo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.102, output: 0.306 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "tngtech/DeepSeek-TNG-R1T2-Chimera": {
- id: "tngtech/DeepSeek-TNG-R1T2-Chimera",
- name: "DeepSeek TNG R1T2 Chimera",
- family: "tngtech",
- 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,
- cost: { input: 0.31, output: 0.31 },
- limit: { context: 128000, input: 128000, output: 8192 },
- },
- "tngtech/tng-r1t-chimera": {
- id: "tngtech/tng-r1t-chimera",
- name: "TNG R1T Chimera",
- family: "tngtech",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2025-11-26",
- last_updated: "2025-11-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 128000, input: 128000, output: 65536 },
- },
- "inflatebot/MN-12B-Mag-Mell-R1": {
- id: "inflatebot/MN-12B-Mag-Mell-R1",
- name: "Mag Mell R1",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.49299999999999994, output: 0.49299999999999994 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- "failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5": {
- id: "failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5",
- name: "Llama 3 70B abliterated",
- 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: false,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 8192, input: 8192, output: 8192 },
- },
- },
- },
- 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.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1 Codex Max",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2025-11-01",
- last_updated: "2025-11-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25 },
- limit: { context: 200000, output: 64000 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3 },
- limit: { context: 262144, output: 32768 },
- },
- "gemini-3.1-flash-lite-preview": {
- id: "gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-3.1-pro-preview": {
- id: "gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12 },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5.3-chat-latest": {
- id: "gpt-5.3-chat-latest",
- name: "GPT-5.3 Chat Latest",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-01",
- last_updated: "2026-03-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 0.5, output: 3 },
- limit: { context: 1048576, output: 65536 },
- },
- "llama-3.3-70b-versatile": {
- id: "llama-3.3-70b-versatile",
- name: "Llama 3.3 70B Versatile",
- 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,
- cost: { input: 0.59, output: 0.79 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-03-25",
- last_updated: "2025-03-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 1048576, output: 65536 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "Grok 4.1 Fast (Non-Reasoning)",
- 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, output: 16384 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- },
- "o3-pro": {
- id: "o3-pro",
- name: "o3-pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 20, output: 40 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-4o-mini": {
- id: "gpt-4o-mini",
- name: "GPT-4o Mini",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen3-max": {
- id: "qwen3-max",
- name: "Qwen3 Max",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 6 },
- limit: { context: 131072, output: 16384 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5.2-chat-latest": {
- id: "gpt-5.2-chat-latest",
- name: "GPT-5.2 Chat Latest",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5.3-codex-xhigh": {
- id: "gpt-5.3-codex-xhigh",
- name: "GPT-5.3 Codex XHigh",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- 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,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 256000, output: 16384 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, output: 100000 },
- },
- "grok-4-0709": {
- id: "grok-4-0709",
- name: "Grok 4",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 256000, output: 16384 },
- },
- "route-llm": {
- id: "route-llm",
- name: "Route LLM",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-01-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen-2.5-coder-32b": {
- id: "qwen-2.5-coder-32b",
- name: "Qwen 2.5 Coder 32B",
- 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,
- cost: { input: 0.79, output: 0.79 },
- limit: { context: 128000, output: 8192 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "GPT-5 Codex",
- family: "gpt",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "gpt-5.1-chat-latest": {
- id: "gpt-5.1-chat-latest",
- name: "GPT-5.1 Chat Latest",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-sonnet-4-20250514": {
- id: "claude-sonnet-4-20250514",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 64000 },
- },
- "kimi-k2-turbo-preview": {
- id: "kimi-k2-turbo-preview",
- name: "Kimi K2 Turbo Preview",
- family: "kimi",
- 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,
- cost: { input: 0.15, output: 8 },
- limit: { context: 256000, output: 8192 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 5, output: 25 },
- limit: { context: 200000, output: 128000 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "GPT-4.1 Nano",
- 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,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1047576, output: 32768 },
- },
- "claude-3-7-sonnet-20250219": {
- id: "claude-3-7-sonnet-20250219",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 64000 },
- },
- o3: {
- id: "o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-20250514": {
- id: "claude-opus-4-20250514",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "GPT-4.1 Mini",
- 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,
- cost: { input: 0.4, output: 1.6 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-4o-2024-11-20": {
- id: "gpt-4o-2024-11-20",
- name: "GPT-4o (2024-11-20)",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "Grok 4 Fast (Non-Reasoning)",
- 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 2000000, output: 16384 },
- },
- "deepseek/deepseek-v3.1": {
- id: "deepseek/deepseek-v3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 1.66 },
- limit: { context: 128000, output: 8192 },
- },
- "Qwen/QwQ-32B": {
- id: "Qwen/QwQ-32B",
- name: "QwQ 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-28",
- last_updated: "2024-11-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 32768, output: 32768 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-01",
- last_updated: "2025-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.6 },
- limit: { context: 262144, output: 8192 },
- },
- "Qwen/Qwen3-32B": {
- id: "Qwen/Qwen3-32B",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.29 },
- limit: { context: 128000, output: 8192 },
- },
- "Qwen/qwen3-coder-480b-a35b-instruct": {
- id: "Qwen/qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-22",
- last_updated: "2025-07-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.29, output: 1.2 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen2.5-72B-Instruct": {
- id: "Qwen/Qwen2.5-72B-Instruct",
- name: "Qwen 2.5 72B Instruct",
- 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,
- cost: { input: 0.11, output: 0.38 },
- limit: { context: 128000, output: 8192 },
- },
- "zai-org/glm-4.7": {
- id: "zai-org/glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 128000, output: 8192 },
- },
- "zai-org/glm-5": {
- id: "zai-org/glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3.2 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/glm-4.5": {
- id: "zai-org/glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 128000, output: 8192 },
- },
- "zai-org/glm-4.6": {
- id: "zai-org/glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-01",
- last_updated: "2025-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 128000, output: 8192 },
- },
- "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",
- 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,
- cost: { input: 3.5, output: 3.5 },
- limit: { context: 128000, output: 4096 },
- },
- "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",
- 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,
- cost: { input: 0.14, output: 0.59 },
- limit: { context: 1000000, output: 32768 },
- },
- "meta-llama/Meta-Llama-3.1-8B-Instruct": {
- id: "meta-llama/Meta-Llama-3.1-8B-Instruct",
- name: "Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.02, output: 0.05 },
- limit: { context: 128000, output: 4096 },
- },
- "deepseek-ai/DeepSeek-R1": {
- id: "deepseek-ai/DeepSeek-R1",
- name: "DeepSeek R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 3, output: 7 },
- limit: { context: 128000, output: 8192 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-15",
- last_updated: "2025-06-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.4 },
- limit: { context: 128000, output: 8192 },
- },
- "deepseek-ai/DeepSeek-V3.1-Terminus": {
- id: "deepseek-ai/DeepSeek-V3.1-Terminus",
- name: "DeepSeek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT-OSS 120B",
- family: "gpt-oss",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.44 },
- limit: { context: 128000, output: 32768 },
- },
- },
- },
- "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: {
- "perplexity/sonar": {
- id: "perplexity/sonar",
- name: "Sonar",
- 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,
- cost: { input: 0.25, output: 2.5, cache_read: 0.0625 },
- limit: { context: 128000, output: 8192 },
- },
- "xai/grok-4-1-fast-non-reasoning": {
- id: "xai/grok-4-1-fast-non-reasoning",
- name: "Grok 4.1 Fast (Non-Reasoning)",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "nvidia/nemotron-3-super-120b-a12b": {
- id: "nvidia/nemotron-3-super-120b-a12b",
- name: "Nemotron 3 Super 120B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2.5 },
- limit: { context: 1000000, output: 32000 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "google/gemini-3.1-pro-preview": {
- id: "google/gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-flash-preview": {
- id: "google/gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 0.5,
- output: 3,
- cache_read: 0.05,
- context_over_200k: { input: 0.5, output: 3, cache_read: 0.05 },
- },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 1.25,
- output: 10,
- cache_read: 0.125,
- context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
- },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.03 },
- limit: { context: 1048576, output: 65536 },
- },
- "anthropic/claude-haiku-4-5": {
- id: "anthropic/claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4-6": {
- id: "anthropic/claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4-5": {
- id: "anthropic/claude-opus-4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4-6": {
- id: "anthropic/claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 5, output: 25, cache_read: 0.5 },
- limit: { context: 200000, output: 128000 },
- },
- "anthropic/claude-sonnet-4-5": {
- id: "anthropic/claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 64000 },
- },
- },
- },
- "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: {
- "Kwaipilot/KAT-Dev": {
- id: "Kwaipilot/KAT-Dev",
- name: "Kwaipilot/KAT-Dev",
- family: "kat-coder",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-27",
- last_updated: "2026-01-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 128000, output: 128000 },
- },
- "Qwen/Qwen3.5-397B-A17B": {
- id: "Qwen/Qwen3.5-397B-A17B",
- name: "Qwen/Qwen3.5-397B-A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 1.74 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3.5-35B-A3B": {
- id: "Qwen/Qwen3.5-35B-A3B",
- name: "Qwen/Qwen3.5-35B-A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.23, output: 1.86 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3.5-122B-A10B": {
- id: "Qwen/Qwen3.5-122B-A10B",
- name: "Qwen/Qwen3.5-122B-A10B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 2.32 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3.5-9B": {
- id: "Qwen/Qwen3.5-9B",
- name: "Qwen/Qwen3.5-9B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.22, output: 1.74 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3.5-27B": {
- id: "Qwen/Qwen3.5-27B",
- name: "Qwen/Qwen3.5-27B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.26, output: 2.09 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3.5-4B": {
- id: "Qwen/Qwen3.5-4B",
- name: "Qwen/Qwen3.5-4B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen2.5-72B-Instruct": {
- id: "Qwen/Qwen2.5-72B-Instruct",
- name: "Qwen/Qwen2.5-72B-Instruct",
- 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,
- cost: { input: 0.59, output: 0.59 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-8B-Instruct": {
- id: "Qwen/Qwen3-VL-8B-Instruct",
- name: "Qwen/Qwen3-VL-8B-Instruct",
- 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,
- cost: { input: 0.18, output: 0.68 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-32B-Instruct": {
- id: "Qwen/Qwen3-VL-32B-Instruct",
- name: "Qwen/Qwen3-VL-32B-Instruct",
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-30B-A3B-Thinking": {
- id: "Qwen/Qwen3-VL-30B-A3B-Thinking",
- name: "Qwen/Qwen3-VL-30B-A3B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 1 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-14B-Instruct": {
- id: "Qwen/Qwen2.5-14B-Instruct",
- name: "Qwen/Qwen2.5-14B-Instruct",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-VL-235B-A22B-Instruct": {
- id: "Qwen/Qwen3-VL-235B-A22B-Instruct",
- name: "Qwen/Qwen3-VL-235B-A22B-Instruct",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Thinking": {
- id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
- name: "Qwen/Qwen3-Next-80B-A3B-Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-VL-32B-Instruct": {
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
- name: "Qwen/Qwen2.5-VL-32B-Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-24",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 0.27 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-Omni-30B-A3B-Thinking": {
- id: "Qwen/Qwen3-Omni-30B-A3B-Thinking",
- name: "Qwen/Qwen3-Omni-30B-A3B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-04",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 66000, output: 66000 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.13, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-32B-Instruct": {
- id: "Qwen/Qwen2.5-32B-Instruct",
- name: "Qwen/Qwen2.5-32B-Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-19",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen2.5-72B-Instruct-128K": {
- id: "Qwen/Qwen2.5-72B-Instruct-128K",
- name: "Qwen/Qwen2.5-72B-Instruct-128K",
- 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,
- cost: { input: 0.59, output: 0.59 },
- limit: { context: 131000, output: 4000 },
- },
- "Qwen/Qwen3-14B": {
- id: "Qwen/Qwen3-14B",
- name: "Qwen/Qwen3-14B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-Omni-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-Omni-30B-A3B-Instruct",
- name: "Qwen/Qwen3-Omni-30B-A3B-Instruct",
- 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", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 66000, output: 66000 },
- },
- "Qwen/Qwen3-Coder-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
- name: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-32B": {
- id: "Qwen/Qwen3-32B",
- name: "Qwen/Qwen3-32B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-23",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.09, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-30B-A3B-Instruct-2507": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- 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,
- cost: { input: 0.09, output: 0.3 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-8B": {
- id: "Qwen/Qwen3-8B",
- name: "Qwen/Qwen3-8B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.06, output: 0.06 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Instruct": {
- id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- name: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- 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,
- cost: { input: 0.14, output: 1.4 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-8B-Thinking": {
- id: "Qwen/Qwen3-VL-8B-Thinking",
- name: "Qwen/Qwen3-VL-8B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.18, output: 2 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-Omni-30B-A3B-Captioner": {
- id: "Qwen/Qwen3-Omni-30B-A3B-Captioner",
- name: "Qwen/Qwen3-Omni-30B-A3B-Captioner",
- 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: ["audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 66000, output: 66000 },
- },
- "Qwen/QwQ-32B": {
- id: "Qwen/QwQ-32B",
- name: "Qwen/QwQ-32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-06",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.58 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-VL-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-VL-30B-A3B-Instruct",
- name: "Qwen/Qwen3-VL-30B-A3B-Instruct",
- 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,
- cost: { input: 0.29, output: 1 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-Coder-32B-Instruct": {
- id: "Qwen/Qwen2.5-Coder-32B-Instruct",
- name: "Qwen/Qwen2.5-Coder-32B-Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-11-11",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen2.5-7B-Instruct": {
- id: "Qwen/Qwen2.5-7B-Instruct",
- name: "Qwen/Qwen2.5-7B-Instruct",
- 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,
- cost: { input: 0.05, output: 0.05 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-VL-235B-A22B-Thinking": {
- id: "Qwen/Qwen3-VL-235B-A22B-Thinking",
- name: "Qwen/Qwen3-VL-235B-A22B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 3.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-30B-A3B-Thinking-2507": {
- id: "Qwen/Qwen3-30B-A3B-Thinking-2507",
- name: "Qwen/Qwen3-30B-A3B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.3 },
- limit: { context: 262000, output: 131000 },
- },
- "Qwen/Qwen3-VL-32B-Thinking": {
- id: "Qwen/Qwen3-VL-32B-Thinking",
- name: "Qwen/Qwen3-VL-32B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-VL-72B-Instruct": {
- id: "Qwen/Qwen2.5-VL-72B-Instruct",
- name: "Qwen/Qwen2.5-VL-72B-Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-28",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.59, output: 0.59 },
- limit: { context: 131000, output: 4000 },
- },
- "stepfun-ai/Step-3.5-Flash": {
- id: "stepfun-ai/Step-3.5-Flash",
- name: "stepfun-ai/Step-3.5-Flash",
- family: "step",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262000, output: 262000 },
- },
- "zai-org/GLM-4.5V": {
- id: "zai-org/GLM-4.5V",
- name: "zai-org/GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-13",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.86 },
- limit: { context: 66000, output: 66000 },
- },
- "zai-org/GLM-4.6": {
- id: "zai-org/GLM-4.6",
- name: "zai-org/GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-04",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.9 },
- limit: { context: 205000, output: 205000 },
- },
- "zai-org/GLM-4.6V": {
- id: "zai-org/GLM-4.6V",
- name: "zai-org/GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-07",
- last_updated: "2025-12-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 131000, output: 131000 },
- },
- "zai-org/GLM-4.5-Air": {
- id: "zai-org/GLM-4.5-Air",
- name: "zai-org/GLM-4.5-Air",
- 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,
- cost: { input: 0.14, output: 0.86 },
- limit: { context: 131000, output: 131000 },
- },
- "inclusionAI/Ling-flash-2.0": {
- id: "inclusionAI/Ling-flash-2.0",
- name: "inclusionAI/Ling-flash-2.0",
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "inclusionAI/Ling-mini-2.0": {
- id: "inclusionAI/Ling-mini-2.0",
- name: "inclusionAI/Ling-mini-2.0",
- family: "ling",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-10",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 131000, output: 131000 },
- },
- "inclusionAI/Ring-flash-2.0": {
- id: "inclusionAI/Ring-flash-2.0",
- name: "inclusionAI/Ring-flash-2.0",
- family: "ring",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "ascend-tribe/pangu-pro-moe": {
- id: "ascend-tribe/pangu-pro-moe",
- name: "ascend-tribe/pangu-pro-moe",
- family: "pangu",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-02",
- last_updated: "2026-01-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 128000, output: 128000 },
- },
- "tencent/Hunyuan-MT-7B": {
- id: "tencent/Hunyuan-MT-7B",
- name: "tencent/Hunyuan-MT-7B",
- family: "hunyuan",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 33000, output: 33000 },
- },
- "tencent/Hunyuan-A13B-Instruct": {
- id: "tencent/Hunyuan-A13B-Instruct",
- name: "tencent/Hunyuan-A13B-Instruct",
- family: "hunyuan",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "Pro/zai-org/GLM-4.7": {
- id: "Pro/zai-org/GLM-4.7",
- name: "Pro/zai-org/GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 205000, output: 205000 },
- },
- "Pro/zai-org/GLM-5.1": {
- id: "Pro/zai-org/GLM-5.1",
- name: "Pro/zai-org/GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_write: 0 },
- limit: { context: 205000, output: 205000 },
- },
- "Pro/zai-org/GLM-5": {
- id: "Pro/zai-org/GLM-5",
- name: "Pro/zai-org/GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2 },
- limit: { context: 205000, output: 205000 },
- },
- "Pro/deepseek-ai/DeepSeek-V3": {
- id: "Pro/deepseek-ai/DeepSeek-V3",
- name: "Pro/deepseek-ai/DeepSeek-V3",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "Pro/deepseek-ai/DeepSeek-R1": {
- id: "Pro/deepseek-ai/DeepSeek-R1",
- name: "Pro/deepseek-ai/DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.18 },
- limit: { context: 164000, output: 164000 },
- },
- "Pro/deepseek-ai/DeepSeek-V3.2": {
- id: "Pro/deepseek-ai/DeepSeek-V3.2",
- name: "Pro/deepseek-ai/DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.42 },
- limit: { context: 164000, output: 164000 },
- },
- "Pro/deepseek-ai/DeepSeek-V3.1-Terminus": {
- id: "Pro/deepseek-ai/DeepSeek-V3.1-Terminus",
- name: "Pro/deepseek-ai/DeepSeek-V3.1-Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "Pro/moonshotai/Kimi-K2-Thinking": {
- id: "Pro/moonshotai/Kimi-K2-Thinking",
- name: "Pro/moonshotai/Kimi-K2-Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-07",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.55, output: 2.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Pro/moonshotai/Kimi-K2-Instruct-0905": {
- id: "Pro/moonshotai/Kimi-K2-Instruct-0905",
- name: "Pro/moonshotai/Kimi-K2-Instruct-0905",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-08",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262000, output: 262000 },
- },
- "Pro/moonshotai/Kimi-K2.5": {
- id: "Pro/moonshotai/Kimi-K2.5",
- name: "Pro/moonshotai/Kimi-K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.55, output: 3 },
- limit: { context: 262000, output: 262000 },
- },
- "Pro/MiniMaxAI/MiniMax-M2.5": {
- id: "Pro/MiniMaxAI/MiniMax-M2.5",
- name: "Pro/MiniMaxAI/MiniMax-M2.5",
- 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,
- cost: { input: 0.3, output: 1.22 },
- limit: { context: 192000, output: 131000 },
- },
- "Pro/MiniMaxAI/MiniMax-M2.1": {
- id: "Pro/MiniMaxAI/MiniMax-M2.1",
- name: "Pro/MiniMaxAI/MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: false,
- 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: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 197000, output: 131000 },
- },
- "PaddlePaddle/PaddleOCR-VL": {
- id: "PaddlePaddle/PaddleOCR-VL",
- name: "PaddlePaddle/PaddleOCR-VL",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 16384, output: 16384 },
- },
- "PaddlePaddle/PaddleOCR-VL-1.5": {
- id: "PaddlePaddle/PaddleOCR-VL-1.5",
- name: "PaddlePaddle/PaddleOCR-VL-1.5",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 16384, output: 16384 },
- },
- "deepseek-ai/DeepSeek-OCR": {
- id: "deepseek-ai/DeepSeek-OCR",
- name: "deepseek-ai/DeepSeek-OCR",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 8192 },
- },
- "deepseek-ai/DeepSeek-V3.1-Terminus": {
- id: "deepseek-ai/DeepSeek-V3.1-Terminus",
- name: "deepseek-ai/DeepSeek-V3.1-Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "deepseek-ai/DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.42 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B": {
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
- name: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131000, output: 131000 },
- },
- "deepseek-ai/DeepSeek-R1": {
- id: "deepseek-ai/DeepSeek-R1",
- name: "deepseek-ai/DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.18 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B": {
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
- name: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 131000, output: 131000 },
- },
- "deepseek-ai/DeepSeek-V3": {
- id: "deepseek-ai/DeepSeek-V3",
- name: "deepseek-ai/DeepSeek-V3",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/deepseek-vl2": {
- id: "deepseek-ai/deepseek-vl2",
- name: "deepseek-ai/deepseek-vl2",
- family: "deepseek",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-12-13",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 4000, output: 4000 },
- },
- "baidu/ERNIE-4.5-300B-A47B": {
- id: "baidu/ERNIE-4.5-300B-A47B",
- name: "baidu/ERNIE-4.5-300B-A47B",
- 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,
- cost: { input: 0.28, output: 1.1 },
- limit: { context: 131000, output: 131000 },
- },
- "THUDM/GLM-Z1-32B-0414": {
- id: "THUDM/GLM-Z1-32B-0414",
- name: "THUDM/GLM-Z1-32B-0414",
- family: "glm-z",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "THUDM/GLM-4-32B-0414": {
- id: "THUDM/GLM-4-32B-0414",
- name: "THUDM/GLM-4-32B-0414",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 0.27 },
- limit: { context: 33000, output: 33000 },
- },
- "THUDM/GLM-4-9B-0414": {
- id: "THUDM/GLM-4-9B-0414",
- name: "THUDM/GLM-4-9B-0414",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.086, output: 0.086 },
- limit: { context: 33000, output: 33000 },
- },
- "THUDM/GLM-Z1-9B-0414": {
- id: "THUDM/GLM-Z1-9B-0414",
- name: "THUDM/GLM-Z1-9B-0414",
- family: "glm-z",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.086, output: 0.086 },
- limit: { context: 131000, output: 131000 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "moonshotai/Kimi-K2-Instruct-0905",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-08",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262000, output: 262000 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "moonshotai/Kimi-K2-Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-07",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.55, output: 2.5 },
- limit: { context: 262000, output: 262000 },
- },
- "ByteDance-Seed/Seed-OSS-36B-Instruct": {
- id: "ByteDance-Seed/Seed-OSS-36B-Instruct",
- name: "ByteDance-Seed/Seed-OSS-36B-Instruct",
- 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,
- cost: { input: 0.21, output: 0.57 },
- limit: { context: 262000, output: 262000 },
- },
- },
- },
- 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-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0.2, output: 0.3 },
- limit: { context: 262144, output: 131072 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-23",
- last_updated: "2025-08-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262144, output: 131072 },
- },
- "zai-org/GLM-4.5-Air": {
- id: "zai-org/GLM-4.5-Air",
- name: "GLM 4.5 Air",
- 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,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 131072, output: 131072 },
- },
- "zai-org/GLM-4.5-FP8": {
- id: "zai-org/GLM-4.5-FP8",
- name: "GLM 4.5 FP8",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 131072, output: 131072 },
- },
- "deepseek-ai/DeepSeek-V3.1": {
- id: "deepseek-ai/DeepSeek-V3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-23",
- last_updated: "2025-08-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 75000, output: 163840 },
- },
- "deepseek-ai/DeepSeek-V3-0324": {
- id: "deepseek-ai/DeepSeek-V3-0324",
- name: "DeepSeek V3 0324",
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 75000, output: 163840 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek R1 0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-23",
- last_updated: "2025-08-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 2.15 },
- limit: { context: 75000, output: 163840 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-23",
- last_updated: "2025-08-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 131072, output: 32768 },
- },
- },
- },
- "minimax-coding-plan": {
- id: "minimax-coding-plan",
- env: ["MINIMAX_API_KEY"],
- npm: "@ai-sdk/anthropic",
- api: "https://api.minimax.io/anthropic/v1",
- name: "MiniMax Coding Plan (minimax.io)",
- doc: "https://platform.minimax.io/docs/coding-plan/intro",
- models: {
- "MiniMax-M2": {
- id: "MiniMax-M2",
- name: "MiniMax-M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 196608, output: 128000 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7": {
- id: "MiniMax-M2.7",
- name: "MiniMax-M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7-highspeed": {
- id: "MiniMax-M2.7-highspeed",
- name: "MiniMax-M2.7-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.1": {
- id: "MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.5-highspeed": {
- id: "MiniMax-M2.5-highspeed",
- name: "MiniMax-M2.5-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-13",
- last_updated: "2026-02-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- 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",
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 8192 },
- },
- "sonar-deep-research": {
- id: "sonar-deep-research",
- name: "Perplexity Sonar Deep Research",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, reasoning: 3 },
- limit: { context: 128000, output: 32768 },
- },
- sonar: {
- id: "sonar",
- name: "Sonar",
- 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,
- cost: { input: 1, output: 1 },
- limit: { context: 128000, output: 4096 },
- },
- "sonar-reasoning-pro": {
- id: "sonar-reasoning-pro",
- name: "Sonar Reasoning Pro",
- family: "sonar-reasoning",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8 },
- limit: { context: 128000, output: 4096 },
- },
- },
- },
- 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-chat": {
- id: "deepseek-chat",
- name: "DeepSeek Chat",
- 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,
- cost: { input: 0.28, output: 0.42, cache_read: 0.028 },
- limit: { context: 131072, output: 8192 },
- },
- "deepseek-reasoner": {
- id: "deepseek-reasoner",
- name: "DeepSeek Reasoner",
- family: "deepseek-thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.42, cache_read: 0.028 },
- limit: { context: 128000, output: 64000 },
- },
- },
- },
- 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-3.3-70b-instruct": {
- id: "llama-3.3-70b-instruct",
- name: "Llama-3.3-70B-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "cerebras-llama-4-maverick-17b-128e-instruct": {
- id: "cerebras-llama-4-maverick-17b-128e-instruct",
- name: "Cerebras-Llama-4-Maverick-17B-128E-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "llama-3.3-8b-instruct": {
- id: "llama-3.3-8b-instruct",
- name: "Llama-3.3-8B-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "cerebras-llama-4-scout-17b-16e-instruct": {
- id: "cerebras-llama-4-scout-17b-16e-instruct",
- name: "Cerebras-Llama-4-Scout-17B-16E-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "groq-llama-4-maverick-17b-128e-instruct": {
- id: "groq-llama-4-maverick-17b-128e-instruct",
- name: "Groq-Llama-4-Maverick-17B-128E-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "llama-4-scout-17b-16e-instruct-fp8": {
- id: "llama-4-scout-17b-16e-instruct-fp8",
- name: "Llama-4-Scout-17B-16E-Instruct-FP8",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "llama-4-maverick-17b-128e-instruct-fp8": {
- id: "llama-4-maverick-17b-128e-instruct-fp8",
- name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- },
- },
- 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: {
- "liquid/lfm-2.5-1.2b-instruct:free": {
- id: "liquid/lfm-2.5-1.2b-instruct:free",
- name: "LFM2.5-1.2B-Instruct (free)",
- family: "liquid",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2026-01-20",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 32768 },
- },
- "liquid/lfm-2.5-1.2b-thinking:free": {
- id: "liquid/lfm-2.5-1.2b-thinking:free",
- name: "LFM2.5-1.2B-Thinking (free)",
- family: "liquid",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2026-01-20",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 32768 },
- },
- "deepseek/deepseek-chat-v3.1": {
- id: "deepseek/deepseek-chat-v3.1",
- name: "DeepSeek-V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek/deepseek-r1-distill-llama-70b": {
- id: "deepseek/deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-01-23",
- last_updated: "2025-01-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 8192 },
- },
- "deepseek/deepseek-v3.2-speciale": {
- id: "deepseek/deepseek-v3.2-speciale",
- name: "DeepSeek V3.2 Speciale",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.41 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-v3.2": {
- id: "deepseek/deepseek-v3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.4 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-v3.1-terminus:exacto": {
- id: "deepseek/deepseek-v3.1-terminus:exacto",
- name: "DeepSeek V3.1 Terminus (exacto)",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-22",
- last_updated: "2025-09-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1 },
- limit: { context: 131072, output: 65536 },
- },
- "deepseek/deepseek-chat-v3-0324": {
- id: "deepseek/deepseek-chat-v3-0324",
- name: "DeepSeek V3 0324",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 16384, output: 8192 },
- },
- "deepseek/deepseek-v3.1-terminus": {
- id: "deepseek/deepseek-v3.1-terminus",
- name: "DeepSeek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-22",
- last_updated: "2025-09-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1 },
- limit: { context: 131072, output: 65536 },
- },
- "openrouter/free": {
- id: "openrouter/free",
- name: "Free Models Router",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, input: 200000, output: 8000 },
- },
- "arcee-ai/trinity-mini:free": {
- id: "arcee-ai/trinity-mini:free",
- name: "Trinity Mini",
- family: "trinity-mini",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2026-01-28",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "arcee-ai/trinity-large-thinking": {
- id: "arcee-ai/trinity-large-thinking",
- name: "Trinity Large Thinking",
- family: "trinity",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-04-01",
- last_updated: "2026-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.22, output: 0.85 },
- limit: { context: 262144, output: 80000 },
- },
- "arcee-ai/trinity-large-preview:free": {
- id: "arcee-ai/trinity-large-preview:free",
- name: "Trinity Large Preview",
- family: "trinity",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2026-01-28",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "cognitivecomputations/dolphin-mistral-24b-venice-edition:free": {
- id: "cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
- name: "Uncensored (free)",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-07-09",
- last_updated: "2026-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 32768 },
- },
- "bytedance-seed/seedream-4.5": {
- id: "bytedance-seed/seedream-4.5",
- name: "Seedream 4.5",
- family: "seed",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-23",
- last_updated: "2026-01-31",
- modalities: { input: ["image", "text"], output: ["image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 4096, output: 4096 },
- },
- "black-forest-labs/flux.2-max": {
- id: "black-forest-labs/flux.2-max",
- name: "FLUX.2 Max",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-16",
- last_updated: "2026-01-31",
- modalities: { input: ["image", "text"], output: ["image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 46864, output: 46864 },
- },
- "black-forest-labs/flux.2-flex": {
- id: "black-forest-labs/flux.2-flex",
- name: "FLUX.2 Flex",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-11-25",
- last_updated: "2026-01-31",
- modalities: { input: ["image", "text"], output: ["image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 67344, output: 67344 },
- },
- "black-forest-labs/flux.2-pro": {
- id: "black-forest-labs/flux.2-pro",
- name: "FLUX.2 Pro",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-11-25",
- last_updated: "2026-01-31",
- modalities: { input: ["image", "text"], output: ["image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 46864, output: 46864 },
- },
- "black-forest-labs/flux.2-klein-4b": {
- id: "black-forest-labs/flux.2-klein-4b",
- name: "FLUX.2 Klein 4B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 40960, output: 40960 },
- },
- "nousresearch/hermes-3-llama-3.1-405b:free": {
- id: "nousresearch/hermes-3-llama-3.1-405b:free",
- name: "Hermes 3 405B Instruct (free)",
- family: "hermes",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-08-16",
- last_updated: "2024-08-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "nousresearch/hermes-4-405b": {
- id: "nousresearch/hermes-4-405b",
- name: "Hermes 4 405B",
- family: "hermes",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2025-08-25",
- last_updated: "2025-08-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3 },
- limit: { context: 131072, output: 131072 },
- },
- "nousresearch/hermes-4-70b": {
- id: "nousresearch/hermes-4-70b",
- name: "Hermes 4 70B",
- family: "hermes",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2025-08-25",
- last_updated: "2025-08-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4 },
- limit: { context: 131072, output: 131072 },
- },
- "stepfun/step-3.5-flash:free": {
- id: "stepfun/step-3.5-flash:free",
- name: "Step 3.5 Flash (free)",
- family: "step",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 256000 },
- },
- "stepfun/step-3.5-flash": {
- id: "stepfun/step-3.5-flash",
- name: "Step 3.5 Flash",
- family: "step",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3, cache_read: 0.02 },
- limit: { context: 256000, output: 256000 },
- },
- "mistralai/mistral-small-3.1-24b-instruct": {
- id: "mistralai/mistral-small-3.1-24b-instruct",
- name: "Mistral Small 3.1 24B Instruct",
- family: "mistral-small",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-17",
- last_updated: "2025-03-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "mistralai/devstral-2512": {
- id: "mistralai/devstral-2512",
- name: "Devstral 2 2512",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-12",
- release_date: "2025-09-12",
- last_updated: "2025-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/codestral-2508": {
- id: "mistralai/codestral-2508",
- name: "Codestral 2508",
- family: "codestral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 256000 },
- },
- "mistralai/mistral-medium-3.1": {
- id: "mistralai/mistral-medium-3.1",
- name: "Mistral Medium 3.1",
- family: "mistral-medium",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/mistral-small-2603": {
- id: "mistralai/mistral-small-2603",
- name: "Mistral Small 4",
- family: "mistral-small",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/mistral-medium-3": {
- id: "mistralai/mistral-medium-3",
- name: "Mistral Medium 3",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, output: 131072 },
- },
- "mistralai/devstral-small-2505": {
- id: "mistralai/devstral-small-2505",
- name: "Devstral Small",
- 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,
- cost: { input: 0.06, output: 0.12 },
- limit: { context: 128000, output: 128000 },
- },
- "mistralai/mistral-small-3.2-24b-instruct": {
- id: "mistralai/mistral-small-3.2-24b-instruct",
- name: "Mistral Small 3.2 24B Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 96000, output: 8192 },
- },
- "mistralai/devstral-medium-2507": {
- id: "mistralai/devstral-medium-2507",
- name: "Devstral Medium",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2025-07-10",
- last_updated: "2025-07-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, output: 131072 },
- },
- "mistralai/devstral-small-2507": {
- id: "mistralai/devstral-small-2507",
- name: "Devstral Small 1.1",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2025-07-10",
- last_updated: "2025-07-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 131072, output: 131072 },
- },
- "meta-llama/llama-3.2-11b-vision-instruct": {
- id: "meta-llama/llama-3.2-11b-vision-instruct",
- name: "Llama 3.2 11B Vision Instruct",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: 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,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "meta-llama/llama-3.2-3b-instruct:free": {
- id: "meta-llama/llama-3.2-3b-instruct:free",
- name: "Llama 3.2 3B Instruct (free)",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: 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,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "meta-llama/llama-3.3-70b-instruct:free": {
- id: "meta-llama/llama-3.3-70b-instruct:free",
- name: "Llama 3.3 70B Instruct (free)",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "x-ai/grok-4.20-multi-agent-beta": {
- id: "x-ai/grok-4.20-multi-agent-beta",
- name: "Grok 4.20 Multi - Agent Beta",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.2, context_over_200k: { input: 4, output: 12 } },
- limit: { context: 2000000, output: 30000 },
- status: "beta",
- },
- "x-ai/grok-4-fast": {
- id: "x-ai/grok-4-fast",
- name: "Grok 4 Fast",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-08-19",
- last_updated: "2025-08-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05, cache_write: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "x-ai/grok-code-fast-1": {
- id: "x-ai/grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "x-ai/grok-3-beta": {
- id: "x-ai/grok-3-beta",
- name: "Grok 3 Beta",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75, cache_write: 15 },
- limit: { context: 131072, output: 8192 },
- },
- "x-ai/grok-4": {
- id: "x-ai/grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75, cache_write: 15 },
- limit: { context: 256000, output: 64000 },
- },
- "x-ai/grok-3-mini": {
- id: "x-ai/grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, cache_read: 0.075, cache_write: 0.5 },
- limit: { context: 131072, output: 8192 },
- },
- "x-ai/grok-4.1-fast": {
- id: "x-ai/grok-4.1-fast",
- name: "Grok 4.1 Fast",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-11-19",
- last_updated: "2025-11-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05, cache_write: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "x-ai/grok-4.20-beta": {
- id: "x-ai/grok-4.20-beta",
- name: "Grok 4.20 Beta",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.2, context_over_200k: { input: 4, output: 12 } },
- limit: { context: 2000000, output: 30000 },
- status: "beta",
- },
- "x-ai/grok-3-mini-beta": {
- id: "x-ai/grok-3-mini-beta",
- name: "Grok 3 Mini Beta",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, cache_read: 0.075, cache_write: 0.5 },
- limit: { context: 131072, output: 8192 },
- },
- "x-ai/grok-3": {
- id: "x-ai/grok-3",
- name: "Grok 3",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75, cache_write: 15 },
- limit: { context: 131072, output: 8192 },
- },
- "prime-intellect/intellect-3": {
- id: "prime-intellect/intellect-3",
- name: "Intellect 3",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-01-15",
- last_updated: "2025-01-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 131072, output: 8192 },
- },
- "nvidia/nemotron-3-super-120b-a12b": {
- id: "nvidia/nemotron-3-super-120b-a12b",
- name: "Nemotron 3 Super",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 262144, output: 262144 },
- },
- "nvidia/nemotron-3-nano-30b-a3b:free": {
- id: "nvidia/nemotron-3-nano-30b-a3b:free",
- name: "Nemotron 3 Nano 30B A3B (free)",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-12-14",
- last_updated: "2026-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 256000 },
- },
- "nvidia/nemotron-nano-9b-v2:free": {
- id: "nvidia/nemotron-nano-9b-v2:free",
- name: "Nemotron Nano 9B V2 (free)",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2025-09-05",
- last_updated: "2025-08-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 128000 },
- },
- "nvidia/nemotron-3-super-120b-a12b:free": {
- id: "nvidia/nemotron-3-super-120b-a12b:free",
- name: "Nemotron 3 Super (free)",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "nvidia/nemotron-nano-9b-v2": {
- id: "nvidia/nemotron-nano-9b-v2",
- name: "nvidia-nemotron-nano-9b-v2",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.04, output: 0.16 },
- limit: { context: 131072, output: 131072 },
- },
- "nvidia/nemotron-nano-12b-v2-vl:free": {
- id: "nvidia/nemotron-nano-12b-v2-vl:free",
- name: "Nemotron Nano 12B 2 VL (free)",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-10-28",
- last_updated: "2026-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 128000 },
- },
- "inception/mercury-2": {
- id: "inception/mercury-2",
- name: "Mercury 2",
- family: "mercury",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
- limit: { context: 128000, output: 50000 },
- },
- "inception/mercury": {
- id: "inception/mercury",
- name: "Mercury",
- family: "mercury",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-06-26",
- last_updated: "2025-06-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
- limit: { context: 128000, output: 32000 },
- },
- "inception/mercury-coder": {
- id: "inception/mercury-coder",
- name: "Mercury Coder",
- family: "mercury",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-30",
- last_updated: "2025-04-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
- limit: { context: 128000, output: 32000 },
- },
- "openai/gpt-5.1-codex-max": {
- id: "openai/gpt-5.1-codex-max",
- name: "GPT-5.1-Codex-Max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-chat": {
- id: "openai/gpt-5.2-chat",
- name: "GPT-5.2 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-oss-120b:exacto": {
- id: "openai/gpt-oss-120b:exacto",
- name: "GPT OSS 120B (exacto)",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.24 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-5-chat": {
- id: "openai/gpt-5-chat",
- name: "GPT-5 Chat (latest)",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-09-30",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "GPT-5.2 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: 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,
- cost: { input: 0.25, output: 2 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: 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,
- cost: { input: 0.05, output: 0.4 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "GPT-5.3-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-oss-20b:free": {
- id: "openai/gpt-oss-20b:free",
- name: "gpt-oss-20b (free)",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2026-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o-mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.4-mini": {
- id: "openai/gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 7.5e-7, output: 0.0000045, cache_read: 7.5e-8 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1-chat": {
- id: "openai/gpt-5.1-chat",
- name: "GPT-5.1 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "o4 Mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.4-nano": {
- id: "openai/gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 2e-7, output: 0.00000125, cache_read: 2e-8 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08-31",
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "GPT-5.1-Codex-Mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 100000 },
- },
- "openai/gpt-5-image": {
- id: "openai/gpt-5-image",
- name: "GPT-5 Image",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10-01",
- release_date: "2025-10-14",
- last_updated: "2025-10-14",
- modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 5, output: 10, cache_read: 1.25 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.4-pro": {
- id: "openai/gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 30, output: 180, cache_read: 30 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "GPT-5 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10-01",
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 2.5,
- output: 15,
- cache_read: 0.25,
- context_over_200k: { input: 5, output: 22.5, cache_read: 0.5 },
- },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-5-pro": {
- id: "openai/gpt-5-pro",
- name: "GPT-5 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 272000 },
- },
- "openai/gpt-oss-120b:free": {
- id: "openai/gpt-oss-120b:free",
- name: "gpt-oss-120b (free)",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: 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,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-oss-safeguard-20b": {
- id: "openai/gpt-oss-safeguard-20b",
- name: "GPT OSS Safeguard 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-29",
- last_updated: "2025-10-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 131072, output: 65536 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.072, output: 0.28 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "GPT-4.1 Mini",
- 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,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT-5.1-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "z-ai/glm-4.7": {
- id: "z-ai/glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 204800, output: 131072 },
- },
- "z-ai/glm-4.5-air:free": {
- id: "z-ai/glm-4.5-air:free",
- name: "GLM 4.5 Air (free)",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 96000 },
- },
- "z-ai/glm-5": {
- id: "z-ai/glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202752, output: 131000 },
- },
- "z-ai/glm-5.1": {
- id: "z-ai/glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 202752, output: 131072 },
- },
- "z-ai/glm-4.5": {
- id: "z-ai/glm-4.5",
- name: "GLM 4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 128000, output: 96000 },
- },
- "z-ai/glm-4.6:exacto": {
- id: "z-ai/glm-4.6:exacto",
- name: "GLM 4.6 (exacto)",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.9, cache_read: 0.11 },
- limit: { context: 200000, output: 128000 },
- },
- "z-ai/glm-4.5-air": {
- id: "z-ai/glm-4.5-air",
- name: "GLM 4.5 Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 128000, output: 96000 },
- },
- "z-ai/glm-5-turbo": {
- id: "z-ai/glm-5-turbo",
- name: "GLM-5-Turbo",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.96, output: 3.2, cache_read: 0.192, cache_write: 0 },
- limit: { context: 202752, output: 131072 },
- },
- "z-ai/glm-4.5v": {
- id: "z-ai/glm-4.5v",
- name: "GLM 4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.8 },
- limit: { context: 64000, output: 16384 },
- },
- "z-ai/glm-4.6": {
- id: "z-ai/glm-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 200000, output: 128000 },
- },
- "z-ai/glm-4.7-flash": {
- id: "z-ai/glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- structured_output: true,
- temperature: true,
- release_date: "2026-01-19",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.4 },
- limit: { context: 200000, output: 65535 },
- },
- "sourceful/riverflow-v2-standard-preview": {
- id: "sourceful/riverflow-v2-standard-preview",
- name: "Riverflow V2 Standard Preview",
- family: "sourceful",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-08",
- last_updated: "2026-01-28",
- modalities: { input: ["text", "image"], output: ["image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 8192 },
- },
- "sourceful/riverflow-v2-fast-preview": {
- id: "sourceful/riverflow-v2-fast-preview",
- name: "Riverflow V2 Fast Preview",
- family: "sourceful",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-08",
- last_updated: "2026-01-28",
- modalities: { input: ["text", "image"], output: ["image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 8192 },
- },
- "sourceful/riverflow-v2-max-preview": {
- id: "sourceful/riverflow-v2-max-preview",
- name: "Riverflow V2 Max Preview",
- family: "sourceful",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-08",
- last_updated: "2026-01-28",
- modalities: { input: ["text", "image"], output: ["image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 8192 },
- },
- "minimax/minimax-m2.7": {
- id: "minimax/minimax-m2.7",
- name: "MiniMax M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2": {
- id: "minimax/minimax-m2",
- name: "MiniMax M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- structured_output: true,
- temperature: true,
- release_date: "2025-10-23",
- last_updated: "2025-10-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.28, output: 1.15, cache_read: 0.28, cache_write: 1.15 },
- limit: { context: 196600, output: 118000 },
- },
- "minimax/minimax-01": {
- id: "minimax/minimax-01",
- name: "MiniMax-01",
- family: "minimax",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-15",
- last_updated: "2025-01-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 1000000, output: 1000000 },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2.5:free": {
- id: "minimax/minimax-m2.5:free",
- name: "MiniMax M2.5 (free)",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m1": {
- id: "minimax/minimax-m1",
- name: "MiniMax M1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-17",
- last_updated: "2025-06-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2.2 },
- limit: { context: 1000000, output: 40000 },
- },
- "minimax/minimax-m2.5": {
- id: "minimax/minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen/qwen3.5-397b-a17b": {
- id: "qwen/qwen3.5-397b-a17b",
- name: "Qwen3.5 397B A17B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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: true,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen2.5-vl-72b-instruct": {
- id: "qwen/qwen2.5-vl-72b-instruct",
- name: "Qwen2.5 VL 72B Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-02-01",
- last_updated: "2025-02-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "qwen/qwen3-coder:free": {
- id: "qwen/qwen3-coder:free",
- name: "Qwen3 Coder 480B A35B Instruct (free)",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 66536 },
- },
- "qwen/qwen3.5-flash-02-23": {
- id: "qwen/qwen3.5-flash-02-23",
- name: "Qwen: Qwen3.5-Flash",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.065, output: 0.26 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen/qwen3.6-plus": {
- id: "qwen/qwen3.6-plus",
- name: "Qwen3.6 Plus",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.325, output: 1.95 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen/qwen3-max": {
- id: "qwen/qwen3-max",
- name: "Qwen3 Max",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-05",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 6 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen/qwen3-coder:exacto": {
- id: "qwen/qwen3-coder:exacto",
- name: "Qwen3 Coder (exacto)",
- 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,
- cost: { input: 0.38, output: 1.53 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-30b-a3b-instruct-2507": {
- id: "qwen/qwen3-30b-a3b-instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262000, output: 262000 },
- },
- "qwen/qwen3-235b-a22b-thinking-2507": {
- id: "qwen/qwen3-235b-a22b-thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-25",
- last_updated: "2025-07-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.078, output: 0.312 },
- limit: { context: 262144, output: 81920 },
- },
- "qwen/qwen3-next-80b-a3b-thinking": {
- id: "qwen/qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09-11",
- last_updated: "2025-09-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 1.4 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3-30b-a3b-thinking-2507": {
- id: "qwen/qwen3-30b-a3b-thinking-2507",
- name: "Qwen3 30B A3B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262000, output: 262000 },
- },
- "qwen/qwen3-4b:free": {
- id: "qwen/qwen3-4b:free",
- name: "Qwen3 4B (free)",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04-30",
- last_updated: "2025-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 40960, output: 40960 },
- },
- "qwen/qwen3-next-80b-a3b-instruct:free": {
- id: "qwen/qwen3-next-80b-a3b-instruct:free",
- name: "Qwen3 Next 80B A3B Instruct (free)",
- 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-09-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3-coder-flash": {
- id: "qwen/qwen3-coder-flash",
- name: "Qwen3 Coder Flash",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 128000, output: 66536 },
- },
- "qwen/qwen3-next-80b-a3b-instruct": {
- id: "qwen/qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- 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-09-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 1.4 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen-2.5-coder-32b-instruct": {
- id: "qwen/qwen-2.5-coder-32b-instruct",
- name: "Qwen2.5 Coder 32B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-11-11",
- last_updated: "2024-11-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "qwen/qwen3-coder-30b-a3b-instruct": {
- id: "qwen/qwen3-coder-30b-a3b-instruct",
- name: "Qwen3 Coder 30B A3B Instruct",
- 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-07-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.27 },
- limit: { context: 160000, output: 65536 },
- },
- "qwen/qwen3-coder": {
- id: "qwen/qwen3-coder",
- name: "Qwen3 Coder",
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 262144, output: 66536 },
- },
- "qwen/qwen3.5-plus-02-15": {
- id: "qwen/qwen3.5-plus-02-15",
- name: "Qwen3.5 Plus 2026-02-15",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 2.4 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen/qwen3-235b-a22b-07-25": {
- id: "qwen/qwen3-235b-a22b-07-25",
- name: "Qwen3 235B A22B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04-28",
- last_updated: "2025-07-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.85 },
- limit: { context: 262144, output: 131072 },
- },
- "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",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-05-06",
- last_updated: "2025-05-06",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3.1-pro-preview-customtools": {
- id: "google/gemini-3.1-pro-preview-customtools",
- name: "Gemini 3.1 Pro Preview Custom Tools",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, reasoning: 12, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-3-4b-it:free": {
- id: "google/gemma-3-4b-it:free",
- name: "Gemma 3 4B (free)",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "google/gemini-2.5-flash-lite-preview-09-2025": {
- id: "google/gemini-2.5-flash-lite-preview-09-2025",
- name: "Gemini 2.5 Flash Lite Preview 09-25",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.0-flash-001": {
- id: "google/gemini-2.0-flash-001",
- name: "Gemini 2.0 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 8192 },
- },
- "google/gemma-3n-e4b-it": {
- id: "google/gemma-3n-e4b-it",
- name: "Gemma 3n 4B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.04 },
- limit: { context: 32768, output: 32768 },
- },
- "google/gemini-3.1-flash-lite-preview": {
- id: "google/gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite Preview",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-03",
- last_updated: "2026-03-03",
- modalities: { input: ["text", "image", "video", "pdf", "audio"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 0.25,
- output: 1.5,
- reasoning: 1.5,
- cache_read: 0.025,
- cache_write: 0.083,
- input_audio: 0.5,
- output_audio: 0.5,
- },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-3n-e4b-it:free": {
- id: "google/gemma-3n-e4b-it:free",
- name: "Gemma 3n 4B (free)",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2000 },
- },
- "google/gemini-3.1-pro-preview": {
- id: "google/gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, reasoning: 12, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-flash-preview": {
- id: "google/gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3, cache_read: 0.05 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-pro-preview": {
- id: "google/gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-11-18",
- last_updated: "2025-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12 },
- limit: { context: 1050000, output: 66000 },
- },
- "google/gemma-3n-e2b-it:free": {
- id: "google/gemma-3n-e2b-it:free",
- name: "Gemma 3n 2B (free)",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2000 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-2-9b-it": {
- id: "google/gemma-2-9b-it",
- name: "Gemma 2 9B",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-06-28",
- last_updated: "2024-06-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.09 },
- limit: { context: 8192, output: 8192 },
- },
- "google/gemma-4-31b-it": {
- id: "google/gemma-4-31b-it",
- name: "Gemma 4 31B",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- 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,
- cost: { input: 0.14, output: 0.4 },
- limit: { context: 262144, output: 262144 },
- },
- "google/gemini-2.5-pro-preview-06-05": {
- id: "google/gemini-2.5-pro-preview-06-05",
- name: "Gemini 2.5 Pro Preview 06-05",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-3-12b-it": {
- id: "google/gemma-3-12b-it",
- name: "Gemma 3 12B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.1 },
- limit: { context: 131072, output: 131072 },
- },
- "google/gemma-3-27b-it:free": {
- id: "google/gemma-3-27b-it:free",
- name: "Gemma 3 27B (free)",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-12",
- last_updated: "2025-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.0375 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-4-31b-it:free": {
- id: "google/gemma-4-31b-it:free",
- name: "Gemma 4 31B (free)",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "google/gemma-3-12b-it:free": {
- id: "google/gemma-3-12b-it:free",
- name: "Gemma 3 12B (free)",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "google/gemma-3-4b-it": {
- id: "google/gemma-3-4b-it",
- name: "Gemma 3 4B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01703, output: 0.06815 },
- limit: { context: 96000, output: 96000 },
- },
- "google/gemini-2.5-flash-preview-09-2025": {
- id: "google/gemini-2.5-flash-preview-09-2025",
- name: "Gemini 2.5 Flash Preview 09-25",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.031 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-3-27b-it": {
- id: "google/gemma-3-27b-it",
- name: "Gemma 3 27B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-12",
- last_updated: "2025-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.15 },
- limit: { context: 96000, output: 96000 },
- },
- "google/gemma-4-26b-a4b-it": {
- id: "google/gemma-4-26b-a4b-it",
- name: "Gemma 4 26B A4B",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-04-03",
- last_updated: "2026-04-03",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4 },
- limit: { context: 262144, output: 262144 },
- },
- "google/gemma-4-26b-a4b-it:free": {
- id: "google/gemma-4-26b-a4b-it:free",
- name: "Gemma 4 26B A4B (free)",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-04-03",
- last_updated: "2026-04-03",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "google/gemini-2.5-flash-lite": {
- id: "google/gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-0905": {
- id: "moonshotai/kimi-k2-0905",
- name: "Kimi K2 Instruct 0905",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 16384 },
- },
- "moonshotai/kimi-k2-0905:exacto": {
- id: "moonshotai/kimi-k2-0905:exacto",
- name: "Kimi K2 Instruct 0905 (exacto)",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 16384 },
- },
- "moonshotai/kimi-k2": {
- id: "moonshotai/kimi-k2",
- name: "Kimi K2",
- family: "kimi",
- 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,
- cost: { input: 0.55, output: 2.2 },
- limit: { context: 131072, output: 32768 },
- },
- "moonshotai/kimi-k2:free": {
- id: "moonshotai/kimi-k2:free",
- name: "Kimi K2 (free)",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-11",
- last_updated: "2025-07-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32800, output: 32800 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "anthropic/claude-opus-4.1": {
- id: "anthropic/claude-opus-4.1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-3.7-sonnet": {
- id: "anthropic/claude-3.7-sonnet",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-01",
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 128000 },
- },
- "anthropic/claude-opus-4.6": {
- id: "anthropic/claude-opus-4.6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05-30",
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.5,
- cache_write: 6.25,
- context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4.5": {
- id: "anthropic/claude-sonnet-4.5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 64000 },
- },
- "anthropic/claude-opus-4.5": {
- id: "anthropic/claude-opus-4.5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05-30",
- release_date: "2025-11-24",
- last_updated: "2025-11-24",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-3.5-haiku": {
- id: "anthropic/claude-3.5-haiku",
- name: "Claude Haiku 3.5",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-haiku-4.5": {
- id: "anthropic/claude-haiku-4.5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4.6": {
- id: "anthropic/claude-sonnet-4.6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- "xiaomi/mimo-v2-omni": {
- id: "xiaomi/mimo-v2-omni",
- name: "MiMo-V2-Omni",
- family: "mimo",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- structured_output: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2, cache_read: 0.08 },
- limit: { context: 262144, output: 65536 },
- },
- "xiaomi/mimo-v2-pro": {
- id: "xiaomi/mimo-v2-pro",
- name: "MiMo-V2-Pro",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- structured_output: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3, cache_read: 0.2 },
- limit: { context: 1048576, output: 65536 },
- },
- "xiaomi/mimo-v2-flash": {
- id: "xiaomi/mimo-v2-flash",
- name: "MiMo-V2-Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-12-14",
- last_updated: "2025-12-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01 },
- limit: { context: 262144, output: 65536 },
- },
- },
- },
- "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/glm-5p1": {
- id: "accounts/fireworks/models/glm-5p1",
- name: "GLM 5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- release_date: "2026-04-01",
- last_updated: "2026-04-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 202800, output: 131072 },
- },
- "accounts/fireworks/models/deepseek-v3p2": {
- id: "accounts/fireworks/models/deepseek-v3p2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.56, output: 1.68, cache_read: 0.28 },
- limit: { context: 160000, output: 160000 },
- },
- "accounts/fireworks/models/minimax-m2p5": {
- id: "accounts/fireworks/models/minimax-m2p5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 196608, output: 196608 },
- },
- "accounts/fireworks/models/glm-4p5-air": {
- id: "accounts/fireworks/models/glm-4p5-air",
- name: "GLM 4.5 Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.22, output: 0.88 },
- limit: { context: 131072, output: 131072 },
- },
- "accounts/fireworks/models/glm-5": {
- id: "accounts/fireworks/models/glm-5",
- name: "GLM 5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.5 },
- limit: { context: 202752, output: 131072 },
- },
- "accounts/fireworks/models/deepseek-v3p1": {
- id: "accounts/fireworks/models/deepseek-v3p1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.56, output: 1.68 },
- limit: { context: 163840, output: 163840 },
- },
- "accounts/fireworks/models/kimi-k2-instruct": {
- id: "accounts/fireworks/models/kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- family: "kimi",
- 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,
- cost: { input: 1, output: 3 },
- limit: { context: 128000, output: 16384 },
- },
- "accounts/fireworks/models/qwen3p6-plus": {
- id: "accounts/fireworks/models/qwen3p6-plus",
- name: "Qwen 3.6 Plus",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-04-04",
- last_updated: "2026-04-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3, cache_read: 0.1 },
- limit: { context: 128000, output: 8192 },
- },
- "accounts/fireworks/models/minimax-m2p1": {
- id: "accounts/fireworks/models/minimax-m2p1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 200000, output: 200000 },
- },
- "accounts/fireworks/models/glm-4p7": {
- id: "accounts/fireworks/models/glm-4p7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.3 },
- limit: { context: 198000, output: 198000 },
- },
- "accounts/fireworks/models/glm-4p5": {
- id: "accounts/fireworks/models/glm-4p5",
- name: "GLM 4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 131072, output: 131072 },
- },
- "accounts/fireworks/models/kimi-k2p5": {
- id: "accounts/fireworks/models/kimi-k2p5",
- name: "Kimi K2.5",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 256000, output: 256000 },
- },
- "accounts/fireworks/models/gpt-oss-20b": {
- id: "accounts/fireworks/models/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 131072, output: 32768 },
- },
- "accounts/fireworks/models/gpt-oss-120b": {
- id: "accounts/fireworks/models/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 32768 },
- },
- "accounts/fireworks/models/kimi-k2-thinking": {
- id: "accounts/fireworks/models/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5, cache_read: 0.3 },
- limit: { context: 256000, output: 256000 },
- },
- "accounts/fireworks/routers/kimi-k2p5-turbo": {
- id: "accounts/fireworks/routers/kimi-k2p5-turbo",
- name: "Kimi K2.5 Turbo (firepass)",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 256000, output: 256000 },
- },
- },
- },
- "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/coding/docs/en/third-party-agents.html",
- models: {
- k2p5: {
- id: "k2p5",
- name: "Kimi K2.5",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-11",
- last_updated: "2025-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- },
- },
- 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: {
- "GLM-4.7": {
- id: "GLM-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3.5, output: 14 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.1": {
- id: "MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2.1, output: 8.4 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- "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: {
- "minimax-m2.7": {
- id: "minimax-m2.7",
- name: "MiniMax M2.7",
- family: "minimax-m2.7",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 204800, output: 131072 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 65536 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 204800, output: 131072 },
- },
- "mimo-v2-omni": {
- id: "mimo-v2-omni",
- name: "MiMo V2 Omni",
- family: "mimo-omni",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 2, cache_read: 0.08 },
- limit: { context: 262144, output: 64000 },
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax-m2.5",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131072 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "mimo-v2-pro": {
- id: "mimo-v2-pro",
- name: "MiMo V2 Pro",
- family: "mimo-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
- limit: { context: 1048576, output: 64000 },
- },
- },
- },
- "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",
- 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,
- cost: { input: 0.22, output: 0.95, cache_read: 0.11, cache_write: 0.44 },
- limit: { context: 106000, output: 4096 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Instruct": {
- id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- name: "Qwen 3 Next 80B Instruct",
- 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,
- cost: { input: 0.1, output: 0.8, cache_read: 0.05, cache_write: 0.2 },
- limit: { context: 262144, output: 4096 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen 3 235B Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.11, output: 0.6, cache_read: 0.055, cache_write: 0.22 },
- limit: { context: 262144, output: 4096 },
- },
- "Qwen/Qwen2.5-VL-32B-Instruct": {
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
- name: "Qwen 2.5 VL 32B Instruct",
- 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,
- cost: { input: 0.05, output: 0.22, cache_read: 0.025, cache_write: 0.1 },
- limit: { context: 32000, output: 4096 },
- },
- "zai-org/GLM-4.6": {
- id: "zai-org/GLM-4.6",
- name: "GLM 4.6",
- 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,
- cost: { input: 0.4, output: 1.75, cache_read: 0.2, cache_write: 0.8 },
- limit: { context: 200000, output: 4096 },
- },
- "mistralai/Magistral-Small-2506": {
- id: "mistralai/Magistral-Small-2506",
- name: "Magistral Small 2506",
- 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,
- cost: { input: 0.5, output: 1.5, cache_read: 0.25, cache_write: 1 },
- limit: { context: 128000, output: 4096 },
- },
- "mistralai/Mistral-Large-Instruct-2411": {
- id: "mistralai/Mistral-Large-Instruct-2411",
- name: "Mistral Large Instruct 2411",
- 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,
- cost: { input: 2, output: 6, cache_read: 1, cache_write: 4 },
- limit: { context: 128000, output: 4096 },
- },
- "mistralai/Mistral-Nemo-Instruct-2407": {
- id: "mistralai/Mistral-Nemo-Instruct-2407",
- name: "Mistral Nemo Instruct 2407",
- 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,
- cost: { input: 0.02, output: 0.04, cache_read: 0.01, cache_write: 0.04 },
- limit: { context: 128000, output: 4096 },
- },
- "mistralai/Devstral-Small-2505": {
- id: "mistralai/Devstral-Small-2505",
- name: "Devstral Small 2505",
- 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,
- cost: { input: 0.05, output: 0.22, cache_read: 0.025, cache_write: 0.1 },
- limit: { context: 128000, output: 4096 },
- },
- "meta-llama/Llama-3.3-70B-Instruct": {
- id: "meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama 3.3 70B Instruct",
- 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,
- cost: { input: 0.13, output: 0.38, cache_read: 0.065, cache_write: 0.26 },
- limit: { context: 128000, output: 4096 },
- },
- "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",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.075, cache_write: 0.3 },
- limit: { context: 430000, output: 4096 },
- },
- "meta-llama/Llama-3.2-90B-Vision-Instruct": {
- id: "meta-llama/Llama-3.2-90B-Vision-Instruct",
- name: "Llama 3.2 90B Vision Instruct",
- 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,
- cost: { input: 0.35, output: 0.4, cache_read: 0.175, cache_write: 0.7 },
- limit: { context: 16000, output: 4096 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8.75, cache_read: 1, cache_write: 4 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT-OSS 20B",
- 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,
- cost: { input: 0.03, output: 0.14, cache_read: 0.015, cache_write: 0.06 },
- limit: { context: 64000, output: 4096 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT-OSS 120B",
- 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,
- cost: { input: 0.04, output: 0.4, cache_read: 0.02, cache_write: 0.08 },
- limit: { context: 131072, output: 4096 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.25, cache_read: 0.275, cache_write: 1.1 },
- limit: { context: 32768, output: 4096 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi K2 Instruct",
- family: "kimi",
- 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,
- cost: { input: 0.39, output: 1.9, cache_read: 0.195, cache_write: 0.78 },
- limit: { context: 32768, output: 4096 },
- },
- },
- },
- "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-235b-a22b": {
- id: "qwen3-235b-a22b",
- name: "Qwen3 235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.287, output: 1.147, reasoning: 2.868 },
- limit: { context: 131072, output: 16384 },
- },
- "qwen-plus-character": {
- id: "qwen-plus-character",
- name: "Qwen Plus Character",
- 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,
- cost: { input: 0.115, output: 0.287 },
- limit: { context: 32768, output: 4096 },
- },
- "qwen2-5-math-7b-instruct": {
- id: "qwen2-5-math-7b-instruct",
- name: "Qwen2.5-Math 7B Instruct",
- 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,
- cost: { input: 0.144, output: 0.287 },
- limit: { context: 4096, output: 3072 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Moonshot Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.574, output: 2.411 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen-doc-turbo": {
- id: "qwen-doc-turbo",
- name: "Qwen Doc Turbo",
- 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,
- cost: { input: 0.087, output: 0.144 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen-vl-ocr": {
- id: "qwen-vl-ocr",
- name: "Qwen-VL OCR",
- 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,
- cost: { input: 0.717, output: 0.717 },
- limit: { context: 34096, output: 4096 },
- },
- "qwen-omni-turbo-realtime": {
- id: "qwen-omni-turbo-realtime",
- name: "Qwen-Omni Turbo Realtime",
- 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,
- cost: { input: 0.23, output: 0.918, input_audio: 3.584, output_audio: 7.168 },
- limit: { context: 32768, output: 2048 },
- },
- "qwen3-8b": {
- id: "qwen3-8b",
- name: "Qwen3 8B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.072, output: 0.287, reasoning: 0.717 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3.5-397b-a17b": {
- id: "qwen3.5-397b-a17b",
- name: "Qwen3.5 397B-A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.43, output: 2.58, reasoning: 2.58 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen-math-turbo": {
- id: "qwen-math-turbo",
- name: "Qwen Math Turbo",
- 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,
- cost: { input: 0.287, output: 0.861 },
- limit: { context: 4096, output: 3072 },
- },
- "qwq-plus": {
- id: "qwq-plus",
- name: "QwQ Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.23, output: 0.574 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen-vl-plus": {
- id: "qwen-vl-plus",
- name: "Qwen-VL Plus",
- 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,
- cost: { input: 0.115, output: 0.287 },
- limit: { context: 131072, output: 8192 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.86, output: 3.15 },
- limit: { context: 202752, output: 16384 },
- },
- "deepseek-r1-distill-llama-70b": {
- id: "deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.287, output: 0.861 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.287, output: 1.147, reasoning: 2.868 },
- limit: { context: 131072, output: 16384 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen-max": {
- id: "qwen-max",
- name: "Qwen Max",
- 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,
- cost: { input: 0.345, output: 1.377 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen-plus": {
- id: "qwen-plus",
- name: "Qwen Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.115, output: 0.287, reasoning: 1.147 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen-omni-turbo": {
- id: "qwen-omni-turbo",
- name: "Qwen-Omni Turbo",
- 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,
- cost: { input: 0.058, output: 0.23, input_audio: 3.584, output_audio: 7.168 },
- limit: { context: 32768, output: 2048 },
- },
- "qwen-flash": {
- id: "qwen-flash",
- name: "Qwen Flash",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.022, output: 0.216 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen2-5-vl-7b-instruct": {
- id: "qwen2-5-vl-7b-instruct",
- name: "Qwen2.5-VL 7B Instruct",
- 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,
- cost: { input: 0.287, output: 0.717 },
- limit: { context: 131072, output: 8192 },
- },
- "deepseek-r1": {
- id: "deepseek-r1",
- name: "DeepSeek R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.574, output: 2.294 },
- limit: { context: 131072, output: 16384 },
- },
- "qwen3.5-flash": {
- id: "qwen3.5-flash",
- name: "Qwen3.5 Flash",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.172, output: 1.72, reasoning: 1.72 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen3.6-plus": {
- id: "qwen3.6-plus",
- name: "Qwen3.6 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.276, output: 1.651, cache_read: 0.028, cache_write: 0.344 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen3-max": {
- id: "qwen3-max",
- name: "Qwen3 Max",
- 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,
- cost: { input: 0.861, output: 3.441 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen3-omni-flash": {
- id: "qwen3-omni-flash",
- name: "Qwen3-Omni Flash",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.058, output: 0.23, input_audio: 3.584, output_audio: 7.168 },
- limit: { context: 65536, output: 16384 },
- },
- "deepseek-v3-1": {
- id: "deepseek-v3-1",
- name: "DeepSeek V3.1",
- 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,
- cost: { input: 0.574, output: 1.721 },
- limit: { context: 131072, output: 65536 },
- },
- "qwen2-5-72b-instruct": {
- id: "qwen2-5-72b-instruct",
- name: "Qwen2.5 72B Instruct",
- 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,
- cost: { input: 0.574, output: 1.721 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-vl-235b-a22b": {
- id: "qwen3-vl-235b-a22b",
- name: "Qwen3-VL 235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.286705, output: 1.14682, reasoning: 2.867051 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen-math-plus": {
- id: "qwen-math-plus",
- name: "Qwen Math Plus",
- 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,
- cost: { input: 0.574, output: 1.721 },
- limit: { context: 4096, output: 3072 },
- },
- "qwen2-5-coder-32b-instruct": {
- id: "qwen2-5-coder-32b-instruct",
- name: "Qwen2.5-Coder 32B Instruct",
- 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,
- cost: { input: 0.287, output: 0.861 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-asr-flash": {
- id: "qwen3-asr-flash",
- name: "Qwen3-ASR Flash",
- 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,
- cost: { input: 0.032, output: 0.032 },
- limit: { context: 53248, output: 4096 },
- },
- "qwen-deep-research": {
- id: "qwen-deep-research",
- name: "Qwen Deep Research",
- 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,
- cost: { input: 7.742, output: 23.367 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen3-next-80b-a3b-thinking": {
- id: "qwen3-next-80b-a3b-thinking",
- name: "Qwen3-Next 80B-A3B (Thinking)",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09",
- last_updated: "2025-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.144, output: 1.434 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen-mt-plus": {
- id: "qwen-mt-plus",
- name: "Qwen-MT Plus",
- 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,
- cost: { input: 0.259, output: 0.775 },
- limit: { context: 16384, output: 8192 },
- },
- "deepseek-r1-distill-qwen-32b": {
- id: "deepseek-r1-distill-qwen-32b",
- name: "DeepSeek R1 Distill Qwen 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.287, output: 0.861 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen-vl-max": {
- id: "qwen-vl-max",
- name: "Qwen-VL Max",
- 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,
- cost: { input: 0.23, output: 0.574 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-coder-flash": {
- id: "qwen3-coder-flash",
- name: "Qwen3 Coder Flash",
- 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,
- cost: { input: 0.144, output: 0.574 },
- limit: { context: 1000000, output: 65536 },
- },
- "deepseek-r1-distill-qwen-7b": {
- id: "deepseek-r1-distill-qwen-7b",
- name: "DeepSeek R1 Distill Qwen 7B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.072, output: 0.144 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen2-5-7b-instruct": {
- id: "qwen2-5-7b-instruct",
- name: "Qwen2.5 7B Instruct",
- 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,
- cost: { input: 0.072, output: 0.144 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen2-5-14b-instruct": {
- id: "qwen2-5-14b-instruct",
- name: "Qwen2.5 14B Instruct",
- 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,
- cost: { input: 0.144, output: 0.431 },
- limit: { context: 131072, output: 8192 },
- },
- "tongyi-intent-detect-v3": {
- id: "tongyi-intent-detect-v3",
- name: "Tongyi Intent Detect V3",
- 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,
- cost: { input: 0.058, output: 0.144 },
- limit: { context: 8192, output: 1024 },
- },
- "qwq-32b": {
- id: "qwq-32b",
- name: "QwQ 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-12",
- last_updated: "2024-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.287, output: 0.861 },
- limit: { context: 131072, output: 8192 },
- },
- "moonshot-kimi-k2-instruct": {
- id: "moonshot-kimi-k2-instruct",
- name: "Moonshot Kimi K2 Instruct",
- family: "kimi",
- 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,
- cost: { input: 0.574, output: 2.294 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen2-5-32b-instruct": {
- id: "qwen2-5-32b-instruct",
- name: "Qwen2.5 32B Instruct",
- 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,
- cost: { input: 0.287, output: 0.861 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen3-next-80b-a3b-instruct": {
- id: "qwen3-next-80b-a3b-instruct",
- name: "Qwen3-Next 80B-A3B Instruct",
- 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,
- cost: { input: 0.144, output: 0.574 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen3-omni-flash-realtime": {
- id: "qwen3-omni-flash-realtime",
- name: "Qwen3-Omni Flash Realtime",
- 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,
- cost: { input: 0.23, output: 0.918, input_audio: 3.584, output_audio: 7.168 },
- limit: { context: 65536, output: 16384 },
- },
- "qwen3-vl-30b-a3b": {
- id: "qwen3-vl-30b-a3b",
- name: "Qwen3-VL 30B-A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.108, output: 0.431, reasoning: 1.076 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen3-vl-plus": {
- id: "qwen3-vl-plus",
- name: "Qwen3-VL Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.143353, output: 1.433525, reasoning: 4.300576 },
- limit: { context: 262144, output: 32768 },
- },
- "deepseek-v3-2-exp": {
- id: "deepseek-v3-2-exp",
- name: "DeepSeek V3.2 Exp",
- 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,
- cost: { input: 0.287, output: 0.431 },
- limit: { context: 131072, output: 65536 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen3-Coder 480B-A35B Instruct",
- 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,
- cost: { input: 0.861, output: 3.441 },
- limit: { context: 262144, output: 65536 },
- },
- "deepseek-r1-distill-qwen-1-5b": {
- id: "deepseek-r1-distill-qwen-1-5b",
- name: "DeepSeek R1 Distill Qwen 1.5B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3-Coder 30B-A3B Instruct",
- 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,
- cost: { input: 0.216, output: 0.861 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen2-5-coder-7b-instruct": {
- id: "qwen2-5-coder-7b-instruct",
- name: "Qwen2.5-Coder 7B Instruct",
- 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,
- cost: { input: 0.144, output: 0.287 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen-turbo": {
- id: "qwen-turbo",
- name: "Qwen Turbo",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.044, output: 0.087, reasoning: 0.431 },
- limit: { context: 1000000, output: 16384 },
- },
- "qwen-mt-turbo": {
- id: "qwen-mt-turbo",
- name: "Qwen-MT Turbo",
- 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,
- cost: { input: 0.101, output: 0.28 },
- limit: { context: 16384, output: 8192 },
- },
- "qwen2-5-math-72b-instruct": {
- id: "qwen2-5-math-72b-instruct",
- name: "Qwen2.5-Math 72B Instruct",
- 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,
- cost: { input: 0.574, output: 1.721 },
- limit: { context: 4096, output: 3072 },
- },
- "qwen2-5-omni-7b": {
- id: "qwen2-5-omni-7b",
- name: "Qwen2.5-Omni 7B",
- 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,
- cost: { input: 0.087, output: 0.345, input_audio: 5.448 },
- limit: { context: 32768, output: 2048 },
- },
- "qwen3.5-plus": {
- id: "qwen3.5-plus",
- name: "Qwen3.5 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.573, output: 3.44, reasoning: 3.44 },
- limit: { context: 1000000, output: 65536 },
- },
- "deepseek-r1-distill-qwen-14b": {
- id: "deepseek-r1-distill-qwen-14b",
- name: "DeepSeek R1 Distill Qwen 14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.144, output: 0.431 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen2-5-vl-72b-instruct": {
- id: "qwen2-5-vl-72b-instruct",
- name: "Qwen2.5-VL 72B Instruct",
- 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,
- cost: { input: 2.294, output: 6.881 },
- limit: { context: 131072, output: 8192 },
- },
- "deepseek-v3": {
- id: "deepseek-v3",
- name: "DeepSeek V3",
- 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,
- cost: { input: 0.287, output: 1.147 },
- limit: { context: 65536, output: 8192 },
- },
- "deepseek-r1-0528": {
- id: "deepseek-r1-0528",
- name: "DeepSeek R1 0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.574, output: 2.294 },
- limit: { context: 131072, output: 16384 },
- },
- "qvq-max": {
- id: "qvq-max",
- name: "QVQ Max",
- family: "qvq",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.147, output: 4.588 },
- limit: { context: 131072, output: 8192 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Moonshot Kimi K2 Thinking",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.574, output: 2.294 },
- limit: { context: 262144, output: 16384 },
- },
- "qwen3-14b": {
- id: "qwen3-14b",
- name: "Qwen3 14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.144, output: 0.574, reasoning: 1.434 },
- limit: { context: 131072, output: 8192 },
- },
- "deepseek-r1-distill-llama-8b": {
- id: "deepseek-r1-distill-llama-8b",
- name: "DeepSeek R1 Distill Llama 8B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen-long": {
- id: "qwen-long",
- name: "Qwen Long",
- 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,
- cost: { input: 0.072, output: 0.287 },
- limit: { context: 10000000, output: 8192 },
- },
- "kimi/kimi-k2.5": {
- id: "kimi/kimi-k2.5",
- name: "kimi/kimi-k2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "MiniMax/MiniMax-M2.7": {
- id: "MiniMax/MiniMax-M2.7",
- name: "MiniMax-M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "siliconflow/deepseek-v3-0324": {
- id: "siliconflow/deepseek-v3-0324",
- name: "siliconflow/deepseek-v3-0324",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 163840, output: 163840 },
- },
- "siliconflow/deepseek-v3.2": {
- id: "siliconflow/deepseek-v3.2",
- name: "siliconflow/deepseek-v3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.42 },
- limit: { context: 163840, output: 65536 },
- },
- "siliconflow/deepseek-r1-0528": {
- id: "siliconflow/deepseek-r1-0528",
- name: "siliconflow/deepseek-r1-0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.18 },
- limit: { context: 163840, output: 32768 },
- },
- "siliconflow/deepseek-v3.1-terminus": {
- id: "siliconflow/deepseek-v3.1-terminus",
- name: "siliconflow/deepseek-v3.1-terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 163840, output: 65536 },
- },
- "qwen3-coder-plus": {
- id: "qwen3-coder-plus",
- name: "Qwen3 Coder Plus",
- 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,
- cost: { input: 1, output: 5 },
- limit: { context: 1048576, output: 65536 },
- },
- },
- },
- "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 Coding Plan (minimaxi.com)",
- doc: "https://platform.minimaxi.com/docs/coding-plan/intro",
- models: {
- "MiniMax-M2": {
- id: "MiniMax-M2",
- name: "MiniMax-M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 196608, output: 128000 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7": {
- id: "MiniMax-M2.7",
- name: "MiniMax-M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7-highspeed": {
- id: "MiniMax-M2.7-highspeed",
- name: "MiniMax-M2.7-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.1": {
- id: "MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.5-highspeed": {
- id: "MiniMax-M2.5-highspeed",
- name: "MiniMax-M2.5-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-13",
- last_updated: "2026-02-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- 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.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "gpt-5.1-codex-max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 400000, output: 128000 },
- },
- "grok-4-1-fast-reasoning": {
- id: "grok-4-1-fast-reasoning",
- name: "grok-4-1-fast-reasoning",
- 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,
- cost: { input: 0.18, output: 0.45 },
- limit: { context: 2000000, output: 2000000 },
- },
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "claude-opus-4-5-20251101",
- 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,
- cost: { input: 4.5, output: 22.5 },
- limit: { context: 200000, output: 65536 },
- },
- "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",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.36 },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5.2-pro": {
- id: "gpt-5.2-pro",
- name: "gpt-5.2-pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 18.9, output: 151.2 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "gemini-3-flash-preview",
- 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,
- cost: { input: 0.5, output: 3 },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "gpt-5-mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.225, output: 1.8 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "gpt-5-nano",
- 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,
- cost: { input: 0.045, output: 0.36 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "gemini-3-pro-preview",
- 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,
- cost: { input: 1.8, output: 10.8 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-preview-05-20": {
- id: "gemini-2.5-flash-preview-05-20",
- name: "gemini-2.5-flash-preview-05-20",
- 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,
- cost: { input: 0.135, output: 3.15 },
- limit: { context: 1048576, output: 200000 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "claude-sonnet-4-5-20250929",
- 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,
- cost: { input: 2.7, output: 13.5 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "gemini-2.5-pro",
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 1048576, output: 65535 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "grok-4-1-fast-non-reasoning",
- 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,
- cost: { input: 0.18, output: 0.45 },
- limit: { context: 2000000, output: 2000000 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "gpt-5.2",
- 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,
- cost: { input: 1.575, output: 12.6 },
- limit: { context: 400000, output: 128000 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4-mini",
- 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,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, output: 100000 },
- },
- "gemini-2.5-pro-preview-06-05": {
- id: "gemini-2.5-pro-preview-06-05",
- name: "gemini-2.5-pro-preview-06-05",
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 1048576, output: 200000 },
- },
- "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",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 0.09, output: 0.36 },
- limit: { context: 1048576, output: 65535 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "gpt-5.2-codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "gemini-2.5-flash",
- 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,
- cost: { input: 0.27, output: 2.25 },
- limit: { context: 1048576, output: 65535 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "gpt-5.1-codex-mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.225, output: 1.8 },
- limit: { context: 400000, output: 128000 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "grok-code-fast-1",
- 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,
- cost: { input: 0.18, output: 1.35 },
- limit: { context: 256000, output: 256000 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "gpt-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 400000, output: 128000 },
- },
- "grok-4-fast-reasoning": {
- id: "grok-4-fast-reasoning",
- name: "grok-4-fast-reasoning",
- 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,
- cost: { input: 0.18, output: 0.45 },
- limit: { context: 2000000, output: 2000000 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "o3-mini",
- 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,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 131072, output: 131072 },
- },
- "grok-4-0709": {
- id: "grok-4-0709",
- name: "grok-4-0709",
- 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,
- cost: { input: 2.7, output: 13.5 },
- limit: { context: 256000, output: 8192 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "gpt-5-codex",
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "claude-opus-4-1-20250805",
- 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,
- cost: { input: 13.5, output: 67.5 },
- limit: { context: 200000, output: 32000 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "claude-haiku-4-5-20251001",
- 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,
- cost: { input: 0.9, output: 4.5 },
- limit: { context: 20000, output: 64000 },
- },
- "claude-sonnet-4-20250514": {
- id: "claude-sonnet-4-20250514",
- name: "claude-sonnet-4-20250514",
- 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,
- cost: { input: 2.7, output: 13.5 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "claude-opus-4-6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25 },
- limit: { context: 1000000, output: 128000 },
- },
- o3: {
- id: "o3",
- name: "o3",
- 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,
- cost: { input: 10, output: 40 },
- limit: { context: 131072, output: 131072 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "gpt-5-pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 13.5, output: 108 },
- limit: { context: 400000, output: 272000 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "gemini-2.5-flash-lite",
- family: "gemini-flash-lite",
- 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,
- cost: { input: 0.09, output: 0.36 },
- limit: { context: 1048576, output: 65535 },
- },
- "gpt-5-chat-latest": {
- id: "gpt-5-chat-latest",
- name: "gpt-5-chat-latest",
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-20250514": {
- id: "claude-opus-4-20250514",
- name: "claude-opus-4-20250514",
- 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,
- cost: { input: 13.5, output: 67.5 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "gpt-5.1-codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.125, output: 9 },
- limit: { context: 400000, output: 128000 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "grok-4-fast-non-reasoning",
- 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,
- cost: { input: 0.18, output: 0.45 },
- limit: { context: 2000000, output: 2000000 },
- },
- "deepseek/deepseek-v3-0324": {
- id: "deepseek/deepseek-v3-0324",
- name: "DeepSeek V3 0324",
- 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,
- cost: { input: 0.28, output: 1.14 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek/deepseek-v3.1": {
- id: "deepseek/deepseek-v3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1 },
- limit: { context: 163840, output: 32768 },
- },
- "deepseek/deepseek-r1-0528": {
- id: "deepseek/deepseek-r1-0528",
- name: "DeepSeek R1 0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.5 },
- limit: { context: 163840, output: 32768 },
- },
- "zai-org/glm-4.7": {
- id: "zai-org/glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/glm-4.5": {
- id: "zai-org/glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 131072, output: 98304 },
- },
- "zai-org/glm-4.5v": {
- id: "zai-org/glm-4.5v",
- name: "GLM 4.5V",
- family: "glmv",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.8 },
- limit: { context: 65536, output: 16384 },
- },
- "zai-org/glm-4.7-flash": {
- id: "zai-org/glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.4 },
- limit: { context: 200000, output: 128000 },
- },
- "minimaxai/minimax-m1-80k": {
- id: "minimaxai/minimax-m1-80k",
- name: "MiniMax M1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.2 },
- limit: { context: 1000000, output: 40000 },
- },
- "xiaomimimo/mimo-v2-flash": {
- id: "xiaomimimo/mimo-v2-flash",
- name: "XiaomiMiMo/MiMo-V2-Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 131072 },
- },
- "baidu/ernie-4.5-vl-424b-a47b": {
- id: "baidu/ernie-4.5-vl-424b-a47b",
- name: "ERNIE 4.5 VL 424B A47B",
- family: "ernie",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.42, output: 1.25 },
- limit: { context: 123000, output: 16000 },
- },
- "baidu/ernie-4.5-300b-a47b-paddle": {
- id: "baidu/ernie-4.5-300b-a47b-paddle",
- name: "ERNIE 4.5 300B A47B",
- 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,
- cost: { input: 0.28, output: 1.1 },
- limit: { context: 123000, output: 12000 },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "Minimax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen/qwen3-235b-a22b-instruct-2507": {
- id: "qwen/qwen3-235b-a22b-instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0.15, output: 0.8 },
- limit: { context: 131072, output: 16384 },
- },
- "qwen/qwen3-32b-fp8": {
- id: "qwen/qwen3-32b-fp8",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.45 },
- limit: { context: 40960, output: 20000 },
- },
- "qwen/qwen3-235b-a22b-thinking-2507": {
- id: "qwen/qwen3-235b-a22b-thinking-2507",
- name: "Qwen3 235B A22b Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 3 },
- limit: { context: 131072, output: 131072 },
- },
- "qwen/qwen3-next-80b-a3b-thinking": {
- id: "qwen/qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 1.5 },
- limit: { context: 65536, output: 65536 },
- },
- "qwen/qwen3-next-80b-a3b-instruct": {
- id: "qwen/qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- 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,
- cost: { input: 0.15, output: 1.5 },
- limit: { context: 65536, output: 65536 },
- },
- "qwen/qwen3-30b-a3b-fp8": {
- id: "qwen/qwen3-30b-a3b-fp8",
- name: "Qwen3 30B A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.45 },
- limit: { context: 40960, output: 20000 },
- },
- "qwen/qwen3-coder-next": {
- id: "qwen/qwen3-coder-next",
- name: "qwen/qwen3-coder-next",
- 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,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-coder-480b-a35b-instruct": {
- id: "qwen/qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 0.29, output: 1.2 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-235b-a22b-fp8": {
- id: "qwen/qwen3-235b-a22b-fp8",
- name: "Qwen3 235B A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 40960, output: 20000 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-instruct": {
- id: "moonshotai/kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- family: "kimi",
- 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,
- cost: { input: 0.57, output: 2.3 },
- limit: { context: 131072, output: 131072 },
- },
- "moonshotai/kimi-k2-0905": {
- id: "moonshotai/kimi-k2-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- 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",
- family: "ring",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-10",
- last_updated: "2025-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.57, output: 2.29 },
- limit: { context: 128000, output: 32000 },
- },
- "Ling-1T": {
- id: "Ling-1T",
- name: "Ling-1T",
- 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,
- cost: { input: 0.57, output: 2.29 },
- limit: { context: 128000, output: 32000 },
- },
- },
- },
- 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",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 64000 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3-32B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32000 },
- },
- "deepseek-r1": {
- id: "deepseek-r1",
- name: "DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32000 },
- },
- "qwen3-max": {
- id: "qwen3-max",
- name: "Qwen3-Max",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 32000 },
- },
- "qwen3-235b-a22b-instruct": {
- id: "qwen3-235b-a22b-instruct",
- name: "Qwen3-235B-A22B-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 64000 },
- },
- "qwen3-235b-a22b-thinking-2507": {
- id: "qwen3-235b-a22b-thinking-2507",
- name: "Qwen3-235B-A22B-Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 64000 },
- },
- "kimi-k2-0905": {
- id: "kimi-k2-0905",
- name: "Kimi-K2-0905",
- family: "kimi",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 64000 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 128000 },
- },
- "qwen3-vl-plus": {
- id: "qwen3-vl-plus",
- name: "Qwen3-VL-Plus",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 32000 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek-V3.2-Exp",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 64000 },
- },
- "qwen3-235b": {
- id: "qwen3-235b",
- name: "Qwen3-235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32000 },
- },
- "kimi-k2": {
- id: "kimi-k2",
- name: "Kimi-K2",
- family: "kimi",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 64000 },
- },
- "qwen3-max-preview": {
- id: "qwen3-max-preview",
- name: "Qwen3-Max-Preview",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 32000 },
- },
- "deepseek-v3": {
- id: "deepseek-v3",
- name: "DeepSeek-V3",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32000 },
- },
- },
- },
- 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",
- family: "v0",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-09",
- last_updated: "2025-06-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75 },
- limit: { context: 512000, output: 32000 },
- },
- "v0-1.0-md": {
- id: "v0-1.0-md",
- name: "v0-1.0-md",
- family: "v0",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, output: 32000 },
- },
- "v0-1.5-md": {
- id: "v0-1.5-md",
- name: "v0-1.5-md",
- family: "v0",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-09",
- last_updated: "2025-06-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, output: 32000 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3.5-397B-A17B": {
- id: "Qwen/Qwen3.5-397B-A17B",
- name: "Qwen3.5-397B-A17B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 262144, output: 32768 },
- },
- "Qwen/Qwen3-Coder-Next": {
- id: "Qwen/Qwen3-Coder-Next",
- name: "Qwen3-Coder-Next",
- 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,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Instruct": {
- id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- name: "Qwen3-Next-80B-A3B-Instruct",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 262144, output: 66536 },
- },
- "Qwen/Qwen3-Embedding-8B": {
- id: "Qwen/Qwen3-Embedding-8B",
- name: "Qwen 3 Embedding 8B",
- 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,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32000, output: 4096 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3-235B-A22B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 3 },
- limit: { context: 262144, output: 131072 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Thinking": {
- id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
- name: "Qwen3-Next-80B-A3B-Thinking",
- 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,
- cost: { input: 0.3, output: 2 },
- limit: { context: 262144, output: 131072 },
- },
- "Qwen/Qwen3-Embedding-4B": {
- id: "Qwen/Qwen3-Embedding-4B",
- name: "Qwen 3 Embedding 4B",
- 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,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32000, output: 2048 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen3-Coder-480B-A35B-Instruct",
- 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,
- cost: { input: 2, output: 2 },
- limit: { context: 262144, output: 66536 },
- },
- "zai-org/GLM-4.7-Flash": {
- id: "zai-org/GLM-4.7-Flash",
- name: "GLM-4.7-Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 128000 },
- },
- "zai-org/GLM-4.7": {
- id: "zai-org/GLM-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/GLM-5.1": {
- id: "zai-org/GLM-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202752, output: 131072 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202752, output: 131072 },
- },
- "XiaomiMiMo/MiMo-V2-Flash": {
- id: "XiaomiMiMo/MiMo-V2-Flash",
- name: "MiMo-V2-Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262144, output: 4096 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek-R1-0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 5 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.4 },
- limit: { context: 163840, output: 65536 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "Kimi-K2-Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/Kimi-K2-Instruct": {
- id: "moonshotai/Kimi-K2-Instruct",
- name: "Kimi-K2-Instruct",
- family: "kimi",
- 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,
- cost: { input: 1, output: 3 },
- limit: { context: 131072, output: 16384 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi-K2-Instruct-0905",
- family: "kimi",
- 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,
- cost: { input: 1, output: 3 },
- limit: { context: 262144, output: 16384 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi-K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMaxAI/MiniMax-M2.1": {
- id: "MiniMaxAI/MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- 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: {
- "deepseek/deepseek-chat": {
- id: "deepseek/deepseek-chat",
- name: "DeepSeek-V3.2 (Non-thinking Mode)",
- 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,
- cost: { input: 0.28, output: 0.42, cache_read: 0.03 },
- limit: { context: 128000, output: 64000 },
- },
- "deepseek/deepseek-v3.2-exp": {
- id: "deepseek/deepseek-v3.2-exp",
- name: "DeepSeek-V3.2-Exp",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.22, output: 0.33 },
- limit: { context: 163000, output: 64000 },
- },
- "deepseek/deepseek-v3.2": {
- id: "deepseek/deepseek-v3.2",
- name: "DeepSeek V3.2",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.43 },
- limit: { context: 128000, output: 64000 },
- },
- "inclusionai/ring-1t": {
- id: "inclusionai/ring-1t",
- name: "Ring-1T",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.56, output: 2.24, cache_read: 0.11 },
- limit: { context: 128000, output: 64000 },
- },
- "inclusionai/ling-1t": {
- id: "inclusionai/ling-1t",
- name: "Ling-1T",
- 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,
- cost: { input: 0.56, output: 2.24, cache_read: 0.11 },
- limit: { context: 128000, output: 64000 },
- },
- "stepfun/step-3.5-flash-free": {
- id: "stepfun/step-3.5-flash-free",
- name: "Step 3.5 Flash (Free)",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 64000 },
- },
- "stepfun/step-3.5-flash": {
- id: "stepfun/step-3.5-flash",
- name: "Step 3.5 Flash",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 256000, output: 64000 },
- },
- "stepfun/step-3": {
- id: "stepfun/step-3",
- name: "Step-3",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.21, output: 0.57 },
- limit: { context: 65536, output: 64000 },
- },
- "kuaishou/kat-coder-pro-v2": {
- id: "kuaishou/kat-coder-pro-v2",
- name: "KAT-Coder-Pro-V2",
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 256000, output: 80000 },
- },
- "x-ai/grok-4-fast": {
- id: "x-ai/grok-4-fast",
- name: "Grok 4 Fast",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 64000 },
- },
- "x-ai/grok-code-fast-1": {
- id: "x-ai/grok-code-fast-1",
- name: "Grok Code Fast 1",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 64000 },
- },
- "x-ai/grok-4.1-fast-non-reasoning": {
- id: "x-ai/grok-4.1-fast-non-reasoning",
- name: "Grok 4.1 Fast Non Reasoning",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 64000 },
- },
- "x-ai/grok-4": {
- id: "x-ai/grok-4",
- name: "Grok 4",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 64000 },
- },
- "x-ai/grok-4.1-fast": {
- id: "x-ai/grok-4.1-fast",
- name: "Grok 4.1 Fast",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 64000 },
- },
- "x-ai/grok-4.2-fast": {
- id: "x-ai/grok-4.2-fast",
- name: "Grok 4.2 Fast",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 9 },
- limit: { context: 2000000, output: 30000 },
- },
- "x-ai/grok-4.2-fast-non-reasoning": {
- id: "x-ai/grok-4.2-fast-non-reasoning",
- name: "Grok 4.2 Fast Non Reasoning",
- 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,
- cost: { input: 3, output: 9 },
- limit: { context: 2000000, output: 30000 },
- },
- "openai/gpt-5.3-chat": {
- id: "openai/gpt-5.3-chat",
- name: "GPT-5.3 Chat",
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 128000, output: 16380 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "GPT-5.2-Pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, output: 128000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.17 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.4-mini": {
- id: "openai/gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- 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,
- cost: { input: 0.75, output: 4.5 },
- limit: { context: 400000, output: 128000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.1-chat": {
- id: "openai/gpt-5.1-chat",
- name: "GPT-5.1 Chat",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12 },
- limit: { context: 128000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.4-nano": {
- id: "openai/gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- 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,
- cost: { input: 0.2, output: 1.25 },
- limit: { context: 400000, output: 128000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.17 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "GPT-5.1-Codex-Mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT-5.1",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.4-pro": {
- id: "openai/gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 45, output: 225 },
- limit: { context: 1050000, output: 128000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "GPT-5 Codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT-5.4",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3.75, output: 18.75 },
- limit: { context: 1050000, output: 128000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "GPT-5",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT-5.1-Codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12 },
- limit: { context: 400000, output: 64000 },
- provider: { npm: "@ai-sdk/openai", api: "https://zenmux.ai/api/v1" },
- },
- "z-ai/glm-4.7-flash-free": {
- id: "z-ai/glm-4.7-flash-free",
- name: "GLM 4.7 Flash (Free)",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 64000 },
- },
- "z-ai/glm-5v-turbo": {
- id: "z-ai/glm-5v-turbo",
- name: "GLM 5V Turbo",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.726, output: 3.1946, cache_read: 0.1743 },
- limit: { context: 200000, output: 128000 },
- },
- "z-ai/glm-4.7": {
- id: "z-ai/glm-4.7",
- name: "GLM 4.7",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 1.14, cache_read: 0.06 },
- limit: { context: 200000, output: 64000 },
- },
- "z-ai/glm-5": {
- id: "z-ai/glm-5",
- name: "GLM 5",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 2.6, cache_read: 0.14 },
- limit: { context: 200000, output: 128000 },
- },
- "z-ai/glm-4.7-flashx": {
- id: "z-ai/glm-4.7-flashx",
- name: "GLM 4.7 FlashX",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.42, cache_read: 0.01 },
- limit: { context: 200000, output: 64000 },
- },
- "z-ai/glm-4.6v-flash-free": {
- id: "z-ai/glm-4.6v-flash-free",
- name: "GLM 4.6V Flash (Free)",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 64000 },
- },
- "z-ai/glm-5.1": {
- id: "z-ai/glm-5.1",
- name: "GLM-5.1",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.8781, output: 3.5126, cache_read: 0.1903 },
- limit: { context: 200000, output: 131072 },
- },
- "z-ai/glm-4.6v-flash": {
- id: "z-ai/glm-4.6v-flash",
- name: "GLM 4.6V FlashX",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.02, output: 0.21, cache_read: 0.0043 },
- limit: { context: 200000, output: 64000 },
- },
- "z-ai/glm-4.5": {
- id: "z-ai/glm-4.5",
- name: "GLM 4.5",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.35, output: 1.54, cache_read: 0.07 },
- limit: { context: 128000, output: 64000 },
- },
- "z-ai/glm-4.5-air": {
- id: "z-ai/glm-4.5-air",
- name: "GLM 4.5 Air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.11, output: 0.56, cache_read: 0.02 },
- limit: { context: 128000, output: 64000 },
- },
- "z-ai/glm-5-turbo": {
- id: "z-ai/glm-5-turbo",
- name: "GLM 5 Turbo",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.88, output: 3.48 },
- limit: { context: 200000, output: 128000 },
- },
- "z-ai/glm-4.6": {
- id: "z-ai/glm-4.6",
- name: "GLM 4.6",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.35, output: 1.54, cache_read: 0.07 },
- limit: { context: 200000, output: 64000 },
- },
- "z-ai/glm-4.6v": {
- id: "z-ai/glm-4.6v",
- name: "GLM 4.6V",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 0.42, cache_read: 0.03 },
- limit: { context: 200000, output: 64000 },
- },
- "volcengine/doubao-seed-2.0-code": {
- id: "volcengine/doubao-seed-2.0-code",
- name: "Doubao Seed 2.0 Code",
- 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,
- cost: { input: 0.9, output: 4.48 },
- limit: { context: 256000, output: 32000 },
- },
- "volcengine/doubao-seed-code": {
- id: "volcengine/doubao-seed-code",
- name: "Doubao-Seed-Code",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.17, output: 1.12, cache_read: 0.03 },
- limit: { context: 256000, output: 64000 },
- },
- "volcengine/doubao-seed-2.0-mini": {
- id: "volcengine/doubao-seed-2.0-mini",
- name: "Doubao-Seed-2.0-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.03, output: 0.28, cache_read: 0.01, cache_write: 0.0024 },
- limit: { context: 256000, output: 64000 },
- },
- "volcengine/doubao-seed-2.0-lite": {
- id: "volcengine/doubao-seed-2.0-lite",
- name: "Doubao-Seed-2.0-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.51, cache_read: 0.02, cache_write: 0.0024 },
- limit: { context: 256000, output: 64000 },
- },
- "volcengine/doubao-seed-1.8": {
- id: "volcengine/doubao-seed-1.8",
- name: "Doubao-Seed-1.8",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.11, output: 0.28, cache_read: 0.02, cache_write: 0.0024 },
- limit: { context: 256000, output: 64000 },
- },
- "volcengine/doubao-seed-2.0-pro": {
- id: "volcengine/doubao-seed-2.0-pro",
- name: "Doubao-Seed-2.0-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 2.24, cache_read: 0.09, cache_write: 0.0024 },
- limit: { context: 256000, output: 64000 },
- },
- "baidu/ernie-5.0-thinking-preview": {
- id: "baidu/ernie-5.0-thinking-preview",
- name: "ERNIE 5.0",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.84, output: 3.37 },
- limit: { context: 128000, output: 64000 },
- },
- "minimax/minimax-m2.7": {
- id: "minimax/minimax-m2.7",
- name: "MiniMax M2.7",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3055, output: 1.2219 },
- limit: { context: 204800, output: 131070 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "minimax/minimax-m2.7-highspeed": {
- id: "minimax/minimax-m2.7-highspeed",
- name: "MiniMax M2.7 highspeed",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.611, output: 2.4439 },
- limit: { context: 204800, output: 131070 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "minimax/minimax-m2": {
- id: "minimax/minimax-m2",
- name: "MiniMax M2",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.38 },
- limit: { context: 204000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "MiniMax M2.1",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.38 },
- limit: { context: 204000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "minimax/minimax-m2.5-lightning": {
- id: "minimax/minimax-m2.5-lightning",
- name: "MiniMax M2.5 highspeed",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 4.8, cache_read: 0.06, cache_write: 0.75 },
- limit: { context: 204800, output: 131072 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "minimax/minimax-m2.5": {
- id: "minimax/minimax-m2.5",
- name: "MiniMax M2.5",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "qwen/qwen3-coder-plus": {
- id: "qwen/qwen3-coder-plus",
- name: "Qwen3-Coder-Plus",
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 1000000, output: 64000 },
- },
- "qwen/qwen3.5-flash": {
- id: "qwen/qwen3.5-flash",
- name: "Qwen3.5 Flash",
- 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,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1020000, output: 1020000 },
- },
- "qwen/qwen3.6-plus": {
- id: "qwen/qwen3.6-plus",
- name: "Qwen3.6-Plus",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-30",
- last_updated: "2026-03-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 0.5,
- output: 3,
- cache_read: 0.05,
- cache_write: 0.625,
- context_over_200k: { input: 2, output: 6, cache_read: 0.2, cache_write: 2.5 },
- },
- limit: { context: 1000000, output: 64000 },
- },
- "qwen/qwen3-max": {
- id: "qwen/qwen3-max",
- name: "Qwen3-Max-Thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.2, output: 6 },
- limit: { context: 256000, output: 64000 },
- },
- "qwen/qwen3.5-plus": {
- id: "qwen/qwen3.5-plus",
- name: "Qwen3.5 Plus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.8, output: 4.8 },
- limit: { context: 1000000, output: 64000 },
- },
- "google/gemini-3.1-flash-lite-preview": {
- id: "google/gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite Preview",
- 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,
- cost: { input: 0.25, output: 1.5 },
- limit: { context: 1050000, output: 65530 },
- },
- "google/gemini-3.1-pro-preview": {
- id: "google/gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, cache_write: 4.5 },
- limit: { context: 1048000, output: 64000 },
- },
- "google/gemini-3-flash-preview": {
- id: "google/gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 3, cache_read: 0.05, cache_write: 1 },
- limit: { context: 1048000, output: 64000 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31, cache_write: 4.5 },
- limit: { context: 1048000, output: 64000 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.07, cache_write: 1 },
- limit: { context: 1048000, output: 64000 },
- },
- "google/gemini-2.5-flash-lite": {
- id: "google/gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03, cache_write: 1 },
- limit: { context: 1048000, output: 64000 },
- },
- "sapiens-ai/agnes-1.5-lite": {
- id: "sapiens-ai/agnes-1.5-lite",
- name: "Agnes 1.5 Lite",
- 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,
- cost: { input: 0.12, output: 0.6 },
- limit: { context: 256000, output: 256000 },
- },
- "sapiens-ai/agnes-1.5-pro": {
- id: "sapiens-ai/agnes-1.5-pro",
- name: "Agnes 1.5 Pro",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-21",
- last_updated: "2026-03-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.16, output: 0.8 },
- limit: { context: 256000, output: 256000 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 3.02, cache_read: 0.1 },
- limit: { context: 262000, output: 64000 },
- },
- "moonshotai/kimi-k2-thinking-turbo": {
- id: "moonshotai/kimi-k2-thinking-turbo",
- name: "Kimi K2 Thinking Turbo",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.15, output: 8, cache_read: 0.15 },
- limit: { context: 262000, output: 64000 },
- },
- "moonshotai/kimi-k2-0905": {
- id: "moonshotai/kimi-k2-0905",
- name: "Kimi K2 0905",
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262000, output: 64000 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262000, output: 64000 },
- },
- "anthropic/claude-opus-4.1": {
- id: "anthropic/claude-opus-4.1",
- name: "Claude Opus 4.1",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-3.7-sonnet": {
- id: "anthropic/claude-3.7-sonnet",
- name: "Claude 3.7 Sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-opus-4.6": {
- id: "anthropic/claude-opus-4.6",
- name: "Claude Opus 4.6",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01-01",
- release_date: "2026-02-06",
- last_updated: "2026-02-06",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude Sonnet 4",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-sonnet-4.5": {
- id: "anthropic/claude-sonnet-4.5",
- name: "Claude Sonnet 4.5",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-opus-4.5": {
- id: "anthropic/claude-opus-4.5",
- name: "Claude Opus 4.5",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Claude Opus 4",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-3.5-haiku": {
- id: "anthropic/claude-3.5-haiku",
- name: "Claude 3.5 Haiku",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-haiku-4.5": {
- id: "anthropic/claude-haiku-4.5",
- name: "Claude Haiku 4.5",
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "anthropic/claude-sonnet-4.6": {
- id: "anthropic/claude-sonnet-4.6",
- name: "Claude Sonnet 4.6",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01-01",
- release_date: "2026-02-18",
- last_updated: "2026-02-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic", api: "https://zenmux.ai/api/anthropic/v1" },
- },
- "xiaomi/mimo-v2-omni": {
- id: "xiaomi/mimo-v2-omni",
- name: "MiMo V2 Omni",
- 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", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 265000, output: 265000 },
- },
- "xiaomi/mimo-v2-pro": {
- id: "xiaomi/mimo-v2-pro",
- name: "MiMo V2 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01-01",
- release_date: "2026-03-20",
- last_updated: "2026-03-20",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 4.5 },
- limit: { context: 1000000, output: 256000 },
- },
- "xiaomi/mimo-v2-flash": {
- id: "xiaomi/mimo-v2-flash",
- name: "MiMo-V2-Flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01-01",
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01 },
- limit: { context: 262000, output: 64000 },
- },
- },
- },
- 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-pro2": {
- id: "solar-pro2",
- name: "solar-pro2",
- family: "solar-pro",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 0.25 },
- limit: { context: 65536, output: 8192 },
- },
- "solar-mini": {
- id: "solar-mini",
- name: "solar-mini",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 32768, output: 4096 },
- },
- "solar-pro3": {
- id: "solar-pro3",
- name: "solar-pro3",
- family: "solar-pro",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.25 },
- limit: { context: 131072, output: 8192 },
- },
- },
- },
- "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: {
- "deepseek/deepseek-r1-turbo": {
- id: "deepseek/deepseek-r1-turbo",
- name: "DeepSeek R1 (Turbo)\t",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-05",
- last_updated: "2025-03-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.5 },
- limit: { context: 64000, output: 16000 },
- },
- "deepseek/deepseek-v3-0324": {
- id: "deepseek/deepseek-v3-0324",
- name: "DeepSeek V3 0324",
- 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,
- cost: { input: 0.27, output: 1.12, cache_read: 0.135 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek/deepseek-ocr-2": {
- id: "deepseek/deepseek-ocr-2",
- name: "deepseek/deepseek-ocr-2",
- 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,
- cost: { input: 0.03, output: 0.03 },
- limit: { context: 8192, output: 8192 },
- },
- "deepseek/deepseek-ocr": {
- id: "deepseek/deepseek-ocr",
- name: "DeepSeek-OCR",
- 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,
- cost: { input: 0.03, output: 0.03 },
- limit: { context: 8192, output: 8192 },
- },
- "deepseek/deepseek-r1-distill-llama-70b": {
- id: "deepseek/deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill LLama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.8, output: 0.8 },
- limit: { context: 8192, output: 8192 },
- },
- "deepseek/deepseek-prover-v2-671b": {
- id: "deepseek/deepseek-prover-v2-671b",
- name: "Deepseek Prover V2 671B",
- 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,
- cost: { input: 0.7, output: 2.5 },
- limit: { context: 160000, output: 160000 },
- },
- "deepseek/deepseek-r1-0528-qwen3-8b": {
- id: "deepseek/deepseek-r1-0528-qwen3-8b",
- name: "DeepSeek R1 0528 Qwen3 8B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-05-29",
- last_updated: "2025-05-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.09 },
- limit: { context: 128000, output: 32000 },
- },
- "deepseek/deepseek-v3.2-exp": {
- id: "deepseek/deepseek-v3.2-exp",
- name: "Deepseek V3.2 Exp",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.41 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-v3.1": {
- id: "deepseek/deepseek-v3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1, cache_read: 0.135 },
- limit: { context: 131072, output: 32768 },
- },
- "deepseek/deepseek-v3.2": {
- id: "deepseek/deepseek-v3.2",
- name: "Deepseek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.269, output: 0.4, cache_read: 0.1345 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-v3-turbo": {
- id: "deepseek/deepseek-v3-turbo",
- name: "DeepSeek V3 (Turbo)\t",
- 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,
- cost: { input: 0.4, output: 1.3 },
- limit: { context: 64000, output: 16000 },
- },
- "deepseek/deepseek-r1-0528": {
- id: "deepseek/deepseek-r1-0528",
- name: "DeepSeek R1 0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.7, output: 2.5, cache_read: 0.35 },
- limit: { context: 163840, output: 32768 },
- },
- "deepseek/deepseek-v3.1-terminus": {
- id: "deepseek/deepseek-v3.1-terminus",
- name: "Deepseek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1, cache_read: 0.135 },
- limit: { context: 131072, output: 32768 },
- },
- "paddlepaddle/paddleocr-vl": {
- id: "paddlepaddle/paddleocr-vl",
- name: "PaddleOCR-VL",
- 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,
- cost: { input: 0.02, output: 0.02 },
- limit: { context: 16384, output: 16384 },
- },
- "nousresearch/hermes-2-pro-llama-3-8b": {
- id: "nousresearch/hermes-2-pro-llama-3-8b",
- name: "Hermes 2 Pro Llama 3 8B",
- 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,
- cost: { input: 0.14, output: 0.14 },
- limit: { context: 8192, output: 8192 },
- },
- "zai-org/glm-4.7": {
- id: "zai-org/glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/glm-5": {
- id: "zai-org/glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202800, output: 131072 },
- },
- "zai-org/glm-5.1": {
- id: "zai-org/glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/glm-4.5": {
- id: "zai-org/glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 131072, output: 98304 },
- },
- "zai-org/glm-4.5-air": {
- id: "zai-org/glm-4.5-air",
- name: "GLM 4.5 Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.13, output: 0.85 },
- limit: { context: 131072, output: 98304 },
- },
- "zai-org/glm-4.5v": {
- id: "zai-org/glm-4.5v",
- name: "GLM 4.5V",
- family: "glmv",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.8, cache_read: 0.11 },
- limit: { context: 65536, output: 16384 },
- },
- "zai-org/glm-4.6": {
- id: "zai-org/glm-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.2, cache_read: 0.11 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/glm-4.6v": {
- id: "zai-org/glm-4.6v",
- name: "GLM 4.6V",
- family: "glmv",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.9, cache_read: 0.055 },
- limit: { context: 131072, output: 32768 },
- },
- "zai-org/glm-4.7-flash": {
- id: "zai-org/glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.4, cache_read: 0.01 },
- limit: { context: 200000, output: 128000 },
- },
- "zai-org/autoglm-phone-9b-multilingual": {
- id: "zai-org/autoglm-phone-9b-multilingual",
- name: "AutoGLM-Phone-9B-Multilingual",
- 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,
- cost: { input: 0.035, output: 0.138 },
- limit: { context: 65536, output: 65536 },
- },
- "mistralai/mistral-nemo": {
- id: "mistralai/mistral-nemo",
- name: "Mistral Nemo",
- 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,
- cost: { input: 0.04, output: 0.17 },
- limit: { context: 60288, output: 16000 },
- },
- "baichuan/baichuan-m2-32b": {
- id: "baichuan/baichuan-m2-32b",
- name: "baichuan-m2-32b",
- 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,
- cost: { input: 0.07, output: 0.07 },
- limit: { context: 131072, output: 131072 },
- },
- "meta-llama/llama-4-scout-17b-16e-instruct": {
- id: "meta-llama/llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout Instruct",
- 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,
- cost: { input: 0.18, output: 0.59 },
- limit: { context: 131072, output: 131072 },
- },
- "meta-llama/llama-3.3-70b-instruct": {
- id: "meta-llama/llama-3.3-70b-instruct",
- name: "Llama 3.3 70B Instruct",
- 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,
- cost: { input: 0.135, output: 0.4 },
- limit: { context: 131072, output: 120000 },
- },
- "meta-llama/llama-3-8b-instruct": {
- id: "meta-llama/llama-3-8b-instruct",
- name: "Llama 3 8B Instruct",
- 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,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 8192, output: 8192 },
- },
- "meta-llama/llama-3.1-8b-instruct": {
- id: "meta-llama/llama-3.1-8b-instruct",
- name: "Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.02, output: 0.05 },
- limit: { context: 16384, output: 16384 },
- },
- "meta-llama/llama-3-70b-instruct": {
- id: "meta-llama/llama-3-70b-instruct",
- name: "Llama3 70B Instruct",
- 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,
- cost: { input: 0.51, output: 0.74 },
- limit: { context: 8192, output: 8000 },
- },
- "meta-llama/llama-4-maverick-17b-128e-instruct-fp8": {
- id: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8",
- name: "Llama 4 Maverick Instruct",
- 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,
- cost: { input: 0.27, output: 0.85 },
- limit: { context: 1048576, output: 8192 },
- },
- "gryphe/mythomax-l2-13b": {
- id: "gryphe/mythomax-l2-13b",
- name: "Mythomax L2 13B",
- 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,
- cost: { input: 0.09, output: 0.09 },
- limit: { context: 4096, output: 3200 },
- },
- "sao10k/l31-70b-euryale-v2.2": {
- id: "sao10k/l31-70b-euryale-v2.2",
- name: "L31 70B Euryale V2.2",
- 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,
- cost: { input: 1.48, output: 1.48 },
- limit: { context: 8192, output: 8192 },
- },
- "sao10k/l3-70b-euryale-v2.1": {
- id: "sao10k/l3-70b-euryale-v2.1",
- name: "L3 70B Euryale V2.1\t",
- 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,
- cost: { input: 1.48, output: 1.48 },
- limit: { context: 8192, output: 8192 },
- },
- "sao10k/L3-8B-Stheno-v3.2": {
- id: "sao10k/L3-8B-Stheno-v3.2",
- name: "L3 8B Stheno V3.2",
- 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,
- cost: { input: 0.05, output: 0.05 },
- limit: { context: 8192, output: 32000 },
- },
- "sao10k/l3-8b-lunaris": {
- id: "sao10k/l3-8b-lunaris",
- name: "Sao10k L3 8B Lunaris\t",
- 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,
- cost: { input: 0.05, output: 0.05 },
- limit: { context: 8192, output: 8192 },
- },
- "microsoft/wizardlm-2-8x22b": {
- id: "microsoft/wizardlm-2-8x22b",
- name: "Wizardlm 2 8x22B",
- 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,
- cost: { input: 0.62, output: 0.62 },
- limit: { context: 65535, output: 8000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "OpenAI: GPT OSS 20B",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.04, output: 0.15 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "OpenAI GPT OSS 120B",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.25 },
- limit: { context: 131072, output: 32768 },
- },
- "minimaxai/minimax-m1-80k": {
- id: "minimaxai/minimax-m1-80k",
- name: "MiniMax M1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-17",
- last_updated: "2025-06-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.2 },
- limit: { context: 1000000, output: 40000 },
- },
- "xiaomimimo/mimo-v2-flash": {
- id: "xiaomimimo/mimo-v2-flash",
- name: "XiaomiMiMo/MiMo-V2-Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.3, cache_read: 0.3 },
- limit: { context: 262144, output: 32000 },
- },
- "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",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.39, output: 0.39 },
- limit: { context: 131072, output: 65536 },
- },
- "baidu/ernie-4.5-vl-424b-a47b": {
- id: "baidu/ernie-4.5-vl-424b-a47b",
- name: "ERNIE 4.5 VL 424B A47B",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-06-30",
- last_updated: "2025-06-30",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.42, output: 1.25 },
- limit: { context: 123000, output: 16000 },
- },
- "baidu/ernie-4.5-21B-a3b": {
- id: "baidu/ernie-4.5-21B-a3b",
- name: "ERNIE 4.5 21B A3B",
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 120000, output: 8000 },
- },
- "baidu/ernie-4.5-300b-a47b-paddle": {
- id: "baidu/ernie-4.5-300b-a47b-paddle",
- name: "ERNIE 4.5 300B A47B",
- 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,
- cost: { input: 0.28, output: 1.1 },
- limit: { context: 123000, output: 12000 },
- },
- "baidu/ernie-4.5-21B-a3b-thinking": {
- id: "baidu/ernie-4.5-21B-a3b-thinking",
- name: "ERNIE-4.5-21B-A3B-Thinking",
- family: "ernie",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 131072, output: 65536 },
- },
- "baidu/ernie-4.5-vl-28b-a3b": {
- id: "baidu/ernie-4.5-vl-28b-a3b",
- name: "ERNIE 4.5 VL 28B A3B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-30",
- last_updated: "2025-06-30",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.4, output: 5.6 },
- limit: { context: 30000, output: 8000 },
- },
- "minimax/minimax-m2.7": {
- id: "minimax/minimax-m2.7",
- name: "MiniMax M2.7",
- family: "minimax-m2.7",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2": {
- id: "minimax/minimax-m2",
- name: "MiniMax-M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "Minimax M2.1",
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2.5": {
- id: "minimax/minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131100 },
- },
- "minimax/minimax-m2.5-highspeed": {
- id: "minimax/minimax-m2.5-highspeed",
- name: "MiniMax M2.5 Highspeed",
- family: "minimax-m2.5",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.4, cache_read: 0.03 },
- limit: { context: 204800, output: 131100 },
- },
- "qwen/qwen2.5-7b-instruct": {
- id: "qwen/qwen2.5-7b-instruct",
- name: "Qwen2.5 7B Instruct",
- 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,
- cost: { input: 0.07, output: 0.07 },
- limit: { context: 32000, output: 32000 },
- },
- "qwen/qwen3.5-122b-a10b": {
- id: "qwen/qwen3.5-122b-a10b",
- name: "Qwen3.5-122B-A10B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 3.2 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3.5-27b": {
- id: "qwen/qwen3.5-27b",
- name: "Qwen3.5-27B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.4 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-235b-a22b-instruct-2507": {
- id: "qwen/qwen3-235b-a22b-instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0.09, output: 0.58 },
- limit: { context: 131072, output: 16384 },
- },
- "qwen/qwen3-omni-30b-a3b-instruct": {
- id: "qwen/qwen3-omni-30b-a3b-instruct",
- name: "Qwen3 Omni 30B A3B Instruct",
- 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,
- cost: { input: 0.25, output: 0.97, input_audio: 2.2, output_audio: 1.788 },
- limit: { context: 65536, output: 16384 },
- },
- "qwen/qwen3.5-397b-a17b": {
- id: "qwen/qwen3.5-397b-a17b",
- name: "Qwen3.5-397B-A17B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 262144, output: 64000 },
- },
- "qwen/qwen2.5-vl-72b-instruct": {
- id: "qwen/qwen2.5-vl-72b-instruct",
- name: "Qwen2.5 VL 72B Instruct",
- 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,
- cost: { input: 0.8, output: 0.8 },
- limit: { context: 32768, output: 32768 },
- },
- "qwen/qwen3-vl-235b-a22b-thinking": {
- id: "qwen/qwen3-vl-235b-a22b-thinking",
- name: "Qwen3 VL 235B A22B Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.98, output: 3.95 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-vl-30b-a3b-thinking": {
- id: "qwen/qwen3-vl-30b-a3b-thinking",
- name: "qwen/qwen3-vl-30b-a3b-thinking",
- 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,
- cost: { input: 0.2, output: 1 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-omni-30b-a3b-thinking": {
- id: "qwen/qwen3-omni-30b-a3b-thinking",
- name: "Qwen3 Omni 30B A3B Thinking",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 0.97, input_audio: 2.2, output_audio: 1.788 },
- limit: { context: 65536, output: 16384 },
- },
- "qwen/qwen3-vl-8b-instruct": {
- id: "qwen/qwen3-vl-8b-instruct",
- name: "qwen/qwen3-vl-8b-instruct",
- 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,
- cost: { input: 0.08, output: 0.5 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-max": {
- id: "qwen/qwen3-max",
- name: "Qwen3 Max",
- 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,
- cost: { input: 2.11, output: 8.45 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-32b-fp8": {
- id: "qwen/qwen3-32b-fp8",
- name: "Qwen3 32B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.45 },
- limit: { context: 40960, output: 20000 },
- },
- "qwen/qwen3-4b-fp8": {
- id: "qwen/qwen3-4b-fp8",
- name: "Qwen3 4B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.03 },
- limit: { context: 128000, output: 20000 },
- },
- "qwen/qwen3-235b-a22b-thinking-2507": {
- id: "qwen/qwen3-235b-a22b-thinking-2507",
- name: "Qwen3 235B A22b Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 3 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-next-80b-a3b-thinking": {
- id: "qwen/qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 1.5 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen-mt-plus": {
- id: "qwen/qwen-mt-plus",
- name: "Qwen MT Plus",
- 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,
- cost: { input: 0.25, output: 0.75 },
- limit: { context: 16384, output: 8192 },
- },
- "qwen/qwen3-next-80b-a3b-instruct": {
- id: "qwen/qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- 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,
- cost: { input: 0.15, output: 1.5 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-30b-a3b-fp8": {
- id: "qwen/qwen3-30b-a3b-fp8",
- name: "Qwen3 30B A3B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.45 },
- limit: { context: 40960, output: 20000 },
- },
- "qwen/qwen3-coder-next": {
- id: "qwen/qwen3-coder-next",
- name: "Qwen3 Coder Next",
- 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,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-coder-480b-a35b-instruct": {
- id: "qwen/qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 0.3, output: 1.3 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-vl-30b-a3b-instruct": {
- id: "qwen/qwen3-vl-30b-a3b-instruct",
- name: "qwen/qwen3-vl-30b-a3b-instruct",
- 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,
- cost: { input: 0.2, output: 0.7 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-coder-30b-a3b-instruct": {
- id: "qwen/qwen3-coder-30b-a3b-instruct",
- name: "Qwen3 Coder 30b A3B Instruct",
- 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,
- cost: { input: 0.07, output: 0.27 },
- limit: { context: 160000, output: 32768 },
- },
- "qwen/qwen3-235b-a22b-fp8": {
- id: "qwen/qwen3-235b-a22b-fp8",
- name: "Qwen3 235B A22B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 40960, output: 20000 },
- },
- "qwen/qwen3-8b-fp8": {
- id: "qwen/qwen3-8b-fp8",
- name: "Qwen3 8B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.035, output: 0.138 },
- limit: { context: 128000, output: 20000 },
- },
- "qwen/qwen3-vl-235b-a22b-instruct": {
- id: "qwen/qwen3-vl-235b-a22b-instruct",
- name: "Qwen3 VL 235B A22B Instruct",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen-2.5-72b-instruct": {
- id: "qwen/qwen-2.5-72b-instruct",
- name: "Qwen 2.5 72B Instruct",
- 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,
- cost: { input: 0.38, output: 0.4 },
- limit: { context: 32000, output: 8192 },
- },
- "qwen/qwen3.5-35b-a3b": {
- id: "qwen/qwen3.5-35b-a3b",
- name: "Qwen3.5-35B-A3B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2 },
- limit: { context: 262144, output: 65536 },
- },
- "kwaipilot/kat-coder-pro": {
- id: "kwaipilot/kat-coder-pro",
- name: "Kat Coder Pro",
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 256000, output: 128000 },
- },
- "google/gemma-4-31b-it": {
- id: "google/gemma-4-31b-it",
- name: "Gemma 4 31B",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-04-02",
- last_updated: "2026-04-02",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 0.4 },
- limit: { context: 262144, output: 131072 },
- },
- "google/gemma-3-27b-it": {
- id: "google/gemma-3-27b-it",
- name: "Gemma 3 27B",
- 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,
- cost: { input: 0.119, output: 0.2 },
- limit: { context: 98304, output: 16384 },
- },
- "google/gemma-4-26b-a4b-it": {
- id: "google/gemma-4-26b-a4b-it",
- name: "Gemma 4 26B A4B",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-04-02",
- last_updated: "2026-04-02",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4 },
- limit: { context: 262144, output: 131072 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-instruct": {
- id: "moonshotai/kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- 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,
- cost: { input: 0.57, output: 2.3 },
- limit: { context: 131072, output: 131072 },
- },
- "moonshotai/kimi-k2-0905": {
- id: "moonshotai/kimi-k2-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-11-07",
- last_updated: "2025-11-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- "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-omni": {
- id: "mimo-v2-omni",
- name: "MiMo-V2-Omni",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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", "video", "pdf"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 256000, output: 128000 },
- },
- "mimo-v2-tts": {
- id: "mimo-v2-tts",
- name: "MiMo-V2-TTS",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 8000, output: 16000 },
- },
- "mimo-v2-pro": {
- id: "mimo-v2-pro",
- name: "MiMo-V2-Pro",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 1000000, output: 128000 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3-30B-A3B-Instruct-2507": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04-28",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3-235B-A22B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-25",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen3-Coder-480B-A35B-Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-23",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 1.5 },
- limit: { context: 262144, output: 262144 },
- },
- "zai-org/GLM-5-FP8": {
- id: "zai-org/GLM-5-FP8",
- name: "GLM 5",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-11",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3.2 },
- limit: { context: 200000, output: 200000 },
- },
- "meta-llama/Llama-4-Scout-17B-16E-Instruct": {
- id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
- name: "Llama 4 Scout 17B 16E Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-01-31",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.66 },
- limit: { context: 64000, output: 64000 },
- },
- "meta-llama/Llama-3.3-70B-Instruct": {
- id: "meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama-3.3-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-12-06",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.71, output: 0.71 },
- limit: { context: 128000, output: 128000 },
- },
- "meta-llama/Llama-3.1-8B-Instruct": {
- id: "meta-llama/Llama-3.1-8B-Instruct",
- name: "Meta-Llama-3.1-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-07-23",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.22, output: 0.22 },
- limit: { context: 128000, output: 128000 },
- },
- "meta-llama/Llama-3.1-70B-Instruct": {
- id: "meta-llama/Llama-3.1-70B-Instruct",
- name: "Llama 3.1 70B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-07-23",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 0.8 },
- limit: { context: 128000, output: 128000 },
- },
- "OpenPipe/Qwen3-14B-Instruct": {
- id: "OpenPipe/Qwen3-14B-Instruct",
- name: "OpenPipe Qwen3 14B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.22 },
- limit: { context: 32768, output: 32768 },
- },
- "microsoft/Phi-4-mini-instruct": {
- id: "microsoft/Phi-4-mini-instruct",
- name: "Phi-4-mini-instruct",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-12-11",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.35 },
- limit: { context: 128000, output: 128000 },
- },
- "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8": {
- id: "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8",
- name: "NVIDIA Nemotron 3 Super 120B",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262144, output: 262144 },
- },
- "deepseek-ai/DeepSeek-V3.1": {
- id: "deepseek-ai/DeepSeek-V3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-21",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 1.65 },
- limit: { context: 161000, output: 161000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "gpt-oss-20b",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 131072, output: 131072 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "gpt-oss-120b",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 131072 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 2.85 },
- limit: { context: 262144, output: 262144 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 196608, output: 196608 },
- },
- },
- },
- 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: {
- "miromind-ai/MiroThinker-v1.5-235B": {
- id: "miromind-ai/MiroThinker-v1.5-235B",
- name: "MiroThinker V1.5 235B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-01-10",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.15 },
- limit: { context: 262144, output: 8192 },
- },
- "OpenGVLab/InternVL3-78B-TEE": {
- id: "OpenGVLab/InternVL3-78B-TEE",
- name: "InternVL3 78B TEE",
- family: "opengvlab",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-06",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.39 },
- limit: { context: 32768, output: 32768 },
- },
- "NousResearch/DeepHermes-3-Mistral-24B-Preview": {
- id: "NousResearch/DeepHermes-3-Mistral-24B-Preview",
- name: "DeepHermes 3 Mistral 24B Preview",
- family: "nousresearch",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.1 },
- limit: { context: 32768, output: 32768 },
- },
- "NousResearch/Hermes-4-405B-FP8-TEE": {
- id: "NousResearch/Hermes-4-405B-FP8-TEE",
- name: "Hermes 4 405B FP8 TEE",
- family: "nousresearch",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 131072, output: 65536 },
- },
- "NousResearch/Hermes-4.3-36B": {
- id: "NousResearch/Hermes-4.3-36B",
- name: "Hermes 4.3 36B",
- family: "nousresearch",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.39 },
- limit: { context: 32768, output: 8192 },
- },
- "NousResearch/Hermes-4-14B": {
- id: "NousResearch/Hermes-4-14B",
- name: "Hermes 4 14B",
- family: "nousresearch",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.05 },
- limit: { context: 40960, output: 40960 },
- },
- "NousResearch/Hermes-4-70B": {
- id: "NousResearch/Hermes-4-70B",
- name: "Hermes 4 70B",
- family: "nousresearch",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.11, output: 0.38 },
- limit: { context: 131072, output: 131072 },
- },
- "Qwen/Qwen3-30B-A3B": {
- id: "Qwen/Qwen3-30B-A3B",
- name: "Qwen3 30B A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.22 },
- limit: { context: 40960, output: 40960 },
- },
- "Qwen/Qwen3-Coder-Next": {
- id: "Qwen/Qwen3-Coder-Next",
- name: "Qwen3 Coder Next",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.3 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen2.5-Coder-32B-Instruct": {
- id: "Qwen/Qwen2.5-Coder-32B-Instruct",
- name: "Qwen2.5 Coder 32B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.11 },
- limit: { context: 32768, output: 32768 },
- },
- "Qwen/Qwen3-235B-A22B": {
- id: "Qwen/Qwen3-235B-A22B",
- name: "Qwen3 235B A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 40960, output: 40960 },
- },
- "Qwen/Qwen2.5-VL-72B-Instruct-TEE": {
- id: "Qwen/Qwen2.5-VL-72B-Instruct-TEE",
- name: "Qwen2.5 VL 72B Instruct TEE",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 32768, output: 32768 },
- },
- "Qwen/Qwen3Guard-Gen-0.6B": {
- id: "Qwen/Qwen3Guard-Gen-0.6B",
- name: "Qwen3Guard Gen 0.6B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.01, cache_read: 0.005 },
- limit: { context: 32768, output: 8192 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Instruct": {
- id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.8 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-30B-A3B-Instruct-2507": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.33 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-32B": {
- id: "Qwen/Qwen3-32B",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.24, cache_read: 0.04 },
- limit: { context: 40960, output: 40960 },
- },
- "Qwen/Qwen3-14B": {
- id: "Qwen/Qwen3-14B",
- name: "Qwen3 14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.22 },
- limit: { context: 40960, output: 40960 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507-TEE": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507-TEE",
- name: "Qwen3 235B A22B Instruct 2507 TEE",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.55, cache_read: 0.04 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.11, output: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen2.5-VL-32B-Instruct": {
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
- name: "Qwen2.5 VL 32B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.22 },
- limit: { context: 16384, output: 16384 },
- },
- "Qwen/Qwen3.5-397B-A17B-TEE": {
- id: "Qwen/Qwen3.5-397B-A17B-TEE",
- name: "Qwen3.5 397B A17B TEE",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-02-18",
- last_updated: "2026-02-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.39, output: 2.34, cache_read: 0.195 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8-TEE": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8-TEE",
- name: "Qwen3 Coder 480B A35B Instruct FP8 TEE",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.22, output: 0.95, cache_read: 0.11 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-VL-235B-A22B-Instruct": {
- id: "Qwen/Qwen3-VL-235B-A22B-Instruct",
- name: "Qwen3 VL 235B A22B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen2.5-72B-Instruct": {
- id: "Qwen/Qwen2.5-72B-Instruct",
- name: "Qwen2.5 72B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 32768, output: 32768 },
- },
- "zai-org/GLM-5.1-TEE": {
- id: "zai-org/GLM-5.1-TEE",
- name: "GLM 5.1 TEE",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.95, output: 3.15, cache_read: 0.475 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-4.7-Flash": {
- id: "zai-org/GLM-4.7-Flash",
- name: "GLM 4.7 Flash",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.06, output: 0.35 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-4.5-TEE": {
- id: "zai-org/GLM-4.5-TEE",
- name: "GLM 4.5 TEE",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 1.55 },
- limit: { context: 131072, output: 65536 },
- },
- "zai-org/GLM-4.6-FP8": {
- id: "zai-org/GLM-4.6-FP8",
- name: "GLM 4.6 FP8",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-4.5-Air": {
- id: "zai-org/GLM-4.5-Air",
- name: "GLM 4.5 Air",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.22 },
- limit: { context: 131072, output: 131072 },
- },
- "zai-org/GLM-4.7-FP8": {
- id: "zai-org/GLM-4.7-FP8",
- name: "GLM 4.7 FP8",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-5-TEE": {
- id: "zai-org/GLM-5-TEE",
- name: "GLM 5 TEE",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.95, output: 3.15, cache_read: 0.475 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-4.5-FP8": {
- id: "zai-org/GLM-4.5-FP8",
- name: "GLM 4.5 FP8",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 131072, output: 65536 },
- },
- "zai-org/GLM-4.7-TEE": {
- id: "zai-org/GLM-4.7-TEE",
- name: "GLM 4.7 TEE",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.5 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-4.6V": {
- id: "zai-org/GLM-4.6V",
- name: "GLM 4.6V",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.9, cache_read: 0.15 },
- limit: { context: 131072, output: 65536 },
- },
- "zai-org/GLM-5-Turbo": {
- id: "zai-org/GLM-5-Turbo",
- name: "GLM 5 Turbo",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.49, output: 1.96, cache_read: 0.245 },
- limit: { context: 202752, output: 65535 },
- },
- "zai-org/GLM-4.6-TEE": {
- id: "zai-org/GLM-4.6-TEE",
- name: "GLM 4.6 TEE",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.7, cache_read: 0.2 },
- limit: { context: 202752, output: 65536 },
- },
- "mistralai/Devstral-2-123B-Instruct-2512-TEE": {
- id: "mistralai/Devstral-2-123B-Instruct-2512-TEE",
- name: "Devstral 2 123B Instruct 2512 TEE",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-10",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.22 },
- limit: { context: 262144, output: 65536 },
- },
- "XiaomiMiMo/MiMo-V2-Flash": {
- id: "XiaomiMiMo/MiMo-V2-Flash",
- name: "MiMo V2 Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.29 },
- limit: { context: 262144, output: 32000 },
- },
- "chutesai/Mistral-Small-3.2-24B-Instruct-2506": {
- id: "chutesai/Mistral-Small-3.2-24B-Instruct-2506",
- name: "Mistral Small 3.2 24B Instruct 2506",
- family: "chutesai",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.18 },
- limit: { context: 131072, output: 131072 },
- },
- "chutesai/Mistral-Small-3.1-24B-Instruct-2503": {
- id: "chutesai/Mistral-Small-3.1-24B-Instruct-2503",
- name: "Mistral Small 3.1 24B Instruct 2503",
- family: "chutesai",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.11, cache_read: 0.015 },
- limit: { context: 131072, output: 131072 },
- },
- "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16": {
- id: "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
- name: "NVIDIA Nemotron 3 Nano 30B A3B BF16",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.24 },
- limit: { context: 262144, output: 262144 },
- },
- "deepseek-ai/DeepSeek-R1-TEE": {
- id: "deepseek-ai/DeepSeek-R1-TEE",
- name: "DeepSeek R1 TEE",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek-ai/DeepSeek-V3": {
- id: "deepseek-ai/DeepSeek-V3",
- name: "DeepSeek V3",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek-ai/DeepSeek-R1-Distill-Llama-70B": {
- id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.11 },
- limit: { context: 131072, output: 131072 },
- },
- "deepseek-ai/DeepSeek-V3.1-TEE": {
- id: "deepseek-ai/DeepSeek-V3.1-TEE",
- name: "DeepSeek V3.1 TEE",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek-ai/DeepSeek-V3-0324-TEE": {
- id: "deepseek-ai/DeepSeek-V3-0324-TEE",
- name: "DeepSeek V3 0324 TEE",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.19, output: 0.87, cache_read: 0.095 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek-ai/DeepSeek-V3.2-Speciale-TEE": {
- id: "deepseek-ai/DeepSeek-V3.2-Speciale-TEE",
- name: "DeepSeek V3.2 Speciale TEE",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: false,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.41 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek-ai/DeepSeek-V3.1-Terminus-TEE": {
- id: "deepseek-ai/DeepSeek-V3.1-Terminus-TEE",
- name: "DeepSeek V3.1 Terminus TEE",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.23, output: 0.9 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek-ai/DeepSeek-R1-0528-TEE": {
- id: "deepseek-ai/DeepSeek-R1-0528-TEE",
- name: "DeepSeek R1 0528 TEE",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.75 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek-ai/DeepSeek-V3.2-TEE": {
- id: "deepseek-ai/DeepSeek-V3.2-TEE",
- name: "DeepSeek V3.2 TEE",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.28, output: 0.42, cache_read: 0.14 },
- limit: { context: 131072, output: 65536 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "gpt oss 20b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.1 },
- limit: { context: 131072, output: 131072 },
- },
- "openai/gpt-oss-120b-TEE": {
- id: "openai/gpt-oss-120b-TEE",
- name: "gpt oss 120b TEE",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.18 },
- limit: { context: 131072, output: 65536 },
- },
- "unsloth/gemma-3-12b-it": {
- id: "unsloth/gemma-3-12b-it",
- name: "gemma 3 12b it",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.1 },
- limit: { context: 131072, output: 131072 },
- },
- "unsloth/Llama-3.2-3B-Instruct": {
- id: "unsloth/Llama-3.2-3B-Instruct",
- name: "Llama 3.2 3B Instruct",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-02-12",
- last_updated: "2025-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.01, cache_read: 0.005 },
- limit: { context: 16384, output: 16384 },
- },
- "unsloth/gemma-3-4b-it": {
- id: "unsloth/gemma-3-4b-it",
- name: "gemma 3 4b it",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.03 },
- limit: { context: 96000, output: 96000 },
- },
- "unsloth/Llama-3.2-1B-Instruct": {
- id: "unsloth/Llama-3.2-1B-Instruct",
- name: "Llama 3.2 1B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.01, cache_read: 0.005 },
- limit: { context: 32768, output: 8192 },
- },
- "unsloth/Mistral-Nemo-Instruct-2407": {
- id: "unsloth/Mistral-Nemo-Instruct-2407",
- name: "Mistral Nemo Instruct 2407",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.04, cache_read: 0.01 },
- limit: { context: 131072, output: 131072 },
- },
- "unsloth/Mistral-Small-24B-Instruct-2501": {
- id: "unsloth/Mistral-Small-24B-Instruct-2501",
- name: "Mistral Small 24B Instruct 2501",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.11 },
- limit: { context: 32768, output: 32768 },
- },
- "unsloth/gemma-3-27b-it": {
- id: "unsloth/gemma-3-27b-it",
- name: "gemma 3 27b it",
- family: "unsloth",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.15, cache_read: 0.02 },
- limit: { context: 128000, output: 65536 },
- },
- "moonshotai/Kimi-K2-Thinking-TEE": {
- id: "moonshotai/Kimi-K2-Thinking-TEE",
- name: "Kimi K2 Thinking TEE",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.75 },
- limit: { context: 262144, output: 65535 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi K2 Instruct 0905",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.39, output: 1.9, cache_read: 0.195 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/Kimi-K2.5-TEE": {
- id: "moonshotai/Kimi-K2.5-TEE",
- name: "Kimi K2.5 TEE",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- 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,
- cost: { input: 0.6, output: 3 },
- limit: { context: 262144, output: 65535 },
- },
- "MiniMaxAI/MiniMax-M2.1-TEE": {
- id: "MiniMaxAI/MiniMax-M2.1-TEE",
- name: "MiniMax M2.1 TEE",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1.12 },
- limit: { context: 196608, output: 65536 },
- },
- "MiniMaxAI/MiniMax-M2.5-TEE": {
- id: "MiniMaxAI/MiniMax-M2.5-TEE",
- name: "MiniMax M2.5 TEE",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.1, cache_read: 0.15 },
- limit: { context: 196608, output: 65536 },
- },
- "rednote-hilab/dots.ocr": {
- id: "rednote-hilab/dots.ocr",
- name: "dots.ocr",
- family: "rednote",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.01, cache_read: 0.005 },
- limit: { context: 131072, output: 131072 },
- },
- "tngtech/TNG-R1T-Chimera-Turbo": {
- id: "tngtech/TNG-R1T-Chimera-Turbo",
- name: "TNG R1T Chimera Turbo",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.22, output: 0.6 },
- limit: { context: 163840, output: 65536 },
- },
- "tngtech/DeepSeek-TNG-R1T2-Chimera": {
- id: "tngtech/DeepSeek-TNG-R1T2-Chimera",
- name: "DeepSeek TNG R1T2 Chimera",
- family: "tngtech",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.85 },
- limit: { context: 163840, output: 163840 },
- },
- "tngtech/DeepSeek-R1T-Chimera": {
- id: "tngtech/DeepSeek-R1T-Chimera",
- name: "DeepSeek R1T Chimera",
- family: "tngtech",
- attachment: false,
- reasoning: true,
- tool_call: false,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 163840, output: 163840 },
- },
- "tngtech/TNG-R1T-Chimera-TEE": {
- id: "tngtech/TNG-R1T-Chimera-TEE",
- name: "TNG R1T Chimera TEE",
- family: "tngtech",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.85 },
- limit: { context: 163840, output: 65536 },
- },
- },
- },
- 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",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-12",
- last_updated: "2025-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.45, output: 1.65 },
- limit: { context: 200000, output: 128000 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2026-02",
- last_updated: "2026-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.75, output: 2.4 },
- limit: { context: 200000, output: 128000 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT OSS 120B",
- 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,
- cost: { input: 0.0675, output: 0.27 },
- limit: { context: 131072, output: 32768 },
- },
- },
- },
- 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-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1 Codex Max",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3.1-flash-lite-preview": {
- id: "gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite Preview",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
- limit: { context: 1048576, output: 65536 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202752, output: 131000 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "gemini-3.1-pro-preview": {
- id: "gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "gpt-5.4-nano": {
- id: "gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.42 },
- limit: { context: 128000, output: 128000 },
- provider: { npm: "@ai-sdk/openai-compatible" },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- },
- },
- deepinfra: {
- id: "deepinfra",
- env: ["DEEPINFRA_API_KEY"],
- npm: "@ai-sdk/deepinfra",
- name: "Deep Infra",
- doc: "https://deepinfra.com/models",
- models: {
- "Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",
- name: "Qwen3 Coder 480B A35B Instruct Turbo",
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 262144, output: 66536 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 0.4, output: 1.6 },
- limit: { context: 262144, output: 66536 },
- },
- "zai-org/GLM-4.7-Flash": {
- id: "zai-org/GLM-4.7-Flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.06, output: 0.4 },
- limit: { context: 202752, output: 16384 },
- },
- "zai-org/GLM-4.5": {
- id: "zai-org/GLM-4.5",
- name: "GLM-4.5",
- family: "glm",
- 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: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 131072, output: 98304 },
- status: "deprecated",
- },
- "zai-org/GLM-4.7": {
- id: "zai-org/GLM-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.43, output: 1.75, cache_read: 0.08 },
- limit: { context: 202752, output: 16384 },
- },
- "zai-org/GLM-5.1": {
- id: "zai-org/GLM-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 202752, output: 16384 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-12",
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 2.56, cache_read: 0.16 },
- limit: { context: 202752, output: 16384 },
- },
- "zai-org/GLM-4.6V": {
- id: "zai-org/GLM-4.6V",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/GLM-4.6": {
- id: "zai-org/GLM-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.43, output: 1.74, cache_read: 0.08 },
- limit: { context: 204800, output: 131072 },
- },
- "meta-llama/Llama-4-Scout-17B-16E-Instruct": {
- id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
- name: "Llama 4 Scout 17B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 10000000, output: 16384 },
- },
- "meta-llama/Llama-3.1-8B-Instruct": {
- id: "meta-llama/Llama-3.1-8B-Instruct",
- name: "Llama 3.1 8B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.05 },
- limit: { context: 131072, output: 16384 },
- },
- "meta-llama/Llama-3.1-70B-Instruct": {
- id: "meta-llama/Llama-3.1-70B-Instruct",
- name: "Llama 3.1 70B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 131072, output: 16384 },
- },
- "meta-llama/Llama-3.1-8B-Instruct-Turbo": {
- id: "meta-llama/Llama-3.1-8B-Instruct-Turbo",
- name: "Llama 3.1 8B Turbo",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.03 },
- limit: { context: 131072, output: 16384 },
- },
- "meta-llama/Llama-3.3-70B-Instruct-Turbo": {
- id: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
- name: "Llama 3.3 70B Turbo",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.32 },
- limit: { context: 131072, output: 16384 },
- },
- "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",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 1000000, output: 16384 },
- },
- "meta-llama/Llama-3.1-70B-Instruct-Turbo": {
- id: "meta-llama/Llama-3.1-70B-Instruct-Turbo",
- name: "Llama 3.1 70B Turbo",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 131072, output: 16384 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek-R1-0528",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 0.5, output: 2.15, cache_read: 0.35 },
- limit: { context: 163840, output: 64000 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek-V3.2",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-12-02",
- last_updated: "2025-12-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.26, output: 0.38, cache_read: 0.13 },
- limit: { context: 163840, output: 64000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.14 },
- limit: { context: 131072, output: 16384 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.24 },
- limit: { context: 131072, output: 16384 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-11-06",
- last_updated: "2025-11-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.47, output: 2 },
- limit: { context: 131072, output: 32768 },
- },
- "moonshotai/Kimi-K2-Instruct": {
- id: "moonshotai/Kimi-K2-Instruct",
- name: "Kimi K2",
- family: "kimi",
- 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,
- cost: { input: 0.5, output: 2 },
- limit: { context: 131072, output: 32768 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0.4, output: 2, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.8 },
- limit: { context: 262144, output: 32768 },
- },
- "MiniMaxAI/MiniMax-M2": {
- id: "MiniMaxAI/MiniMax-M2",
- name: "MiniMax M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.254, output: 1.02 },
- limit: { context: 262144, output: 32768 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.95, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMaxAI/MiniMax-M2.1": {
- id: "MiniMaxAI/MiniMax-M2.1",
- name: "MiniMax M2.1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.28, output: 1.2 },
- limit: { context: 196608, output: 196608 },
- },
- "anthropic/claude-3-7-sonnet-latest": {
- id: "anthropic/claude-3-7-sonnet-latest",
- name: "Claude Sonnet 3.7 (Latest)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10-31",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.3, output: 16.5, cache_read: 0.33 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-4-opus": {
- id: "anthropic/claude-4-opus",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2025-06-12",
- last_updated: "2025-06-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 16.5, output: 82.5 },
- limit: { context: 200000, output: 32000 },
- },
- },
- },
- "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: {
- "qwen3-235b-a22b": {
- id: "qwen3-235b-a22b",
- name: "Qwen 3 235B A22B",
- 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-1.6-flash": {
- id: "doubao-seed-1.6-flash",
- name: "Doubao-Seed 1.6 Flash",
- attachment: true,
- reasoning: true,
- 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-235b-a22b-instruct-2507": {
- id: "qwen3-235b-a22b-instruct-2507",
- name: "Qwen3 235b A22B Instruct 2507",
- 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 },
- },
- "doubao-seed-2.0-code": {
- id: "doubao-seed-2.0-code",
- name: "Doubao Seed 2.0 Code",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "deepseek-v3-0324": {
- id: "deepseek-v3-0324",
- name: "DeepSeek-V3-0324",
- 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",
- attachment: false,
- reasoning: true,
- 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-3.7-sonnet": {
- id: "claude-3.7-sonnet",
- name: "Claude 3.7 Sonnet",
- attachment: true,
- reasoning: true,
- 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.5-397b-a17b": {
- id: "qwen3.5-397b-a17b",
- name: "Qwen3.5 397B A17B",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen-vl-max-2025-01-25": {
- id: "qwen-vl-max-2025-01-25",
- name: "Qwen VL-MAX-2025-01-25",
- 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 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3 32B",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "doubao-1.5-pro-32k": {
- id: "doubao-1.5-pro-32k",
- name: "Doubao 1.5 Pro 32k",
- 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 },
- },
- "qwen2.5-vl-72b-instruct": {
- id: "qwen2.5-vl-72b-instruct",
- name: "Qwen 2.5 VL 72B Instruct",
- 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 },
- },
- "gemini-2.0-flash": {
- id: "gemini-2.0-flash",
- name: "Gemini 2.0 Flash",
- 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 },
- },
- "qwen3-vl-30b-a3b-thinking": {
- id: "qwen3-vl-30b-a3b-thinking",
- name: "Qwen3-Vl 30b A3b Thinking",
- 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 },
- },
- "gemini-3.0-pro-image-preview": {
- id: "gemini-3.0-pro-image-preview",
- name: "Gemini 3.0 Pro Image Preview",
- 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-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "claude-4.5-opus": {
- id: "claude-4.5-opus",
- name: "Claude 4.5 Opus",
- attachment: true,
- reasoning: true,
- 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-r1": {
- id: "deepseek-r1",
- name: "DeepSeek-R1",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "claude-4.0-opus": {
- id: "claude-4.0-opus",
- name: "Claude 4.0 Opus",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "claude-4.5-haiku": {
- id: "claude-4.5-haiku",
- name: "Claude 4.5 Haiku",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen3-max": {
- id: "qwen3-max",
- name: "Qwen3 Max",
- 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 },
- },
- "gemini-3.0-flash-preview": {
- id: "gemini-3.0-flash-preview",
- name: "Gemini 3.0 Flash Preview",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "gemini-2.5-flash-image": {
- id: "gemini-2.5-flash-image",
- name: "Gemini 2.5 Flash Image",
- 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 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM 4.5",
- attachment: false,
- reasoning: true,
- 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-sonnet": {
- id: "claude-3.5-sonnet",
- name: "Claude 3.5 Sonnet",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "claude-4.0-sonnet": {
- id: "claude-4.0-sonnet",
- name: "Claude 4.0 Sonnet",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen3-30b-a3b-instruct-2507": {
- id: "qwen3-30b-a3b-instruct-2507",
- name: "Qwen3 30b A3b Instruct 2507",
- 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 },
- },
- "doubao-seed-1.6-thinking": {
- id: "doubao-seed-1.6-thinking",
- name: "Doubao-Seed 1.6 Thinking",
- attachment: true,
- reasoning: true,
- 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": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen3-235b-a22b-thinking-2507": {
- id: "qwen3-235b-a22b-thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- attachment: false,
- reasoning: true,
- 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-next-80b-a3b-thinking": {
- id: "qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- attachment: false,
- reasoning: true,
- 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-30b-a3b-thinking-2507": {
- id: "qwen3-30b-a3b-thinking-2507",
- name: "Qwen3 30b A3b Thinking 2507",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM 4.5 Air",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "deepseek-v3.1": {
- id: "deepseek-v3.1",
- name: "DeepSeek-V3.1",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "qwen3-30b-a3b": {
- id: "qwen3-30b-a3b",
- name: "Qwen3 30B A3B",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "claude-4.1-opus": {
- id: "claude-4.1-opus",
- name: "Claude 4.1 Opus",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "doubao-seed-2.0-mini": {
- id: "doubao-seed-2.0-mini",
- name: "Doubao Seed 2.0 Mini",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen3-next-80b-a3b-instruct": {
- id: "qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- 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 },
- },
- "doubao-seed-1.6": {
- id: "doubao-seed-1.6",
- name: "Doubao-Seed 1.6",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen2.5-vl-7b-instruct": {
- id: "qwen2.5-vl-7b-instruct",
- name: "Qwen 2.5 VL 7B Instruct",
- 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 },
- },
- "kling-v2-6": {
- id: "kling-v2-6",
- name: "Kling-V2 6",
- 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 },
- },
- "MiniMax-M1": {
- id: "MiniMax-M1",
- name: "MiniMax M1",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "gemini-3.0-pro-preview": {
- id: "gemini-3.0-pro-preview",
- name: "Gemini 3.0 Pro Preview",
- attachment: true,
- reasoning: true,
- 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-2.0-lite": {
- id: "doubao-seed-2.0-lite",
- name: "Doubao Seed 2.0 Lite",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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 },
- },
- "claude-3.5-haiku": {
- id: "claude-3.5-haiku",
- name: "Claude 3.5 Haiku",
- 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 },
- },
- "gpt-oss-20b": {
- id: "gpt-oss-20b",
- name: "gpt-oss-20b",
- attachment: false,
- reasoning: true,
- 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-turbo": {
- id: "qwen-turbo",
- name: "Qwen-Turbo",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "kimi-k2": {
- id: "kimi-k2",
- name: "Kimi K2",
- 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 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- 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 },
- },
- "mimo-v2-flash": {
- id: "mimo-v2-flash",
- name: "Mimo-V2-Flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 256000, output: 256000 },
- },
- "qwen3-max-preview": {
- id: "qwen3-max-preview",
- name: "Qwen3 Max Preview",
- 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 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "gpt-oss-120b",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "doubao-1.5-vision-pro": {
- id: "doubao-1.5-vision-pro",
- name: "Doubao 1.5 Vision Pro",
- 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-sonnet": {
- id: "claude-4.5-sonnet",
- name: "Claude 4.5 Sonnet",
- attachment: true,
- reasoning: true,
- 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",
- 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 },
- },
- "deepseek-r1-0528": {
- id: "deepseek-r1-0528",
- name: "DeepSeek-R1-0528",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "gemini-2.0-flash-lite": {
- id: "gemini-2.0-flash-lite",
- name: "Gemini 2.0 Flash Lite",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "qwen-max-2025-01-25": {
- id: "qwen-max-2025-01-25",
- name: "Qwen2.5-Max-2025-01-25",
- 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 },
- },
- "doubao-seed-2.0-pro": {
- id: "doubao-seed-2.0-pro",
- name: "Doubao Seed 2.0 Pro",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "deepseek/deepseek-v3.2-exp-thinking": {
- id: "deepseek/deepseek-v3.2-exp-thinking",
- name: "DeepSeek/DeepSeek-V3.2-Exp-Thinking",
- attachment: false,
- reasoning: true,
- 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",
- attachment: false,
- reasoning: true,
- 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",
- 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.2-251201": {
- id: "deepseek/deepseek-v3.2-251201",
- name: "Deepseek/DeepSeek-V3.2",
- attachment: false,
- reasoning: true,
- 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-math-v2": {
- id: "deepseek/deepseek-math-v2",
- name: "Deepseek/Deepseek-Math-V2",
- attachment: false,
- reasoning: true,
- 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",
- 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 },
- },
- "stepfun-ai/gelab-zero-4b-preview": {
- id: "stepfun-ai/gelab-zero-4b-preview",
- name: "Stepfun-Ai/Gelab Zero 4b Preview",
- 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 },
- },
- "stepfun/step-3.5-flash": {
- id: "stepfun/step-3.5-flash",
- name: "Stepfun/Step-3.5 Flash",
- 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 },
- },
- "x-ai/grok-4-fast": {
- id: "x-ai/grok-4-fast",
- name: "x-AI/Grok-4-Fast",
- attachment: true,
- reasoning: true,
- 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-code-fast-1": {
- id: "x-ai/grok-code-fast-1",
- name: "x-AI/Grok-Code-Fast 1",
- attachment: false,
- reasoning: true,
- 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",
- attachment: true,
- reasoning: true,
- 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",
- attachment: true,
- reasoning: true,
- 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": {
- id: "x-ai/grok-4.1-fast",
- name: "x-AI/Grok-4.1-Fast",
- attachment: false,
- reasoning: true,
- 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-fast-non-reasoning": {
- id: "x-ai/grok-4-fast-non-reasoning",
- name: "X-Ai/Grok-4-Fast-Non-Reasoning",
- attachment: true,
- reasoning: true,
- 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",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "OpenAI/GPT-5.2",
- attachment: true,
- reasoning: true,
- 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",
- 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 },
- },
- "z-ai/glm-4.7": {
- id: "z-ai/glm-4.7",
- name: "Z-Ai/GLM 4.7",
- attachment: false,
- reasoning: true,
- 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-5": {
- id: "z-ai/glm-5",
- name: "Z-Ai/GLM 5",
- attachment: false,
- reasoning: true,
- 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/autoglm-phone-9b": {
- id: "z-ai/autoglm-phone-9b",
- name: "Z-Ai/Autoglm Phone 9b",
- 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-4.6": {
- id: "z-ai/glm-4.6",
- name: "Z-AI/GLM 4.6",
- 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 },
- },
- "minimax/minimax-m2": {
- id: "minimax/minimax-m2",
- name: "Minimax/Minimax-M2",
- attachment: false,
- reasoning: true,
- 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.1": {
- id: "minimax/minimax-m2.1",
- name: "Minimax/Minimax-M2.1",
- attachment: false,
- reasoning: true,
- 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.5": {
- id: "minimax/minimax-m2.5",
- name: "Minimax/Minimax-M2.5",
- attachment: false,
- reasoning: true,
- 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",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Moonshotai/Kimi-K2.5",
- 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",
- 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",
- 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 },
- },
- "xiaomi/mimo-v2-flash": {
- id: "xiaomi/mimo-v2-flash",
- name: "Xiaomi/Mimo-V2-Flash",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-26",
- last_updated: "2025-12-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 256000, output: 256000 },
- },
- "meituan/longcat-flash-chat": {
- id: "meituan/longcat-flash-chat",
- name: "Meituan/Longcat-Flash-Chat",
- 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",
- 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 },
- },
- },
- },
- 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: {
- "giga-potato": {
- id: "giga-potato",
- name: "Giga Potato (free)",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-27",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 32000 },
- },
- "corethink:free": {
- id: "corethink:free",
- name: "CoreThink (free)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-27",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 78000, output: 8192 },
- },
- "giga-potato-thinking": {
- id: "giga-potato-thinking",
- name: "Giga Potato Thinking (free)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-27",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 32000 },
- },
- "morph-warp-grep-v2": {
- id: "morph-warp-grep-v2",
- name: "Morph: WarpGrep V2",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-27",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 32000 },
- },
- "ai21/jamba-large-1.7": {
- id: "ai21/jamba-large-1.7",
- name: "AI21: Jamba Large 1.7",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-09",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 256000, output: 4096 },
- },
- "alibaba/tongyi-deepresearch-30b-a3b": {
- id: "alibaba/tongyi-deepresearch-30b-a3b",
- name: "Tongyi DeepResearch 30B A3B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-18",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.09, output: 0.45 },
- limit: { context: 131072, output: 131072 },
- },
- "inflection/inflection-3-pi": {
- id: "inflection/inflection-3-pi",
- name: "Inflection: Inflection 3 Pi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-10-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 8000, output: 1024 },
- },
- "inflection/inflection-3-productivity": {
- id: "inflection/inflection-3-productivity",
- name: "Inflection: Inflection 3 Productivity",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-10-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 8000, output: 1024 },
- },
- "liquid/lfm2-8b-a1b": {
- id: "liquid/lfm2-8b-a1b",
- name: "LiquidAI: LFM2-8B-A1B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-20",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.02 },
- limit: { context: 32768, output: 32768 },
- },
- "liquid/lfm-2.2-6b": {
- id: "liquid/lfm-2.2-6b",
- name: "LiquidAI: LFM2-2.6B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-20",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.02 },
- limit: { context: 32768, output: 32768 },
- },
- "liquid/lfm-2-24b-a2b": {
- id: "liquid/lfm-2-24b-a2b",
- name: "LiquidAI: LFM2-24B-A2B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.12 },
- limit: { context: 32768, output: 32768 },
- },
- "writer/palmyra-x5": {
- id: "writer/palmyra-x5",
- name: "Writer: Palmyra X5",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-28",
- last_updated: "2025-04-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 6 },
- limit: { context: 1040000, output: 8192 },
- },
- "ibm-granite/granite-4.0-h-micro": {
- id: "ibm-granite/granite-4.0-h-micro",
- name: "IBM: Granite 4.0 Micro",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-20",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.017, output: 0.11 },
- limit: { context: 131000, output: 32768 },
- },
- "essentialai/rnj-1-instruct": {
- id: "essentialai/rnj-1-instruct",
- name: "EssentialAI: Rnj 1 Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-05",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 32768, output: 6554 },
- },
- "perplexity/sonar-pro": {
- id: "perplexity/sonar-pro",
- name: "Perplexity: Sonar Pro",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2025-09-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 8000 },
- },
- "perplexity/sonar-deep-research": {
- id: "perplexity/sonar-deep-research",
- name: "Perplexity: Sonar Deep Research",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-01-27",
- last_updated: "2025-01-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 128000, output: 25600 },
- },
- "perplexity/sonar": {
- id: "perplexity/sonar",
- name: "Perplexity: Sonar",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2025-09-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 1 },
- limit: { context: 127072, output: 25415 },
- },
- "perplexity/sonar-pro-search": {
- id: "perplexity/sonar-pro-search",
- name: "Perplexity: Sonar Pro Search",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-31",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 8000 },
- },
- "perplexity/sonar-reasoning-pro": {
- id: "perplexity/sonar-reasoning-pro",
- name: "Perplexity: Sonar Reasoning Pro",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2025-09-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 128000, output: 25600 },
- },
- "deepseek/deepseek-chat-v3.1": {
- id: "deepseek/deepseek-chat-v3.1",
- name: "DeepSeek: DeepSeek V3.1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.75 },
- limit: { context: 32768, output: 7168 },
- },
- "deepseek/deepseek-chat": {
- id: "deepseek/deepseek-chat",
- name: "DeepSeek: DeepSeek V3",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-01",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.32, output: 0.89, cache_read: 0.15 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek/deepseek-r1-distill-llama-70b": {
- id: "deepseek/deepseek-r1-distill-llama-70b",
- name: "DeepSeek: R1 Distill Llama 70B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-01-23",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 0.8, cache_read: 0.015 },
- limit: { context: 131072, output: 16384 },
- },
- "deepseek/deepseek-r1": {
- id: "deepseek/deepseek-r1",
- name: "DeepSeek: R1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.5 },
- limit: { context: 64000, output: 16000 },
- },
- "deepseek/deepseek-v3.2-speciale": {
- id: "deepseek/deepseek-v3.2-speciale",
- name: "DeepSeek: DeepSeek V3.2 Speciale",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-12-01",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.2, cache_read: 0.135 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek/deepseek-r1-distill-qwen-32b": {
- id: "deepseek/deepseek-r1-distill-qwen-32b",
- name: "DeepSeek: R1 Distill Qwen 32B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.29, output: 0.29 },
- limit: { context: 32768, output: 32768 },
- },
- "deepseek/deepseek-v3.2-exp": {
- id: "deepseek/deepseek-v3.2-exp",
- name: "DeepSeek: DeepSeek V3.2 Exp",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.41 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-v3.2": {
- id: "deepseek/deepseek-v3.2",
- name: "DeepSeek: DeepSeek V3.2",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-01",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.26, output: 0.38, cache_read: 0.125 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-chat-v3-0324": {
- id: "deepseek/deepseek-chat-v3-0324",
- name: "DeepSeek: DeepSeek V3 0324",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-24",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.77, cache_read: 0.095 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-r1-0528": {
- id: "deepseek/deepseek-r1-0528",
- name: "DeepSeek: R1 0528",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-28",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.45, output: 2.15, cache_read: 0.2 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek/deepseek-v3.1-terminus": {
- id: "deepseek/deepseek-v3.1-terminus",
- name: "DeepSeek: DeepSeek V3.1 Terminus",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-22",
- last_updated: "2025-09-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.21, output: 0.79, cache_read: 0.13 },
- limit: { context: 163840, output: 32768 },
- },
- "openrouter/hunter-alpha": {
- id: "openrouter/hunter-alpha",
- name: "Hunter Alpha",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 1048576, output: 32000 },
- },
- "openrouter/auto": {
- id: "openrouter/auto",
- name: "Auto Router",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 2000000, output: 32768 },
- },
- "openrouter/bodybuilder": {
- id: "openrouter/bodybuilder",
- name: "Body Builder (beta)",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- status: "beta",
- },
- "openrouter/healer-alpha": {
- id: "openrouter/healer-alpha",
- name: "Healer Alpha",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 32000 },
- },
- "openrouter/free": {
- id: "openrouter/free",
- name: "Free Models Router",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-01",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 32768 },
- },
- "arcee-ai/trinity-mini": {
- id: "arcee-ai/trinity-mini",
- name: "Arcee AI: Trinity Mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.045, output: 0.15 },
- limit: { context: 131072, output: 131072 },
- },
- "arcee-ai/virtuoso-large": {
- id: "arcee-ai/virtuoso-large",
- name: "Arcee AI: Virtuoso Large",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-06",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.75, output: 1.2 },
- limit: { context: 131072, output: 64000 },
- },
- "arcee-ai/spotlight": {
- id: "arcee-ai/spotlight",
- name: "Arcee AI: Spotlight",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-05-06",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 131072, output: 65537 },
- },
- "arcee-ai/maestro-reasoning": {
- id: "arcee-ai/maestro-reasoning",
- name: "Arcee AI: Maestro Reasoning",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-05-06",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.9, output: 3.3 },
- limit: { context: 131072, output: 32000 },
- },
- "arcee-ai/trinity-large-preview:free": {
- id: "arcee-ai/trinity-large-preview:free",
- name: "Arcee AI: Trinity Large Preview (free)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-28",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131000, output: 26200 },
- },
- "arcee-ai/coder-large": {
- id: "arcee-ai/coder-large",
- name: "Arcee AI: Coder Large",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-05-06",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 0.8 },
- limit: { context: 32768, output: 32768 },
- },
- "deepcogito/cogito-v2.1-671b": {
- id: "deepcogito/cogito-v2.1-671b",
- name: "Deep Cogito: Cogito v2.1 671B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-11-14",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.25, output: 1.25 },
- limit: { context: 128000, output: 32768 },
- },
- "upstage/solar-pro-3": {
- id: "upstage/solar-pro-3",
- name: "Upstage: Solar Pro 3",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 32768 },
- },
- "nex-agi/deepseek-v3.1-nex-n1": {
- id: "nex-agi/deepseek-v3.1-nex-n1",
- name: "Nex AGI: DeepSeek V3.1 Nex N1",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 1 },
- limit: { context: 131072, output: 163840 },
- },
- "bytedance-seed/seed-1.6": {
- id: "bytedance-seed/seed-1.6",
- name: "ByteDance Seed: Seed 1.6",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09",
- last_updated: "2025-09",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2 },
- limit: { context: 262144, output: 32768 },
- },
- "bytedance-seed/seed-2.0-lite": {
- id: "bytedance-seed/seed-2.0-lite",
- name: "ByteDance Seed: Seed-2.0-Lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-10",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 2 },
- limit: { context: 262144, output: 131072 },
- },
- "bytedance-seed/seed-1.6-flash": {
- id: "bytedance-seed/seed-1.6-flash",
- name: "ByteDance Seed: Seed 1.6 Flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 262144, output: 32768 },
- },
- "bytedance-seed/seed-2.0-mini": {
- id: "bytedance-seed/seed-2.0-mini",
- name: "ByteDance Seed: Seed-2.0-Mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-27",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 262144, output: 131072 },
- },
- "mancer/weaver": {
- id: "mancer/weaver",
- name: "Mancer: Weaver (alpha)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2023-08-02",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.75, output: 1 },
- limit: { context: 8000, output: 2000 },
- },
- "anthracite-org/magnum-v4-72b": {
- id: "anthracite-org/magnum-v4-72b",
- name: "Magnum v4 72B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-10-22",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 3, output: 5 },
- limit: { context: 16384, output: 2048 },
- },
- "kilo-auto/balanced": {
- id: "kilo-auto/balanced",
- name: "Kilo Auto Balanced",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 3 },
- limit: { context: 204800, output: 131072 },
- },
- "kilo-auto/frontier": {
- id: "kilo-auto/frontier",
- name: "Kilo Auto Frontier",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25 },
- limit: { context: 1000000, output: 128000 },
- },
- "kilo-auto/small": {
- id: "kilo-auto/small",
- name: "Kilo Auto Small",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.4 },
- limit: { context: 400000, output: 128000 },
- },
- "kilo-auto/free": {
- id: "kilo-auto/free",
- name: "Kilo Auto Free",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "undi95/remm-slerp-l2-13b": {
- id: "undi95/remm-slerp-l2-13b",
- name: "ReMM SLERP 13B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2023-07-22",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.45, output: 0.65 },
- limit: { context: 6144, output: 4096 },
- },
- "allenai/olmo-2-0325-32b-instruct": {
- id: "allenai/olmo-2-0325-32b-instruct",
- name: "AllenAI: Olmo 2 32B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- release_date: "2025-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 128000, output: 32768 },
- },
- "allenai/molmo-2-8b": {
- id: "allenai/molmo-2-8b",
- name: "AllenAI: Molmo2 8B",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-01-09",
- last_updated: "2026-01-31",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 36864, output: 36864 },
- },
- "allenai/olmo-3-7b-think": {
- id: "allenai/olmo-3-7b-think",
- name: "AllenAI: Olmo 3 7B Think",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-11-22",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.12, output: 0.2 },
- limit: { context: 65536, output: 65536 },
- },
- "allenai/olmo-3.1-32b-instruct": {
- id: "allenai/olmo-3.1-32b-instruct",
- name: "AllenAI: Olmo 3.1 32B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-07",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 65536, output: 32768 },
- },
- "allenai/olmo-3.1-32b-think": {
- id: "allenai/olmo-3.1-32b-think",
- name: "AllenAI: Olmo 3.1 32B Think",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-12-17",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.5 },
- limit: { context: 65536, output: 65536 },
- },
- "allenai/olmo-3-7b-instruct": {
- id: "allenai/olmo-3-7b-instruct",
- name: "AllenAI: Olmo 3 7B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-11-22",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.2 },
- limit: { context: 65536, output: 65536 },
- },
- "allenai/olmo-3-32b-think": {
- id: "allenai/olmo-3-32b-think",
- name: "AllenAI: Olmo 3 32B Think",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-11-22",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.5 },
- limit: { context: 65536, output: 65536 },
- },
- "nousresearch/hermes-2-pro-llama-3-8b": {
- id: "nousresearch/hermes-2-pro-llama-3-8b",
- name: "NousResearch: Hermes 2 Pro - Llama-3 8B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-05-27",
- last_updated: "2024-06-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 0.14 },
- limit: { context: 8192, output: 8192 },
- },
- "nousresearch/hermes-4-405b": {
- id: "nousresearch/hermes-4-405b",
- name: "Nous: Hermes 4 405B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-08-25",
- last_updated: "2025-08-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3 },
- limit: { context: 131072, output: 26215 },
- },
- "nousresearch/hermes-3-llama-3.1-70b": {
- id: "nousresearch/hermes-3-llama-3.1-70b",
- name: "Nous: Hermes 3 70B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-18",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 131072, output: 32768 },
- },
- "nousresearch/hermes-4-70b": {
- id: "nousresearch/hermes-4-70b",
- name: "Nous: Hermes 4 70B",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-08-25",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4, cache_read: 0.055 },
- limit: { context: 131072, output: 131072 },
- },
- "nousresearch/hermes-3-llama-3.1-405b": {
- id: "nousresearch/hermes-3-llama-3.1-405b",
- name: "Nous: Hermes 3 405B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-16",
- last_updated: "2024-08-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 1 },
- limit: { context: 131072, output: 16384 },
- },
- "kilo/auto": {
- id: "kilo/auto",
- name: "Kilo: Auto",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-06-01",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25 },
- limit: { context: 1000000, output: 128000 },
- },
- "kilo/auto-small": {
- id: "kilo/auto-small",
- name: "Deprecated Kilo Auto Small",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.4 },
- limit: { context: 400000, output: 128000 },
- },
- "kilo/auto-free": {
- id: "kilo/auto-free",
- name: "Deprecated Kilo Auto Free",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "morph/morph-v3-fast": {
- id: "morph/morph-v3-fast",
- name: "Morph: Morph V3 Fast",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-15",
- last_updated: "2024-08-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 1.2 },
- limit: { context: 81920, output: 38000 },
- },
- "morph/morph-v3-large": {
- id: "morph/morph-v3-large",
- name: "Morph: Morph V3 Large",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-15",
- last_updated: "2024-08-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.9, output: 1.9 },
- limit: { context: 262144, output: 131072 },
- },
- "eleutherai/llemma_7b": {
- id: "eleutherai/llemma_7b",
- name: "EleutherAI: Llemma 7b",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 1.2 },
- limit: { context: 4096, output: 4096 },
- },
- "stepfun/step-3.5-flash:free": {
- id: "stepfun/step-3.5-flash:free",
- name: "StepFun: Step 3.5 Flash (free)",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 256000 },
- },
- "stepfun/step-3.5-flash": {
- id: "stepfun/step-3.5-flash",
- name: "StepFun: Step 3.5 Flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3, cache_read: 0.02 },
- limit: { context: 256000, output: 256000 },
- },
- "alpindale/goliath-120b": {
- id: "alpindale/goliath-120b",
- name: "Goliath 120B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2023-11-10",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 3.75, output: 7.5 },
- limit: { context: 6144, output: 1024 },
- },
- "mistralai/mistral-nemo": {
- id: "mistralai/mistral-nemo",
- name: "Mistral: Mistral Nemo",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-01",
- last_updated: "2024-07-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.04 },
- limit: { context: 131072, output: 16384 },
- },
- "mistralai/mistral-saba": {
- id: "mistralai/mistral-saba",
- name: "Mistral: Saba",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-17",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 32768, output: 32768 },
- },
- "mistralai/mistral-large-2512": {
- id: "mistralai/mistral-large-2512",
- name: "Mistral: Mistral Large 3 2512",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-01",
- last_updated: "2025-12-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 262144, output: 52429 },
- },
- "mistralai/devstral-medium": {
- id: "mistralai/devstral-medium",
- name: "Mistral: Devstral Medium",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-10",
- last_updated: "2025-07-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, output: 26215 },
- },
- "mistralai/mistral-small-3.1-24b-instruct": {
- id: "mistralai/mistral-small-3.1-24b-instruct",
- name: "Mistral: Mistral Small 3.1 24B",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-03-17",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 0.56, cache_read: 0.015 },
- limit: { context: 128000, output: 131072 },
- },
- "mistralai/pixtral-large-2411": {
- id: "mistralai/pixtral-large-2411",
- name: "Mistral: Pixtral Large 2411",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-19",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2, output: 6 },
- limit: { context: 131072, output: 32768 },
- },
- "mistralai/devstral-2512": {
- id: "mistralai/devstral-2512",
- name: "Mistral: Devstral 2 2512",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-12",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2, cache_read: 0.025 },
- limit: { context: 262144, output: 65536 },
- },
- "mistralai/codestral-2508": {
- id: "mistralai/codestral-2508",
- name: "Mistral: Codestral 2508",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 51200 },
- },
- "mistralai/mistral-small-24b-instruct-2501": {
- id: "mistralai/mistral-small-24b-instruct-2501",
- name: "Mistral: Mistral Small 3",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-29",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.08 },
- limit: { context: 32768, output: 16384 },
- },
- "mistralai/mistral-large-2411": {
- id: "mistralai/mistral-large-2411",
- name: "Mistral Large 2411",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-24",
- last_updated: "2024-11-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2, output: 6 },
- limit: { context: 131072, output: 26215 },
- },
- "mistralai/mixtral-8x22b-instruct": {
- id: "mistralai/mixtral-8x22b-instruct",
- name: "Mistral: Mixtral 8x22B Instruct",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 65536, output: 13108 },
- },
- "mistralai/mistral-large-2407": {
- id: "mistralai/mistral-large-2407",
- name: "Mistral Large 2407",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-19",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2, output: 6 },
- limit: { context: 131072, output: 32768 },
- },
- "mistralai/ministral-8b-2512": {
- id: "mistralai/ministral-8b-2512",
- name: "Mistral: Ministral 3 8B 2512",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-02",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 262144, output: 32768 },
- },
- "mistralai/mistral-medium-3.1": {
- id: "mistralai/mistral-medium-3.1",
- name: "Mistral: Mistral Medium 3.1",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-12",
- last_updated: "2025-08-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, output: 26215 },
- },
- "mistralai/ministral-3b-2512": {
- id: "mistralai/ministral-3b-2512",
- name: "Mistral: Ministral 3 3B 2512",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-02",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131072, output: 32768 },
- },
- "mistralai/voxtral-small-24b-2507": {
- id: "mistralai/voxtral-small-24b-2507",
- name: "Mistral: Voxtral Small 24B 2507",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-01",
- last_updated: "2025-07-01",
- modalities: { input: ["text", "audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 32000, output: 6400 },
- },
- "mistralai/mixtral-8x7b-instruct": {
- id: "mistralai/mixtral-8x7b-instruct",
- name: "Mistral: Mixtral 8x7B Instruct",
- 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,
- cost: { input: 0.54, output: 0.54 },
- limit: { context: 32768, output: 16384 },
- },
- "mistralai/mistral-medium-3": {
- id: "mistralai/mistral-medium-3",
- name: "Mistral: Mistral Medium 3",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-07",
- last_updated: "2025-05-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, output: 26215 },
- },
- "mistralai/mistral-small-3.2-24b-instruct": {
- id: "mistralai/mistral-small-3.2-24b-instruct",
- name: "Mistral: Mistral Small 3.2 24B",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-20",
- last_updated: "2025-06-20",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.18, cache_read: 0.03 },
- limit: { context: 131072, output: 131072 },
- },
- "mistralai/mistral-small-creative": {
- id: "mistralai/mistral-small-creative",
- name: "Mistral: Mistral Small Creative",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-12-17",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 32768, output: 32768 },
- },
- "mistralai/devstral-small": {
- id: "mistralai/devstral-small",
- name: "Mistral: Devstral Small 1.1",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-07",
- last_updated: "2025-07-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 131072, output: 26215 },
- },
- "mistralai/mistral-large": {
- id: "mistralai/mistral-large",
- name: "Mistral Large",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-24",
- last_updated: "2025-12-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 25600 },
- },
- "mistralai/mistral-7b-instruct-v0.1": {
- id: "mistralai/mistral-7b-instruct-v0.1",
- name: "Mistral: Mistral 7B Instruct v0.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.11, output: 0.19 },
- limit: { context: 2824, output: 565 },
- },
- "mistralai/ministral-14b-2512": {
- id: "mistralai/ministral-14b-2512",
- name: "Mistral: Ministral 3 14B 2512",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-16",
- last_updated: "2025-12-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 262144, output: 52429 },
- },
- "meta-llama/llama-3.3-70b-instruct": {
- id: "meta-llama/llama-3.3-70b-instruct",
- name: "Meta: Llama 3.3 70B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-08-01",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.32 },
- limit: { context: 131072, output: 16384 },
- },
- "meta-llama/llama-4-scout": {
- id: "meta-llama/llama-4-scout",
- name: "Meta: Llama 4 Scout",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 327680, output: 16384 },
- },
- "meta-llama/llama-guard-3-8b": {
- id: "meta-llama/llama-guard-3-8b",
- name: "Llama Guard 3 8B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-04-18",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.06 },
- limit: { context: 131072, output: 26215 },
- },
- "meta-llama/llama-4-maverick": {
- id: "meta-llama/llama-4-maverick",
- name: "Meta: Llama 4 Maverick",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-12-24",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 1048576, output: 16384 },
- },
- "meta-llama/llama-3.2-11b-vision-instruct": {
- id: "meta-llama/llama-3.2-11b-vision-instruct",
- name: "Meta: Llama 3.2 11B Vision Instruct",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-09-25",
- last_updated: "2024-09-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.049, output: 0.049 },
- limit: { context: 131072, output: 16384 },
- },
- "meta-llama/llama-guard-4-12b": {
- id: "meta-llama/llama-guard-4-12b",
- name: "Meta: Llama Guard 4 12B",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 163840, output: 32768 },
- },
- "meta-llama/llama-3.1-70b-instruct": {
- id: "meta-llama/llama-3.1-70b-instruct",
- name: "Meta: Llama 3.1 70B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-16",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 131072, output: 26215 },
- },
- "meta-llama/llama-3.1-405b": {
- id: "meta-llama/llama-3.1-405b",
- name: "Meta: Llama 3.1 405B (base)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-02",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 4, output: 4 },
- limit: { context: 32768, output: 32768 },
- },
- "meta-llama/llama-3.2-1b-instruct": {
- id: "meta-llama/llama-3.2-1b-instruct",
- name: "Meta: Llama 3.2 1B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-09-18",
- last_updated: "2026-01-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.027, output: 0.2 },
- limit: { context: 60000, output: 12000 },
- },
- "meta-llama/llama-3.2-3b-instruct": {
- id: "meta-llama/llama-3.2-3b-instruct",
- name: "Meta: Llama 3.2 3B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-09-18",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.051, output: 0.34 },
- limit: { context: 80000, output: 16384 },
- },
- "meta-llama/llama-3-8b-instruct": {
- id: "meta-llama/llama-3-8b-instruct",
- name: "Meta: Llama 3 8B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-04-25",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.04 },
- limit: { context: 8192, output: 16384 },
- },
- "meta-llama/llama-3.1-8b-instruct": {
- id: "meta-llama/llama-3.1-8b-instruct",
- name: "Meta: Llama 3.1 8B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.05 },
- limit: { context: 16384, output: 16384 },
- },
- "meta-llama/llama-3-70b-instruct": {
- id: "meta-llama/llama-3-70b-instruct",
- name: "Meta: Llama 3 70B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.51, output: 0.74 },
- limit: { context: 8192, output: 8000 },
- },
- "meta-llama/llama-3.1-405b-instruct": {
- id: "meta-llama/llama-3.1-405b-instruct",
- name: "Meta: Llama 3.1 405B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-07-16",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 4, output: 4 },
- limit: { context: 131000, output: 26200 },
- },
- "x-ai/grok-code-fast-1:optimized:free": {
- id: "x-ai/grok-code-fast-1:optimized:free",
- name: "xAI: Grok Code Fast 1 Optimized (experimental, free)",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-27",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 10000 },
- },
- "x-ai/grok-4.20-multi-agent-beta": {
- id: "x-ai/grok-4.20-multi-agent-beta",
- name: "xAI: Grok 4.20 Multi-Agent Beta",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6 },
- limit: { context: 2000000, output: 32768 },
- },
- "x-ai/grok-4-fast": {
- id: "x-ai/grok-4-fast",
- name: "xAI: Grok 4 Fast",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-19",
- last_updated: "2025-08-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "x-ai/grok-code-fast-1": {
- id: "x-ai/grok-code-fast-1",
- name: "xAI: Grok Code Fast 1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "x-ai/grok-3-beta": {
- id: "x-ai/grok-3-beta",
- name: "xAI: Grok 3 Beta",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 26215 },
- },
- "x-ai/grok-4": {
- id: "x-ai/grok-4",
- name: "xAI: Grok 4",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 51200 },
- },
- "x-ai/grok-3-mini": {
- id: "x-ai/grok-3-mini",
- name: "xAI: Grok 3 Mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 26215 },
- },
- "x-ai/grok-4.1-fast": {
- id: "x-ai/grok-4.1-fast",
- name: "xAI: Grok 4.1 Fast",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-11-19",
- last_updated: "2025-11-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "x-ai/grok-4.20-beta": {
- id: "x-ai/grok-4.20-beta",
- name: "xAI: Grok 4.20 Beta",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6 },
- limit: { context: 2000000, output: 32768 },
- },
- "x-ai/grok-3-mini-beta": {
- id: "x-ai/grok-3-mini-beta",
- name: "xAI: Grok 3 Mini Beta",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 26215 },
- },
- "x-ai/grok-3": {
- id: "x-ai/grok-3",
- name: "xAI: Grok 3",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 26215 },
- },
- "tencent/hunyuan-a13b-instruct": {
- id: "tencent/hunyuan-a13b-instruct",
- name: "Tencent: Hunyuan A13B Instruct",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-06-30",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131072, output: 131072 },
- },
- "gryphe/mythomax-l2-13b": {
- id: "gryphe/mythomax-l2-13b",
- name: "MythoMax 13B",
- 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,
- cost: { input: 0.06, output: 0.06 },
- limit: { context: 4096, output: 4096 },
- },
- "sao10k/l3-euryale-70b": {
- id: "sao10k/l3-euryale-70b",
- name: "Sao10k: Llama 3 Euryale 70B v2.1",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-06-18",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.48, output: 1.48 },
- limit: { context: 8192, output: 8192 },
- },
- "sao10k/l3-lunaris-8b": {
- id: "sao10k/l3-lunaris-8b",
- name: "Sao10K: Llama 3 8B Lunaris",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-13",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.05 },
- limit: { context: 8192, output: 8192 },
- },
- "sao10k/l3.3-euryale-70b": {
- id: "sao10k/l3.3-euryale-70b",
- name: "Sao10K: Llama 3.3 Euryale 70B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-12-18",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.65, output: 0.75 },
- limit: { context: 131072, output: 16384 },
- },
- "sao10k/l3.1-70b-hanami-x1": {
- id: "sao10k/l3.1-70b-hanami-x1",
- name: "Sao10K: Llama 3.1 70B Hanami x1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-01-08",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 3, output: 3 },
- limit: { context: 16000, output: 16000 },
- },
- "sao10k/l3.1-euryale-70b": {
- id: "sao10k/l3.1-euryale-70b",
- name: "Sao10K: Llama 3.1 Euryale 70B v2.2",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-08-28",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.85, output: 0.85 },
- limit: { context: 131072, output: 16384 },
- },
- "microsoft/wizardlm-2-8x22b": {
- id: "microsoft/wizardlm-2-8x22b",
- name: "WizardLM-2 8x22B",
- 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,
- cost: { input: 0.62, output: 0.62 },
- limit: { context: 65535, output: 8000 },
- },
- "microsoft/phi-4": {
- id: "microsoft/phi-4",
- name: "Microsoft: Phi 4",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.14 },
- limit: { context: 16384, output: 16384 },
- },
- "cohere/command-r7b-12-2024": {
- id: "cohere/command-r7b-12-2024",
- name: "Cohere: Command R7B (12-2024)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-02-27",
- last_updated: "2024-02-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.0375, output: 0.15 },
- limit: { context: 128000, output: 4000 },
- },
- "cohere/command-a": {
- id: "cohere/command-a",
- name: "Cohere: Command A",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, output: 8192 },
- },
- "cohere/command-r-plus-08-2024": {
- id: "cohere/command-r-plus-08-2024",
- name: "Cohere: Command R+ (08-2024)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-08-30",
- last_updated: "2024-08-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 4000 },
- },
- "cohere/command-r-08-2024": {
- id: "cohere/command-r-08-2024",
- name: "Cohere: Command R (08-2024)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-08-30",
- last_updated: "2024-08-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4000 },
- },
- "prime-intellect/intellect-3": {
- id: "prime-intellect/intellect-3",
- name: "Prime Intellect: INTELLECT-3",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-11-26",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 131072, output: 131072 },
- },
- "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
- id: "nvidia/llama-3.3-nemotron-super-49b-v1.5",
- name: "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-16",
- last_updated: "2025-03-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 131072, output: 26215 },
- },
- "nvidia/nemotron-3-nano-30b-a3b": {
- id: "nvidia/nemotron-3-nano-30b-a3b",
- name: "NVIDIA: Nemotron 3 Nano 30B A3B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-12",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 262144, output: 52429 },
- },
- "nvidia/nemotron-nano-12b-v2-vl": {
- id: "nvidia/nemotron-nano-12b-v2-vl",
- name: "NVIDIA: Nemotron Nano 12B 2 VL",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-28",
- last_updated: "2026-01-31",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 131072, output: 26215 },
- },
- "nvidia/nemotron-3-super-120b-a12b:free": {
- id: "nvidia/nemotron-3-super-120b-a12b:free",
- name: "NVIDIA: Nemotron 3 Super (free)",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "nvidia/nemotron-nano-9b-v2": {
- id: "nvidia/nemotron-nano-9b-v2",
- name: "NVIDIA: Nemotron Nano 9B V2",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-18",
- last_updated: "2025-08-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.16 },
- limit: { context: 131072, output: 26215 },
- },
- "nvidia/llama-3.1-nemotron-70b-instruct": {
- id: "nvidia/llama-3.1-nemotron-70b-instruct",
- name: "NVIDIA: Llama 3.1 Nemotron 70B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-10-12",
- last_updated: "2024-10-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 1.2 },
- limit: { context: 131072, output: 16384 },
- },
- "inception/mercury-2": {
- id: "inception/mercury-2",
- name: "Inception: Mercury 2",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-02-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
- limit: { context: 128000, output: 50000 },
- },
- "inception/mercury": {
- id: "inception/mercury",
- name: "Inception: Mercury",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-26",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75 },
- limit: { context: 128000, output: 32000 },
- },
- "inception/mercury-coder": {
- id: "inception/mercury-coder",
- name: "Inception: Mercury Coder",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75 },
- limit: { context: 128000, output: 32000 },
- },
- "openai/gpt-5.1-codex-max": {
- id: "openai/gpt-5.1-codex-max",
- name: "OpenAI: GPT-5.1-Codex-Max",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-chat": {
- id: "openai/gpt-5.2-chat",
- name: "OpenAI: GPT-5.2 Chat",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: false,
- release_date: "2025-12-11",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4o-mini-search-preview": {
- id: "openai/gpt-4o-mini-search-preview",
- name: "OpenAI: GPT-4o-mini Search Preview",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-01",
- last_updated: "2025-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5-chat": {
- id: "openai/gpt-5-chat",
- name: "OpenAI: GPT-5 Chat",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-08-07",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4o-2024-05-13": {
- id: "openai/gpt-4o-2024-05-13",
- name: "OpenAI: GPT-4o (2024-05-13)",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-05-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 15 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-5.3-chat": {
- id: "openai/gpt-5.3-chat",
- name: "OpenAI: GPT-5.3 Chat",
- attachment: true,
- reasoning: false,
- tool_call: true,
- release_date: "2026-03-04",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "OpenAI: GPT-5.2 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-12-11",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4-1106-preview": {
- id: "openai/gpt-4-1106-preview",
- name: "OpenAI: GPT-4 Turbo (older v1106)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-11-06",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-4o-audio-preview": {
- id: "openai/gpt-4o-audio-preview",
- name: "OpenAI: GPT-4o Audio",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-15",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "text"], output: ["audio", "text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "OpenAI: GPT-5 Mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-08-07",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "OpenAI: GPT-5 Nano",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-08-07",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.4, cache_read: 0.005 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "OpenAI: GPT-5.3-Codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- release_date: "2026-02-25",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-3.5-turbo-16k": {
- id: "openai/gpt-3.5-turbo-16k",
- name: "OpenAI: GPT-3.5 Turbo 16k",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-08-28",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 4 },
- limit: { context: 16385, output: 4096 },
- },
- "openai/gpt-4-turbo": {
- id: "openai/gpt-4-turbo",
- name: "OpenAI: GPT-4 Turbo",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-09-13",
- last_updated: "2024-04-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "OpenAI: GPT-5.2",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-12-11",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/o3-pro": {
- id: "openai/o3-pro",
- name: "OpenAI: o3 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-04-16",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 20, output: 80 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o3-mini-high": {
- id: "openai/o3-mini-high",
- name: "OpenAI: o3 Mini High",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: false,
- release_date: "2025-01-31",
- last_updated: "2026-03-15",
- modalities: { input: ["pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "OpenAI: GPT-4o-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-18",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.075 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o4-mini-deep-research": {
- id: "openai/o4-mini-deep-research",
- name: "OpenAI: o4 Mini Deep Research",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-06-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.1-chat": {
- id: "openai/gpt-5.1-chat",
- name: "OpenAI: GPT-5.1 Chat",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "OpenAI: o4 Mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-04-16",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.275 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "OpenAI: GPT-5.2-Codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4o-mini-2024-07-18": {
- id: "openai/gpt-4o-mini-2024-07-18",
- name: "OpenAI: GPT-4o-mini (2024-07-18)",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-07-18",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "OpenAI: GPT-5.1-Codex-Mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 100000 },
- },
- "openai/gpt-4o-2024-08-06": {
- id: "openai/gpt-4o-2024-08-06",
- name: "OpenAI: GPT-4o (2024-08-06)",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-08-06",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5-image": {
- id: "openai/gpt-5-image",
- name: "OpenAI: GPT-5 Image",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-14",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["image", "text"] },
- open_weights: false,
- cost: { input: 10, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "OpenAI: GPT-5.1",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/o1": {
- id: "openai/o1",
- name: "OpenAI: o1",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: false,
- release_date: "2024-12-05",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.4-pro": {
- id: "openai/gpt-5.4-pro",
- name: "OpenAI: GPT-5.4 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- release_date: "2026-03-06",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 180 },
- limit: { context: 1050000, output: 128000 },
- },
- "openai/gpt-3.5-turbo": {
- id: "openai/gpt-3.5-turbo",
- name: "OpenAI: GPT-3.5 Turbo",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-03-01",
- last_updated: "2023-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 16385, output: 4096 },
- },
- "openai/o3-deep-research": {
- id: "openai/o3-deep-research",
- name: "OpenAI: o3 Deep Research",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-06-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 40, cache_read: 2.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o3-mini": {
- id: "openai/o3-mini",
- name: "OpenAI: o3 Mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: false,
- release_date: "2024-12-20",
- last_updated: "2026-03-15",
- modalities: { input: ["pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4-turbo-preview": {
- id: "openai/gpt-4-turbo-preview",
- name: "OpenAI: GPT-4 Turbo Preview",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-01-25",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/o1-pro": {
- id: "openai/o1-pro",
- name: "OpenAI: o1-pro",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: false,
- release_date: "2025-03-19",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 150, output: 600 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4": {
- id: "openai/gpt-4",
- name: "OpenAI: GPT-4",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-03-14",
- last_updated: "2024-04-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 60 },
- limit: { context: 8191, output: 4096 },
- },
- "openai/gpt-4-0314": {
- id: "openai/gpt-4-0314",
- name: "OpenAI: GPT-4 (older v0314)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-05-28",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 60 },
- limit: { context: 8191, output: 4096 },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "OpenAI: GPT-5 Codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "OpenAI: GPT-5.4",
- attachment: true,
- reasoning: true,
- tool_call: true,
- release_date: "2026-03-06",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 15 },
- limit: { context: 1050000, output: 128000 },
- },
- "openai/gpt-audio": {
- id: "openai/gpt-audio",
- name: "OpenAI: GPT Audio",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-01-20",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "text"], output: ["audio", "text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4o:extended": {
- id: "openai/gpt-4o:extended",
- name: "OpenAI: GPT-4o (extended)",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-05-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 6, output: 18 },
- limit: { context: 128000, output: 64000 },
- },
- "openai/gpt-4o-search-preview": {
- id: "openai/gpt-4o-search-preview",
- name: "OpenAI: GPT-4o Search Preview",
- attachment: false,
- reasoning: false,
- tool_call: false,
- release_date: "2025-03-13",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4.1-nano": {
- id: "openai/gpt-4.1-nano",
- name: "OpenAI: GPT-4.1 Nano",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/o4-mini-high": {
- id: "openai/o4-mini-high",
- name: "OpenAI: o4 Mini High",
- attachment: true,
- reasoning: true,
- tool_call: true,
- release_date: "2025-04-17",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o3": {
- id: "openai/o3",
- name: "OpenAI: o3",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-04-16",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "OpenAI: gpt-oss-20b",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.14 },
- limit: { context: 131072, output: 26215 },
- },
- "openai/gpt-5-pro": {
- id: "openai/gpt-5-pro",
- name: "OpenAI: GPT-5 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-10-06",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-audio-mini": {
- id: "openai/gpt-audio-mini",
- name: "OpenAI: GPT Audio Mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-01-20",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "text"], output: ["audio", "text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.4 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4o": {
- id: "openai/gpt-4o",
- name: "OpenAI: GPT-4o",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-05-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-3.5-turbo-0613": {
- id: "openai/gpt-3.5-turbo-0613",
- name: "OpenAI: GPT-3.5 Turbo (older v0613)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2023-06-13",
- last_updated: "2023-06-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 2 },
- limit: { context: 4095, output: 4096 },
- },
- "openai/gpt-5-image-mini": {
- id: "openai/gpt-5-image-mini",
- name: "OpenAI: GPT-5 Image Mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-16",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["image", "text"] },
- open_weights: false,
- cost: { input: 2.5, output: 2 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "OpenAI: GPT-5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-08-07",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-oss-safeguard-20b": {
- id: "openai/gpt-oss-safeguard-20b",
- name: "OpenAI: gpt-oss-safeguard-20b",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-29",
- last_updated: "2025-10-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3, cache_read: 0.037 },
- limit: { context: 131072, output: 65536 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "OpenAI: gpt-oss-120b",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.039, output: 0.19 },
- limit: { context: 131072, output: 26215 },
- },
- "openai/gpt-3.5-turbo-instruct": {
- id: "openai/gpt-3.5-turbo-instruct",
- name: "OpenAI: GPT-3.5 Turbo Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2023-03-01",
- last_updated: "2023-09-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 2 },
- limit: { context: 4095, output: 4096 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "OpenAI: GPT-4.1",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "OpenAI: GPT-4.1 Mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "OpenAI: GPT-5.1-Codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4o-2024-11-20": {
- id: "openai/gpt-4o-2024-11-20",
- name: "OpenAI: GPT-4o (2024-11-20)",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-20",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "amazon/nova-lite-v1": {
- id: "amazon/nova-lite-v1",
- name: "Amazon: Nova Lite 1.0",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-06",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.06, output: 0.24 },
- limit: { context: 300000, output: 5120 },
- },
- "amazon/nova-pro-v1": {
- id: "amazon/nova-pro-v1",
- name: "Amazon: Nova Pro 1.0",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-03",
- last_updated: "2024-12-03",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 3.2 },
- limit: { context: 300000, output: 5120 },
- },
- "amazon/nova-premier-v1": {
- id: "amazon/nova-premier-v1",
- name: "Amazon: Nova Premier 1.0",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-11-01",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 12.5 },
- limit: { context: 1000000, output: 32000 },
- },
- "amazon/nova-2-lite-v1": {
- id: "amazon/nova-2-lite-v1",
- name: "Amazon: Nova 2 Lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-01",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1000000, output: 65535 },
- },
- "amazon/nova-micro-v1": {
- id: "amazon/nova-micro-v1",
- name: "Amazon: Nova Micro 1.0",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-06",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.035, output: 0.14 },
- limit: { context: 128000, output: 5120 },
- },
- "z-ai/glm-4.7": {
- id: "z-ai/glm-4.7",
- name: "Z.ai: GLM 4.7",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-22",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.38, output: 1.98, cache_read: 0.2 },
- limit: { context: 202752, output: 65535 },
- },
- "z-ai/glm-5": {
- id: "z-ai/glm-5",
- name: "Z.ai: GLM 5",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.72, output: 2.3 },
- limit: { context: 202752, output: 131072 },
- },
- "z-ai/glm-4-32b": {
- id: "z-ai/glm-4-32b",
- name: "Z.ai: GLM 4 32B ",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-25",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 128000, output: 32768 },
- },
- "z-ai/glm-5.1": {
- id: "z-ai/glm-5.1",
- name: "Z.ai: GLM 5.1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-27",
- last_updated: "2026-03-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.26, output: 3.96 },
- limit: { context: 202752, output: 131072 },
- },
- "z-ai/glm-4.5": {
- id: "z-ai/glm-4.5",
- name: "Z.ai: GLM 4.5",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-28",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2, cache_read: 0.175 },
- limit: { context: 131072, output: 98304 },
- },
- "z-ai/glm-4.5-air": {
- id: "z-ai/glm-4.5-air",
- name: "Z.ai: GLM 4.5 Air",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-28",
- last_updated: "2025-07-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.85, cache_read: 0.025 },
- limit: { context: 131072, output: 98304 },
- },
- "z-ai/glm-4.5v": {
- id: "z-ai/glm-4.5v",
- name: "Z.ai: GLM 4.5V",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-11",
- last_updated: "2025-08-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.8, cache_read: 0.11 },
- limit: { context: 65536, output: 16384 },
- },
- "z-ai/glm-4.6": {
- id: "z-ai/glm-4.6",
- name: "Z.ai: GLM 4.6",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-30",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.39, output: 1.9, cache_read: 0.175 },
- limit: { context: 204800, output: 204800 },
- },
- "z-ai/glm-4.6v": {
- id: "z-ai/glm-4.6v",
- name: "Z.ai: GLM 4.6V",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-30",
- last_updated: "2026-01-10",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 131072, output: 131072 },
- },
- "z-ai/glm-4.7-flash": {
- id: "z-ai/glm-4.7-flash",
- name: "Z.ai: GLM 4.7 Flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-19",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.4, cache_read: 0.01 },
- limit: { context: 202752, output: 40551 },
- },
- "baidu/ernie-4.5-vl-424b-a47b": {
- id: "baidu/ernie-4.5-vl-424b-a47b",
- name: "Baidu: ERNIE 4.5 VL 424B A47B ",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-06-30",
- last_updated: "2026-01",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.42, output: 1.25 },
- limit: { context: 123000, output: 16000 },
- },
- "baidu/ernie-4.5-vl-28b-a3b": {
- id: "baidu/ernie-4.5-vl-28b-a3b",
- name: "Baidu: ERNIE 4.5 VL 28B A3B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-30",
- last_updated: "2025-06-30",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 0.56 },
- limit: { context: 30000, output: 8000 },
- },
- "baidu/ernie-4.5-21b-a3b": {
- id: "baidu/ernie-4.5-21b-a3b",
- name: "Baidu: ERNIE 4.5 21B A3B",
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 120000, output: 8000 },
- },
- "baidu/ernie-4.5-300b-a47b": {
- id: "baidu/ernie-4.5-300b-a47b",
- name: "Baidu: ERNIE 4.5 300B A47B ",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-06-30",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.28, output: 1.1 },
- limit: { context: 123000, output: 12000 },
- },
- "baidu/ernie-4.5-21b-a3b-thinking": {
- id: "baidu/ernie-4.5-21b-a3b-thinking",
- name: "Baidu: ERNIE 4.5 21B A3B Thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 131072, output: 65536 },
- },
- "relace/relace-apply-3": {
- id: "relace/relace-apply-3",
- name: "Relace: Relace Apply 3",
- attachment: false,
- reasoning: false,
- tool_call: false,
- release_date: "2025-09-26",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.85, output: 1.25 },
- limit: { context: 256000, output: 128000 },
- },
- "relace/relace-search": {
- id: "relace/relace-search",
- name: "Relace: Relace Search",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-09",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 3 },
- limit: { context: 256000, output: 128000 },
- },
- "minimax/minimax-m2.7": {
- id: "minimax/minimax-m2.7",
- name: "MiniMax: MiniMax M2.7",
- family: "minimax-m2.7",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2": {
- id: "minimax/minimax-m2",
- name: "MiniMax: MiniMax M2",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-23",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.255, output: 1, cache_read: 0.03 },
- limit: { context: 196608, output: 196608 },
- },
- "minimax/minimax-01": {
- id: "minimax/minimax-01",
- name: "MiniMax: MiniMax-01",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-01-15",
- last_updated: "2025-01-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 1000192, output: 1000192 },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "MiniMax: MiniMax M2.1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.95, cache_read: 0.03 },
- limit: { context: 196608, output: 39322 },
- },
- "minimax/minimax-m1": {
- id: "minimax/minimax-m1",
- name: "MiniMax: MiniMax M1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-17",
- last_updated: "2025-06-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2.2 },
- limit: { context: 1000000, output: 40000 },
- },
- "minimax/minimax-m2-her": {
- id: "minimax/minimax-m2-her",
- name: "MiniMax: MiniMax M2-her",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-01-23",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 65536, output: 2048 },
- },
- "minimax/minimax-m2.5": {
- id: "minimax/minimax-m2.5",
- name: "MiniMax: MiniMax M2.5",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 1.2, cache_read: 0.029 },
- limit: { context: 196608, output: 196608 },
- },
- "qwen/qwen3-235b-a22b": {
- id: "qwen/qwen3-235b-a22b",
- name: "Qwen: Qwen3 235B A22B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-01",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.455, output: 1.82, cache_read: 0.15 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen/qwen3.5-122b-a10b": {
- id: "qwen/qwen3.5-122b-a10b",
- name: "Qwen: Qwen3.5-122B-A10B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.26, output: 2.08 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen2.5-coder-7b-instruct": {
- id: "qwen/qwen2.5-coder-7b-instruct",
- name: "Qwen: Qwen2.5 Coder 7B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-09-17",
- last_updated: "2024-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.09 },
- limit: { context: 32768, output: 6554 },
- },
- "qwen/qwen3-coder-plus": {
- id: "qwen/qwen3-coder-plus",
- name: "Qwen: Qwen3 Coder Plus",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-01",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.65, output: 3.25, cache_read: 0.2 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen/qwen3.5-27b": {
- id: "qwen/qwen3.5-27b",
- name: "Qwen: Qwen3.5-27B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.195, output: 1.56 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-235b-a22b-2507": {
- id: "qwen/qwen3-235b-a22b-2507",
- name: "Qwen: Qwen3 235B A22B Instruct 2507",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04",
- last_updated: "2026-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.071, output: 0.1 },
- limit: { context: 262144, output: 52429 },
- },
- "qwen/qwen3-8b": {
- id: "qwen/qwen3-8b",
- name: "Qwen: Qwen3 8B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.4, cache_read: 0.05 },
- limit: { context: 40960, output: 8192 },
- },
- "qwen/qwen3.5-397b-a17b": {
- id: "qwen/qwen3.5-397b-a17b",
- name: "Qwen: Qwen3.5 397B A17B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-15",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.39, output: 2.34 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen-vl-plus": {
- id: "qwen/qwen-vl-plus",
- name: "Qwen: Qwen VL Plus",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-01-25",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1365, output: 0.4095, cache_read: 0.042 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen/qwen3-32b": {
- id: "qwen/qwen3-32b",
- name: "Qwen: Qwen3 32B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-01",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.24, cache_read: 0.04 },
- limit: { context: 40960, output: 40960 },
- },
- "qwen/qwen2.5-vl-72b-instruct": {
- id: "qwen/qwen2.5-vl-72b-instruct",
- name: "Qwen: Qwen2.5 VL 72B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-02-01",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 0.8, cache_read: 0.075 },
- limit: { context: 32768, output: 32768 },
- },
- "qwen/qwen-max": {
- id: "qwen/qwen-max",
- name: "Qwen: Qwen-Max ",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-04-03",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.04, output: 4.16, cache_read: 0.32 },
- limit: { context: 32768, output: 8192 },
- },
- "qwen/qwen-plus": {
- id: "qwen/qwen-plus",
- name: "Qwen: Qwen-Plus",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-01-25",
- last_updated: "2025-09-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.2, cache_read: 0.08 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen/qwen3-vl-235b-a22b-thinking": {
- id: "qwen/qwen3-vl-235b-a22b-thinking",
- name: "Qwen: Qwen3 VL 235B A22B Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-24",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.26, output: 2.6 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-vl-30b-a3b-thinking": {
- id: "qwen/qwen3-vl-30b-a3b-thinking",
- name: "Qwen: Qwen3 VL 30B A3B Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-11",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 1.56 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen2.5-vl-32b-instruct": {
- id: "qwen/qwen2.5-vl-32b-instruct",
- name: "Qwen: Qwen2.5 VL 32B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-03-24",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.6, cache_read: 0.025 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen/qwen3-vl-8b-instruct": {
- id: "qwen/qwen3-vl-8b-instruct",
- name: "Qwen: Qwen3 VL 8B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-15",
- last_updated: "2025-11-25",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.5 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3.5-flash-02-23": {
- id: "qwen/qwen3.5-flash-02-23",
- name: "Qwen: Qwen3.5-Flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen/qwen3-max": {
- id: "qwen/qwen3-max",
- name: "Qwen: Qwen3 Max",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-05",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 6, cache_read: 0.24 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen/qwen-plus-2025-07-28": {
- id: "qwen/qwen-plus-2025-07-28",
- name: "Qwen: Qwen Plus 0728",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-09",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.26, output: 0.78 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen/qwen3-30b-a3b-instruct-2507": {
- id: "qwen/qwen3-30b-a3b-instruct-2507",
- name: "Qwen: Qwen3 30B A3B Instruct 2507",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-29",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.3, cache_read: 0.04 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3-vl-32b-instruct": {
- id: "qwen/qwen3-vl-32b-instruct",
- name: "Qwen: Qwen3 VL 32B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-21",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.104, output: 0.416 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-235b-a22b-thinking-2507": {
- id: "qwen/qwen3-235b-a22b-thinking-2507",
- name: "Qwen: Qwen3 235B A22B Thinking 2507",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-25",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.11, output: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3-next-80b-a3b-thinking": {
- id: "qwen/qwen3-next-80b-a3b-thinking",
- name: "Qwen: Qwen3 Next 80B A3B Thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.0975, output: 0.78 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-30b-a3b-thinking-2507": {
- id: "qwen/qwen3-30b-a3b-thinking-2507",
- name: "Qwen: Qwen3 30B A3B Thinking 2507",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.051, output: 0.34 },
- limit: { context: 32768, output: 6554 },
- },
- "qwen/qwen-2.5-7b-instruct": {
- id: "qwen/qwen-2.5-7b-instruct",
- name: "Qwen: Qwen2.5 7B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-09",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.1 },
- limit: { context: 32768, output: 6554 },
- },
- "qwen/qwen-vl-max": {
- id: "qwen/qwen-vl-max",
- name: "Qwen: Qwen VL Max",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-04-08",
- last_updated: "2025-08-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 3.2 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-coder-flash": {
- id: "qwen/qwen3-coder-flash",
- name: "Qwen: Qwen3 Coder Flash",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-23",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.195, output: 0.975, cache_read: 0.06 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen/qwen3-30b-a3b": {
- id: "qwen/qwen3-30b-a3b",
- name: "Qwen: Qwen3 30B A3B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.28, cache_read: 0.03 },
- limit: { context: 40960, output: 40960 },
- },
- "qwen/qwq-32b": {
- id: "qwen/qwq-32b",
- name: "Qwen: QwQ 32B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-28",
- last_updated: "2025-04-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.4 },
- limit: { context: 32768, output: 32768 },
- },
- "qwen/qwen3-next-80b-a3b-instruct": {
- id: "qwen/qwen3-next-80b-a3b-instruct",
- name: "Qwen: Qwen3 Next 80B A3B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 1.1 },
- limit: { context: 131072, output: 52429 },
- },
- "qwen/qwen3-coder-next": {
- id: "qwen/qwen3-coder-next",
- name: "Qwen: Qwen3 Coder Next",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-02",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.12, output: 0.75, cache_read: 0.035 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen-2.5-coder-32b-instruct": {
- id: "qwen/qwen-2.5-coder-32b-instruct",
- name: "Qwen2.5 Coder 32B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-11-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2, cache_read: 0.015 },
- limit: { context: 32768, output: 8192 },
- },
- "qwen/qwen3-vl-30b-a3b-instruct": {
- id: "qwen/qwen3-vl-30b-a3b-instruct",
- name: "Qwen: Qwen3 VL 30B A3B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-05",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-coder-30b-a3b-instruct": {
- id: "qwen/qwen3-coder-30b-a3b-instruct",
- name: "Qwen: Qwen3 Coder 30B A3B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-31",
- last_updated: "2025-07-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.27 },
- limit: { context: 160000, output: 32768 },
- },
- "qwen/qwen3-max-thinking": {
- id: "qwen/qwen3-max-thinking",
- name: "Qwen: Qwen3 Max Thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-23",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.78, output: 3.9 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen/qwen-turbo": {
- id: "qwen/qwen-turbo",
- name: "Qwen: Qwen-Turbo",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-01",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0325, output: 0.13, cache_read: 0.01 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen/qwen3-vl-235b-a22b-instruct": {
- id: "qwen/qwen3-vl-235b-a22b-instruct",
- name: "Qwen: Qwen3 VL 235B A22B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-23",
- last_updated: "2026-01-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.88, cache_read: 0.11 },
- limit: { context: 262144, output: 52429 },
- },
- "qwen/qwen3-coder": {
- id: "qwen/qwen3-coder",
- name: "Qwen: Qwen3 Coder 480B A35B",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-23",
- last_updated: "2025-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.22, output: 1, cache_read: 0.022 },
- limit: { context: 262144, output: 52429 },
- },
- "qwen/qwen-2.5-vl-7b-instruct": {
- id: "qwen/qwen-2.5-vl-7b-instruct",
- name: "Qwen: Qwen2.5-VL 7B Instruct",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-08-28",
- last_updated: "2024-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 32768, output: 6554 },
- },
- "qwen/qwen3.5-9b": {
- id: "qwen/qwen3.5-9b",
- name: "Qwen: Qwen3.5-9B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-10",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.15 },
- limit: { context: 256000, output: 32768 },
- },
- "qwen/qwen3-vl-8b-thinking": {
- id: "qwen/qwen3-vl-8b-thinking",
- name: "Qwen: Qwen3 VL 8B Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-15",
- last_updated: "2025-11-25",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.117, output: 1.365 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen-plus-2025-07-28:thinking": {
- id: "qwen/qwen-plus-2025-07-28:thinking",
- name: "Qwen: Qwen Plus 0728 (thinking)",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-09",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.26, output: 0.78 },
- limit: { context: 1000000, output: 32768 },
- },
- "qwen/qwen-2.5-72b-instruct": {
- id: "qwen/qwen-2.5-72b-instruct",
- name: "Qwen2.5 72B Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-09",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.12, output: 0.39 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen/qwen3-14b": {
- id: "qwen/qwen3-14b",
- name: "Qwen: Qwen3 14B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.24, cache_read: 0.025 },
- limit: { context: 40960, output: 40960 },
- },
- "qwen/qwen3.5-35b-a3b": {
- id: "qwen/qwen3.5-35b-a3b",
- name: "Qwen: Qwen3.5-35B-A3B",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1625, output: 1.3 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3.5-plus-02-15": {
- id: "qwen/qwen3.5-plus-02-15",
- name: "Qwen: Qwen3.5 Plus 2026-02-15",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-15",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.26, output: 1.56 },
- limit: { context: 1000000, output: 65536 },
- },
- "alfredpros/codellama-7b-instruct-solidity": {
- id: "alfredpros/codellama-7b-instruct-solidity",
- name: "AlfredPros: CodeLLaMa 7B Instruct Solidity",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 1.2 },
- limit: { context: 4096, output: 4096 },
- },
- "kwaipilot/kat-coder-pro": {
- id: "kwaipilot/kat-coder-pro",
- name: "Kwaipilot: KAT-Coder-Pro V1",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-30",
- last_updated: "2025-10-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.207, output: 0.828, cache_read: 0.0414 },
- limit: { context: 256000, output: 128000 },
- },
- "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",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-06",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, reasoning: 10, cache_read: 0.125, cache_write: 0.375 },
- limit: { context: 1048576, output: 65535 },
- },
- "google/gemini-3.1-pro-preview-customtools": {
- id: "google/gemini-3.1-pro-preview-customtools",
- name: "Google: Gemini 3.1 Pro Preview Custom Tools",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, reasoning: 12 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-flash-lite-preview-09-2025": {
- id: "google/gemini-2.5-flash-lite-preview-09-2025",
- name: "Google: Gemini 2.5 Flash Lite Preview 09-2025",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, reasoning: 0.4, cache_read: 0.01, cache_write: 0.083333 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.0-flash-001": {
- id: "google/gemini-2.0-flash-001",
- name: "Google: Gemini 2.0 Flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-11",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025, cache_write: 0.083333 },
- limit: { context: 1048576, output: 8192 },
- },
- "google/gemma-3n-e4b-it": {
- id: "google/gemma-3n-e4b-it",
- name: "Google: Gemma 3n 4B",
- 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: true,
- cost: { input: 0.02, output: 0.04 },
- limit: { context: 32768, output: 6554 },
- },
- "google/gemini-3.1-flash-lite-preview": {
- id: "google/gemini-3.1-flash-lite-preview",
- name: "Google: Gemini 3.1 Flash Lite Preview",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-03",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.5, reasoning: 1.5 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3.1-pro-preview": {
- id: "google/gemini-3.1-pro-preview",
- name: "Google: Gemini 3.1 Pro Preview",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-19",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, reasoning: 12 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-flash-preview": {
- id: "google/gemini-3-flash-preview",
- name: "Google: Gemini 3 Flash Preview",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-17",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3, reasoning: 3, cache_read: 0.05, cache_write: 0.083333 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-pro-preview": {
- id: "google/gemini-3-pro-preview",
- name: "Google: Gemini 3 Pro Preview",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-11-18",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, reasoning: 12, cache_read: 0.2, cache_write: 0.375 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Google: Gemini 2.5 Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-20",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, reasoning: 10, cache_read: 0.125, cache_write: 0.375 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-2-9b-it": {
- id: "google/gemma-2-9b-it",
- name: "Google: Gemma 2 9B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-06-28",
- last_updated: "2024-06-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.09 },
- limit: { context: 8192, output: 1639 },
- },
- "google/gemini-3-pro-image-preview": {
- id: "google/gemini-3-pro-image-preview",
- name: "Google: Nano Banana Pro (Gemini 3 Pro Image Preview)",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-11-20",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["image", "text"] },
- open_weights: false,
- cost: { input: 2, output: 12, reasoning: 12 },
- limit: { context: 65536, output: 32768 },
- },
- "google/gemini-2.5-flash-image": {
- id: "google/gemini-2.5-flash-image",
- name: "Google: Nano Banana (Gemini 2.5 Flash Image)",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-08",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["image", "text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 32768, output: 32768 },
- },
- "google/gemma-3-12b-it": {
- id: "google/gemma-3-12b-it",
- name: "Google: Gemma 3 12B",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-03-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.13, cache_read: 0.015 },
- limit: { context: 131072, output: 131072 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Google: Gemini 2.5 Flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-17",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, reasoning: 2.5, cache_read: 0.03, cache_write: 0.083333 },
- limit: { context: 1048576, output: 65535 },
- },
- "google/gemini-3.1-flash-image-preview": {
- id: "google/gemini-3.1-flash-image-preview",
- name: "Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["image", "text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3 },
- limit: { context: 65536, output: 65536 },
- },
- "google/gemma-3-4b-it": {
- id: "google/gemma-3-4b-it",
- name: "Google: Gemma 3 4B",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-03-13",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.08 },
- limit: { context: 131072, output: 19200 },
- },
- "google/gemini-2.5-pro-preview": {
- id: "google/gemini-2.5-pro-preview",
- name: "Google: Gemini 2.5 Pro Preview 06-05",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-05",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, reasoning: 10, cache_read: 0.125, cache_write: 0.375 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemma-2-27b-it": {
- id: "google/gemma-2-27b-it",
- name: "Google: Gemma 2 27B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-06-24",
- last_updated: "2024-06-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.65, output: 0.65 },
- limit: { context: 8192, output: 2048 },
- },
- "google/gemma-3-27b-it": {
- id: "google/gemma-3-27b-it",
- name: "Google: Gemma 3 27B",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-12",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.11, cache_read: 0.02 },
- limit: { context: 128000, output: 65536 },
- },
- "google/gemini-2.5-flash-lite": {
- id: "google/gemini-2.5-flash-lite",
- name: "Google: Gemini 2.5 Flash Lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-17",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, reasoning: 0.4, cache_read: 0.01, cache_write: 0.083333 },
- limit: { context: 1048576, output: 65535 },
- },
- "google/gemini-2.0-flash-lite-001": {
- id: "google/gemini-2.0-flash-lite-001",
- name: "Google: Gemini 2.0 Flash Lite",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-12-11",
- last_updated: "2026-03-15",
- modalities: { input: ["audio", "image", "pdf", "text", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 1048576, output: 8192 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "MoonshotAI: Kimi K2.5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.45, output: 2.2 },
- limit: { context: 262144, output: 65535 },
- },
- "moonshotai/kimi-k2-0905": {
- id: "moonshotai/kimi-k2-0905",
- name: "MoonshotAI: Kimi K2 0905",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-05",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2, cache_read: 0.15 },
- limit: { context: 131072, output: 26215 },
- },
- "moonshotai/kimi-k2": {
- id: "moonshotai/kimi-k2",
- name: "MoonshotAI: Kimi K2 0711",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.2 },
- limit: { context: 131000, output: 26215 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "MoonshotAI: Kimi K2 Thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-11-06",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.47, output: 2, cache_read: 0.2 },
- limit: { context: 131072, output: 65535 },
- },
- "aion-labs/aion-1.0": {
- id: "aion-labs/aion-1.0",
- name: "AionLabs: Aion-1.0",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-02-05",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 4, output: 8 },
- limit: { context: 131072, output: 32768 },
- },
- "aion-labs/aion-rp-llama-3.1-8b": {
- id: "aion-labs/aion-rp-llama-3.1-8b",
- name: "AionLabs: Aion-RP 1.0 (8B)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-02-05",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 1.6 },
- limit: { context: 32768, output: 32768 },
- },
- "aion-labs/aion-2.0": {
- id: "aion-labs/aion-2.0",
- name: "AionLabs: Aion-2.0",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 1.6 },
- limit: { context: 131072, output: 32768 },
- },
- "aion-labs/aion-1.0-mini": {
- id: "aion-labs/aion-1.0-mini",
- name: "AionLabs: Aion-1.0-Mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-02-05",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7, output: 1.4 },
- limit: { context: 131072, output: 32768 },
- },
- "thedrummer/unslopnemo-12b": {
- id: "thedrummer/unslopnemo-12b",
- name: "TheDrummer: UnslopNemo 12B",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-11-09",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 32768, output: 32768 },
- },
- "thedrummer/cydonia-24b-v4.1": {
- id: "thedrummer/cydonia-24b-v4.1",
- name: "TheDrummer: Cydonia 24B V4.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-09-27",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.5 },
- limit: { context: 131072, output: 131072 },
- },
- "thedrummer/skyfall-36b-v2": {
- id: "thedrummer/skyfall-36b-v2",
- name: "TheDrummer: Skyfall 36B V2",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-03-11",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 0.8 },
- limit: { context: 32768, output: 32768 },
- },
- "thedrummer/rocinante-12b": {
- id: "thedrummer/rocinante-12b",
- name: "TheDrummer: Rocinante 12B",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-09-30",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.43 },
- limit: { context: 32768, output: 32768 },
- },
- "anthropic/claude-opus-4.1": {
- id: "anthropic/claude-opus-4.1",
- name: "Anthropic: Claude Opus 4.1",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-3.7-sonnet:thinking": {
- id: "anthropic/claude-3.7-sonnet:thinking",
- name: "Anthropic: Claude 3.7 Sonnet (thinking)",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-19",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-3.7-sonnet": {
- id: "anthropic/claude-3.7-sonnet",
- name: "Anthropic: Claude 3.7 Sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-02-19",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4.6": {
- id: "anthropic/claude-opus-4.6",
- name: "Anthropic: Claude Opus 4.6",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-3.5-sonnet": {
- id: "anthropic/claude-3.5-sonnet",
- name: "Anthropic: Claude 3.5 Sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-10-22",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 6, output: 30 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Anthropic: Claude Sonnet 4",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-22",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4.5": {
- id: "anthropic/claude-sonnet-4.5",
- name: "Anthropic: Claude Sonnet 4.5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-29",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "anthropic/claude-opus-4.5": {
- id: "anthropic/claude-opus-4.5",
- name: "Anthropic: Claude Opus 4.5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-11-24",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-3-haiku": {
- id: "anthropic/claude-3-haiku",
- name: "Anthropic: Claude 3 Haiku",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-03-07",
- last_updated: "2024-03-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Anthropic: Claude Opus 4",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-22",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "pdf", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-3.5-haiku": {
- id: "anthropic/claude-3.5-haiku",
- name: "Anthropic: Claude 3.5 Haiku",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2024-10-22",
- last_updated: "2024-10-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-haiku-4.5": {
- id: "anthropic/claude-haiku-4.5",
- name: "Anthropic: Claude Haiku 4.5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-15",
- last_updated: "2025-10-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4.6": {
- id: "anthropic/claude-sonnet-4.6",
- name: "Anthropic: Claude Sonnet 4.6",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-17",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 1000000, output: 128000 },
- },
- "switchpoint/router": {
- id: "switchpoint/router",
- name: "Switchpoint Router",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2025-07-12",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.85, output: 3.4 },
- limit: { context: 131072, output: 32768 },
- },
- "xiaomi/mimo-v2-flash": {
- id: "xiaomi/mimo-v2-flash",
- name: "Xiaomi: MiMo-V2-Flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-14",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.29, cache_read: 0.045 },
- limit: { context: 262144, output: 65536 },
- },
- "bytedance/ui-tars-1.5-7b": {
- id: "bytedance/ui-tars-1.5-7b",
- name: "ByteDance: UI-TARS 7B ",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-07-23",
- last_updated: "2026-03-15",
- modalities: { input: ["image", "text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.2 },
- limit: { context: 128000, output: 2048 },
- },
- "tngtech/deepseek-r1t2-chimera": {
- id: "tngtech/deepseek-r1t2-chimera",
- name: "TNG: DeepSeek R1T2 Chimera",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-08",
- last_updated: "2025-07-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.85, cache_read: 0.125 },
- limit: { context: 163840, output: 163840 },
- },
- "meituan/longcat-flash-chat": {
- id: "meituan/longcat-flash-chat",
- name: "Meituan: LongCat Flash Chat",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-30",
- last_updated: "2026-03-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.8, cache_read: 0.2 },
- limit: { context: 131072, output: 131072 },
- },
- },
- },
- "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.6-opus": {
- id: "anthropic--claude-4.6-opus",
- name: "anthropic--claude-4.6-opus",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic--claude-3-haiku": {
- id: "anthropic--claude-3-haiku",
- name: "anthropic--claude-3-haiku",
- 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,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic--claude-3-opus": {
- id: "anthropic--claude-3-opus",
- name: "anthropic--claude-3-opus",
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 4096 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "gpt-5-mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "gpt-5-nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.005 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "gemini-2.5-pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 1048576, output: 65536 },
- },
- "anthropic--claude-3.7-sonnet": {
- id: "anthropic--claude-3.7-sonnet",
- name: "anthropic--claude-3.7-sonnet",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "sonar-pro": {
- id: "sonar-pro",
- name: "sonar-pro",
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic--claude-4.5-sonnet": {
- id: "anthropic--claude-4.5-sonnet",
- name: "anthropic--claude-4.5-sonnet",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic--claude-4.6-sonnet": {
- id: "anthropic--claude-4.6-sonnet",
- name: "anthropic--claude-4.6-sonnet",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "sonar-deep-research": {
- id: "sonar-deep-research",
- name: "sonar-deep-research",
- family: "sonar-deep-research",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, reasoning: 3 },
- limit: { context: 128000, output: 32768 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "gemini-2.5-flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.03, input_audio: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "anthropic--claude-4.5-opus": {
- id: "anthropic--claude-4.5-opus",
- name: "anthropic--claude-4.5-opus",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- sonar: {
- id: "sonar",
- name: "sonar",
- 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,
- cost: { input: 1, output: 1 },
- limit: { context: 128000, output: 4096 },
- },
- "anthropic--claude-4-opus": {
- id: "anthropic--claude-4-opus",
- name: "anthropic--claude-4-opus",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic--claude-3-sonnet": {
- id: "anthropic--claude-3-sonnet",
- name: "anthropic--claude-3-sonnet",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic--claude-4-sonnet": {
- id: "anthropic--claude-4-sonnet",
- name: "anthropic--claude-4-sonnet",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "gemini-2.5-flash-lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "anthropic--claude-4.5-haiku": {
- id: "anthropic--claude-4.5-haiku",
- name: "anthropic--claude-4.5-haiku",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "gpt-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "gpt-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "gpt-4.1-mini",
- 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,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "anthropic--claude-3.5-sonnet": {
- id: "anthropic--claude-3.5-sonnet",
- name: "anthropic--claude-3.5-sonnet",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- },
- },
- 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: {
- auto: {
- id: "auto",
- name: "Auto",
- 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,
- cost: { input: 0.85, output: 1.55 },
- limit: { context: 32000, output: 32000 },
- },
- "morph-v3-fast": {
- id: "morph-v3-fast",
- name: "Morph v3 Fast",
- 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,
- cost: { input: 0.8, output: 1.2 },
- limit: { context: 16000, output: 16000 },
- },
- "morph-v3-large": {
- id: "morph-v3-large",
- name: "Morph v3 Large",
- 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,
- cost: { input: 0.9, output: 1.9 },
- limit: { context: 32000, output: 32000 },
- },
- },
- },
- "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: {
- "workers-ai/@cf/myshell-ai/melotts": {
- id: "workers-ai/@cf/myshell-ai/melotts",
- name: "MyShell MeloTTS",
- family: "melotts",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/ibm-granite/granite-4.0-h-micro": {
- id: "workers-ai/@cf/ibm-granite/granite-4.0-h-micro",
- name: "IBM Granite 4.0 H Micro",
- family: "granite",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-10-15",
- last_updated: "2025-10-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.017, output: 0.11 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/huggingface/distilbert-sst-2-int8": {
- id: "workers-ai/@cf/huggingface/distilbert-sst-2-int8",
- name: "DistilBERT SST-2 INT8",
- family: "distilbert",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.026, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/zai-org/glm-4.7-flash": {
- id: "workers-ai/@cf/zai-org/glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.06, output: 0.4 },
- limit: { context: 131072, output: 131072 },
- },
- "workers-ai/@cf/pipecat-ai/smart-turn-v2": {
- id: "workers-ai/@cf/pipecat-ai/smart-turn-v2",
- name: "Pipecat Smart Turn v2",
- family: "smart-turn",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/mistralai/mistral-small-3.1-24b-instruct": {
- id: "workers-ai/@cf/mistralai/mistral-small-3.1-24b-instruct",
- name: "Mistral Small 3.1 24B Instruct",
- family: "mistral-small",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-11",
- last_updated: "2025-04-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.35, output: 0.56 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/facebook/bart-large-cnn": {
- id: "workers-ai/@cf/facebook/bart-large-cnn",
- name: "BART Large CNN",
- family: "bart",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-09",
- last_updated: "2025-04-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it": {
- id: "workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it",
- name: "Gemma SEA-LION v4 27B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.35, output: 0.56 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/nvidia/nemotron-3-120b-a12b": {
- id: "workers-ai/@cf/nvidia/nemotron-3-120b-a12b",
- name: "Nemotron 3 Super 120B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 256000, output: 256000 },
- },
- "workers-ai/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b": {
- id: "workers-ai/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",
- name: "DeepSeek R1 Distill Qwen 32B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 4.88 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/openai/gpt-oss-20b": {
- id: "workers-ai/@cf/openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.3 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/openai/gpt-oss-120b": {
- id: "workers-ai/@cf/openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.35, output: 0.75 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/mistral/mistral-7b-instruct-v0.1": {
- id: "workers-ai/@cf/mistral/mistral-7b-instruct-v0.1",
- name: "Mistral 7B Instruct v0.1",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.11, output: 0.19 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct": {
- id: "workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17B 16E Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 0.85 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3-8b-instruct-awq": {
- id: "workers-ai/@cf/meta/llama-3-8b-instruct-awq",
- name: "Llama 3 8B Instruct AWQ",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.12, output: 0.27 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-guard-3-8b": {
- id: "workers-ai/@cf/meta/llama-guard-3-8b",
- name: "Llama Guard 3 8B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.48, output: 0.03 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/m2m100-1.2b": {
- id: "workers-ai/@cf/meta/m2m100-1.2b",
- name: "M2M100 1.2B",
- family: "m2m",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.34, output: 0.34 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-2-7b-chat-fp16": {
- id: "workers-ai/@cf/meta/llama-2-7b-chat-fp16",
- name: "Llama 2 7B Chat FP16",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.56, output: 6.67 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.2-11b-vision-instruct": {
- id: "workers-ai/@cf/meta/llama-3.2-11b-vision-instruct",
- name: "Llama 3.2 11B Vision Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.049, output: 0.68 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast": {
- id: "workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast",
- name: "Llama 3.3 70B Instruct FP8 Fast",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.29, output: 2.25 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.2-1b-instruct": {
- id: "workers-ai/@cf/meta/llama-3.2-1b-instruct",
- name: "Llama 3.2 1B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.027, output: 0.2 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.1-8b-instruct-fp8": {
- id: "workers-ai/@cf/meta/llama-3.1-8b-instruct-fp8",
- name: "Llama 3.1 8B Instruct FP8",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.29 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.2-3b-instruct": {
- id: "workers-ai/@cf/meta/llama-3.2-3b-instruct",
- name: "Llama 3.2 3B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.051, output: 0.34 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.1-8b-instruct-awq": {
- id: "workers-ai/@cf/meta/llama-3.1-8b-instruct-awq",
- name: "Llama 3.1 8B Instruct AWQ",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.12, output: 0.27 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3-8b-instruct": {
- id: "workers-ai/@cf/meta/llama-3-8b-instruct",
- name: "Llama 3 8B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.28, output: 0.83 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/meta/llama-3.1-8b-instruct": {
- id: "workers-ai/@cf/meta/llama-3.1-8b-instruct",
- name: "Llama 3.1 8B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.28, output: 0.8299999999999998 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/qwen/qwen2.5-coder-32b-instruct": {
- id: "workers-ai/@cf/qwen/qwen2.5-coder-32b-instruct",
- name: "Qwen 2.5 Coder 32B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-11",
- last_updated: "2025-04-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.66, output: 1 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/qwen/qwen3-embedding-0.6b": {
- id: "workers-ai/@cf/qwen/qwen3-embedding-0.6b",
- name: "Qwen3 Embedding 0.6B",
- 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,
- cost: { input: 0.012, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/qwen/qwq-32b": {
- id: "workers-ai/@cf/qwen/qwq-32b",
- name: "QwQ 32B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-11",
- last_updated: "2025-04-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.66, output: 1 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/qwen/qwen3-30b-a3b-fp8": {
- id: "workers-ai/@cf/qwen/qwen3-30b-a3b-fp8",
- name: "Qwen3 30B A3B FP8",
- 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,
- cost: { input: 0.051, output: 0.34 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/google/gemma-3-12b-it": {
- id: "workers-ai/@cf/google/gemma-3-12b-it",
- name: "Gemma 3 12B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-11",
- last_updated: "2025-04-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.35, output: 0.56 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/moonshotai/kimi-k2.5": {
- id: "workers-ai/@cf/moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 256000, output: 256000 },
- },
- "workers-ai/@cf/ai4bharat/indictrans2-en-indic-1B": {
- id: "workers-ai/@cf/ai4bharat/indictrans2-en-indic-1B",
- name: "IndicTrans2 EN-Indic 1B",
- family: "indictrans",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.34, output: 0.34 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/pfnet/plamo-embedding-1b": {
- id: "workers-ai/@cf/pfnet/plamo-embedding-1b",
- name: "PLaMo Embedding 1B",
- family: "plamo",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.019, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/baai/bge-small-en-v1.5": {
- id: "workers-ai/@cf/baai/bge-small-en-v1.5",
- name: "BGE Small EN v1.5",
- family: "bge",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.02, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/baai/bge-large-en-v1.5": {
- id: "workers-ai/@cf/baai/bge-large-en-v1.5",
- name: "BGE Large EN v1.5",
- family: "bge",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/baai/bge-reranker-base": {
- id: "workers-ai/@cf/baai/bge-reranker-base",
- name: "BGE Reranker Base",
- family: "bge",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-09",
- last_updated: "2025-04-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0031, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/baai/bge-base-en-v1.5": {
- id: "workers-ai/@cf/baai/bge-base-en-v1.5",
- name: "BGE Base EN v1.5",
- family: "bge",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.067, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/baai/bge-m3": {
- id: "workers-ai/@cf/baai/bge-m3",
- name: "BGE M3",
- family: "bge",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.012, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/deepgram/aura-2-en": {
- id: "workers-ai/@cf/deepgram/aura-2-en",
- name: "Deepgram Aura 2 (EN)",
- family: "aura",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/deepgram/aura-2-es": {
- id: "workers-ai/@cf/deepgram/aura-2-es",
- name: "Deepgram Aura 2 (ES)",
- family: "aura",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "workers-ai/@cf/deepgram/nova-3": {
- id: "workers-ai/@cf/deepgram/nova-3",
- name: "Deepgram Nova 3",
- family: "nova",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "ai-gateway-provider" },
- },
- "openai/gpt-4-turbo": {
- id: "openai/gpt-4-turbo",
- name: "GPT-4 Turbo",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/o3-pro": {
- id: "openai/o3-pro",
- name: "o3-pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 20, output: 80 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o mini",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "ai-gateway-provider" },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/o1": {
- id: "openai/o1",
- name: "o1",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-3.5-turbo": {
- id: "openai/gpt-3.5-turbo",
- name: "GPT-3.5-turbo",
- 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,
- cost: { input: 0.5, output: 1.5, cache_read: 1.25 },
- limit: { context: 16385, output: 4096 },
- },
- "openai/o3-mini": {
- id: "openai/o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4": {
- id: "openai/gpt-4",
- name: "GPT-4",
- 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,
- cost: { input: 30, output: 60 },
- limit: { context: 8192, output: 8192 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- provider: { npm: "ai-gateway-provider" },
- },
- "openai/o3": {
- id: "openai/o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o": {
- id: "openai/gpt-4o",
- name: "GPT-4o",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "anthropic/claude-haiku-4-5": {
- id: "anthropic/claude-haiku-4-5",
- name: "Claude Haiku 4.5 (latest)",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4-6": {
- id: "anthropic/claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2025-07-31",
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "ai-gateway-provider" },
- },
- "anthropic/claude-opus-4-1": {
- id: "anthropic/claude-opus-4-1",
- name: "Claude Opus 4.1 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-3-5-haiku": {
- id: "anthropic/claude-3-5-haiku",
- name: "Claude Haiku 3.5 (latest)",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-3.5-sonnet": {
- id: "anthropic/claude-3.5-sonnet",
- name: "Claude Sonnet 3.5 v2",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude Sonnet 4 (latest)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4-5": {
- id: "anthropic/claude-opus-4-5",
- name: "Claude Opus 4.5 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-3-haiku": {
- id: "anthropic/claude-3-haiku",
- name: "Claude Haiku 3",
- 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,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Claude Opus 4 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-opus-4-6": {
- id: "anthropic/claude-opus-4-6",
- name: "Claude Opus 4.6 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.5,
- cache_write: 6.25,
- context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-3.5-haiku": {
- id: "anthropic/claude-3.5-haiku",
- name: "Claude Haiku 3.5 (latest)",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-sonnet-4-5": {
- id: "anthropic/claude-sonnet-4-5",
- name: "Claude Sonnet 4.5 (latest)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-3-sonnet": {
- id: "anthropic/claude-3-sonnet",
- name: "Claude Sonnet 3",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic/claude-3-opus": {
- id: "anthropic/claude-3-opus",
- name: "Claude Opus 3",
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 4096 },
- },
- },
- },
- "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.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1-Codex-max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-09-30",
- release_date: "2025-12-04",
- last_updated: "2025-12-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 128000, output: 128000 },
- },
- "claude-opus-4.6": {
- id: "claude-opus-4.6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 144000, input: 128000, output: 64000 },
- },
- "gemini-3.1-pro-preview": {
- id: "gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 128000, output: 64000 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 128000, output: 64000 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5-mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-08-13",
- last_updated: "2025-08-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 264000, input: 128000, output: 64000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 128000, output: 64000 },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- tool_call: 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-03-20",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 128000, output: 64000 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 264000, input: 128000, output: 64000 },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1-Codex-mini",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 128000, output: 128000 },
- },
- "claude-sonnet-4": {
- id: "claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 216000, input: 128000, output: 16000 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-08-27",
- last_updated: "2025-08-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 128000, output: 64000 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 264000, input: 128000, output: 64000 },
- },
- "claude-sonnet-4.5": {
- id: "claude-sonnet-4.5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 144000, input: 128000, output: 32000 },
- },
- "claude-opus-41": {
- id: "claude-opus-41",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: false,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 80000, output: 16000 },
- },
- "claude-opus-4.5": {
- id: "claude-opus-4.5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2025-11-24",
- last_updated: "2025-08-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 160000, input: 128000, output: 32000 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 64000, output: 4096 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 128000 },
- },
- "claude-haiku-4.5": {
- id: "claude-haiku-4.5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 144000, input: 128000, output: 32000 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, input: 64000, output: 16384 },
- },
- "claude-sonnet-4.6": {
- id: "claude-sonnet-4.6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, input: 128000, output: 32000 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 128000, output: 128000 },
- },
- },
- },
- 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-122b-a10b": {
- id: "qwen/qwen3.5-122b-a10b",
- name: "Qwen3.5 122B A10B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 3.2 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3.5-27b": {
- id: "qwen/qwen3.5-27b",
- name: "Qwen3.5 27B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 2.4 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3.5-397b-a17b": {
- id: "qwen/qwen3.5-397b-a17b",
- name: "Qwen3.5 397B A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3.5-9b": {
- id: "qwen/qwen3.5-9b",
- name: "Qwen3.5 9B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen/qwen3.5-35b-a3b": {
- id: "qwen/qwen3.5-35b-a3b",
- name: "Qwen3.5 35B A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 1.3 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- "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-pro": {
- id: "mimo-v2-pro",
- name: "MiMo-V2-Pro",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 1000000, output: 128000 },
- },
- "mimo-v2-tts": {
- id: "mimo-v2-tts",
- name: "MiMo-V2-TTS",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 8000, output: 16000 },
- },
- "mimo-v2-omni": {
- id: "mimo-v2-omni",
- name: "MiMo-V2-Omni",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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", "video", "pdf"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 256000, output: 128000 },
- },
- },
- },
- 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-5v-turbo": {
- id: "glm-5v-turbo",
- name: "glm-5v-turbo",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.2, output: 4, cache_read: 0.24, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.7-flashx": {
- id: "glm-4.7-flashx",
- name: "GLM-4.7-FlashX",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.4, cache_read: 0.01, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM-4.5-Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.1, cache_read: 0.03, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-5-turbo": {
- id: "glm-5-turbo",
- name: "GLM-5-Turbo",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.2, output: 4, cache_read: 0.24, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5v": {
- id: "glm-4.5v",
- name: "GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.8 },
- limit: { context: 64000, output: 16384 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 128000, output: 32768 },
- },
- "glm-4.5-flash": {
- id: "glm-4.5-flash",
- name: "GLM-4.5-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.7-flash": {
- id: "glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- },
- },
- 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: {
- "gpt-5.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1 Codex Max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.08 },
- limit: { context: 262144, output: 65536 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.1 },
- limit: { context: 204800, output: 131072 },
- status: "deprecated",
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.7-free": {
- id: "glm-4.7-free",
- name: "GLM-4.7 Free",
- family: "glm-free",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 204800, output: 131072 },
- status: "deprecated",
- },
- "gemini-3.1-pro": {
- id: "gemini-3.1-pro",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- provider: { npm: "@ai-sdk/google" },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2025-07-31",
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "kimi-k2.5-free": {
- id: "kimi-k2.5-free",
- name: "Kimi K2.5 Free",
- family: "kimi-free",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 262144, output: 262144 },
- status: "deprecated",
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "minimax-m2.5-free": {
- id: "minimax-m2.5-free",
- name: "MiniMax M2.5 Free",
- family: "minimax-free",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 204800, output: 131072 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "big-pickle": {
- id: "big-pickle",
- name: "Big Pickle",
- family: "big-pickle",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-10-17",
- last_updated: "2025-10-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 128000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "claude-opus-4-1": {
- id: "claude-opus-4-1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "claude-3-5-haiku": {
- id: "claude-3-5-haiku",
- name: "Claude Haiku 3.5",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "minimax-m2.1": {
- id: "minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.1 },
- limit: { context: 204800, output: 131072 },
- status: "deprecated",
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 204800, output: 131072 },
- },
- "gpt-5.4-nano": {
- id: "gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex Mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "claude-sonnet-4": {
- id: "claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "gemini-3-flash": {
- id: "gemini-3-flash",
- name: "Gemini 3 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 3, cache_read: 0.05 },
- limit: { context: 1048576, output: 65536 },
- provider: { npm: "@ai-sdk/google" },
- },
- "trinity-large-preview-free": {
- id: "trinity-large-preview-free",
- name: "Trinity Large Preview",
- family: "trinity",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2026-01-28",
- last_updated: "2026-01-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- status: "deprecated",
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.07, output: 8.5, cache_read: 0.107 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "gpt-5.4-pro": {
- id: "gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 30, output: 180, cache_read: 30 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "glm-5-free": {
- id: "glm-5-free",
- name: "GLM-5 Free",
- family: "glm-free",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 204800, output: 131072 },
- status: "deprecated",
- },
- "claude-opus-4-5": {
- id: "claude-opus-4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "minimax-m2.1-free": {
- id: "minimax-m2.1-free",
- name: "MiniMax M2.1 Free",
- family: "minimax-free",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 204800, output: 131072 },
- status: "deprecated",
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "qwen3.6-plus-free": {
- id: "qwen3.6-plus-free",
- name: "Qwen3.6 Plus Free",
- family: "qwen-free",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-12",
- release_date: "2026-03-30",
- last_updated: "2026-03-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 1048576, output: 64000 },
- status: "deprecated",
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.1 },
- limit: { context: 204800, output: 131072 },
- status: "deprecated",
- },
- "gemini-3-pro": {
- id: "gemini-3-pro",
- name: "Gemini 3 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- status: "deprecated",
- provider: { npm: "@ai-sdk/google" },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "GPT-5 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.07, output: 8.5, cache_read: 0.107 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "grok-code": {
- id: "grok-code",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-20",
- last_updated: "2025-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 256000, output: 256000 },
- status: "deprecated",
- },
- "mimo-v2-flash-free": {
- id: "mimo-v2-flash-free",
- name: "MiMo V2 Flash Free",
- family: "mimo-flash-free",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 262144, output: 65536 },
- status: "deprecated",
- },
- "gpt-5.3-codex-spark": {
- id: "gpt-5.3-codex-spark",
- name: "GPT-5.3 Codex Spark",
- family: "gpt-codex-spark",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, input: 128000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 204800, output: 131072 },
- },
- "kimi-k2": {
- id: "kimi-k2",
- name: "Kimi K2",
- family: "kimi",
- 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,
- cost: { input: 0.4, output: 2.5, cache_read: 0.4 },
- limit: { context: 262144, output: 262144 },
- status: "deprecated",
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 64000 },
- provider: { npm: "@ai-sdk/anthropic" },
- },
- "qwen3-coder": {
- id: "qwen3-coder",
- name: "Qwen3 Coder",
- 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,
- cost: { input: 0.45, output: 1.8 },
- limit: { context: 262144, output: 65536 },
- status: "deprecated",
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.07, output: 8.5, cache_read: 0.107 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "mimo-v2-pro-free": {
- id: "mimo-v2-pro-free",
- name: "MiMo V2 Pro Free",
- family: "mimo-pro-free",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 1048576, output: 64000 },
- status: "deprecated",
- },
- "nemotron-3-super-free": {
- id: "nemotron-3-super-free",
- name: "Nemotron 3 Super Free",
- family: "nemotron-free",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 204800, output: 128000 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 2.5, cache_read: 0.4 },
- limit: { context: 262144, output: 262144 },
- status: "deprecated",
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.07, output: 8.5, cache_read: 0.107 },
- limit: { context: 400000, input: 272000, output: 128000 },
- provider: { npm: "@ai-sdk/openai" },
- },
- "mimo-v2-omni-free": {
- id: "mimo-v2-omni-free",
- name: "MiMo V2 Omni Free",
- family: "mimo-omni-free",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 262144, output: 64000 },
- status: "deprecated",
- },
- },
- },
- stepfun: {
- id: "stepfun",
- env: ["STEPFUN_API_KEY"],
- npm: "@ai-sdk/openai-compatible",
- api: "https://api.stepfun.com/v1",
- name: "StepFun",
- doc: "https://platform.stepfun.com/docs/zh/overview/concept",
- models: {
- "step-3.5-flash-2603": {
- id: "step-3.5-flash-2603",
- name: "Step 3.5 Flash 2603",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-04-02",
- last_updated: "2026-04-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3, cache_read: 0.02 },
- limit: { context: 256000, input: 256000, output: 256000 },
- },
- "step-1-32k": {
- id: "step-1-32k",
- name: "Step 1 (32K)",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2.05, output: 9.59, cache_read: 0.41 },
- limit: { context: 32768, input: 32768, output: 32768 },
- },
- "step-3.5-flash": {
- id: "step-3.5-flash",
- name: "Step 3.5 Flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.096, output: 0.288, cache_read: 0.019 },
- limit: { context: 256000, input: 256000, output: 256000 },
- },
- "step-2-16k": {
- id: "step-2-16k",
- name: "Step 2 (16K)",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 5.21, output: 16.44, cache_read: 1.04 },
- limit: { context: 16384, input: 16384, output: 8192 },
- },
- },
- },
- 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: {
- "NousResearch/Hermes-4-70B": {
- id: "NousResearch/Hermes-4-70B",
- name: "Hermes-4-70B",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.13, output: 0.4, reasoning: 0.4, cache_read: 0.013, cache_write: 0.16 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "NousResearch/Hermes-4-405B": {
- id: "NousResearch/Hermes-4-405B",
- name: "Hermes-4-405B",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3, reasoning: 3, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "black-forest-labs/flux-schnell": {
- id: "black-forest-labs/flux-schnell",
- name: "FLUX.1-schnell",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 77, input: 77, output: 0 },
- },
- "black-forest-labs/flux-dev": {
- id: "black-forest-labs/flux-dev",
- name: "FLUX.1-dev",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 77, input: 77, output: 0 },
- },
- "Qwen/Qwen2.5-VL-72B-Instruct": {
- id: "Qwen/Qwen2.5-VL-72B-Instruct",
- name: "Qwen2.5-VL-72B-Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-01-20",
- last_updated: "2026-02-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025, cache_write: 0.31 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "Qwen/Qwen3-30B-A3B-Thinking-2507": {
- id: "Qwen/Qwen3-30B-A3B-Thinking-2507",
- name: "Qwen3-30B-A3B-Thinking-2507",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- 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,
- cost: { input: 0.1, output: 0.3, reasoning: 0.3, cache_read: 0.01, cache_write: 0.125 },
- limit: { context: 128000, input: 120000, output: 16384 },
- },
- "Qwen/Qwen3-32B-fast": {
- id: "Qwen/Qwen3-32B-fast",
- name: "Qwen3-32B (Fast)",
- 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,
- cost: { input: 0.2, output: 0.6, cache_read: 0.02, cache_write: 0.25 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "Qwen/Qwen3-Embedding-8B": {
- id: "Qwen/Qwen3-Embedding-8B",
- name: "Qwen3-Embedding-8B",
- 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,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32768, input: 32768, output: 0 },
- },
- "Qwen/Qwen3-30B-A3B-Instruct-2507": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen3-30B-A3B-Instruct-2507",
- 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,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01, cache_write: 0.125 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262144, output: 8192 },
- },
- "Qwen/Qwen3-32B": {
- id: "Qwen/Qwen3-32B",
- name: "Qwen3-32B",
- 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,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01, cache_write: 0.125 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "Qwen/Qwen3-Coder-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
- name: "Qwen3-Coder-30B-A3B-Instruct",
- 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,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01, cache_write: 0.125 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262144, output: 8192 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Thinking": {
- id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
- name: "Qwen3-Next-80B-A3B-Thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- 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,
- cost: { input: 0.15, output: 1.2, reasoning: 1.2, cache_read: 0.015, cache_write: 0.18 },
- limit: { context: 128000, input: 120000, output: 16384 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-23",
- last_updated: "2025-10-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.8 },
- limit: { context: 262144, output: 66536 },
- },
- "Qwen/Qwen2.5-Coder-7B-fast": {
- id: "Qwen/Qwen2.5-Coder-7B-fast",
- name: "Qwen2.5-Coder-7B (Fast)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2024-09-19",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.09, cache_read: 0.003, cache_write: 0.03 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "PrimeIntellect/INTELLECT-3": {
- id: "PrimeIntellect/INTELLECT-3",
- name: "INTELLECT-3",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-10",
- release_date: "2026-01-25",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1.1, cache_read: 0.02, cache_write: 0.25 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "zai-org/GLM-4.5": {
- id: "zai-org/GLM-4.5",
- name: "GLM-4.5",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-11-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.2, cache_read: 0.06, cache_write: 0.75 },
- limit: { context: 128000, input: 124000, output: 4096 },
- },
- "zai-org/GLM-4.5-Air": {
- id: "zai-org/GLM-4.5-Air",
- name: "GLM-4.5-Air",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-11-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.2, cache_read: 0.02, cache_write: 0.25 },
- limit: { context: 128000, input: 124000, output: 4096 },
- },
- "zai-org/GLM-4.7-FP8": {
- id: "zai-org/GLM-4.7-FP8",
- name: "GLM-4.7 (FP8)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-12",
- release_date: "2026-01-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2, cache_read: 0.04, cache_write: 0.5 },
- limit: { context: 128000, input: 124000, output: 4096 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "GLM-5",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2026-01",
- release_date: "2026-03-01",
- last_updated: "2026-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 3.2, cache_read: 0.1, cache_write: 1 },
- limit: { context: 200000, input: 200000, output: 16384 },
- },
- "BAAI/bge-en-icl": {
- id: "BAAI/bge-en-icl",
- name: "BGE-ICL",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: false,
- knowledge: "2024-06",
- release_date: "2024-07-30",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32768, input: 32768, output: 0 },
- },
- "BAAI/bge-multilingual-gemma2": {
- id: "BAAI/bge-multilingual-gemma2",
- name: "bge-multilingual-gemma2",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: false,
- knowledge: "2024-06",
- release_date: "2024-07-30",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0 },
- limit: { context: 8192, input: 8192, output: 0 },
- },
- "meta-llama/Llama-3.3-70B-Instruct": {
- id: "meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama-3.3-70B-Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-12-05",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4, cache_read: 0.013, cache_write: 0.16 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "meta-llama/Meta-Llama-3.1-8B-Instruct-fast": {
- id: "meta-llama/Meta-Llama-3.1-8B-Instruct-fast",
- name: "Meta-Llama-3.1-8B-Instruct (Fast)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2024-07-23",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.09, cache_read: 0.003, cache_write: 0.03 },
- limit: { context: 128000, input: 120000, output: 4096 },
- },
- "meta-llama/Llama-3.3-70B-Instruct-fast": {
- id: "meta-llama/Llama-3.3-70B-Instruct-fast",
- name: "Llama-3.3-70B-Instruct (Fast)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-12-05",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025, cache_write: 0.31 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "meta-llama/Llama-Guard-3-8B": {
- id: "meta-llama/Llama-Guard-3-8B",
- name: "Llama-Guard-3-8B",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: false,
- knowledge: "2024-04",
- release_date: "2024-04-18",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.06, cache_read: 0.002, cache_write: 0.025 },
- limit: { context: 8192, input: 8000, output: 1024 },
- },
- "meta-llama/Meta-Llama-3.1-8B-Instruct": {
- id: "meta-llama/Meta-Llama-3.1-8B-Instruct",
- name: "Meta-Llama-3.1-8B-Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2024-07-23",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.06, cache_read: 0.002, cache_write: 0.025 },
- limit: { context: 128000, input: 120000, output: 4096 },
- },
- "nvidia/Nemotron-Nano-V2-12b": {
- id: "nvidia/Nemotron-Nano-V2-12b",
- name: "Nemotron-Nano-V2-12b",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-03-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.2, cache_read: 0.007, cache_write: 0.08 },
- limit: { context: 32000, input: 30000, output: 4096 },
- },
- "nvidia/nemotron-3-super-120b-a12b": {
- id: "nvidia/nemotron-3-super-120b-a12b",
- name: "Nemotron-3-Super-120B-A12B",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, input: 256000, output: 32768 },
- },
- "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1": {
- id: "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1",
- name: "Llama-3.1-Nemotron-Ultra-253B-v1",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-01-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.8, cache_read: 0.06, cache_write: 0.75 },
- limit: { context: 128000, input: 120000, output: 4096 },
- },
- "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B": {
- id: "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B",
- name: "Nemotron-3-Nano-30B-A3B",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2025-08-10",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.24, cache_read: 0.006, cache_write: 0.075 },
- limit: { context: 32000, input: 30000, output: 4096 },
- },
- "deepseek-ai/DeepSeek-V3-0324": {
- id: "deepseek-ai/DeepSeek-V3-0324",
- name: "DeepSeek-V3-0324",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-03-24",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 1.5, cache_read: 0.05, cache_write: 0.1875 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "deepseek-ai/DeepSeek-V3-0324-fast": {
- id: "deepseek-ai/DeepSeek-V3-0324-fast",
- name: "DeepSeek-V3-0324 (Fast)",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-03-24",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.75, output: 2.25, cache_read: 0.075, cache_write: 0.28125 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "deepseek-ai/DeepSeek-R1-0528-fast": {
- id: "deepseek-ai/DeepSeek-R1-0528-fast",
- name: "DeepSeek R1 0528 Fast",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-01-01",
- last_updated: "2025-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2, output: 6 },
- limit: { context: 131072, output: 8192 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek-R1-0528",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2026-01-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 2.4, reasoning: 2.4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 128000, input: 120000, output: 32768 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek-V3.2",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2026-01-20",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.45, reasoning: 0.45, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 163000, input: 160000, output: 16384 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "gpt-oss-20b",
- attachment: false,
- reasoning: false,
- tool_call: true,
- 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,
- cost: { input: 0.05, output: 0.2, cache_read: 0.005, cache_write: 0.06 },
- limit: { context: 128000, input: 124000, output: 4096 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "gpt-oss-120b",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6, reasoning: 0.6, cache_read: 0.015, cache_write: 0.18 },
- limit: { context: 128000, input: 124000, output: 8192 },
- },
- "google/gemma-2-2b-it": {
- id: "google/gemma-2-2b-it",
- name: "Gemma-2-2b-it",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-07-31",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0.06, cache_read: 0.002, cache_write: 0.025 },
- limit: { context: 8192, input: 8000, output: 4096 },
- },
- "google/gemma-2-9b-it-fast": {
- id: "google/gemma-2-9b-it-fast",
- name: "Gemma-2-9b-it (Fast)",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-06-27",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.03, output: 0.09, cache_read: 0.003, cache_write: 0.0375 },
- limit: { context: 8192, input: 8000, output: 4096 },
- },
- "google/gemma-3-27b-it-fast": {
- id: "google/gemma-3-27b-it-fast",
- name: "Gemma-3-27b-it (Fast)",
- 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,
- cost: { input: 0.2, output: 0.6, cache_read: 0.02, cache_write: 0.25 },
- limit: { context: 110000, input: 100000, output: 8192 },
- },
- "google/gemma-3-27b-it": {
- id: "google/gemma-3-27b-it",
- name: "Gemma-3-27b-it",
- 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,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01, cache_write: 0.125 },
- limit: { context: 110000, input: 100000, output: 8192 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "Kimi-K2-Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-10",
- release_date: "2026-01-05",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5, reasoning: 2.5, cache_read: 0.06, cache_write: 0.75 },
- limit: { context: 128000, input: 120000, output: 16384 },
- },
- "moonshotai/Kimi-K2-Instruct": {
- id: "moonshotai/Kimi-K2-Instruct",
- name: "Kimi-K2-Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-10",
- release_date: "2026-01-05",
- last_updated: "2026-02-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 2.4, cache_read: 0.05, cache_write: 0.625 },
- limit: { context: 200000, input: 190000, output: 8192 },
- },
- "moonshotai/Kimi-K2.5-fast": {
- id: "moonshotai/Kimi-K2.5-fast",
- name: "Kimi-K2.5-fast",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 2.5, cache_read: 0.05, cache_write: 0.625 },
- limit: { context: 256000, input: 256000, output: 8192 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi-K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-12-15",
- last_updated: "2026-02-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 2.5, reasoning: 2.5, cache_read: 0.05, cache_write: 0.625 },
- limit: { context: 256000, input: 256000, output: 8192 },
- },
- "MiniMaxAI/MiniMax-M2.1": {
- id: "MiniMaxAI/MiniMax-M2.1",
- name: "MiniMax-M2.1",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-10",
- release_date: "2026-02-01",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, reasoning: 1.2, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 128000, input: 120000, output: 8192 },
- },
- "intfloat/e5-mistral-7b-instruct": {
- id: "intfloat/e5-mistral-7b-instruct",
- name: "e5-mistral-7b-instruct",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: false,
- knowledge: "2023-12",
- release_date: "2024-01-01",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32768, input: 32768, output: 0 },
- },
- },
- },
- 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: {
- "topazlabs-co/topazlabs": {
- id: "topazlabs-co/topazlabs",
- name: "TopazLabs",
- 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 },
- },
- "novita/kimi-k2.5": {
- id: "novita/kimi-k2.5",
- name: "kimi-k2.5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: false,
- limit: { context: 256000, output: 262144 },
- },
- "novita/glm-4.7": {
- id: "novita/glm-4.7",
- name: "glm-4.7",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "novita/glm-5": {
- id: "novita/glm-5",
- name: "glm-5",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 205000, output: 131072 },
- },
- "novita/minimax-m2.1": {
- id: "novita/minimax-m2.1",
- name: "minimax-m2.1",
- attachment: true,
- reasoning: true,
- 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.6": {
- id: "novita/glm-4.6",
- name: "GLM-4.6",
- 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-4.6v": {
- id: "novita/glm-4.6v",
- name: "glm-4.6v",
- attachment: true,
- reasoning: true,
- 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/deepseek-v3.2": {
- id: "novita/deepseek-v3.2",
- name: "DeepSeek-V3.2",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.4, cache_read: 0.13 },
- limit: { context: 128000, output: 0 },
- },
- "novita/glm-4.7-flash": {
- id: "novita/glm-4.7-flash",
- name: "glm-4.7-flash",
- attachment: true,
- reasoning: true,
- 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-n": {
- id: "novita/glm-4.7-n",
- name: "glm-4.7-n",
- attachment: true,
- reasoning: true,
- 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/kimi-k2-thinking": {
- id: "novita/kimi-k2-thinking",
- name: "kimi-k2-thinking",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "fireworks-ai/kimi-k2.5-fw": {
- id: "fireworks-ai/kimi-k2.5-fw",
- name: "Kimi-K2.5-FW",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, input: 245760, output: 16384 },
- },
- "elevenlabs/elevenlabs-v2.5-turbo": {
- id: "elevenlabs/elevenlabs-v2.5-turbo",
- name: "ElevenLabs-v2.5-Turbo",
- 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",
- 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",
- 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 },
- },
- "cerebras/gpt-oss-120b-cs": {
- id: "cerebras/gpt-oss-120b-cs",
- name: "gpt-oss-120b-cs",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "cerebras/llama-3.1-8b-cs": {
- id: "cerebras/llama-3.1-8b-cs",
- name: "llama-3.1-8b-cs",
- 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: 0, output: 0 },
- },
- "cerebras/qwen3-32b-cs": {
- id: "cerebras/qwen3-32b-cs",
- name: "qwen3-32b-cs",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "cerebras/qwen3-235b-2507-cs": {
- id: "cerebras/qwen3-235b-2507-cs",
- name: "qwen3-235b-2507-cs",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "cerebras/llama-3.3-70b-cs": {
- id: "cerebras/llama-3.3-70b-cs",
- name: "llama-3.3-70b-cs",
- 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 },
- },
- "stabilityai/stablediffusionxl": {
- id: "stabilityai/stablediffusionxl",
- name: "StableDiffusionXL",
- 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 },
- },
- "xai/grok-code-fast-1": {
- id: "xai/grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-08-22",
- last_updated: "2025-08-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 128000 },
- },
- "xai/grok-4-fast-reasoning": {
- id: "xai/grok-4-fast-reasoning",
- name: "Grok-4-Fast-Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-09-16",
- last_updated: "2025-09-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 128000 },
- },
- "xai/grok-4.1-fast-non-reasoning": {
- id: "xai/grok-4.1-fast-non-reasoning",
- name: "Grok-4.1-Fast-Non-Reasoning",
- 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": {
- id: "xai/grok-4",
- name: "Grok-4",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-07-10",
- last_updated: "2025-07-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 128000 },
- },
- "xai/grok-3-mini": {
- id: "xai/grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-04-11",
- last_updated: "2025-04-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 8192 },
- },
- "xai/grok-4.20-multi-agent": {
- id: "xai/grok-4.20-multi-agent",
- name: "Grok-4.20-Multi-Agent",
- 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,
- cost: { input: 2, output: 6, cache_read: 0.2 },
- limit: { context: 128000, output: 0 },
- },
- "xai/grok-3": {
- id: "xai/grok-3",
- name: "Grok 3",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 8192 },
- },
- "xai/grok-4-fast-non-reasoning": {
- id: "xai/grok-4-fast-non-reasoning",
- name: "Grok-4-Fast-Non-Reasoning",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 128000 },
- },
- "xai/grok-4.1-fast-reasoning": {
- id: "xai/grok-4.1-fast-reasoning",
- name: "Grok-4.1-Fast-Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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 },
- },
- "runwayml/runway": {
- id: "runwayml/runway",
- name: "Runway",
- 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",
- 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 },
- },
- "openai/gpt-5.1-codex-max": {
- id: "openai/gpt-5.1-codex-max",
- name: "GPT 5.1 Codex Max",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-12-08",
- last_updated: "2025-12-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/sora-2-pro": {
- id: "openai/sora-2-pro",
- name: "Sora-2-Pro",
- 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/chatgpt-4o-latest": {
- id: "openai/chatgpt-4o-latest",
- name: "ChatGPT-4o-Latest",
- 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,
- cost: { input: 4.5, output: 14 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/gpt-5-chat": {
- id: "openai/gpt-5-chat",
- name: "GPT-5-Chat",
- 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,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "GPT-5.2-Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-12-11",
- last_updated: "2025-12-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 19, output: 150 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4o-aug": {
- id: "openai/gpt-4o-aug",
- name: "GPT-4o-Aug",
- 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,
- cost: { input: 2.2, output: 9, cache_read: 1.1 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/gpt-4-classic-0314": {
- id: "openai/gpt-4-classic-0314",
- name: "GPT-4-Classic-0314",
- 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,
- cost: { input: 27, output: 54 },
- limit: { context: 8192, output: 4096 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT-5-mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-06-25",
- last_updated: "2025-06-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.22, output: 1.8, cache_read: 0.022 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "GPT-5-nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.045, output: 0.36, cache_read: 0.0045 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "GPT-5.3-Codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-02-10",
- last_updated: "2026-02-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.6, output: 13, cache_read: 0.16 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4-turbo": {
- id: "openai/gpt-4-turbo",
- name: "GPT-4-Turbo",
- 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,
- cost: { input: 9, output: 27 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-12-08",
- last_updated: "2025-12-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.6, output: 13, cache_read: 0.16 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/o3-pro": {
- id: "openai/o3-pro",
- name: "o3-pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-06-10",
- last_updated: "2025-06-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 18, output: 72 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o3-mini-high": {
- id: "openai/o3-mini-high",
- name: "o3-mini-high",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.99, output: 4 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o-mini",
- 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,
- cost: { input: 0.14, output: 0.54, cache_read: 0.068 },
- limit: { context: 124096, output: 4096 },
- },
- "openai/o4-mini-deep-research": {
- id: "openai/o4-mini-deep-research",
- name: "o4-mini-deep-research",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-06-27",
- last_updated: "2025-06-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.8, output: 7.2, cache_read: 0.45 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.4-mini": {
- id: "openai/gpt-5.4-mini",
- name: "GPT-5.4-Mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-03-12",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.68, output: 4, cache_read: 0.068 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/dall-e-3": {
- id: "openai/dall-e-3",
- name: "DALL-E-3",
- 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/o4-mini": {
- id: "openai/o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.99, output: 4, cache_read: 0.25 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.4-nano": {
- id: "openai/gpt-5.4-nano",
- name: "GPT-5.4-Nano",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-03-11",
- last_updated: "2026-03-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 1.1, cache_read: 0.018 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-image-1": {
- id: "openai/gpt-image-1",
- name: "GPT-Image-1",
- 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.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.6, output: 13, cache_read: 0.16 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "GPT-5.1-Codex-Mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-12",
- last_updated: "2025-11-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.22, output: 1.8, cache_read: 0.022 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-12",
- last_updated: "2025-11-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-image-1-mini": {
- id: "openai/gpt-image-1-mini",
- name: "GPT-Image-1-Mini",
- 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/o1": {
- id: "openai/o1",
- name: "o1",
- family: "o",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2024-12-18",
- last_updated: "2024-12-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 14, output: 54 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.4-pro": {
- id: "openai/gpt-5.4-pro",
- name: "GPT-5.4-Pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-03-05",
- last_updated: "2026-03-05",
- modalities: { input: ["text", "image"], output: ["image"] },
- open_weights: false,
- cost: { input: 27, output: 160 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-3.5-turbo": {
- id: "openai/gpt-3.5-turbo",
- name: "GPT-3.5-Turbo",
- 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,
- cost: { input: 0.45, output: 1.4 },
- limit: { context: 16384, output: 2048 },
- },
- "openai/o3-deep-research": {
- id: "openai/o3-deep-research",
- name: "o3-deep-research",
- family: "o",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-06-27",
- last_updated: "2025-06-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 9, output: 36, cache_read: 2.2 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o3-mini": {
- id: "openai/o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.99, output: 4 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o1-pro": {
- id: "openai/o1-pro",
- name: "o1-pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-03-19",
- last_updated: "2025-03-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 140, output: 540 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o-search": {
- id: "openai/gpt-4o-search",
- name: "GPT-4o-Search",
- 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,
- cost: { input: 2.2, output: 9 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "GPT-5-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-09-23",
- last_updated: "2025-09-23",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 9 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT-5.4",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.2, output: 14, cache_read: 0.22 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-5.3-codex-spark": {
- id: "openai/gpt-5.3-codex-spark",
- name: "GPT-5.3-Codex-Spark",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2026-03-04",
- last_updated: "2026-03-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-3.5-turbo-raw": {
- id: "openai/gpt-3.5-turbo-raw",
- name: "GPT-3.5-Turbo-Raw",
- 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,
- cost: { input: 0.45, output: 1.4 },
- limit: { context: 4524, output: 2048 },
- },
- "openai/gpt-4.1-nano": {
- id: "openai/gpt-4.1-nano",
- name: "GPT-4.1-nano",
- 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,
- cost: { input: 0.09, output: 0.36, cache_read: 0.022 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/o3": {
- id: "openai/o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.8, output: 7.2, cache_read: 0.45 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5-pro": {
- id: "openai/gpt-5-pro",
- name: "GPT-5-Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-10-06",
- last_updated: "2025-10-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 14, output: 110 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/sora-2": {
- id: "openai/sora-2",
- name: "Sora-2",
- 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": {
- id: "openai/gpt-4o",
- name: "GPT-4o",
- 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": {
- id: "openai/gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-instant": {
- id: "openai/gpt-5.2-instant",
- name: "GPT-5.2-Instant",
- 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,
- cost: { input: 1.6, output: 13, cache_read: 0.16 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4o-mini-search": {
- id: "openai/gpt-4o-mini-search",
- name: "GPT-4o-mini-Search",
- 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,
- cost: { input: 0.14, output: 0.54 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/gpt-image-1.5": {
- id: "openai/gpt-image-1.5",
- name: "gpt-image-1.5",
- 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-3.5-turbo-instruct": {
- id: "openai/gpt-3.5-turbo-instruct",
- name: "GPT-3.5-Turbo-Instruct",
- 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,
- cost: { input: 1.4, output: 1.8 },
- limit: { context: 3500, output: 1024 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 1.8, output: 7.2, cache_read: 0.45 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-5.1-instant": {
- id: "openai/gpt-5.1-instant",
- name: "GPT-5.1-Instant",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-12",
- last_updated: "2025-11-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "GPT-4.1-mini",
- 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,
- cost: { input: 0.36, output: 1.4, cache_read: 0.09 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-4-classic": {
- id: "openai/gpt-4-classic",
- name: "GPT-4-Classic",
- 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,
- cost: { input: 27, output: 54 },
- limit: { context: 8192, output: 4096 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT-5.1-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- release_date: "2025-11-12",
- last_updated: "2025-11-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.3-instant": {
- id: "openai/gpt-5.3-instant",
- name: "GPT-5.3-Instant",
- 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,
- cost: { input: 1.6, output: 13, cache_read: 0.16 },
- limit: { context: 128000, input: 111616, output: 16384 },
- },
- "google/veo-3-fast": {
- id: "google/veo-3-fast",
- name: "Veo-3-Fast",
- 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/veo-3.1-fast": {
- id: "google/veo-3.1-fast",
- name: "Veo-3.1-Fast",
- 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/gemini-3.1-pro": {
- id: "google/gemini-3.1-pro",
- name: "Gemini-3.1-Pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/imagen-3-fast": {
- id: "google/imagen-3-fast",
- name: "Imagen-3-Fast",
- 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": {
- id: "google/gemini-2.0-flash",
- name: "Gemini-2.0-Flash",
- 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,
- cost: { input: 0.1, output: 0.42 },
- limit: { context: 990000, output: 8192 },
- },
- "google/gemini-deep-research": {
- id: "google/gemini-deep-research",
- name: "gemini-deep-research",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.6, output: 9.6 },
- limit: { context: 1048576, output: 0 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini-2.5-Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.87, output: 7, cache_read: 0.087 },
- limit: { context: 1065535, output: 65535 },
- },
- "google/imagen-3": {
- id: "google/imagen-3",
- name: "Imagen-3",
- 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/nano-banana": {
- id: "google/nano-banana",
- name: "Nano-Banana",
- 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,
- cost: { input: 0.21, output: 1.8, cache_read: 0.021 },
- limit: { context: 65536, output: 0 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini-2.5-Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.21, output: 1.8, cache_read: 0.021 },
- limit: { context: 1065535, output: 65535 },
- },
- "google/gemini-3.1-flash-lite": {
- id: "google/gemini-3.1-flash-lite",
- name: "Gemini-3.1-Flash-Lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 1.5 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-flash": {
- id: "google/gemini-3-flash",
- name: "Gemini-3-Flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 2.4, cache_read: 0.04 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/veo-3.1": {
- id: "google/veo-3.1",
- name: "Veo-3.1",
- 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/lyria": {
- id: "google/lyria",
- name: "Lyria",
- 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/imagen-4-ultra": {
- id: "google/imagen-4-ultra",
- name: "Imagen-4-Ultra",
- 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/nano-banana-pro": {
- id: "google/nano-banana-pro",
- name: "Nano-Banana-Pro",
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 65536, output: 0 },
- },
- "google/gemini-3-pro": {
- id: "google/gemini-3-pro",
- name: "Gemini-3-Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.6, output: 9.6, cache_read: 0.16 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/imagen-4-fast": {
- id: "google/imagen-4-fast",
- name: "Imagen-4-Fast",
- 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/veo-3": {
- id: "google/veo-3",
- name: "Veo-3",
- 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",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 1024000, output: 64000 },
- },
- "google/imagen-4": {
- id: "google/imagen-4",
- name: "Imagen-4",
- 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/gemma-4-31b": {
- id: "google/gemma-4-31b",
- name: "Gemma-4-31B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 8192 },
- },
- "google/gemini-2.0-flash-lite": {
- id: "google/gemini-2.0-flash-lite",
- name: "Gemini-2.0-Flash-Lite",
- 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,
- cost: { input: 0.052, output: 0.21 },
- limit: { context: 990000, output: 8192 },
- },
- "google/veo-2": {
- id: "google/veo-2",
- name: "Veo-2",
- 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 },
- },
- "lumalabs/ray2": {
- id: "lumalabs/ray2",
- name: "Ray2",
- 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 },
- },
- "anthropic/claude-opus-4.1": {
- id: "anthropic/claude-opus-4.1",
- name: "Claude-Opus-4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 13, output: 64, cache_read: 1.3, cache_write: 16 },
- limit: { context: 196608, output: 32000 },
- },
- "anthropic/claude-sonnet-3.5": {
- id: "anthropic/claude-sonnet-3.5",
- name: "Claude-Sonnet-3.5",
- 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,
- cost: { input: 2.6, output: 13, cache_read: 0.26, cache_write: 3.2 },
- limit: { context: 189096, output: 8192 },
- },
- "anthropic/claude-haiku-3": {
- id: "anthropic/claude-haiku-3",
- name: "Claude-Haiku-3",
- 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,
- cost: { input: 0.21, output: 1.1, cache_read: 0.021, cache_write: 0.26 },
- limit: { context: 189096, output: 8192 },
- },
- "anthropic/claude-opus-4.6": {
- id: "anthropic/claude-opus-4.6",
- name: "Claude-Opus-4.6",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 4.3, output: 21, cache_read: 0.43, cache_write: 5.3 },
- limit: { context: 983040, output: 128000 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude-Sonnet-4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.6, output: 13, cache_read: 0.26, cache_write: 3.2 },
- limit: { context: 983040, output: 64000 },
- },
- "anthropic/claude-sonnet-4.5": {
- id: "anthropic/claude-sonnet-4.5",
- name: "Claude-Sonnet-4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.6, output: 13, cache_read: 0.26, cache_write: 3.2 },
- limit: { context: 983040, output: 32768 },
- },
- "anthropic/claude-opus-4.5": {
- id: "anthropic/claude-opus-4.5",
- name: "Claude-Opus-4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 4.3, output: 21, cache_read: 0.43, cache_write: 5.3 },
- limit: { context: 196608, output: 64000 },
- },
- "anthropic/claude-sonnet-3.7": {
- id: "anthropic/claude-sonnet-3.7",
- name: "Claude-Sonnet-3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.6, output: 13, cache_read: 0.26, cache_write: 3.2 },
- limit: { context: 196608, output: 128000 },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Claude-Opus-4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 13, output: 64, cache_read: 1.3, cache_write: 16 },
- limit: { context: 192512, output: 28672 },
- },
- "anthropic/claude-haiku-3.5": {
- id: "anthropic/claude-haiku-3.5",
- name: "Claude-Haiku-3.5",
- 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,
- cost: { input: 0.68, output: 3.4, cache_read: 0.068, cache_write: 0.85 },
- limit: { context: 189096, output: 8192 },
- },
- "anthropic/claude-haiku-4.5": {
- id: "anthropic/claude-haiku-4.5",
- name: "Claude-Haiku-4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.85, output: 4.3, cache_read: 0.085, cache_write: 1.1 },
- limit: { context: 192000, output: 64000 },
- },
- "anthropic/claude-sonnet-3.5-june": {
- id: "anthropic/claude-sonnet-3.5-june",
- name: "Claude-Sonnet-3.5-June",
- 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,
- cost: { input: 2.6, output: 13, cache_read: 0.26, cache_write: 3.2 },
- limit: { context: 189096, output: 8192 },
- },
- "anthropic/claude-sonnet-4.6": {
- id: "anthropic/claude-sonnet-4.6",
- name: "Claude-Sonnet-4.6",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.6, output: 13, cache_read: 0.26, cache_write: 3.2 },
- limit: { context: 983040, output: 128000 },
- },
- "ideogramai/ideogram": {
- id: "ideogramai/ideogram",
- name: "Ideogram",
- 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 },
- },
- "ideogramai/ideogram-v2": {
- id: "ideogramai/ideogram-v2",
- name: "Ideogram-v2",
- 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",
- 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",
- 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 },
- },
- "trytako/tako": {
- id: "trytako/tako",
- name: "Tako",
- 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 },
- },
- "poetools/claude-code": {
- id: "poetools/claude-code",
- name: "claude-code",
- attachment: true,
- reasoning: true,
- 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 },
- },
- },
- },
- 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: {
- "mistral-nemo": {
- id: "mistral-nemo",
- name: "Mistral Nemo",
- 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,
- cost: { input: 20, output: 40 },
- limit: { context: 128000, output: 16400 },
- },
- "grok-4-1-fast-reasoning": {
- id: "grok-4-1-fast-reasoning",
- name: "xAI Grok 4.1 Fast Reasoning",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.19999999999999998, output: 0.5, cache_read: 0.049999999999999996 },
- limit: { context: 2000000, output: 2000000 },
- },
- "gemma2-9b-it": {
- id: "gemma2-9b-it",
- name: "Google Gemma 2",
- 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,
- cost: { input: 0.01, output: 0.03 },
- limit: { context: 8192, output: 8192 },
- },
- "llama-3.3-70b-instruct": {
- id: "llama-3.3-70b-instruct",
- name: "Meta Llama 3.3 70B Instruct",
- 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,
- cost: { input: 0.13, output: 0.39 },
- limit: { context: 128000, output: 16400 },
- },
- "llama-4-scout": {
- id: "llama-4-scout",
- name: "Meta Llama 4 Scout 17B 16E",
- 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,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 131072, output: 8192 },
- },
- "chatgpt-4o-latest": {
- id: "chatgpt-4o-latest",
- name: "OpenAI ChatGPT-4o",
- 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,
- cost: { input: 5, output: 20, cache_read: 2.5 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-3.5-sonnet-v2": {
- id: "claude-3.5-sonnet-v2",
- name: "Anthropic: Claude 3.5 Sonnet v2",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.30000000000000004, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "hermes-2-pro-llama-3-8b": {
- id: "hermes-2-pro-llama-3-8b",
- name: "Hermes 2 Pro Llama 3 8B",
- 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,
- cost: { input: 0.14, output: 0.14 },
- limit: { context: 131072, output: 131072 },
- },
- "claude-3.7-sonnet": {
- id: "claude-3.7-sonnet",
- name: "Anthropic: Claude 3.7 Sonnet",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.30000000000000004, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "llama-prompt-guard-2-22m": {
- id: "llama-prompt-guard-2-22m",
- name: "Meta Llama Prompt Guard 2 22M",
- 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,
- cost: { input: 0.01, output: 0.01 },
- limit: { context: 512, output: 2 },
- },
- "o1-mini": {
- id: "o1-mini",
- name: "OpenAI: o1-mini",
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 128000, output: 65536 },
- },
- "gpt-4.1-mini-2025-04-14": {
- id: "gpt-4.1-mini-2025-04-14",
- name: "OpenAI GPT-4.1 Mini",
- 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,
- cost: { input: 0.39999999999999997, output: 1.5999999999999999, cache_read: 0.09999999999999999 },
- limit: { context: 1047576, output: 32768 },
- },
- "deepseek-r1-distill-llama-70b": {
- id: "deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.03, output: 0.13 },
- limit: { context: 128000, output: 4096 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 0.59 },
- limit: { context: 131072, output: 40960 },
- },
- "llama-3.3-70b-versatile": {
- id: "llama-3.3-70b-versatile",
- name: "Meta Llama 3.3 70B Versatile",
- 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,
- cost: { input: 0.59, output: 0.7899999999999999 },
- limit: { context: 131072, output: 32678 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "OpenAI GPT-5 Mini",
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.024999999999999998 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "OpenAI GPT-5 Nano",
- 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,
- cost: { input: 0.049999999999999996, output: 0.39999999999999997, cache_read: 0.005 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Google Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.19999999999999998 },
- limit: { context: 1048576, output: 65536 },
- },
- "claude-3-haiku-20240307": {
- id: "claude-3-haiku-20240307",
- name: "Anthropic: Claude 3 Haiku",
- 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,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "llama-4-maverick": {
- id: "llama-4-maverick",
- name: "Meta Llama 4 Maverick 17B 128E",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 8192 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "Anthropic: Claude Sonnet 4.5 (20250929)",
- family: "claude-sonnet",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.30000000000000004, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Google Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.3125, cache_write: 1.25 },
- limit: { context: 1048576, output: 65536 },
- },
- "claude-4.5-opus": {
- id: "claude-4.5-opus",
- name: "Anthropic: Claude Opus 4.5",
- family: "claude-opus",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "xAI Grok 4.1 Fast Non-Reasoning",
- 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,
- cost: { input: 0.19999999999999998, output: 0.5, cache_read: 0.049999999999999996 },
- limit: { context: 2000000, output: 30000 },
- },
- "sonar-pro": {
- id: "sonar-pro",
- name: "Perplexity Sonar Pro",
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 4096 },
- },
- "mistral-large-2411": {
- id: "mistral-large-2411",
- name: "Mistral-Large",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 32768 },
- },
- "o3-pro": {
- id: "o3-pro",
- name: "OpenAI o3 Pro",
- 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,
- cost: { input: 20, output: 80 },
- limit: { context: 200000, output: 100000 },
- },
- "claude-opus-4-1": {
- id: "claude-opus-4-1",
- name: "Anthropic: Claude Opus 4.1",
- family: "claude-opus",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-4o-mini": {
- id: "gpt-4o-mini",
- name: "OpenAI GPT-4o-mini",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.075 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-4.5-haiku": {
- id: "claude-4.5-haiku",
- name: "Anthropic: Claude 4.5 Haiku",
- 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,
- cost: { input: 1, output: 5, cache_read: 0.09999999999999999, cache_write: 1.25 },
- limit: { context: 200000, output: 8192 },
- },
- "kimi-k2-0711": {
- id: "kimi-k2-0711",
- name: "Kimi K2 (07/11)",
- family: "kimi",
- 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,
- cost: { input: 0.5700000000000001, output: 2.3 },
- limit: { context: 131072, output: 16384 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "OpenAI o4 Mini",
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.275 },
- limit: { context: 200000, output: 100000 },
- },
- "sonar-deep-research": {
- id: "sonar-deep-research",
- name: "Perplexity Sonar Deep Research",
- family: "sonar-deep-research",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8 },
- limit: { context: 127000, output: 4096 },
- },
- "gemma-3-12b-it": {
- id: "gemma-3-12b-it",
- name: "Google Gemma 3 12B",
- 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,
- cost: { input: 0.049999999999999996, output: 0.09999999999999999 },
- limit: { context: 131072, output: 8192 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Google Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, cache_write: 0.3 },
- limit: { context: 1048576, output: 65535 },
- },
- "deepseek-tng-r1t2-chimera": {
- id: "deepseek-tng-r1t2-chimera",
- name: "DeepSeek TNG R1T2 Chimera",
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 130000, output: 163840 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "OpenAI: GPT-5.1 Codex Mini",
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.024999999999999998 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-sonnet-4": {
- id: "claude-sonnet-4",
- name: "Anthropic: Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.30000000000000004, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "xAI Grok Code Fast 1",
- 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,
- cost: { input: 0.19999999999999998, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "OpenAI GPT-5.1",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12500000000000003 },
- limit: { context: 400000, output: 128000 },
- },
- "deepseek-reasoner": {
- id: "deepseek-reasoner",
- name: "DeepSeek Reasoner",
- 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,
- cost: { input: 0.56, output: 1.68, cache_read: 0.07 },
- limit: { context: 128000, output: 64000 },
- },
- "grok-4-fast-reasoning": {
- id: "grok-4-fast-reasoning",
- name: "xAI: Grok 4 Fast Reasoning",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.19999999999999998, output: 0.5, cache_read: 0.049999999999999996 },
- limit: { context: 2000000, output: 2000000 },
- },
- o1: {
- id: "o1",
- name: "OpenAI: o1",
- 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,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "llama-3.1-8b-instant": {
- id: "llama-3.1-8b-instant",
- name: "Meta Llama 3.1 8B Instant",
- 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,
- cost: { input: 0.049999999999999996, output: 0.08 },
- limit: { context: 131072, output: 32678 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "OpenAI o3 Mini",
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- sonar: {
- id: "sonar",
- name: "Perplexity Sonar",
- 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,
- cost: { input: 1, output: 1 },
- limit: { context: 127000, output: 4096 },
- },
- "kimi-k2-0905": {
- id: "kimi-k2-0905",
- name: "Kimi K2 (09/05)",
- family: "kimi",
- 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,
- cost: { input: 0.5, output: 2, cache_read: 0.39999999999999997 },
- limit: { context: 262144, output: 16384 },
- },
- "mistral-small": {
- id: "mistral-small",
- name: "Mistral Small",
- family: "mistral-small",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-02",
- release_date: "2024-02-26",
- last_updated: "2024-02-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 75, output: 200 },
- limit: { context: 128000, output: 128000 },
- },
- "qwen3-30b-a3b": {
- id: "qwen3-30b-a3b",
- name: "Qwen3 30B A3B",
- 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,
- cost: { input: 0.08, output: 0.29 },
- limit: { context: 41000, output: 41000 },
- },
- "codex-mini-latest": {
- id: "codex-mini-latest",
- name: "OpenAI Codex Mini Latest",
- family: "gpt-codex-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,
- cost: { input: 1.5, output: 6, cache_read: 0.375 },
- limit: { context: 200000, output: 100000 },
- },
- "grok-4": {
- id: "grok-4",
- name: "xAI Grok 4",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 256000 },
- },
- "qwen3-235b-a22b-thinking": {
- id: "qwen3-235b-a22b-thinking",
- name: "Qwen3 235B A22B Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.9000000000000004 },
- limit: { context: 262144, output: 81920 },
- },
- "qwen2.5-coder-7b-fast": {
- id: "qwen2.5-coder-7b-fast",
- name: "Qwen2.5 Coder 7B fast",
- 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,
- cost: { input: 0.03, output: 0.09 },
- limit: { context: 32000, output: 8192 },
- },
- "llama-3.1-8b-instruct-turbo": {
- id: "llama-3.1-8b-instruct-turbo",
- name: "Meta Llama 3.1 8B Instruct Turbo",
- 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,
- cost: { input: 0.02, output: 0.03 },
- limit: { context: 128000, output: 128000 },
- },
- "qwen3-next-80b-a3b-instruct": {
- id: "qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- 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,
- cost: { input: 0.14, output: 1.4 },
- limit: { context: 262000, output: 16384 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "Zai GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.44999999999999996, output: 1.5 },
- limit: { context: 204800, output: 131072 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "OpenAI: GPT-5 Codex",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12500000000000003 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "Anthropic: Claude Opus 4.1 (20250805)",
- family: "claude-opus",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-5.1-chat-latest": {
- id: "gpt-5.1-chat-latest",
- name: "OpenAI GPT-5.1 Chat",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12500000000000003 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "Anthropic: Claude 4.5 Haiku (20251001)",
- 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,
- cost: { input: 1, output: 5, cache_read: 0.09999999999999999, cache_write: 1.25 },
- limit: { context: 200000, output: 8192 },
- },
- "sonar-reasoning": {
- id: "sonar-reasoning",
- name: "Perplexity Sonar Reasoning",
- family: "sonar-reasoning",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5 },
- limit: { context: 127000, output: 4096 },
- },
- "claude-opus-4": {
- id: "claude-opus-4",
- name: "Anthropic: Claude Opus 4",
- family: "claude-opus",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "llama-prompt-guard-2-86m": {
- id: "llama-prompt-guard-2-86m",
- name: "Meta Llama Prompt Guard 2 86M",
- 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,
- cost: { input: 0.01, output: 0.01 },
- limit: { context: 512, output: 2 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "OpenAI GPT-4.1 Nano",
- 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,
- cost: { input: 0.09999999999999999, output: 0.39999999999999997, cache_read: 0.024999999999999998 },
- limit: { context: 1047576, output: 32768 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3 Coder 30B A3B Instruct",
- 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,
- cost: { input: 0.09999999999999999, output: 0.3 },
- limit: { context: 262144, output: 262144 },
- },
- "claude-3.5-haiku": {
- id: "claude-3.5-haiku",
- name: "Anthropic: Claude 3.5 Haiku",
- 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,
- cost: { input: 0.7999999999999999, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "grok-3-mini": {
- id: "grok-3-mini",
- name: "xAI Grok 3 Mini",
- 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,
- cost: { input: 0.3, output: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 131072 },
- },
- o3: {
- id: "o3",
- name: "OpenAI o3",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek V3.2",
- 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,
- cost: { input: 0.27, output: 0.41 },
- limit: { context: 163840, output: 65536 },
- },
- "gpt-oss-20b": {
- id: "gpt-oss-20b",
- name: "OpenAI GPT-OSS 20b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.049999999999999996, output: 0.19999999999999998 },
- limit: { context: 131072, output: 131072 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "OpenAI: GPT-5 Pro",
- 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,
- cost: { input: 15, output: 120 },
- limit: { context: 128000, output: 32768 },
- },
- "llama-guard-4": {
- id: "llama-guard-4",
- name: "Meta Llama Guard 4 12B",
- 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,
- cost: { input: 0.21, output: 0.21 },
- limit: { context: 131072, output: 1024 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "OpenAI GPT-4o",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen3-vl-235b-a22b-instruct": {
- id: "qwen3-vl-235b-a22b-instruct",
- name: "Qwen3 VL 235B A22B Instruct",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 256000, output: 16384 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "Google Gemini 2.5 Flash Lite",
- family: "gemini-flash-lite",
- attachment: false,
- reasoning: true,
- 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,
- cost: {
- input: 0.09999999999999999,
- output: 0.39999999999999997,
- cache_read: 0.024999999999999998,
- cache_write: 0.09999999999999999,
- },
- limit: { context: 1048576, output: 65535 },
- },
- "qwen3-coder": {
- id: "qwen3-coder",
- name: "Qwen3 Coder 480B A35B Instruct Turbo",
- 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,
- cost: { input: 0.22, output: 0.95 },
- limit: { context: 262144, output: 16384 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "OpenAI GPT-5",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12500000000000003 },
- limit: { context: 400000, output: 128000 },
- },
- "ernie-4.5-21b-a3b-thinking": {
- id: "ernie-4.5-21b-a3b-thinking",
- name: "Baidu Ernie 4.5 21B A3B Thinking",
- family: "ernie",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 128000, output: 8000 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "OpenAI GPT-OSS 120b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.04, output: 0.16 },
- limit: { context: 131072, output: 131072 },
- },
- "gpt-5-chat-latest": {
- id: "gpt-5-chat-latest",
- name: "OpenAI GPT-5 Chat Latest",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12500000000000003 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-4.5-sonnet": {
- id: "claude-4.5-sonnet",
- name: "Anthropic: Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.30000000000000004, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "deepseek-v3": {
- id: "deepseek-v3",
- name: "DeepSeek V3",
- 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,
- cost: { input: 0.56, output: 1.68, cache_read: 0.07 },
- limit: { context: 128000, output: 8192 },
- },
- "llama-3.1-8b-instruct": {
- id: "llama-3.1-8b-instruct",
- name: "Meta Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.02, output: 0.049999999999999996 },
- limit: { context: 16384, output: 16384 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "OpenAI GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- 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,
- cost: { input: 0.48, output: 2 },
- limit: { context: 256000, output: 262144 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "OpenAI GPT-4.1 Mini",
- 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,
- cost: { input: 0.39999999999999997, output: 1.5999999999999999, cache_read: 0.09999999999999999 },
- limit: { context: 1047576, output: 32768 },
- },
- "deepseek-v3.1-terminus": {
- id: "deepseek-v3.1-terminus",
- name: "DeepSeek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1, cache_read: 0.21600000000000003 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "OpenAI: GPT-5.1 Codex",
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.12500000000000003 },
- limit: { context: 400000, output: 128000 },
- },
- "grok-3": {
- id: "grok-3",
- name: "xAI Grok 3",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 131072 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "xAI Grok 4 Fast Non-Reasoning",
- 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,
- cost: { input: 0.19999999999999998, output: 0.5, cache_read: 0.049999999999999996 },
- limit: { context: 2000000, output: 2000000 },
- },
- "sonar-reasoning-pro": {
- id: "sonar-reasoning-pro",
- name: "Perplexity Sonar Reasoning Pro",
- family: "sonar-reasoning",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8 },
- limit: { context: 127000, output: 4096 },
- },
- },
- },
- "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: {
- "minimax-m2.7": {
- id: "minimax-m2.7",
- name: "minimax-m2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 204800, output: 131072 },
- },
- "gpt-oss:20b": {
- id: "gpt-oss:20b",
- name: "gpt-oss:20b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "kimi-k2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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-4.7": {
- id: "glm-4.7",
- name: "glm-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-12-22",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 202752, output: 131072 },
- },
- "gemma4:31b": {
- id: "gemma4:31b",
- name: "gemma4:31b",
- family: "gemma",
- attachment: true,
- reasoning: true,
- 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: 8192 },
- },
- "gpt-oss:120b": {
- id: "gpt-oss:120b",
- name: "gpt-oss:120b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "qwen3.5:397b": {
- id: "qwen3.5:397b",
- name: "qwen3.5:397b",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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: 81920 },
- },
- "deepseek-v3.1:671b": {
- id: "deepseek-v3.1:671b",
- name: "deepseek-v3.1:671b",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-08-21",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 163840, output: 163840 },
- },
- "glm-5": {
- id: "glm-5",
- name: "glm-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 202752, output: 131072 },
- },
- "qwen3-vl:235b-instruct": {
- id: "qwen3-vl:235b-instruct",
- name: "qwen3-vl:235b-instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- release_date: "2025-09-22",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 131072 },
- },
- "gemma3:4b": {
- id: "gemma3:4b",
- name: "gemma3:4b",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- release_date: "2024-12-01",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 131072, output: 131072 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "gemini-3-flash-preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- knowledge: "2025-01",
- release_date: "2025-12-17",
- last_updated: "2026-04-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 1048576, output: 65536 },
- },
- "ministral-3:14b": {
- id: "ministral-3:14b",
- name: "ministral-3:14b",
- family: "ministral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- release_date: "2024-12-01",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 128000 },
- },
- "minimax-m2": {
- id: "minimax-m2",
- name: "minimax-m2",
- family: "minimax",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-10-23",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 204800, output: 128000 },
- },
- "qwen3-next:80b": {
- id: "qwen3-next:80b",
- name: "qwen3-next:80b",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-09-15",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 32768 },
- },
- "qwen3-vl:235b": {
- id: "qwen3-vl:235b",
- name: "qwen3-vl:235b",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- release_date: "2025-09-22",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 32768 },
- },
- "rnj-1:8b": {
- id: "rnj-1:8b",
- name: "rnj-1:8b",
- family: "rnj",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-12-06",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 32768, output: 4096 },
- },
- "minimax-m2.1": {
- id: "minimax-m2.1",
- name: "minimax-m2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-12-23",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 204800, output: 131072 },
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "glm-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "mistral-large-3:675b": {
- id: "mistral-large-3:675b",
- name: "mistral-large-3:675b",
- 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 },
- },
- "ministral-3:8b": {
- id: "ministral-3:8b",
- name: "ministral-3:8b",
- family: "ministral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- release_date: "2024-12-01",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 128000 },
- },
- "gemma3:12b": {
- id: "gemma3:12b",
- name: "gemma3:12b",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- release_date: "2024-12-01",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 131072, output: 131072 },
- },
- "qwen3-coder:480b": {
- id: "qwen3-coder:480b",
- name: "qwen3-coder:480b",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-07-22",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 65536 },
- },
- "nemotron-3-nano:30b": {
- id: "nemotron-3-nano:30b",
- name: "nemotron-3-nano:30b",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-12-15",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 1048576, output: 131072 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "glm-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-09-29",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 202752, output: 131072 },
- },
- "ministral-3:3b": {
- id: "ministral-3:3b",
- name: "ministral-3:3b",
- family: "ministral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- release_date: "2024-10-22",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 128000 },
- },
- "gemma3:27b": {
- id: "gemma3:27b",
- name: "gemma3:27b",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- release_date: "2025-07-27",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 131072, output: 131072 },
- },
- "devstral-2:123b": {
- id: "devstral-2:123b",
- name: "devstral-2:123b",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-12-09",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 262144 },
- },
- "cogito-2.1:671b": {
- id: "cogito-2.1:671b",
- name: "cogito-2.1:671b",
- family: "cogito",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-11-19",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 163840, output: 32000 },
- },
- "qwen3-coder-next": {
- id: "qwen3-coder-next",
- name: "qwen3-coder-next",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2026-02-02",
- last_updated: "2026-02-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 65536 },
- },
- "nemotron-3-super": {
- id: "nemotron-3-super",
- name: "nemotron-3-super",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 65536 },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "minimax-m2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "deepseek-v3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-06-15",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 163840, output: 65536 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "kimi-k2-thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- knowledge: "2024-08",
- release_date: "2025-11-06",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 262144 },
- },
- "devstral-small-2:24b": {
- id: "devstral-small-2:24b",
- name: "devstral-small-2:24b",
- family: "devstral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- release_date: "2025-12-09",
- last_updated: "2026-01-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2:1t": {
- id: "kimi-k2:1t",
- name: "kimi-k2:1t",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- knowledge: "2024-10",
- release_date: "2025-07-11",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- "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-5v-turbo": {
- id: "glm-5v-turbo",
- name: "glm-5v-turbo",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.7-flashx": {
- id: "glm-4.7-flashx",
- name: "GLM-4.7-FlashX",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.4, cache_read: 0.01, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM-4.5-Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-5-turbo": {
- id: "glm-5-turbo",
- name: "GLM-5-Turbo",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5v": {
- id: "glm-4.5v",
- name: "GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 64000, output: 16384 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "glm-4.5-flash": {
- id: "glm-4.5-flash",
- name: "GLM-4.5-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.7-flash": {
- id: "glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- },
- },
- "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: {
- "anthropic.claude-opus-4-1-20250805-v1:0": {
- id: "anthropic.claude-opus-4-1-20250805-v1:0",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic.claude-3-5-sonnet-20241022-v2:0": {
- id: "anthropic.claude-3-5-sonnet-20241022-v2:0",
- name: "Claude Sonnet 3.5 v2",
- family: "claude-sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-10-22",
- last_updated: "2024-10-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "openai.gpt-oss-safeguard-120b": {
- id: "openai.gpt-oss-safeguard-120b",
- name: "GPT OSS Safeguard 120B",
- family: "gpt-oss",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia.nemotron-nano-3-30b": {
- id: "nvidia.nemotron-nano-3-30b",
- name: "NVIDIA Nemotron Nano 3 30B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.24 },
- limit: { context: 128000, output: 4096 },
- },
- "meta.llama3-2-90b-instruct-v1:0": {
- id: "meta.llama3-2-90b-instruct-v1:0",
- name: "Llama 3.2 90B Instruct",
- 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,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia.nemotron-super-3-120b": {
- id: "nvidia.nemotron-super-3-120b",
- name: "NVIDIA Nemotron 3 Super 120B A12B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.65 },
- limit: { context: 262144, output: 131072 },
- },
- "writer.palmyra-x5-v1:0": {
- id: "writer.palmyra-x5-v1:0",
- name: "Palmyra X5",
- family: "palmyra",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-28",
- last_updated: "2025-04-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 6 },
- limit: { context: 1040000, output: 8192 },
- },
- "mistral.ministral-3-8b-instruct": {
- id: "mistral.ministral-3-8b-instruct",
- name: "Ministral 3 8B",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 4096 },
- },
- "anthropic.claude-3-5-sonnet-20240620-v1:0": {
- id: "anthropic.claude-3-5-sonnet-20240620-v1:0",
- name: "Claude Sonnet 3.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-06-20",
- last_updated: "2024-06-20",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "mistral.ministral-3-3b-instruct": {
- id: "mistral.ministral-3-3b-instruct",
- name: "Ministral 3 3B",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 256000, output: 8192 },
- },
- "eu.anthropic.claude-opus-4-6-v1": {
- id: "eu.anthropic.claude-opus-4-6-v1",
- name: "Claude Opus 4.6 (EU)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2026-02-05",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "amazon.nova-premier-v1:0": {
- id: "amazon.nova-premier-v1:0",
- name: "Nova Premier",
- family: "nova",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 12.5 },
- limit: { context: 1000000, output: 16384 },
- },
- "eu.anthropic.claude-sonnet-4-20250514-v1:0": {
- id: "eu.anthropic.claude-sonnet-4-20250514-v1:0",
- name: "Claude Sonnet 4 (EU)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic.claude-sonnet-4-5-20250929-v1:0": {
- id: "anthropic.claude-sonnet-4-5-20250929-v1:0",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "mistral.devstral-2-123b": {
- id: "mistral.devstral-2-123b",
- name: "Devstral 2 123B",
- family: "devstral",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 256000, output: 8192 },
- },
- "us.anthropic.claude-opus-4-20250514-v1:0": {
- id: "us.anthropic.claude-opus-4-20250514-v1:0",
- name: "Claude Opus 4 (US)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "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)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "mistral.voxtral-small-24b-2507": {
- id: "mistral.voxtral-small-24b-2507",
- name: "Voxtral Small 24B 2507",
- 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,
- cost: { input: 0.15, output: 0.35 },
- limit: { context: 32000, output: 8192 },
- },
- "google.gemma-3-12b-it": {
- id: "google.gemma-3-12b-it",
- name: "Google Gemma 3 12B",
- 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,
- cost: { input: 0.049999999999999996, output: 0.09999999999999999 },
- limit: { context: 131072, output: 8192 },
- },
- "amazon.nova-pro-v1:0": {
- id: "amazon.nova-pro-v1:0",
- name: "Nova Pro",
- 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,
- cost: { input: 0.8, output: 3.2, cache_read: 0.2 },
- limit: { context: 300000, output: 8192 },
- },
- "anthropic.claude-haiku-4-5-20251001-v1:0": {
- id: "anthropic.claude-haiku-4-5-20251001-v1:0",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "minimax.minimax-m2": {
- id: "minimax.minimax-m2",
- name: "MiniMax M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204608, output: 128000 },
- },
- "mistral.pixtral-large-2502-v1:0": {
- id: "mistral.pixtral-large-2502-v1:0",
- name: "Pixtral Large (25.02)",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 8192 },
- },
- "meta.llama4-maverick-17b-instruct-v1:0": {
- id: "meta.llama4-maverick-17b-instruct-v1:0",
- name: "Llama 4 Maverick 17B Instruct",
- 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,
- cost: { input: 0.24, output: 0.97 },
- limit: { context: 1000000, output: 16384 },
- },
- "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)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "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)",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "amazon.nova-micro-v1:0": {
- id: "amazon.nova-micro-v1:0",
- name: "Nova Micro",
- 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,
- cost: { input: 0.035, output: 0.14, cache_read: 0.00875 },
- limit: { context: 128000, output: 8192 },
- },
- "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)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic.claude-sonnet-4-6": {
- id: "anthropic.claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2026-02-17",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "openai.gpt-oss-20b-1:0": {
- id: "openai.gpt-oss-20b-1:0",
- name: "gpt-oss-20b",
- family: "gpt-oss",
- 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,
- cost: { input: 0.07, output: 0.3 },
- limit: { context: 128000, output: 4096 },
- },
- "us.anthropic.claude-sonnet-4-20250514-v1:0": {
- id: "us.anthropic.claude-sonnet-4-20250514-v1:0",
- name: "Claude Sonnet 4 (US)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "zai.glm-5": {
- id: "zai.glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2 },
- limit: { context: 202752, output: 101376 },
- },
- "qwen.qwen3-32b-v1:0": {
- id: "qwen.qwen3-32b-v1:0",
- name: "Qwen3 32B (dense)",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 16384, output: 16384 },
- },
- "deepseek.v3.2": {
- id: "deepseek.v3.2",
- name: "DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2026-02-06",
- last_updated: "2026-02-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.62, output: 1.85 },
- limit: { context: 163840, output: 81920 },
- },
- "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)",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "zai.glm-4.7-flash": {
- id: "zai.glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.4 },
- limit: { context: 200000, output: 131072 },
- },
- "amazon.nova-2-lite-v1:0": {
- id: "amazon.nova-2-lite-v1:0",
- name: "Nova 2 Lite",
- family: "nova",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.33, output: 2.75 },
- limit: { context: 128000, output: 4096 },
- },
- "anthropic.claude-opus-4-5-20251101-v1:0": {
- id: "anthropic.claude-opus-4-5-20251101-v1:0",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "qwen.qwen3-coder-480b-a35b-v1:0": {
- id: "qwen.qwen3-coder-480b-a35b-v1:0",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 0.22, output: 1.8 },
- limit: { context: 131072, output: 65536 },
- },
- "meta.llama3-2-1b-instruct-v1:0": {
- id: "meta.llama3-2-1b-instruct-v1:0",
- name: "Llama 3.2 1B Instruct",
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131000, output: 4096 },
- },
- "amazon.nova-lite-v1:0": {
- id: "amazon.nova-lite-v1:0",
- name: "Nova Lite",
- 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,
- cost: { input: 0.06, output: 0.24, cache_read: 0.015 },
- limit: { context: 300000, output: 8192 },
- },
- "meta.llama3-1-8b-instruct-v1:0": {
- id: "meta.llama3-1-8b-instruct-v1:0",
- name: "Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.22, output: 0.22 },
- limit: { context: 128000, output: 4096 },
- },
- "global.anthropic.claude-sonnet-4-6": {
- id: "global.anthropic.claude-sonnet-4-6",
- name: "Claude Sonnet 4.6 (Global)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2026-02-17",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "us.anthropic.claude-sonnet-4-6": {
- id: "us.anthropic.claude-sonnet-4-6",
- name: "Claude Sonnet 4.6 (US)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2026-02-17",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "global.anthropic.claude-opus-4-6-v1": {
- id: "global.anthropic.claude-opus-4-6-v1",
- name: "Claude Opus 4.6 (Global)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2026-02-05",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "google.gemma-3-27b-it": {
- id: "google.gemma-3-27b-it",
- name: "Google Gemma 3 27B Instruct",
- 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,
- cost: { input: 0.12, output: 0.2 },
- limit: { context: 202752, output: 8192 },
- },
- "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)",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "google.gemma-3-4b-it": {
- id: "google.gemma-3-4b-it",
- name: "Gemma 3 4B IT",
- 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,
- cost: { input: 0.04, output: 0.08 },
- limit: { context: 128000, output: 4096 },
- },
- "us.anthropic.claude-opus-4-6-v1": {
- id: "us.anthropic.claude-opus-4-6-v1",
- name: "Claude Opus 4.6 (US)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2026-02-05",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "meta.llama4-scout-17b-instruct-v1:0": {
- id: "meta.llama4-scout-17b-instruct-v1:0",
- name: "Llama 4 Scout 17B Instruct",
- 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,
- cost: { input: 0.17, output: 0.66 },
- limit: { context: 3500000, output: 16384 },
- },
- "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)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "deepseek.v3-v1:0": {
- id: "deepseek.v3-v1:0",
- name: "DeepSeek-V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 1.68 },
- limit: { context: 163840, output: 81920 },
- },
- "mistral.magistral-small-2509": {
- id: "mistral.magistral-small-2509",
- name: "Magistral Small 1.2",
- family: "magistral",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 128000, output: 40000 },
- },
- "qwen.qwen3-next-80b-a3b": {
- id: "qwen.qwen3-next-80b-a3b",
- name: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- 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,
- cost: { input: 0.14, output: 1.4 },
- limit: { context: 262000, output: 262000 },
- },
- "zai.glm-4.7": {
- id: "zai.glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 204800, output: 131072 },
- },
- "moonshot.kimi-k2-thinking": {
- id: "moonshot.kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 256000, output: 256000 },
- },
- "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)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "mistral.ministral-3-14b-instruct": {
- id: "mistral.ministral-3-14b-instruct",
- name: "Ministral 14B 3.0",
- 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,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, output: 4096 },
- },
- "anthropic.claude-3-haiku-20240307-v1:0": {
- id: "anthropic.claude-3-haiku-20240307-v1:0",
- name: "Claude Haiku 3",
- family: "claude-haiku",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-02",
- release_date: "2024-03-13",
- last_updated: "2024-03-13",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.25 },
- limit: { context: 200000, output: 4096 },
- },
- "global.anthropic.claude-sonnet-4-20250514-v1:0": {
- id: "global.anthropic.claude-sonnet-4-20250514-v1:0",
- name: "Claude Sonnet 4 (Global)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "deepseek.r1-v1:0": {
- id: "deepseek.r1-v1:0",
- name: "DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 128000, output: 32768 },
- },
- "meta.llama3-1-405b-instruct-v1:0": {
- id: "meta.llama3-1-405b-instruct-v1:0",
- name: "Llama 3.1 405B Instruct",
- 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,
- cost: { input: 2.4, output: 2.4 },
- limit: { context: 128000, output: 4096 },
- },
- "mistral.voxtral-mini-3b-2507": {
- id: "mistral.voxtral-mini-3b-2507",
- name: "Voxtral Mini 3B 2507",
- 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,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 128000, output: 4096 },
- },
- "eu.anthropic.claude-sonnet-4-6": {
- id: "eu.anthropic.claude-sonnet-4-6",
- name: "Claude Sonnet 4.6 (EU)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2026-02-17",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "openai.gpt-oss-120b-1:0": {
- id: "openai.gpt-oss-120b-1:0",
- name: "gpt-oss-120b",
- family: "gpt-oss",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia.nemotron-nano-12b-v2": {
- id: "nvidia.nemotron-nano-12b-v2",
- name: "NVIDIA Nemotron Nano 12B v2 VL BF16",
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 128000, output: 4096 },
- },
- "minimax.minimax-m2.5": {
- id: "minimax.minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 196608, output: 98304 },
- },
- "meta.llama3-3-70b-instruct-v1:0": {
- id: "meta.llama3-3-70b-instruct-v1:0",
- name: "Llama 3.3 70B Instruct",
- 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,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 128000, output: 4096 },
- },
- "meta.llama3-1-70b-instruct-v1:0": {
- id: "meta.llama3-1-70b-instruct-v1:0",
- name: "Llama 3.1 70B Instruct",
- 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,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 128000, output: 4096 },
- },
- "meta.llama3-2-3b-instruct-v1:0": {
- id: "meta.llama3-2-3b-instruct-v1:0",
- name: "Llama 3.2 3B Instruct",
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 131000, output: 4096 },
- },
- "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)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic.claude-opus-4-20250514-v1:0": {
- id: "anthropic.claude-opus-4-20250514-v1:0",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "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)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic.claude-sonnet-4-20250514-v1:0": {
- id: "anthropic.claude-sonnet-4-20250514-v1:0",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "meta.llama3-2-11b-instruct-v1:0": {
- id: "meta.llama3-2-11b-instruct-v1:0",
- name: "Llama 3.2 11B Instruct",
- 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,
- cost: { input: 0.16, output: 0.16 },
- limit: { context: 128000, output: 4096 },
- },
- "moonshotai.kimi-k2.5": {
- id: "moonshotai.kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- release_date: "2026-02-06",
- last_updated: "2026-02-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3 },
- limit: { context: 256000, output: 256000 },
- },
- "openai.gpt-oss-safeguard-20b": {
- id: "openai.gpt-oss-safeguard-20b",
- name: "GPT OSS Safeguard 20B",
- family: "gpt-oss",
- 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,
- cost: { input: 0.07, output: 0.2 },
- limit: { context: 128000, output: 4096 },
- },
- "anthropic.claude-opus-4-6-v1": {
- id: "anthropic.claude-opus-4-6-v1",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2026-02-05",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "qwen.qwen3-coder-30b-a3b-v1:0": {
- id: "qwen.qwen3-coder-30b-a3b-v1:0",
- name: "Qwen3 Coder 30B A3B Instruct",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 262144, output: 131072 },
- },
- "minimax.minimax-m2.1": {
- id: "minimax.minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen.qwen3-vl-235b-a22b": {
- id: "qwen.qwen3-vl-235b-a22b",
- name: "Qwen/Qwen3-VL-235B-A22B-Instruct",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 262000, output: 262000 },
- },
- "qwen.qwen3-coder-next": {
- id: "qwen.qwen3-coder-next",
- name: "Qwen3 Coder Next",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.22, output: 1.8 },
- limit: { context: 131072, output: 65536 },
- },
- "anthropic.claude-3-5-haiku-20241022-v1:0": {
- id: "anthropic.claude-3-5-haiku-20241022-v1:0",
- name: "Claude Haiku 3.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2024-10-22",
- last_updated: "2024-10-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "nvidia.nemotron-nano-9b-v2": {
- id: "nvidia.nemotron-nano-9b-v2",
- name: "NVIDIA Nemotron Nano 9B v2",
- 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,
- cost: { input: 0.06, output: 0.23 },
- limit: { context: 128000, output: 4096 },
- },
- "mistral.mistral-large-3-675b-instruct": {
- id: "mistral.mistral-large-3-675b-instruct",
- name: "Mistral Large 3",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 256000, output: 8192 },
- },
- "qwen.qwen3-235b-a22b-2507-v1:0": {
- id: "qwen.qwen3-235b-a22b-2507-v1:0",
- name: "Qwen3 235B A22B 2507",
- 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,
- cost: { input: 0.22, output: 0.88 },
- limit: { context: 262144, output: 131072 },
- },
- "anthropic.claude-3-7-sonnet-20250219-v1:0": {
- id: "anthropic.claude-3-7-sonnet-20250219-v1:0",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "writer.palmyra-x4-v1:0": {
- id: "writer.palmyra-x4-v1:0",
- name: "Palmyra X4",
- family: "palmyra",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-28",
- last_updated: "2025-04-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 122880, output: 8192 },
- },
- },
- },
- "the-grid-ai": {
- id: "the-grid-ai",
- env: ["THEGRIDAI_API_KEY"],
- npm: "@ai-sdk/openai-compatible",
- api: "https://api.thegrid.ai/v1",
- name: "The Grid AI",
- doc: "https://thegrid.ai/docs",
- models: {
- "text-prime": {
- id: "text-prime",
- name: "Text Prime",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-02-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 128000, output: 30000 },
- status: "beta",
- },
- "text-standard": {
- id: "text-standard",
- name: "Text Standard",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-02-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 128000, output: 16000 },
- status: "beta",
- },
- "text-max": {
- id: "text-max",
- name: "Text Max",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-24",
- last_updated: "2026-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 1000000, output: 128000 },
- status: "beta",
- },
- },
- },
- 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/development/model-apis/overview",
- models: {
- "zai-org/GLM-4.7": {
- id: "zai-org/GLM-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 204800, output: 131072 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.95, output: 3.15 },
- limit: { context: 202752, output: 131072 },
- },
- "zai-org/GLM-4.6": {
- id: "zai-org/GLM-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08-31",
- release_date: "2025-09-16",
- last_updated: "2025-09-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 200000, output: 200000 },
- },
- "nvidia/Nemotron-120B-A12B": {
- id: "nvidia/Nemotron-120B-A12B",
- name: "Nemotron 3 Super",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.75 },
- limit: { context: 262144, output: 32678 },
- },
- "deepseek-ai/DeepSeek-V3.1": {
- id: "deepseek-ai/DeepSeek-V3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-25",
- last_updated: "2025-08-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 164000, output: 131000 },
- },
- "deepseek-ai/DeepSeek-V3-0324": {
- id: "deepseek-ai/DeepSeek-V3-0324",
- name: "DeepSeek V3 0324",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.77, output: 0.77 },
- limit: { context: 164000, output: 131000 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-10",
- release_date: "2025-12-01",
- last_updated: "2026-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.45 },
- limit: { context: 163800, output: 131100 },
- status: "deprecated",
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 128000, output: 128000 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-08",
- release_date: "2025-11-06",
- last_updated: "2026-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 262144 },
- status: "deprecated",
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi K2 Instruct 0905",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-09-05",
- last_updated: "2026-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 262144 },
- status: "deprecated",
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-12",
- release_date: "2026-01-30",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3 },
- limit: { context: 262144, output: 8192 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204000, output: 204000 },
- },
- },
- },
- "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-5v-turbo": {
- id: "glm-5v-turbo",
- name: "glm-5v-turbo",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.6v-flash": {
- id: "glm-4.6v-flash",
- name: "GLM-4.6V-Flash",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "glm-4.7-flash": {
- id: "glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5-flash": {
- id: "glm-4.5-flash",
- name: "GLM-4.5-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.5v": {
- id: "glm-4.5v",
- name: "GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 64000, output: 16384 },
- },
- "glm-5-turbo": {
- id: "glm-5-turbo",
- name: "GLM-5-Turbo",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM-4.5-Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.7-flashx": {
- id: "glm-4.7-flashx",
- name: "GLM-4.7-FlashX",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.4, cache_read: 0.01, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- "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-plus": {
- id: "qwen3-coder-plus",
- name: "Qwen3 Coder Plus",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 65536 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 202752, output: 16384 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 202752, output: 16384 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 196608, input: 196601, output: 24576 },
- },
- "qwen3.6-plus": {
- id: "qwen3.6-plus",
- name: "Qwen3.6 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen3-max-2026-01-23": {
- id: "qwen3-max-2026-01-23",
- name: "Qwen3 Max",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen3-coder-next": {
- id: "qwen3-coder-next",
- name: "Qwen3 Coder Next",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen3.5-plus": {
- id: "qwen3.5-plus",
- name: "Qwen3.5 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 65536 },
- },
- },
- },
- venice: {
- id: "venice",
- env: ["VENICE_API_KEY"],
- npm: "venice-ai-sdk-provider",
- name: "Venice AI",
- doc: "https://docs.venice.ai",
- models: {
- "openai-gpt-4o-mini-2024-07-18": {
- id: "openai-gpt-4o-mini-2024-07-18",
- name: "GPT-4o Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-28",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1875, output: 0.75, cache_read: 0.09375 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen3-next-80b": {
- id: "qwen3-next-80b",
- name: "Qwen 3 Next 80b",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-04-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 1.9 },
- limit: { context: 256000, output: 16384 },
- },
- "qwen3-235b-a22b-instruct-2507": {
- id: "qwen3-235b-a22b-instruct-2507",
- name: "Qwen 3 235B A22B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-04-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.75 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-41-fast": {
- id: "grok-41-fast",
- name: "Grok 4.1 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-12-01",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.23, output: 0.57, cache_read: 0.06 },
- limit: { context: 1000000, output: 30000 },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-17",
- last_updated: "2026-03-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.6, output: 18, cache_read: 0.36, cache_write: 4.5 },
- limit: { context: 1000000, output: 64000 },
- },
- "nvidia-nemotron-cascade-2-30b-a3b": {
- id: "nvidia-nemotron-cascade-2-30b-a3b",
- name: "Nemotron Cascade 2 30B A3B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-24",
- last_updated: "2026-04-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 0.8 },
- limit: { context: 256000, output: 32768 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-12-19",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.7, output: 3.75, cache_read: 0.07 },
- limit: { context: 256000, output: 65536 },
- },
- "qwen3-coder-480b-a35b-instruct-turbo": {
- id: "qwen3-coder-480b-a35b-instruct-turbo",
- name: "Qwen 3 Coder 480B Turbo",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-02-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 1.5, cache_read: 0.04 },
- limit: { context: 256000, output: 65536 },
- },
- "qwen3-5-397b-a17b": {
- id: "qwen3-5-397b-a17b",
- name: "Qwen 3.5 397B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-16",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.75, output: 4.5 },
- limit: { context: 128000, output: 32768 },
- },
- "zai-org-glm-4.7": {
- id: "zai-org-glm-4.7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-12-24",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.65, cache_read: 0.11 },
- limit: { context: 198000, output: 16384 },
- },
- "openai-gpt-54": {
- id: "openai-gpt-54",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-05",
- last_updated: "2026-03-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.13, output: 18.8, cache_read: 0.313 },
- limit: { context: 1000000, output: 131072 },
- },
- "zai-org-glm-4.7-flash": {
- id: "zai-org-glm-4.7-flash",
- name: "GLM 4.7 Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 128000, output: 16384 },
- },
- "nvidia-nemotron-3-nano-30b-a3b": {
- id: "nvidia-nemotron-3-nano-30b-a3b",
- name: "NVIDIA Nemotron 3 Nano 30B",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen3-vl-235b-a22b": {
- id: "qwen3-vl-235b-a22b",
- name: "Qwen3 VL 235B",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-16",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 1.5 },
- limit: { context: 256000, output: 16384 },
- },
- "openai-gpt-53-codex": {
- id: "openai-gpt-53-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.19, output: 17.5, cache_read: 0.219 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-sonnet-45": {
- id: "claude-sonnet-45",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-01-15",
- last_updated: "2026-01-28",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.75, output: 18.75, cache_read: 0.375, cache_write: 4.69 },
- limit: { context: 198000, output: 49500 },
- },
- "openai-gpt-52": {
- id: "openai-gpt-52",
- name: "GPT-5.2",
- family: "gpt",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08-31",
- release_date: "2025-12-13",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.19, output: 17.5, cache_read: 0.219 },
- limit: { context: 256000, output: 65536 },
- },
- "mistral-small-3-2-24b-instruct": {
- id: "mistral-small-3-2-24b-instruct",
- name: "Mistral Small 3.2 24B Instruct",
- family: "mistral-small",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-15",
- last_updated: "2026-03-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09375, output: 0.25 },
- limit: { context: 256000, output: 16384 },
- },
- "claude-opus-45": {
- id: "claude-opus-45",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-12-06",
- last_updated: "2026-01-28",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 6, output: 30, cache_read: 0.6, cache_write: 7.5 },
- limit: { context: 198000, output: 49500 },
- },
- "grok-4-20-multi-agent-beta": {
- id: "grok-4-20-multi-agent-beta",
- name: "Grok 4.20 Multi-Agent Beta",
- family: "grok-beta",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 2.27,
- output: 6.8,
- cache_read: 0.23,
- context_over_200k: { input: 4.53, output: 13.6, cache_read: 0.23 },
- },
- limit: { context: 2000000, output: 128000 },
- },
- "minimax-m27": {
- id: "minimax-m27",
- name: "MiniMax M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.375, output: 1.5, cache_read: 0.075 },
- limit: { context: 198000, output: 32768 },
- },
- "qwen3-235b-a22b-thinking-2507": {
- id: "qwen3-235b-a22b-thinking-2507",
- name: "Qwen 3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-04-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.45, output: 3.5 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-01",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.87, cache_read: 0.03 },
- limit: { context: 256000, output: 10000 },
- },
- "qwen3-5-35b-a3b": {
- id: "qwen3-5-35b-a3b",
- name: "Qwen 3.5 35B A3B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-25",
- last_updated: "2026-03-09",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3125, output: 1.25, cache_read: 0.15625 },
- limit: { context: 256000, output: 65536 },
- },
- "mercury-2": {
- id: "mercury-2",
- name: "Mercury 2",
- family: "mercury",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-20",
- last_updated: "2026-04-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3125, output: 0.9375, cache_read: 0.03125 },
- limit: { context: 128000, output: 50000 },
- },
- "google-gemma-3-27b-it": {
- id: "google-gemma-3-27b-it",
- name: "Google Gemma 3 27B Instruct",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-11-04",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.12, output: 0.2 },
- limit: { context: 198000, output: 16384 },
- },
- "olafangensan-glm-4.7-flash-heretic": {
- id: "olafangensan-glm-4.7-flash-heretic",
- name: "GLM 4.7 Flash Heretic",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-04",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 0.8 },
- limit: { context: 200000, output: 24000 },
- },
- "openai-gpt-52-codex": {
- id: "openai-gpt-52-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-01-15",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.19, output: 17.5, cache_read: 0.219 },
- limit: { context: 256000, output: 65536 },
- },
- "venice-uncensored-role-play": {
- id: "venice-uncensored-role-play",
- name: "Venice Role Play Uncensored",
- family: "venice",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-20",
- last_updated: "2026-03-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 2 },
- limit: { context: 128000, output: 4096 },
- },
- "zai-org-glm-5": {
- id: "zai-org-glm-5",
- name: "GLM 5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-02-11",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 198000, output: 32000 },
- },
- "zai-org-glm-4.6": {
- id: "zai-org-glm-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2024-04-01",
- last_updated: "2026-04-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.85, output: 2.75, cache_read: 0.3 },
- limit: { context: 198000, output: 16384 },
- },
- "mistral-small-2603": {
- id: "mistral-small-2603",
- name: "Mistral Small 4",
- family: "mistral-small",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-16",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1875, output: 0.75 },
- limit: { context: 256000, output: 65536 },
- },
- "openai-gpt-oss-120b": {
- id: "openai-gpt-oss-120b",
- name: "OpenAI GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-11-06",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.3 },
- limit: { context: 128000, output: 16384 },
- },
- "qwen3-5-9b": {
- id: "qwen3-5-9b",
- name: "Qwen 3.5 9B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-05",
- last_updated: "2026-04-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.15 },
- limit: { context: 256000, output: 32768 },
- },
- "openai-gpt-54-pro": {
- id: "openai-gpt-54-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-05",
- last_updated: "2026-03-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 37.5, output: 225, context_over_200k: { input: 75, output: 337.5 } },
- limit: { context: 1000000, output: 128000 },
- },
- "aion-labs.aion-2-0": {
- id: "aion-labs.aion-2-0",
- name: "Aion 2.0",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-24",
- last_updated: "2026-03-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 2, cache_read: 0.25 },
- limit: { context: 128000, output: 32768 },
- },
- "openai-gpt-54-mini": {
- id: "openai-gpt-54-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-27",
- last_updated: "2026-03-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.9375, output: 5.625, cache_read: 0.09375 },
- limit: { context: 400000, output: 128000 },
- },
- "google.gemma-4-31b-it": {
- id: "google.gemma-4-31b-it",
- name: "Google Gemma 4 31B Instruct",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-04-03",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.175, output: 0.5 },
- limit: { context: 256000, output: 8192 },
- },
- "minimax-m25": {
- id: "minimax-m25",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-03-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.34, output: 1.19, cache_read: 0.04 },
- limit: { context: 198000, output: 32768 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen 3 Coder 480b",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-04-29",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.75, output: 3 },
- limit: { context: 256000, output: 65536 },
- },
- "zai-org-glm-5-1": {
- id: "zai-org-glm-5-1",
- name: "GLM 5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-04-07",
- last_updated: "2026-04-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.75, output: 5.5, cache_read: 0.325 },
- limit: { context: 200000, output: 24000 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-05",
- last_updated: "2026-03-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 6, output: 30, cache_read: 0.6, cache_write: 7.5 },
- limit: { context: 1000000, output: 128000 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-10",
- release_date: "2025-12-04",
- last_updated: "2026-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.33, output: 0.48, cache_read: 0.16 },
- limit: { context: 160000, output: 32768 },
- },
- "venice-uncensored": {
- id: "venice-uncensored",
- name: "Venice Uncensored 1.1",
- family: "venice",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2025-03-18",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.9 },
- limit: { context: 32000, output: 8192 },
- },
- "qwen-3-6-plus": {
- id: "qwen-3-6-plus",
- name: "Qwen 3.6 Plus Uncensored",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-04-06",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 0.625,
- output: 3.75,
- cache_read: 0.0625,
- cache_write: 0.78,
- context_over_200k: { input: 2.5, output: 7.5 },
- },
- limit: { context: 1000000, output: 65536 },
- },
- "google.gemma-4-26b-a4b-it": {
- id: "google.gemma-4-26b-a4b-it",
- name: "Google Gemma 4 26B A4B Instruct",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-04-02",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1625, output: 0.5 },
- limit: { context: 256000, output: 8192 },
- },
- "openai-gpt-4o-2024-11-20": {
- id: "openai-gpt-4o-2024-11-20",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-28",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.125, output: 12.5 },
- limit: { context: 128000, output: 16384 },
- },
- "llama-3.3-70b": {
- id: "llama-3.3-70b",
- name: "Llama 3.3 70B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2025-04-06",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.8 },
- limit: { context: 128000, output: 4096 },
- },
- "kimi-k2-5": {
- id: "kimi-k2-5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2026-01-27",
- last_updated: "2026-03-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.56, output: 3.5, cache_read: 0.11 },
- limit: { context: 256000, output: 65536 },
- },
- "grok-4-20-beta": {
- id: "grok-4-20-beta",
- name: "Grok 4.20 Beta",
- family: "grok-beta",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-12",
- last_updated: "2026-04-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 2.27,
- output: 6.8,
- cache_read: 0.23,
- context_over_200k: { input: 4.53, output: 13.6, cache_read: 0.23 },
- },
- limit: { context: 2000000, output: 128000 },
- },
- "minimax-m21": {
- id: "minimax-m21",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2025-12-01",
- last_updated: "2026-03-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 1.5, cache_read: 0.04 },
- limit: { context: 198000, output: 32768 },
- },
- "llama-3.2-3b": {
- id: "llama-3.2-3b",
- name: "Llama 3.2 3B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-10-03",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4096 },
- },
- "arcee-trinity-large-thinking": {
- id: "arcee-trinity-large-thinking",
- name: "Trinity Large Thinking",
- family: "trinity",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-04-02",
- last_updated: "2026-04-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3125, output: 1.125, cache_read: 0.075 },
- limit: { context: 256000, output: 65536 },
- },
- "hermes-3-llama-3.1-405b": {
- id: "hermes-3-llama-3.1-405b",
- name: "Hermes 3 Llama 3.1 405b",
- family: "hermes",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-09-25",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.1, output: 3 },
- limit: { context: 128000, output: 16384 },
- },
- "gemini-3-1-pro-preview": {
- id: "gemini-3-1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-19",
- last_updated: "2026-03-12",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 2.5,
- output: 15,
- cache_read: 0.5,
- cache_write: 0.5,
- context_over_200k: { input: 5, output: 22.5, cache_read: 0.5 },
- },
- limit: { context: 1000000, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2025-12-10",
- last_updated: "2026-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.75, output: 3.2, cache_read: 0.375 },
- limit: { context: 256000, output: 65536 },
- },
- "claude-opus-4-6-fast": {
- id: "claude-opus-4-6-fast",
- name: "Claude Opus 4.6 Fast",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-04-08",
- last_updated: "2026-04-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 36, output: 180, cache_read: 3.6, cache_write: 45 },
- limit: { context: 1000000, output: 128000 },
- },
- },
- },
- aihubmix: {
- id: "aihubmix",
- env: ["AIHUBMIX_API_KEY"],
- npm: "@aihubmix/ai-sdk-provider",
- name: "AIHubMix",
- doc: "https://docs.aihubmix.com",
- models: {
- "gpt-5.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1-Codex-Max",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "coding-glm-5-free": {
- id: "coding-glm-5-free",
- name: "Coding-GLM-5-Free",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 5.5, cache_read: 0.11, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "coding-glm-4.7": {
- id: "coding-glm-4.7",
- name: "Coding-GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1.1, cache_read: 0.548 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen3-235b-a22b-instruct-2507": {
- id: "qwen3-235b-a22b-instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0.28, output: 1.12 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-07",
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 1.1, cache_read: 0.548 },
- limit: { context: 204800, output: 131072 },
- },
- "gemini-3-pro-preview-search": {
- id: "gemini-3-pro-preview-search",
- name: "Gemini 3 Pro Preview Search",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.5 },
- limit: { context: 1000000, output: 65000 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.88, output: 2.82 },
- limit: { context: 204800, output: 131072 },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 200000, output: 64000 },
- },
- "Kimi-K2-0905": {
- id: "Kimi-K2-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 262144, output: 262144 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5-Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.5, output: 6, cache_read: 0.75 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5-Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: false,
- 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,
- cost: { input: 0.5, output: 2, cache_read: 0.25 },
- limit: { context: 128000, output: 16384 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.5 },
- limit: { context: 1000000, output: 65000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 5, cache_read: 0.31 },
- limit: { context: 2000000, output: 65000 },
- },
- "coding-minimax-m2.1-free": {
- id: "coding-minimax-m2.1-free",
- name: "Coding MiniMax M2.1 Free",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-1": {
- id: "claude-opus-4-1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 16.5, output: 82.5, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "deepseek-v3.2-fast": {
- id: "deepseek-v3.2-fast",
- name: "DeepSeek-V3.2-Fast",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: false,
- knowledge: "2024-07",
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.1, output: 3.29 },
- limit: { context: 128000, output: 128000 },
- },
- "minimax-m2.1": {
- id: "minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.29, output: 1.15 },
- limit: { context: 204800, output: 131072 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2024-09",
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 6, cache_read: 0.75 },
- limit: { context: 200000, output: 65536 },
- },
- "deepseek-v3.2-think": {
- id: "deepseek-v3.2-think",
- name: "DeepSeek-V3.2-Think",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.45 },
- limit: { context: 131000, output: 64000 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08-31",
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3, cache_read: 0.02 },
- limit: { context: 1000000, output: 65000 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex Mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-11-15",
- last_updated: "2025-11-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 400000, output: 128000 },
- },
- "qwen3-235b-a22b-thinking-2507": {
- id: "qwen3-235b-a22b-thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 2.8 },
- limit: { context: 262144, output: 262144 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-11-15",
- last_updated: "2025-11-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-6-think": {
- id: "claude-opus-4-6-think",
- name: "Claude Opus 4.6 Think",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 200000, output: 128000 },
- },
- "claude-opus-4-5": {
- id: "claude-opus-4-5",
- name: "Claude Opus 4.5",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 32000 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 0.41 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "GPT-5-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "qwen3-max-2026-01-23": {
- id: "qwen3-max-2026-01-23",
- name: "Qwen3 Max",
- 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,
- cost: { input: 0.34, output: 1.37 },
- limit: { context: 262144, output: 65536 },
- },
- "coding-glm-4.7-free": {
- id: "coding-glm-4.7-free",
- name: "Coding GLM 4.7 Free",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_details" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen3-coder-next": {
- id: "qwen3-coder-next",
- name: "Qwen3 Coder Next",
- family: "qwen",
- 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: true,
- cost: { input: 0.14, output: 0.55 },
- limit: { context: 262144, input: 262144, output: 65536 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.82, output: 3.29 },
- limit: { context: 262144, output: 131000 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 200000, output: 128000 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "GPT-4.1 nano",
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1047576, output: 32768 },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.29, output: 1.15 },
- limit: { context: 204800, output: 131072 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.45 },
- limit: { context: 131000, output: 64000 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "GPT-5-Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 7, output: 28, cache_read: 3.5 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3.3, output: 16.5, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 20, cache_read: 2.5 },
- limit: { context: 400000, output: 128000 },
- },
- "qwen3.5-plus": {
- id: "qwen3.5-plus",
- name: "Qwen 3.5 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.11, output: 0.66 },
- limit: { context: 1000000, output: 65536 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "GPT-4.1 mini",
- 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,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-11-15",
- last_updated: "2025-11-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-sonnet-4-6-think": {
- id: "claude-sonnet-4-6-think",
- name: "Claude Sonnet 4.6 Think",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 200000, output: 64000 },
- },
- },
- },
- cerebras: {
- id: "cerebras",
- env: ["CEREBRAS_API_KEY"],
- npm: "@ai-sdk/cerebras",
- name: "Cerebras",
- doc: "https://inference-docs.cerebras.ai/models/overview",
- models: {
- "llama3.1-8b": {
- id: "llama3.1-8b",
- name: "Llama 3.1 8B",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 32000, output: 8000 },
- },
- "qwen-3-235b-a22b-instruct-2507": {
- id: "qwen-3-235b-a22b-instruct-2507",
- name: "Qwen 3 235B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-22",
- last_updated: "2025-07-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.2 },
- limit: { context: 131000, output: 32000 },
- },
- "zai-glm-4.7": {
- id: "zai-glm-4.7",
- name: "Z.AI GLM-4.7",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-01-10",
- last_updated: "2026-01-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2.25, output: 2.75, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 40000 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.69 },
- limit: { context: 131072, output: 32768 },
- },
- },
- },
- firmware: {
- id: "firmware",
- env: ["FIRMWARE_API_KEY"],
- npm: "@ai-sdk/openai-compatible",
- api: "https://app.frogbot.ai/api/v1",
- name: "Firmware",
- doc: "https://docs.frogbot.ai",
- models: {
- "grok-4-1-fast-reasoning": {
- id: "grok-4-1-fast-reasoning",
- name: "Grok 4.1 Fast (Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 128000 },
- },
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi-K2.5",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 256000, output: 128000 },
- },
- "gpt-5-4": {
- id: "gpt-5-4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 272000, output: 128000 },
- },
- "deepseek-v3-2": {
- id: "deepseek-v3-2",
- name: "DeepSeek v3.2",
- family: "deepseek",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2024-12-26",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.58, output: 1.68, cache_read: 0.28 },
- limit: { context: 128000, output: 8192 },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2026-02-17",
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 3, cache_read: 0.05 },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 1000000, output: 64000 },
- },
- "zai-glm-5-1": {
- id: "zai-glm-5-1",
- name: "GLM-5",
- 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,
- cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
- limit: { context: 198000, output: 8192 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "Grok 4.1 Fast (Non-Reasoning)",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 128000 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075 },
- limit: { context: 1048576, output: 65536 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok 4.1 Fast (Reasoning)",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 128000 },
- },
- "claude-opus-4-5": {
- id: "claude-opus-4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 128000 },
- },
- "gpt-oss-20b": {
- id: "gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.2 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen-3-6-plus": {
- id: "qwen-3-6-plus",
- name: "Qwen 3.6 Plus",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 3, cache_read: 0.1 },
- limit: { context: 1000000, output: 64000 },
- },
- "minimax-m2-5": {
- id: "minimax-m2-5",
- name: "MiniMax-M2.5",
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 192000, output: 8192 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 32768 },
- },
- "gemini-3-1-pro-preview": {
- id: "gemini-3-1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 1000000, output: 64000 },
- },
- "gpt-5-3-codex": {
- id: "gpt-5-3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- },
- },
- 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: {
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen/qwen3-coder-30b": {
- id: "qwen/qwen3-coder-30b",
- name: "Qwen3 Coder 30B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwen3-30b-a3b-2507": {
- id: "qwen/qwen3-30b-a3b-2507",
- name: "Qwen3 30B A3B 2507",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 16384 },
- },
- },
- },
- lucidquery: {
- id: "lucidquery",
- env: ["LUCIDQUERY_API_KEY"],
- npm: "@ai-sdk/openai-compatible",
- api: "https://lucidquery.com/api/v1",
- name: "LucidQuery AI",
- doc: "https://lucidquery.com/api/docs",
- models: {
- "lucidnova-rf1-100b": {
- id: "lucidnova-rf1-100b",
- name: "LucidNova RF1 100B",
- family: "nova",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 5 },
- limit: { context: 120000, output: 8000 },
- },
- "lucidquery-nexus-coder": {
- id: "lucidquery-nexus-coder",
- name: "LucidQuery Nexus Coder",
- family: "lucid",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 5 },
- limit: { context: 250000, output: 60000 },
- },
- },
- },
- "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": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2-0711-preview": {
- id: "kimi-k2-0711-preview",
- name: "Kimi K2 0711",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 131072, output: 16384 },
- },
- "kimi-k2-turbo-preview": {
- id: "kimi-k2-turbo-preview",
- name: "Kimi K2 Turbo",
- family: "kimi",
- 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,
- cost: { input: 2.4, output: 10, cache_read: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2-thinking-turbo": {
- id: "kimi-k2-thinking-turbo",
- name: "Kimi K2 Thinking Turbo",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.15, output: 8, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2-0905-preview": {
- id: "kimi-k2-0905-preview",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- "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-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-02-31",
- release_date: "2025-11-18",
- last_updated: "2025-11-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "claude-opus-4-1": {
- id: "claude-opus-4-1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.4-nano": {
- id: "gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "claude-opus-4-5": {
- id: "claude-opus-4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.5,
- cache_write: 6.25,
- context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
- },
- limit: { context: 200000, output: 128000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "mai-ds-r1": {
- id: "mai-ds-r1",
- name: "MAI-DS-R1",
- family: "mai",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 128000, output: 8192 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "Grok 4 Fast (Non-Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-3": {
- id: "grok-3",
- name: "Grok 3",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 8192 },
- },
- "llama-4-maverick-17b-128e-instruct-fp8": {
- id: "llama-4-maverick-17b-128e-instruct-fp8",
- name: "Llama 4 Maverick 17B 128E Instruct FP8",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 128000, output: 8192 },
- },
- "codestral-2501": {
- id: "codestral-2501",
- name: "Codestral 25.01",
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 256000 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "GPT-4.1 mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-05",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2025-11-06",
- last_updated: "2025-12-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-05",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "deepseek-r1-0528": {
- id: "deepseek-r1-0528",
- name: "DeepSeek-R1-0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 163840, output: 163840 },
- },
- "gpt-3.5-turbo-instruct": {
- id: "gpt-3.5-turbo-instruct",
- name: "GPT-3.5 Turbo Instruct",
- 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,
- cost: { input: 1.5, output: 2 },
- limit: { context: 4096, output: 4096 },
- },
- "mistral-medium-2505": {
- id: "mistral-medium-2505",
- name: "Mistral Medium 3",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 128000, output: 128000 },
- },
- "phi-4-reasoning-plus": {
- id: "phi-4-reasoning-plus",
- name: "Phi-4-reasoning-plus",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 32000, output: 4096 },
- },
- "cohere-embed-v3-english": {
- id: "cohere-embed-v3-english",
- name: "Embed v3 English",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 512, output: 1024 },
- },
- "gpt-4-32k": {
- id: "gpt-4-32k",
- name: "GPT-4 32K",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-11",
- release_date: "2023-03-14",
- last_updated: "2023-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 60, output: 120 },
- limit: { context: 32768, output: 32768 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 272000, output: 128000 },
- },
- "phi-4": {
- id: "phi-4",
- name: "Phi-4",
- 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,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 128000, output: 4096 },
- },
- "cohere-command-r-plus-08-2024": {
- id: "cohere-command-r-plus-08-2024",
- name: "Command R+",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 4000 },
- },
- "gpt-3.5-turbo-0613": {
- id: "gpt-3.5-turbo-0613",
- name: "GPT-3.5 Turbo 0613",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2021-08",
- release_date: "2023-06-13",
- last_updated: "2023-06-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 4 },
- limit: { context: 16384, output: 16384 },
- },
- "phi-3-medium-128k-instruct": {
- id: "phi-3-medium-128k-instruct",
- name: "Phi-3-medium-instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "GPT-5 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 272000 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 1.68 },
- limit: { context: 128000, output: 128000 },
- },
- o3: {
- id: "o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "grok-3-mini": {
- id: "grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, reasoning: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 8192 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "GPT-4.1 nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-05",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1047576, output: 32768 },
- },
- "phi-3-small-128k-instruct": {
- id: "phi-3-small-128k-instruct",
- name: "Phi-3-small-instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-3.5-turbo-0301": {
- id: "gpt-3.5-turbo-0301",
- name: "GPT-3.5 Turbo 0301",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2021-08",
- release_date: "2023-03-01",
- last_updated: "2023-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 2 },
- limit: { context: 4096, output: 4096 },
- },
- "phi-4-mini": {
- id: "phi-4-mini",
- name: "Phi-4-mini",
- 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,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "GPT-5-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "meta-llama-3-8b-instruct": {
- id: "meta-llama-3-8b-instruct",
- name: "Meta-Llama-3-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.61 },
- limit: { context: 8192, output: 2048 },
- },
- "gpt-4": {
- id: "gpt-4",
- name: "GPT-4",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-11",
- release_date: "2023-03-14",
- last_updated: "2023-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 60, output: 120 },
- limit: { context: 8192, output: 8192 },
- },
- "phi-4-mini-reasoning": {
- id: "phi-4-mini-reasoning",
- name: "Phi-4-mini-reasoning",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 128000, output: 4096 },
- },
- "grok-4": {
- id: "grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, reasoning: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 64000 },
- },
- "meta-llama-3.1-70b-instruct": {
- id: "meta-llama-3.1-70b-instruct",
- name: "Meta-Llama-3.1-70B-Instruct",
- 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,
- cost: { input: 2.68, output: 3.54 },
- limit: { context: 128000, output: 32768 },
- },
- "phi-3-mini-4k-instruct": {
- id: "phi-3-mini-4k-instruct",
- name: "Phi-3-mini-instruct (4k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 4096, output: 1024 },
- },
- "deepseek-v3.1": {
- id: "deepseek-v3.1",
- name: "DeepSeek-V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.56, output: 1.68 },
- limit: { context: 131072, output: 131072 },
- },
- "text-embedding-3-small": {
- id: "text-embedding-3-small",
- name: "text-embedding-3-small",
- 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,
- cost: { input: 0.02, output: 0 },
- limit: { context: 8191, output: 1536 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-3.5-turbo-1106": {
- id: "gpt-3.5-turbo-1106",
- name: "GPT-3.5 Turbo 1106",
- 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,
- cost: { input: 1, output: 2 },
- limit: { context: 16384, output: 16384 },
- },
- "model-router": {
- id: "model-router",
- name: "Model Router",
- 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,
- cost: { input: 0.14, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.4-pro": {
- id: "gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 30, output: 180 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "mistral-small-2503": {
- id: "mistral-small-2503",
- name: "Mistral Small 3.1",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 32768 },
- },
- o1: {
- id: "o1",
- name: "o1",
- family: "o",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "grok-4-fast-reasoning": {
- id: "grok-4-fast-reasoning",
- name: "Grok 4 Fast (Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 272000, output: 128000 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "cohere-embed-v3-multilingual": {
- id: "cohere-embed-v3-multilingual",
- name: "Embed v3 Multilingual",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 512, output: 1024 },
- },
- "o1-preview": {
- id: "o1-preview",
- name: "o1-preview",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2023-09",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 16.5, output: 66, cache_read: 8.25 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-3.5-turbo-0125": {
- id: "gpt-3.5-turbo-0125",
- name: "GPT-3.5 Turbo 0125",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 16384, output: 16384 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex Mini",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 128000 },
- },
- "cohere-embed-v-4-0": {
- id: "cohere-embed-v-4-0",
- name: "Embed v4",
- 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,
- cost: { input: 0.12, output: 0 },
- limit: { context: 128000, output: 1536 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-4-turbo-vision": {
- id: "gpt-4-turbo-vision",
- name: "GPT-4 Turbo Vision",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-5.1-chat": {
- id: "gpt-5.1-chat",
- name: "GPT-5.1 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "meta-llama-3.1-405b-instruct": {
- id: "meta-llama-3.1-405b-instruct",
- name: "Meta-Llama-3.1-405B-Instruct",
- 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,
- cost: { input: 5.33, output: 16 },
- limit: { context: 128000, output: 32768 },
- },
- "llama-3.2-11b-vision-instruct": {
- id: "llama-3.2-11b-vision-instruct",
- name: "Llama-3.2-11B-Vision-Instruct",
- 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,
- cost: { input: 0.37, output: 0.37 },
- limit: { context: 128000, output: 8192 },
- },
- "cohere-command-a": {
- id: "cohere-command-a",
- name: "Command A",
- family: "command-a",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, output: 8000 },
- },
- "cohere-command-r-08-2024": {
- id: "cohere-command-r-08-2024",
- name: "Command R",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4000 },
- },
- "gpt-4o-mini": {
- id: "gpt-4o-mini",
- name: "GPT-4o mini",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "mistral-large-2411": {
- id: "mistral-large-2411",
- name: "Mistral Large 24.11",
- family: "mistral-large",
- 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"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "deepseek-v3.2-speciale": {
- id: "deepseek-v3.2-speciale",
- name: "DeepSeek-V3.2-Speciale",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 1.68 },
- limit: { context: 128000, output: 128000 },
- },
- "deepseek-r1": {
- id: "deepseek-r1",
- name: "DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 163840, output: 163840 },
- },
- "llama-3.2-90b-vision-instruct": {
- id: "llama-3.2-90b-vision-instruct",
- name: "Llama-3.2-90B-Vision-Instruct",
- 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,
- cost: { input: 2.04, output: 2.04 },
- limit: { context: 128000, output: 8192 },
- },
- "text-embedding-ada-002": {
- id: "text-embedding-ada-002",
- name: "text-embedding-ada-002",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "gpt-4-turbo": {
- id: "gpt-4-turbo",
- name: "GPT-4 Turbo",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "phi-3-small-8k-instruct": {
- id: "phi-3-small-8k-instruct",
- name: "Phi-3-small-instruct (8k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 8192, output: 2048 },
- },
- "meta-llama-3-70b-instruct": {
- id: "meta-llama-3-70b-instruct",
- name: "Meta-Llama-3-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2.68, output: 3.54 },
- limit: { context: 8192, output: 2048 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 272000, output: 128000 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 272000, output: 128000 },
- },
- "phi-4-reasoning": {
- id: "phi-4-reasoning",
- name: "Phi-4-reasoning",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 32000, output: 4096 },
- },
- "phi-3-mini-128k-instruct": {
- id: "phi-3-mini-128k-instruct",
- name: "Phi-3-mini-instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 128000, output: 4096 },
- },
- "text-embedding-3-large": {
- id: "text-embedding-3-large",
- name: "text-embedding-3-large",
- 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,
- cost: { input: 0.13, output: 0 },
- limit: { context: 8191, output: 3072 },
- },
- "o1-mini": {
- id: "o1-mini",
- name: "o1-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2023-09",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 128000, output: 65536 },
- },
- "phi-3.5-moe-instruct": {
- id: "phi-3.5-moe-instruct",
- name: "Phi-3.5-MoE-instruct",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.16, output: 0.64 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-5-chat": {
- id: "gpt-5-chat",
- name: "GPT-5 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2024-10-24",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 128000, output: 16384 },
- },
- "deepseek-v3-0324": {
- id: "deepseek-v3-0324",
- name: "DeepSeek-V3-0324",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.14, output: 4.56 },
- limit: { context: 131072, output: 131072 },
- },
- "llama-3.3-70b-instruct": {
- id: "llama-3.3-70b-instruct",
- name: "Llama-3.3-70B-Instruct",
- 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,
- cost: { input: 0.71, output: 0.71 },
- limit: { context: 128000, output: 32768 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3 },
- limit: { context: 262144, output: 262144 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models",
- shape: "completions",
- },
- },
- "meta-llama-3.1-8b-instruct": {
- id: "meta-llama-3.1-8b-instruct",
- name: "Meta-Llama-3.1-8B-Instruct",
- 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,
- cost: { input: 0.3, output: 0.61 },
- limit: { context: 128000, output: 32768 },
- },
- "ministral-3b": {
- id: "ministral-3b",
- name: "Ministral 3B",
- 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,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 128000, output: 8192 },
- },
- "phi-3-medium-4k-instruct": {
- id: "phi-3-medium-4k-instruct",
- name: "Phi-3-medium-instruct (4k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 4096, output: 1024 },
- },
- "llama-4-scout-17b-16e-instruct": {
- id: "llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17B 16E Instruct",
- 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,
- cost: { input: 0.2, output: 0.78 },
- limit: { context: 128000, output: 8192 },
- },
- "phi-3.5-mini-instruct": {
- id: "phi-3.5-mini-instruct",
- name: "Phi-3.5-mini-instruct",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 128000, output: 4096 },
- },
- "phi-4-multimodal": {
- id: "phi-4-multimodal",
- name: "Phi-4-multimodal",
- 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,
- cost: { input: 0.08, output: 0.32, input_audio: 4 },
- limit: { context: 128000, output: 4096 },
- },
- "codex-mini": {
- id: "codex-mini",
- name: "Codex Mini",
- family: "gpt-codex-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.5, output: 6, cache_read: 0.375 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5.2-chat": {
- id: "gpt-5.2-chat",
- name: "GPT-5.2 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "mistral-nemo": {
- id: "mistral-nemo",
- name: "Mistral Nemo",
- family: "mistral-nemo",
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 128000 },
- },
- },
- },
- cohere: {
- id: "cohere",
- env: ["COHERE_API_KEY"],
- npm: "@ai-sdk/cohere",
- name: "Cohere",
- doc: "https://docs.cohere.com/docs/models",
- models: {
- "command-a-reasoning-08-2025": {
- id: "command-a-reasoning-08-2025",
- name: "Command A Reasoning",
- family: "command-a",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, output: 32000 },
- },
- "command-r7b-12-2024": {
- id: "command-r7b-12-2024",
- name: "Command R7B",
- family: "command-r",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06-01",
- release_date: "2024-02-27",
- last_updated: "2024-02-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.0375, output: 0.15 },
- limit: { context: 128000, output: 4000 },
- },
- "c4ai-aya-vision-8b": {
- id: "c4ai-aya-vision-8b",
- name: "Aya Vision 8B",
- 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-plus-08-2024": {
- id: "command-r-plus-08-2024",
- name: "Command R+",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 4000 },
- },
- "c4ai-aya-expanse-8b": {
- id: "c4ai-aya-expanse-8b",
- name: "Aya Expanse 8B",
- 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 },
- },
- "command-r7b-arabic-02-2025": {
- id: "command-r7b-arabic-02-2025",
- name: "Command R7B Arabic",
- 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,
- cost: { input: 0.0375, output: 0.15 },
- limit: { context: 128000, output: 4000 },
- },
- "command-a-vision-07-2025": {
- id: "command-a-vision-07-2025",
- name: "Command A Vision",
- family: "command-a",
- attachment: false,
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 8000 },
- },
- "c4ai-aya-vision-32b": {
- id: "c4ai-aya-vision-32b",
- name: "Aya Vision 32B",
- 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-a-translate-08-2025": {
- id: "command-a-translate-08-2025",
- name: "Command A Translate",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 8000, output: 8000 },
- },
- "command-r-08-2024": {
- id: "command-r-08-2024",
- name: "Command R",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4000 },
- },
- "c4ai-aya-expanse-32b": {
- id: "c4ai-aya-expanse-32b",
- name: "Aya Expanse 32B",
- 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 },
- },
- "command-a-03-2025": {
- id: "command-a-03-2025",
- name: "Command A",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, output: 8000 },
- },
- },
- },
- "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",
- 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,
- cost: { input: 2.92, output: 2.92 },
- limit: { context: 70000, output: 70000 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "OpenAI GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2.92, output: 2.92 },
- limit: { context: 131000, output: 131000 },
- },
- "speakleash/Bielik-11B-v3.0-Instruct": {
- id: "speakleash/Bielik-11B-v3.0-Instruct",
- name: "Bielik 11B v3.0 Instruct",
- 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,
- cost: { input: 0.67, output: 0.67 },
- limit: { context: 32000, output: 32000 },
- },
- "speakleash/Bielik-11B-v2.6-Instruct": {
- id: "speakleash/Bielik-11B-v2.6-Instruct",
- name: "Bielik 11B v2.6 Instruct",
- 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,
- cost: { input: 0.67, output: 0.67 },
- limit: { context: 32000, output: 32000 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2026-01",
- release_date: "2026-03-05",
- last_updated: "2026-03-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 196000, output: 196000 },
- },
- },
- },
- "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",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- xai: {
- id: "xai",
- env: ["XAI_API_KEY"],
- npm: "@ai-sdk/xai",
- name: "xAI",
- doc: "https://docs.x.ai/docs/models",
- models: {
- "grok-2-1212": {
- id: "grok-2-1212",
- name: "Grok 2 (1212)",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-12-12",
- last_updated: "2024-12-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-vision-beta": {
- id: "grok-vision-beta",
- name: "Grok Vision Beta",
- family: "grok-vision",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-11-01",
- last_updated: "2024-11-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 15, cache_read: 5 },
- limit: { context: 8192, output: 4096 },
- },
- "grok-3-mini-fast": {
- id: "grok-3-mini-fast",
- name: "Grok 3 Mini Fast",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 4, reasoning: 4, cache_read: 0.15 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-3-mini-latest": {
- id: "grok-3-mini-latest",
- name: "Grok 3 Mini Latest",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, reasoning: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-3-fast": {
- id: "grok-3-fast",
- name: "Grok 3 Fast",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 1.25 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-2-vision-latest": {
- id: "grok-2-vision-latest",
- name: "Grok 2 Vision Latest",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-08-20",
- last_updated: "2024-12-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 8192, output: 4096 },
- },
- "grok-4.20-0309-reasoning": {
- id: "grok-4.20-0309-reasoning",
- name: "Grok 4.20 (Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-09",
- last_updated: "2026-03-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.2, context_over_200k: { input: 4, output: 12, cache_read: 0.4 } },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "Grok 4.1 Fast (Non-Reasoning)",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-3-mini-fast-latest": {
- id: "grok-3-mini-fast-latest",
- name: "Grok 3 Mini Fast Latest",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 4, reasoning: 4, cache_read: 0.15 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-4-fast": {
- id: "grok-4-fast",
- name: "Grok 4 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-3-latest": {
- id: "grok-3-latest",
- name: "Grok 3 Latest",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-2": {
- id: "grok-2",
- name: "Grok 2",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "grok-4.20-0309-non-reasoning": {
- id: "grok-4.20-0309-non-reasoning",
- name: "Grok 4.20 (Non-Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-09",
- last_updated: "2026-03-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.2, context_over_200k: { input: 4, output: 12, cache_read: 0.4 } },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-3-fast-latest": {
- id: "grok-3-fast-latest",
- name: "Grok 3 Fast Latest",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 1.25 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-4.20-multi-agent-0309": {
- id: "grok-4.20-multi-agent-0309",
- name: "Grok 4.20 Multi-Agent",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-09",
- last_updated: "2026-03-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.2, context_over_200k: { input: 4, output: 12, cache_read: 0.4 } },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-4": {
- id: "grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, reasoning: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 64000 },
- },
- "grok-2-latest": {
- id: "grok-2-latest",
- name: "Grok 2 Latest",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-08-20",
- last_updated: "2024-12-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-beta": {
- id: "grok-beta",
- name: "Grok Beta",
- family: "grok-beta",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 5, output: 15, cache_read: 5 },
- limit: { context: 131072, output: 4096 },
- },
- "grok-2-vision": {
- id: "grok-2-vision",
- name: "Grok 2 Vision",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 8192, output: 4096 },
- },
- "grok-4-1-fast": {
- id: "grok-4-1-fast",
- name: "Grok 4.1 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-3-mini": {
- id: "grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, reasoning: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-2-vision-1212": {
- id: "grok-2-vision-1212",
- name: "Grok 2 Vision (1212)",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-08-20",
- last_updated: "2024-12-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 8192, output: 4096 },
- },
- "grok-3": {
- id: "grok-3",
- name: "Grok 3",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "Grok 4 Fast (Non-Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0.09, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3.5-Plus": {
- id: "Qwen/Qwen3.5-Plus",
- name: "Qwen3.5 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.4, output: 2.4, reasoning: 2.4 },
- limit: { context: 1000000, output: 65536 },
- },
- "Qwen/Qwen2.5-VL-32B-Instruct": {
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
- name: "Qwen2.5 VL 32B Instruct",
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 16384, output: 16384 },
- },
- "zai-org/GLM-4.7": {
- id: "zai-org/GLM-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 202752, output: 131072 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.8, output: 2.56 },
- limit: { context: 202752, output: 131072 },
- },
- "zai-org/GLM-4.6": {
- id: "zai-org/GLM-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 1.9 },
- limit: { context: 202752, output: 131072 },
- },
- "mistralai/Mistral-Small-3.2-24B-Instruct-2506": {
- id: "mistralai/Mistral-Small-3.2-24B-Instruct-2506",
- name: "Mistral Small 3.2 24B Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "mistralai/Mistral-Nemo-Instruct-2407": {
- id: "mistralai/Mistral-Nemo-Instruct-2407",
- name: "Mistral Nemo Instruct 2407",
- 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,
- cost: { input: 0.02, output: 0.04 },
- limit: { context: 131072, output: 65536 },
- },
- "XiaomiMiMo/MiMo-V2-Flash": {
- id: "XiaomiMiMo/MiMo-V2-Flash",
- name: "MiMo V2 Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262144, output: 32000 },
- },
- "meta-llama/Llama-3.3-70B-Instruct": {
- id: "meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama 3.3 70B Instruct",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 131072, output: 16384 },
- },
- "deepseek-ai/DeepSeek-V3.1": {
- id: "deepseek-ai/DeepSeek-V3.1",
- name: "DeepSeek V3.1",
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-V3-0324": {
- id: "deepseek-ai/DeepSeek-V3-0324",
- name: "DeepSeek V3 0324",
- 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,
- cost: { input: 0.25, output: 0.88 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek-ai/DeepSeek-V3.2-Exp": {
- id: "deepseek-ai/DeepSeek-V3.2-Exp",
- name: "DeepSeek V3.2 Exp",
- 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,
- cost: { input: 0.27, output: 0.4 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-R1-0528": {
- id: "deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek R1 0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.15 },
- limit: { context: 163840, output: 64000 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek V3.2",
- 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,
- cost: { input: 0.26, output: 0.38 },
- limit: { context: 164000, output: 164000 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.6 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 2.8 },
- limit: { context: 262144, output: 262144 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMaxAI/MiniMax-M2.1": {
- id: "MiniMaxAI/MiniMax-M2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 1.2 },
- limit: { context: 196608, output: 131072 },
- },
- },
- },
- "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-haiku-4-5@20251001": {
- id: "claude-haiku-4-5@20251001",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-sonnet-4-6@default": {
- id: "claude-sonnet-4-6@default",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 200000, output: 64000 },
- },
- "claude-3-5-haiku@20241022": {
- id: "claude-3-5-haiku@20241022",
- name: "Claude Haiku 3.5",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "claude-3-5-sonnet@20241022": {
- id: "claude-3-5-sonnet@20241022",
- name: "Claude Sonnet 3.5 v2",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "claude-opus-4-1@20250805": {
- id: "claude-opus-4-1@20250805",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "claude-sonnet-4@20250514": {
- id: "claude-sonnet-4@20250514",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-3-7-sonnet@20250219": {
- id: "claude-3-7-sonnet@20250219",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4@20250514": {
- id: "claude-opus-4@20250514",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "claude-opus-4-5@20251101": {
- id: "claude-opus-4-5@20251101",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-sonnet-4-5@20250929": {
- id: "claude-sonnet-4-5@20250929",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-6@default": {
- id: "claude-opus-4-6@default",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.5,
- cache_write: 6.25,
- context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3-VL-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-VL-30B-A3B-Instruct",
- name: "Qwen3 VL 30B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-07-30",
- last_updated: "2025-07-30",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.24, output: 0.94 },
- limit: { context: 100000, output: 100000 },
- },
- "Qwen/Qwen3-Embedding-8B": {
- id: "Qwen/Qwen3-Embedding-8B",
- name: "Qwen3 Embedding 8B",
- 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,
- cost: { input: 0.12, output: 0.12 },
- limit: { context: 40960, output: 40960 },
- },
- "Qwen/Qwen3-30B-A3B-Instruct-2507-FP8": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507-FP8",
- name: "Qwen3 30B 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-07-30",
- last_updated: "2025-07-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 1.42 },
- limit: { context: 64000, output: 64000 },
- },
- "mistralai/devstral-small-2-24b-instruct-2512": {
- id: "mistralai/devstral-small-2-24b-instruct-2512",
- name: "Devstral Small 2 24B Instruct 2512",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.12, output: 0.47 },
- limit: { context: 32768, output: 32768 },
- },
- "mistralai/Voxtral-Small-24B-2507": {
- id: "mistralai/Voxtral-Small-24B-2507",
- name: "Voxtral Small 24B",
- 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,
- cost: { input: 0.00236, output: 0.00236, output_audio: 2.36 },
- limit: { context: 32000, output: 32000 },
- },
- "mistralai/Magistral-Small-2509": {
- id: "mistralai/Magistral-Small-2509",
- name: "Magistral Small 1.2 24B",
- family: "magistral-small",
- attachment: false,
- reasoning: false,
- tool_call: false,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.59, output: 2.36 },
- limit: { context: 131072, output: 131072 },
- },
- "microsoft/Phi-4-multimodal-instruct": {
- id: "microsoft/Phi-4-multimodal-instruct",
- name: "Phi-4 15B",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.24, output: 0.47 },
- limit: { context: 32000, output: 32000 },
- },
- "KBLab/kb-whisper-large": {
- id: "KBLab/kb-whisper-large",
- name: "KB Whisper",
- 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,
- cost: { input: 0.00236, output: 0.00236, output_audio: 2.36 },
- limit: { context: 448, output: 448 },
- },
- "nvidia/Llama-3.3-70B-Instruct-FP8": {
- id: "nvidia/Llama-3.3-70B-Instruct-FP8",
- name: "Llama 3.3 70B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.18, output: 1.18 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/whisper-large-v3": {
- id: "openai/whisper-large-v3",
- name: "Whisper 3 Large",
- 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,
- cost: { input: 0.00236, output: 0.00236, output_audio: 2.36 },
- limit: { context: 448, output: 4096 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.24, output: 0.94 },
- limit: { context: 65536, output: 65536 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.47, output: 5.9 },
- limit: { context: 262144, output: 262144 },
- },
- "intfloat/multilingual-e5-large-instruct": {
- id: "intfloat/multilingual-e5-large-instruct",
- name: "E5 Multi-Lingual Large Embeddings 0.6B",
- 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,
- cost: { input: 0.12, output: 0.12 },
- limit: { context: 512, output: 512 },
- },
- },
- },
- 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:meta-llama/Llama-3.1-405B-Instruct": {
- id: "hf:meta-llama/Llama-3.1-405B-Instruct",
- name: "Llama-3.1-405B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 3 },
- limit: { context: 128000, output: 32768 },
- },
- "hf:meta-llama/Llama-4-Scout-17B-16E-Instruct": {
- id: "hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",
- name: "Llama-4-Scout-17B-16E-Instruct",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 328000, output: 4096 },
- },
- "hf:meta-llama/Llama-3.3-70B-Instruct": {
- id: "hf:meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama-3.3-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.9, output: 0.9 },
- limit: { context: 128000, output: 32768 },
- },
- "hf:meta-llama/Llama-3.1-8B-Instruct": {
- id: "hf:meta-llama/Llama-3.1-8B-Instruct",
- name: "Llama-3.1-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 128000, output: 32768 },
- },
- "hf:meta-llama/Llama-3.1-70B-Instruct": {
- id: "hf:meta-llama/Llama-3.1-70B-Instruct",
- name: "Llama-3.1-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.9, output: 0.9 },
- limit: { context: 128000, output: 32768 },
- },
- "hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8": {
- id: "hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
- name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
- 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,
- cost: { input: 0.22, output: 0.88 },
- limit: { context: 524000, output: 4096 },
- },
- "hf:MiniMaxAI/MiniMax-M2": {
- id: "hf:MiniMaxAI/MiniMax-M2",
- name: "MiniMax-M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 196608, output: 131000 },
- },
- "hf:MiniMaxAI/MiniMax-M2.5": {
- id: "hf:MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-02-07",
- last_updated: "2026-02-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3, cache_read: 0.6 },
- limit: { context: 191488, output: 65536 },
- },
- "hf:MiniMaxAI/MiniMax-M2.1": {
- id: "hf:MiniMaxAI/MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 204800, output: 131072 },
- },
- "hf:Qwen/Qwen3.5-397B-A17B": {
- id: "hf:Qwen/Qwen3.5-397B-A17B",
- name: "Qwen3.5-97B-A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3, cache_read: 0.6 },
- limit: { context: 262144, output: 65536 },
- status: "beta",
- },
- "hf:Qwen/Qwen2.5-Coder-32B-Instruct": {
- id: "hf:Qwen/Qwen2.5-Coder-32B-Instruct",
- name: "Qwen2.5-Coder-32B-Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-11-11",
- last_updated: "2024-11-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 0.8 },
- limit: { context: 32768, output: 32768 },
- },
- "hf:Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "hf:Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen 3 235B Instruct",
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 256000, output: 32000 },
- },
- "hf:Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "hf:Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.65, output: 3 },
- limit: { context: 256000, output: 32000 },
- },
- "hf:Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen 3 Coder 480B",
- 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,
- cost: { input: 2, output: 2 },
- limit: { context: 256000, output: 32000 },
- },
- "hf:deepseek-ai/DeepSeek-V3.1": {
- id: "hf:deepseek-ai/DeepSeek-V3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.56, output: 1.68 },
- limit: { context: 128000, output: 128000 },
- },
- "hf:deepseek-ai/DeepSeek-V3-0324": {
- id: "hf:deepseek-ai/DeepSeek-V3-0324",
- name: "DeepSeek V3 (0324)",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 1.2 },
- limit: { context: 128000, output: 128000 },
- },
- "hf:deepseek-ai/DeepSeek-V3": {
- id: "hf:deepseek-ai/DeepSeek-V3",
- name: "DeepSeek V3",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 1.25 },
- limit: { context: 128000, output: 128000 },
- },
- "hf:deepseek-ai/DeepSeek-R1": {
- id: "hf:deepseek-ai/DeepSeek-R1",
- name: "DeepSeek R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 128000, output: 128000 },
- },
- "hf:deepseek-ai/DeepSeek-R1-0528": {
- id: "hf:deepseek-ai/DeepSeek-R1-0528",
- name: "DeepSeek R1 (0528)",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 8 },
- limit: { context: 128000, output: 128000 },
- },
- "hf:deepseek-ai/DeepSeek-V3.2": {
- id: "hf:deepseek-ai/DeepSeek-V3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.4, cache_read: 0.27, cache_write: 0 },
- limit: { context: 162816, input: 162816, output: 8000 },
- },
- "hf:deepseek-ai/DeepSeek-V3.1-Terminus": {
- id: "hf:deepseek-ai/DeepSeek-V3.1-Terminus",
- name: "DeepSeek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-09-22",
- last_updated: "2025-09-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 1.2 },
- limit: { context: 128000, output: 128000 },
- },
- "hf:openai/gpt-oss-120b": {
- id: "hf:openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 128000, output: 32768 },
- },
- "hf:moonshotai/Kimi-K2-Thinking": {
- id: "hf:moonshotai/Kimi-K2-Thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-11-07",
- last_updated: "2025-11-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 262144, output: 262144 },
- },
- "hf:moonshotai/Kimi-K2-Instruct-0905": {
- id: "hf:moonshotai/Kimi-K2-Instruct-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 1.2, output: 1.2 },
- limit: { context: 262144, output: 32768 },
- },
- "hf:moonshotai/Kimi-K2.5": {
- id: "hf:moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 262144, output: 65536 },
- },
- "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4": {
- id: "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4",
- name: "Nemotron 3 Super 120B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2026-03-11",
- last_updated: "2026-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1, cache_read: 0.3 },
- limit: { context: 262144, output: 65536 },
- },
- "hf:nvidia/Kimi-K2.5-NVFP4": {
- id: "hf:nvidia/Kimi-K2.5-NVFP4",
- name: "Kimi K2.5 (NVFP4)",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-01",
- last_updated: "2026-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 262144, output: 65536 },
- },
- "hf:zai-org/GLM-4.7-Flash": {
- id: "hf:zai-org/GLM-4.7-Flash",
- name: "GLM-4.7-Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-01-18",
- last_updated: "2026-01-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.4, cache_read: 0.06 },
- limit: { context: 196608, output: 65536 },
- },
- "hf:zai-org/GLM-4.7": {
- id: "hf:zai-org/GLM-4.7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 200000, output: 64000 },
- },
- "hf:zai-org/GLM-5": {
- id: "hf:zai-org/GLM-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- structured_output: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-04-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3, cache_read: 1 },
- limit: { context: 196608, output: 65536 },
- },
- "hf:zai-org/GLM-4.6": {
- id: "hf:zai-org/GLM-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.19 },
- limit: { context: 200000, output: 64000 },
- },
- },
- },
- 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: {
- "black-forest-labs/flux.1-dev": {
- id: "black-forest-labs/flux.1-dev",
- name: "FLUX.1-dev",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 4096, output: 0 },
- },
- "stepfun-ai/step-3.5-flash": {
- id: "stepfun-ai/step-3.5-flash",
- name: "Step 3.5 Flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-02",
- last_updated: "2026-02-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 16384 },
- },
- "mistralai/codestral-22b-instruct-v0.1": {
- id: "mistralai/codestral-22b-instruct-v0.1",
- name: "Codestral 22b Instruct V0.1",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-05-29",
- last_updated: "2024-05-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "mistralai/mistral-large-3-675b-instruct-2512": {
- id: "mistralai/mistral-large-3-675b-instruct-2512",
- name: "Mistral Large 3 675B Instruct 2512",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/devstral-2-123b-instruct-2512": {
- id: "mistralai/devstral-2-123b-instruct-2512",
- name: "Devstral-2-123B-Instruct-2512",
- family: "devstral",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-12",
- release_date: "2025-12-08",
- last_updated: "2025-12-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/ministral-14b-instruct-2512": {
- id: "mistralai/ministral-14b-instruct-2512",
- name: "Ministral 3 14B Instruct 2512",
- family: "ministral",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-12",
- release_date: "2025-12-01",
- last_updated: "2025-12-08",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/mistral-small-3.1-24b-instruct-2503": {
- id: "mistralai/mistral-small-3.1-24b-instruct-2503",
- name: "Mistral Small 3.1 24b Instruct 2503",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-11",
- last_updated: "2025-03-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "mistralai/mamba-codestral-7b-v0.1": {
- id: "mistralai/mamba-codestral-7b-v0.1",
- name: "Mamba Codestral 7b V0.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-07-16",
- last_updated: "2024-07-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "mistralai/mistral-large-2-instruct": {
- id: "mistralai/mistral-large-2-instruct",
- name: "Mistral Large 2 Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-07-24",
- last_updated: "2024-07-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-medium-4k-instruct": {
- id: "microsoft/phi-3-medium-4k-instruct",
- name: "Phi 3 Medium 4k Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-05-07",
- last_updated: "2024-05-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 4000, output: 4096 },
- },
- "microsoft/phi-3.5-moe-instruct": {
- id: "microsoft/phi-3.5-moe-instruct",
- name: "Phi 3.5 Moe Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-08-17",
- last_updated: "2024-08-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-4-mini-instruct": {
- id: "microsoft/phi-4-mini-instruct",
- name: "Phi-4-Mini",
- family: "phi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2024-12-01",
- last_updated: "2025-09-05",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "microsoft/phi-3-small-8k-instruct": {
- id: "microsoft/phi-3-small-8k-instruct",
- name: "Phi 3 Small 8k Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-05-07",
- last_updated: "2024-05-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8000, output: 4096 },
- },
- "microsoft/phi-3-vision-128k-instruct": {
- id: "microsoft/phi-3-vision-128k-instruct",
- name: "Phi 3 Vision 128k Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-05-19",
- last_updated: "2024-05-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3.5-vision-instruct": {
- id: "microsoft/phi-3.5-vision-instruct",
- name: "Phi 3.5 Vision Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-08-16",
- last_updated: "2024-08-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-small-128k-instruct": {
- id: "microsoft/phi-3-small-128k-instruct",
- name: "Phi 3 Small 128k Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-05-07",
- last_updated: "2024-05-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-medium-128k-instruct": {
- id: "microsoft/phi-3-medium-128k-instruct",
- name: "Phi 3 Medium 128k Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-05-07",
- last_updated: "2024-05-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "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",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-16",
- last_updated: "2025-03-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia/nemotron-4-340b-instruct": {
- id: "nvidia/nemotron-4-340b-instruct",
- name: "Nemotron 4 340b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-06-13",
- last_updated: "2024-06-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia/llama3-chatqa-1.5-70b": {
- id: "nvidia/llama3-chatqa-1.5-70b",
- name: "Llama3 Chatqa 1.5 70b",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-04-28",
- last_updated: "2024-04-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "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",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-16",
- last_updated: "2025-03-16",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia/nemotron-3-super-120b-a12b": {
- id: "nvidia/nemotron-3-super-120b-a12b",
- name: "Nemotron 3 Super",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262144, output: 262144 },
- },
- "nvidia/parakeet-tdt-0.6b-v2": {
- id: "nvidia/parakeet-tdt-0.6b-v2",
- name: "Parakeet TDT 0.6B v2",
- family: "parakeet",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2024-01",
- release_date: "2024-01-01",
- last_updated: "2025-09-05",
- modalities: { input: ["audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 0, output: 4096 },
- },
- "nvidia/nemotron-3-nano-30b-a3b": {
- id: "nvidia/nemotron-3-nano-30b-a3b",
- name: "nemotron-3-nano-30b-a3b",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2024-12",
- last_updated: "2024-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "nvidia/llama-3.1-nemotron-ultra-253b-v1": {
- id: "nvidia/llama-3.1-nemotron-ultra-253b-v1",
- name: "Llama-3.1-Nemotron-Ultra-253B-v1",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2024-07-01",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "nvidia/nvidia-nemotron-nano-9b-v2": {
- id: "nvidia/nvidia-nemotron-nano-9b-v2",
- name: "nvidia-nemotron-nano-9b-v2",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 131072 },
- },
- "nvidia/cosmos-nemotron-34b": {
- id: "nvidia/cosmos-nemotron-34b",
- name: "Cosmos Nemotron 34B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-01",
- release_date: "2024-01-01",
- last_updated: "2025-09-05",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "nvidia/llama-embed-nemotron-8b": {
- id: "nvidia/llama-embed-nemotron-8b",
- name: "Llama Embed Nemotron 8B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-03",
- release_date: "2025-03-18",
- last_updated: "2025-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 2048 },
- },
- "nvidia/llama-3.1-nemotron-51b-instruct": {
- id: "nvidia/llama-3.1-nemotron-51b-instruct",
- name: "Llama 3.1 Nemotron 51b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-22",
- last_updated: "2024-09-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia/llama-3.1-nemotron-70b-instruct": {
- id: "nvidia/llama-3.1-nemotron-70b-instruct",
- name: "Llama 3.1 Nemotron 70b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-10-12",
- last_updated: "2024-10-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "nvidia/nemoretriever-ocr-v1": {
- id: "nvidia/nemoretriever-ocr-v1",
- name: "NeMo Retriever OCR v1",
- family: "nemoretriever",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2024-01",
- release_date: "2024-01-01",
- last_updated: "2025-09-05",
- modalities: { input: ["image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 0, output: 4096 },
- },
- "deepseek-ai/deepseek-r1": {
- id: "deepseek-ai/deepseek-r1",
- name: "Deepseek R1",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "deepseek-ai/deepseek-v3.1": {
- id: "deepseek-ai/deepseek-v3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-08-20",
- last_updated: "2025-08-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "deepseek-ai/deepseek-coder-6.7b-instruct": {
- id: "deepseek-ai/deepseek-coder-6.7b-instruct",
- name: "Deepseek Coder 6.7b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2023-10-29",
- last_updated: "2023-10-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "deepseek-ai/deepseek-v3.2": {
- id: "deepseek-ai/deepseek-v3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 0, output: 0 },
- limit: { context: 163840, output: 65536 },
- },
- "deepseek-ai/deepseek-r1-0528": {
- id: "deepseek-ai/deepseek-r1-0528",
- name: "Deepseek R1 0528",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "deepseek-ai/deepseek-v3.1-terminus": {
- id: "deepseek-ai/deepseek-v3.1-terminus",
- name: "DeepSeek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-22",
- last_updated: "2025-09-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/whisper-large-v3": {
- id: "openai/whisper-large-v3",
- name: "Whisper Large v3",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 0, output: 4096 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT-OSS-120B",
- family: "gpt-oss",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2025-08-04",
- last_updated: "2025-08-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "minimaxai/minimax-m2.1": {
- id: "minimaxai/minimax-m2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "minimaxai/minimax-m2.5": {
- id: "minimaxai/minimax-m2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-08",
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "z-ai/glm4.7": {
- id: "z-ai/glm4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "z-ai/glm5": {
- id: "z-ai/glm5",
- name: "GLM5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 202752, output: 131000 },
- },
- "meta/llama-4-scout-17b-16e-instruct": {
- id: "meta/llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17b 16e Instruct",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-02",
- release_date: "2025-04-02",
- last_updated: "2025-04-02",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-3.3-70b-instruct": {
- id: "meta/llama-3.3-70b-instruct",
- name: "Llama 3.3 70b Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama3-8b-instruct": {
- id: "meta/llama3-8b-instruct",
- name: "Llama3 8b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-04-17",
- last_updated: "2024-04-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama3-70b-instruct": {
- id: "meta/llama3-70b-instruct",
- name: "Llama3 70b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-04-17",
- last_updated: "2024-04-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/codellama-70b": {
- id: "meta/codellama-70b",
- name: "Codellama 70b",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-01-29",
- last_updated: "2024-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-3.2-11b-vision-instruct": {
- id: "meta/llama-3.2-11b-vision-instruct",
- name: "Llama 3.2 11b Vision Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-3.1-70b-instruct": {
- id: "meta/llama-3.1-70b-instruct",
- name: "Llama 3.1 70b Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-3.2-1b-instruct": {
- id: "meta/llama-3.2-1b-instruct",
- name: "Llama 3.2 1b Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-4-maverick-17b-128e-instruct": {
- id: "meta/llama-4-maverick-17b-128e-instruct",
- name: "Llama 4 Maverick 17b 128e Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-3.1-405b-instruct": {
- id: "meta/llama-3.1-405b-instruct",
- name: "Llama 3.1 405b Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "qwen/qwen3-235b-a22b": {
- id: "qwen/qwen3-235b-a22b",
- name: "Qwen3-235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "qwen/qwen2.5-coder-7b-instruct": {
- id: "qwen/qwen2.5-coder-7b-instruct",
- name: "Qwen2.5 Coder 7b Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-17",
- last_updated: "2024-09-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "qwen/qwen2.5-coder-32b-instruct": {
- id: "qwen/qwen2.5-coder-32b-instruct",
- name: "Qwen2.5 Coder 32b Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "qwen/qwen3.5-397b-a17b": {
- id: "qwen/qwen3.5-397b-a17b",
- name: "Qwen3.5-397B-A17B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 8192 },
- },
- "qwen/qwen3-next-80b-a3b-thinking": {
- id: "qwen/qwen3-next-80b-a3b-thinking",
- name: "Qwen3-Next-80B-A3B-Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 16384 },
- },
- "qwen/qwq-32b": {
- id: "qwen/qwq-32b",
- name: "Qwq 32b",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-05",
- last_updated: "2025-03-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "qwen/qwen3-next-80b-a3b-instruct": {
- id: "qwen/qwen3-next-80b-a3b-instruct",
- name: "Qwen3-Next-80B-A3B-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 16384 },
- },
- "qwen/qwen3-coder-480b-a35b-instruct": {
- id: "qwen/qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 66536 },
- },
- "google/gemma-2-2b-it": {
- id: "google/gemma-2-2b-it",
- name: "Gemma 2 2b It",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/gemma-3n-e4b-it": {
- id: "google/gemma-3n-e4b-it",
- name: "Gemma 3n E4b It",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/gemma-3-1b-it": {
- id: "google/gemma-3-1b-it",
- name: "Gemma 3 1b It",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/codegemma-7b": {
- id: "google/codegemma-7b",
- name: "Codegemma 7b",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-03-21",
- last_updated: "2024-03-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/gemma-4-31b-it": {
- id: "google/gemma-4-31b-it",
- name: "Gemma-4-31B-IT",
- family: "gemma",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 16384 },
- },
- "google/gemma-3-12b-it": {
- id: "google/gemma-3-12b-it",
- name: "Gemma 3 12b It",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-01",
- last_updated: "2025-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/codegemma-1.1-7b": {
- id: "google/codegemma-1.1-7b",
- name: "Codegemma 1.1 7b",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-04-30",
- last_updated: "2024-04-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/gemma-3n-e2b-it": {
- id: "google/gemma-3n-e2b-it",
- name: "Gemma 3n E2b It",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/gemma-2-27b-it": {
- id: "google/gemma-2-27b-it",
- name: "Gemma 2 27b It",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-06-24",
- last_updated: "2024-06-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "google/gemma-3-27b-it": {
- id: "google/gemma-3-27b-it",
- name: "Gemma-3-27B-IT",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2024-12-01",
- last_updated: "2025-09-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-07",
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-instruct": {
- id: "moonshotai/kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-01",
- release_date: "2025-01-01",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "moonshotai/kimi-k2-instruct-0905": {
- id: "moonshotai/kimi-k2-instruct-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-11",
- last_updated: "2025-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- 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: {
- "mistral/mistral-nemo-12b-instruct": {
- id: "mistral/mistral-nemo-12b-instruct",
- name: "Mistral Nemo 12B Instruct",
- 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,
- cost: { input: 0.038, output: 0.1 },
- limit: { context: 16000, output: 4096 },
- },
- "meta/llama-3.2-11b-vision-instruct": {
- id: "meta/llama-3.2-11b-vision-instruct",
- name: "Llama 3.2 11B Vision Instruct",
- 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,
- cost: { input: 0.055, output: 0.055 },
- limit: { context: 16000, output: 4096 },
- },
- "meta/llama-3.2-1b-instruct": {
- id: "meta/llama-3.2-1b-instruct",
- name: "Llama 3.2 1B Instruct",
- 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,
- cost: { input: 0.01, output: 0.01 },
- limit: { context: 16000, output: 4096 },
- },
- "meta/llama-3.2-3b-instruct": {
- id: "meta/llama-3.2-3b-instruct",
- name: "Llama 3.2 3B Instruct",
- 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,
- cost: { input: 0.02, output: 0.02 },
- limit: { context: 16000, output: 4096 },
- },
- "meta/llama-3.1-8b-instruct": {
- id: "meta/llama-3.1-8b-instruct",
- name: "Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.025, output: 0.025 },
- limit: { context: 16000, output: 4096 },
- },
- "qwen/qwen-2.5-7b-vision-instruct": {
- id: "qwen/qwen-2.5-7b-vision-instruct",
- name: "Qwen 2.5 7B Vision Instruct",
- 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,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 125000, output: 4096 },
- },
- "qwen/qwen3-embedding-4b": {
- id: "qwen/qwen3-embedding-4b",
- name: "Qwen 3 Embedding 4B",
- 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,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32000, output: 2048 },
- },
- "google/gemma-3": {
- id: "google/gemma-3",
- name: "Google Gemma 3",
- 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,
- cost: { input: 0.15, output: 0.3 },
- limit: { context: 125000, output: 4096 },
- },
- "osmosis/osmosis-structure-0.6b": {
- id: "osmosis/osmosis-structure-0.6b",
- name: "Osmosis Structure 0.6B",
- 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,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 4000, output: 2048 },
- },
- },
- },
- 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": {
- id: "mercury-edit",
- name: "Mercury Edit",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-02-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
- limit: { context: 128000, output: 8192 },
- },
- "mercury-2": {
- id: "mercury-2",
- name: "Mercury 2",
- family: "mercury",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
- limit: { context: 128000, output: 50000 },
- },
- mercury: {
- id: "mercury",
- name: "Mercury",
- family: "mercury",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2025-06-26",
- last_updated: "2025-07-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1, cache_read: 0.25, cache_write: 1 },
- limit: { context: 128000, output: 16384 },
- },
- "mercury-coder": {
- id: "mercury-coder",
- name: "Mercury Coder",
- family: "mercury",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2025-02-26",
- last_updated: "2025-07-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1, cache_read: 0.25, cache_write: 1 },
- limit: { context: 128000, output: 16384 },
- },
- },
- },
- openai: {
- id: "openai",
- env: ["OPENAI_API_KEY"],
- npm: "@ai-sdk/openai",
- name: "OpenAI",
- doc: "https://platform.openai.com/docs/models",
- models: {
- "gpt-5.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1 Codex Max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-4o-2024-05-13": {
- id: "gpt-4o-2024-05-13",
- name: "GPT-4o (2024-05-13)",
- 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,
- cost: { input: 5, output: 15 },
- limit: { context: 128000, output: 4096 },
- },
- "o1-mini": {
- id: "o1-mini",
- name: "o1-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: false,
- knowledge: "2023-09",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 128000, output: 65536 },
- },
- "gpt-5.2-pro": {
- id: "gpt-5.2-pro",
- name: "GPT-5.2 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "text-embedding-3-large": {
- id: "text-embedding-3-large",
- name: "text-embedding-3-large",
- 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,
- cost: { input: 0.13, output: 0 },
- limit: { context: 8191, output: 3072 },
- },
- "gpt-5.3-chat-latest": {
- id: "gpt-5.3-chat-latest",
- name: "GPT-5.3 Chat (latest)",
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.005 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-4-turbo": {
- id: "gpt-4-turbo",
- name: "GPT-4 Turbo",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "text-embedding-ada-002": {
- id: "text-embedding-ada-002",
- name: "text-embedding-ada-002",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "o3-pro": {
- id: "o3-pro",
- name: "o3-pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 20, output: 80 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-4o-mini": {
- id: "gpt-4o-mini",
- name: "GPT-4o mini",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "o4-mini-deep-research": {
- id: "o4-mini-deep-research",
- name: "o4-mini-deep-research",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-05",
- release_date: "2024-06-26",
- last_updated: "2024-06-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
- 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" } },
- },
- },
- },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5.4-nano": {
- id: "gpt-5.4-nano",
- name: "GPT-5.4 nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-image-1": {
- id: "gpt-image-1",
- name: "gpt-image-1",
- 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 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.2-chat-latest": {
- id: "gpt-5.2-chat-latest",
- name: "GPT-5.2 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "o1-preview": {
- id: "o1-preview",
- name: "o1-preview",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2023-09",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-4o-2024-08-06": {
- id: "gpt-4o-2024-08-06",
- name: "GPT-4o (2024-08-06)",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-image-1-mini": {
- id: "gpt-image-1-mini",
- name: "gpt-image-1-mini",
- 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 },
- },
- o1: {
- id: "o1",
- name: "o1",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5.4-pro": {
- id: "gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 30, output: 180, context_over_200k: { input: 60, output: 270 } },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "gpt-3.5-turbo": {
- id: "gpt-3.5-turbo",
- name: "GPT-3.5-turbo",
- 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,
- cost: { input: 0.5, output: 1.5, cache_read: 1.25 },
- limit: { context: 16385, output: 4096 },
- },
- "o3-deep-research": {
- id: "o3-deep-research",
- name: "o3-deep-research",
- family: "o",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-05",
- release_date: "2024-06-26",
- last_updated: "2024-06-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 40, cache_read: 2.5 },
- limit: { context: 200000, output: 100000 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "text-embedding-3-small": {
- id: "text-embedding-3-small",
- name: "text-embedding-3-small",
- 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,
- cost: { input: 0.02, output: 0 },
- limit: { context: 8191, output: 1536 },
- },
- "o1-pro": {
- id: "o1-pro",
- name: "o1-pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 150, output: 600 },
- limit: { context: 200000, output: 100000 },
- },
- "codex-mini-latest": {
- id: "codex-mini-latest",
- name: "Codex Mini",
- family: "gpt-codex-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.5, output: 6, cache_read: 0.375 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-4": {
- id: "gpt-4",
- name: "GPT-4",
- 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,
- cost: { input: 30, output: 60 },
- limit: { context: 8192, output: 8192 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "GPT-5-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 2.5,
- output: 15,
- cache_read: 0.25,
- context_over_200k: { input: 5, output: 22.5, cache_read: 0.5 },
- },
- limit: { context: 1050000, input: 922000, output: 128000 },
- experimental: {
- modes: {
- fast: { cost: { input: 5, output: 30, cache_read: 0.5 }, provider: { body: { service_tier: "priority" } } },
- },
- },
- },
- "gpt-5.1-chat-latest": {
- id: "gpt-5.1-chat-latest",
- name: "GPT-5.1 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.3-codex-spark": {
- id: "gpt-5.3-codex-spark",
- name: "GPT-5.3 Codex Spark",
- family: "gpt-codex-spark",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, input: 100000, output: 32000 },
- },
- "chatgpt-image-latest": {
- id: "chatgpt-image-latest",
- name: "chatgpt-image-latest",
- 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-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "GPT-4.1 nano",
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1047576, output: 32768 },
- },
- o3: {
- id: "o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "GPT-5 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, input: 272000, output: 272000 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5-chat-latest": {
- id: "gpt-5-chat-latest",
- name: "GPT-5 Chat (latest)",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-09-30",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-image-1.5": {
- id: "gpt-image-1.5",
- name: "gpt-image-1.5",
- 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 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "GPT-4.1 mini",
- 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,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-4o-2024-11-20": {
- id: "gpt-4o-2024-11-20",
- name: "GPT-4o (2024-11-20)",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- },
- },
- 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: {
- "xai/grok-4-fast": {
- id: "xai/grok-4-fast",
- name: "Grok 4 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05, cache_write: 0.2 },
- limit: { context: 2000000, output: 64000 },
- },
- "xai/grok-4": {
- id: "xai/grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-09",
- last_updated: "2025-09-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75, cache_write: 3 },
- limit: { context: 256000, output: 64000 },
- },
- "openai/gpt-5.1-codex-max": {
- id: "openai/gpt-5.1-codex-max",
- name: "GPT-5.1-Codex-Max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 9, cache_read: 0.11 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-chat": {
- id: "openai/gpt-5.2-chat",
- name: "GPT-5.2 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5-chat": {
- id: "openai/gpt-5-chat",
- name: "GPT-5 Chat (latest)",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-09-30",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "GPT-5.2 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 128000, output: 32000 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 16000, output: 4000 },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "GPT-5.3-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-5.1-chat": {
- id: "openai/gpt-5.1-chat",
- name: "GPT-5.1 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "o4 Mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-08-31",
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "GPT-5.1-Codex-Mini",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 100000 },
- },
- "openai/gpt-5-image": {
- id: "openai/gpt-5-image",
- name: "GPT-5 Image",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10-01",
- release_date: "2025-10-14",
- last_updated: "2025-10-14",
- modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 5, output: 10, cache_read: 1.25 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.1": {
- id: "openai/gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.4-pro": {
- id: "openai/gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 30, output: 180, cache_read: 30 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "GPT-5 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10-01",
- release_date: "2025-09-15",
- last_updated: "2025-09-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 2.5,
- output: 15,
- cache_read: 0.25,
- context_over_200k: { input: 5, output: 22.5, cache_read: 0.5 },
- },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-5-pro": {
- id: "openai/gpt-5-pro",
- name: "GPT-5 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 272000 },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-09-30",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "audio", "image", "video"], output: ["text", "audio", "image"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "GPT-4.1 Mini",
- 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,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT-5.1-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "google/gemini-3-flash-preview": {
- id: "google/gemini-3-flash-preview",
- name: "Gemini 3 Flash",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 0.5, output: 3, cache_read: 0.05, cache_write: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3-pro-preview": {
- id: "google/gemini-3-pro-preview",
- name: "Gemini 3 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-11-18",
- last_updated: "2025-11-18",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, cache_read: 0.2, cache_write: 4.5 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31, cache_write: 2.375 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, cache_write: 0.55 },
- limit: { context: 1048576, output: 65536 },
- },
- "anthropic/claude-haiku-4-5": {
- id: "anthropic/claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-02-01",
- release_date: "2025-10-15",
- last_updated: "2025-10-15",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 62000 },
- },
- "anthropic/claude-sonnet-4-6": {
- id: "anthropic/claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-17",
- last_updated: "2026-02-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-3-7-sonnet": {
- id: "anthropic/claude-3-7-sonnet",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-01",
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4-1": {
- id: "anthropic/claude-opus-4-1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4-5": {
- id: "anthropic/claude-opus-4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-opus-4-6": {
- id: "anthropic/claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-05-30",
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.5,
- cache_write: 6.25,
- context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-sonnet-4-5": {
- id: "anthropic/claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- },
- },
- 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: {
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2025-02-11",
- last_updated: "2025-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 194000, output: 4096 },
- },
- "GLM-5-FP8": {
- id: "GLM-5-FP8",
- name: "GLM 5 FP8",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2026-02-11",
- last_updated: "2026-02-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.85, output: 3.1 },
- limit: { context: 200000, output: 131072 },
- },
- "DeepSeek-V3.2": {
- id: "DeepSeek-V3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.55, output: 1.65 },
- limit: { context: 127000, output: 4096 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 129000, output: 4096 },
- },
- "Kimi-K2.5": {
- id: "Kimi-K2.5",
- name: "Kimi K2 Instruct",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.55, output: 2.75 },
- limit: { context: 254000, output: 32768 },
- },
- },
- },
- "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-plus": {
- id: "qwen3-coder-plus",
- name: "Qwen3 Coder Plus",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 65536 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 202752, output: 16384 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 202752, output: 16384 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 196608, output: 24576 },
- },
- "qwen3.6-plus": {
- id: "qwen3.6-plus",
- name: "Qwen3.6 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 65536 },
- },
- "qwen3-max-2026-01-23": {
- id: "qwen3-max-2026-01-23",
- name: "Qwen3 Max",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "qwen3-coder-next": {
- id: "qwen3-coder-next",
- name: "Qwen3 Coder Next",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen3.5-plus": {
- id: "qwen3.5-plus",
- name: "Qwen3.5 Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 65536 },
- },
- },
- },
- mistral: {
- id: "mistral",
- env: ["MISTRAL_API_KEY"],
- npm: "@ai-sdk/mistral",
- name: "Mistral",
- doc: "https://docs.mistral.ai/getting-started/models/",
- models: {
- "mistral-small-latest": {
- id: "mistral-small-latest",
- name: "Mistral Small (latest)",
- family: "mistral-small",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 256000, output: 256000 },
- },
- "mistral-nemo": {
- id: "mistral-nemo",
- name: "Mistral Nemo",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral-large-2512": {
- id: "mistral-large-2512",
- name: "Mistral Large 3",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 262144, output: 262144 },
- },
- "labs-devstral-small-2512": {
- id: "labs-devstral-small-2512",
- name: "Devstral Small 2",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 256000 },
- },
- "devstral-2512": {
- id: "devstral-2512",
- name: "Devstral 2",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262144, output: 262144 },
- },
- "magistral-medium-latest": {
- id: "magistral-medium-latest",
- name: "Magistral Medium (latest)",
- family: "magistral-medium",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 5 },
- limit: { context: 128000, output: 16384 },
- },
- "open-mixtral-8x7b": {
- id: "open-mixtral-8x7b",
- name: "Mixtral 8x7B",
- 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,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 32000, output: 32000 },
- },
- "pixtral-large-latest": {
- id: "pixtral-large-latest",
- name: "Pixtral Large (latest)",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral-large-2411": {
- id: "mistral-large-2411",
- name: "Mistral Large 2.1",
- family: "mistral-large",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2024-11-01",
- last_updated: "2024-11-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2, output: 6 },
- limit: { context: 131072, output: 16384 },
- },
- "codestral-latest": {
- id: "codestral-latest",
- name: "Codestral (latest)",
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 4096 },
- },
- "mistral-large-latest": {
- id: "mistral-large-latest",
- name: "Mistral Large (latest)",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 262144, output: 262144 },
- },
- "mistral-small-2506": {
- id: "mistral-small-2506",
- name: "Mistral Small 3.2",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 16384 },
- },
- "pixtral-12b": {
- id: "pixtral-12b",
- name: "Pixtral 12B",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 128000 },
- },
- "ministral-8b-latest": {
- id: "ministral-8b-latest",
- name: "Ministral 8B (latest)",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral-embed": {
- id: "mistral-embed",
- name: "Mistral Embed",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8000, output: 3072 },
- },
- "magistral-small": {
- id: "magistral-small",
- name: "Magistral Small",
- family: "magistral-small",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral-small-2603": {
- id: "mistral-small-2603",
- name: "Mistral Small 4",
- family: "mistral-small",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 256000, output: 256000 },
- },
- "ministral-3b-latest": {
- id: "ministral-3b-latest",
- name: "Ministral 3B (latest)",
- 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,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 128000, output: 128000 },
- },
- "open-mixtral-8x22b": {
- id: "open-mixtral-8x22b",
- name: "Mixtral 8x22B",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 64000, output: 64000 },
- },
- "devstral-small-2505": {
- id: "devstral-small-2505",
- name: "Devstral Small 2505",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 128000 },
- },
- "devstral-medium-2507": {
- id: "devstral-medium-2507",
- name: "Devstral Medium",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral-medium-latest": {
- id: "mistral-medium-latest",
- name: "Mistral Medium (latest)",
- family: "mistral-medium",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2025-05-07",
- last_updated: "2025-05-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2 },
- limit: { context: 128000, output: 16384 },
- },
- "open-mistral-7b": {
- id: "open-mistral-7b",
- name: "Mistral 7B",
- 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,
- cost: { input: 0.25, output: 0.25 },
- limit: { context: 8000, output: 8000 },
- },
- "devstral-medium-latest": {
- id: "devstral-medium-latest",
- name: "Devstral 2 (latest)",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262144, output: 262144 },
- },
- "mistral-medium-2505": {
- id: "mistral-medium-2505",
- name: "Mistral Medium 3",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131072, output: 131072 },
- },
- "devstral-small-2507": {
- id: "devstral-small-2507",
- name: "Devstral Small",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral-medium-2508": {
- id: "mistral-medium-2508",
- name: "Mistral Medium 3.1",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- 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: {
- "mixtral-8x7b-instruct-v0.1": {
- id: "mixtral-8x7b-instruct-v0.1",
- name: "Mixtral-8x7B-Instruct-v0.1",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-01",
- last_updated: "2025-04-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 0.7 },
- limit: { context: 32768, output: 32768 },
- },
- "qwen2.5-coder-32b-instruct": {
- id: "qwen2.5-coder-32b-instruct",
- name: "Qwen2.5-Coder-32B-Instruct",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.96, output: 0.96 },
- limit: { context: 32768, output: 32768 },
- },
- "meta-llama-3_3-70b-instruct": {
- id: "meta-llama-3_3-70b-instruct",
- name: "Meta-Llama-3_3-70B-Instruct",
- 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,
- cost: { input: 0.74, output: 0.74 },
- limit: { context: 131072, output: 131072 },
- },
- "mistral-7b-instruct-v0.3": {
- id: "mistral-7b-instruct-v0.3",
- name: "Mistral-7B-Instruct-v0.3",
- 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,
- cost: { input: 0.11, output: 0.11 },
- limit: { context: 65536, output: 65536 },
- },
- "deepseek-r1-distill-llama-70b": {
- id: "deepseek-r1-distill-llama-70b",
- name: "DeepSeek-R1-Distill-Llama-70B",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.74, output: 0.74 },
- limit: { context: 131072, output: 131072 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3-32B",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.25 },
- limit: { context: 32768, output: 32768 },
- },
- "qwen2.5-vl-72b-instruct": {
- id: "qwen2.5-vl-72b-instruct",
- name: "Qwen2.5-VL-72B-Instruct",
- 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,
- cost: { input: 1.01, output: 1.01 },
- limit: { context: 32768, output: 32768 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3-Coder-30B-A3B-Instruct",
- 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,
- cost: { input: 0.07, output: 0.26 },
- limit: { context: 262144, output: 262144 },
- },
- "gpt-oss-20b": {
- id: "gpt-oss-20b",
- name: "gpt-oss-20b",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-28",
- last_updated: "2025-08-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.18 },
- limit: { context: 131072, output: 131072 },
- },
- "mistral-small-3.2-24b-instruct-2506": {
- id: "mistral-small-3.2-24b-instruct-2506",
- name: "Mistral-Small-3.2-24B-Instruct-2506",
- 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,
- cost: { input: 0.1, output: 0.31 },
- limit: { context: 131072, output: 131072 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "gpt-oss-120b",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- release_date: "2025-08-28",
- last_updated: "2025-08-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.47 },
- limit: { context: 131072, output: 131072 },
- },
- "mistral-nemo-instruct-2407": {
- id: "mistral-nemo-instruct-2407",
- name: "Mistral-Nemo-Instruct-2407",
- 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,
- cost: { input: 0.14, output: 0.14 },
- limit: { context: 65536, output: 65536 },
- },
- "llama-3.1-8b-instruct": {
- id: "llama-3.1-8b-instruct",
- name: "Llama-3.1-8B-Instruct",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-06-11",
- last_updated: "2025-06-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.11, output: 0.11 },
- limit: { context: 131072, output: 131072 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-29",
- last_updated: "2026-01-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 262144, output: 262144 },
- },
- "zai-org/GLM-5.1": {
- id: "zai-org/GLM-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4 },
- limit: { context: 202752, output: 202752 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2 },
- limit: { context: 202752, output: 202752 },
- },
- "meta-llama/Llama-3.3-70B-Instruct": {
- id: "meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama 3.3 70B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-08-01",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 0.6 },
- limit: { context: 131072, output: 131072 },
- },
- "meta-llama/Llama-3.1-8B-Instruct": {
- id: "meta-llama/Llama-3.1-8B-Instruct",
- name: "Llama 3.1 8B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-08-01",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131072, output: 8000 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 196608, output: 196608 },
- },
- },
- },
- 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: {
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.09, output: 5.43 },
- limit: { context: 200000, output: 200000 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.76 },
- limit: { context: 256000, output: 256000 },
- },
- "deepseek-v3-0324": {
- id: "deepseek-v3-0324",
- name: "DeepSeek V3 0324",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.551, output: 1.654 },
- limit: { context: 128000, output: 128000 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 2.23 },
- limit: { context: 198000, output: 198000 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM 5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.08, output: 3.44 },
- limit: { context: 202752, output: 202752 },
- },
- "nova-pro-v1": {
- id: "nova-pro-v1",
- name: "Nova Pro 1.0",
- family: "nova-pro",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-12-03",
- last_updated: "2024-12-03",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.016, output: 4.061 },
- limit: { context: 300000, output: 5000 },
- },
- "devstral-2512": {
- id: "devstral-2512",
- name: "Devstral 2 2512",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262000, output: 262000 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-04-29",
- last_updated: "2025-04-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.099, output: 0.33 },
- limit: { context: 16384, output: 16384 },
- },
- "claude-4-5-sonnet": {
- id: "claude-4-5-sonnet",
- name: "Claude 4.5 Sonnet",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3.259, output: 16.296 },
- limit: { context: 200000, output: 200000 },
- },
- "kimi-k2-instruct": {
- id: "kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-07-11",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.551, output: 2.646 },
- limit: { context: 131000, output: 131000 },
- },
- "minimax-m2": {
- id: "minimax-m2",
- name: "MiniMax-M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.39, output: 1.57 },
- limit: { context: 400000, output: 400000 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-03-20",
- last_updated: "2025-06-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.654, output: 11.024 },
- limit: { context: 1048576, output: 65535 },
- },
- "claude-opus4-6": {
- id: "claude-opus4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5.98, output: 29.89 },
- limit: { context: 1000000, output: 1000000 },
- },
- "devstral-small-2512": {
- id: "devstral-small-2512",
- name: "Devstral Small 2 2512",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262000, output: 262000 },
- },
- "minimax-m2.1": {
- id: "minimax-m2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.34, output: 1.34 },
- limit: { context: 196000, output: 196000 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM 4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-07-29",
- last_updated: "2025-07-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.67, output: 2.46 },
- limit: { context: 131072, output: 131072 },
- },
- "claude-opus4-5": {
- id: "claude-opus4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5.98, output: 29.89 },
- limit: { context: 200000, output: 200000 },
- },
- "claude-sonnet-4": {
- id: "claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3.307, output: 16.536 },
- limit: { context: 200000, output: 64000 },
- },
- "qwen3-next-80b-a3b-thinking": {
- id: "qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.164, output: 1.311 },
- limit: { context: 128000, output: 128000 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM 4.5 Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.22, output: 1.34 },
- limit: { context: 131072, output: 131072 },
- },
- "qwen3-coder-next": {
- id: "qwen3-coder-next",
- name: "Qwen3 Coder Next 80B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2026-02-04",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.158, output: 0.84 },
- limit: { context: 256000, output: 65536 },
- },
- "claude-4-6-sonnet": {
- id: "claude-4-6-sonnet",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3.59, output: 17.92 },
- limit: { context: 1000000, output: 1000000 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-07-25",
- last_updated: "2025-07-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.441, output: 1.984 },
- limit: { context: 262000, output: 262000 },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.32, output: 1.18 },
- limit: { context: 196608, output: 196608 },
- },
- "intellect-3": {
- id: "intellect-3",
- name: "INTELLECT 3",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2025-11-26",
- last_updated: "2025-11-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.219, output: 1.202 },
- limit: { context: 128000, output: 128000 },
- },
- "glm-4.7-flash": {
- id: "glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.53 },
- limit: { context: 203000, output: 203000 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT Oss 120b",
- family: "gpt-oss",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-01",
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 128000 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT 4.1",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.354, output: 9.417 },
- limit: { context: 1047576, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2025-12",
- release_date: "2025-12-08",
- last_updated: "2025-12-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.656, output: 2.731 },
- limit: { context: 262000, output: 262000 },
- },
- "llama-3.1-405b-instruct": {
- id: "llama-3.1-405b-instruct",
- name: "Llama 3.1 405B Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 128000 },
- },
- },
- },
- 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: {
- "nex-agi/DeepSeek-V3.1-Nex-N1": {
- id: "nex-agi/DeepSeek-V3.1-Nex-N1",
- name: "nex-agi/DeepSeek-V3.1-Nex-N1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 2 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen2.5-VL-72B-Instruct": {
- id: "Qwen/Qwen2.5-VL-72B-Instruct",
- name: "Qwen/Qwen2.5-VL-72B-Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-28",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.59, output: 0.59 },
- limit: { context: 131000, output: 4000 },
- },
- "Qwen/Qwen3-VL-32B-Thinking": {
- id: "Qwen/Qwen3-VL-32B-Thinking",
- name: "Qwen/Qwen3-VL-32B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-30B-A3B-Thinking-2507": {
- id: "Qwen/Qwen3-30B-A3B-Thinking-2507",
- name: "Qwen/Qwen3-30B-A3B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.3 },
- limit: { context: 262000, output: 131000 },
- },
- "Qwen/Qwen3-VL-235B-A22B-Thinking": {
- id: "Qwen/Qwen3-VL-235B-A22B-Thinking",
- name: "Qwen/Qwen3-VL-235B-A22B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 3.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-7B-Instruct": {
- id: "Qwen/Qwen2.5-7B-Instruct",
- name: "Qwen/Qwen2.5-7B-Instruct",
- 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,
- cost: { input: 0.05, output: 0.05 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen2.5-Coder-32B-Instruct": {
- id: "Qwen/Qwen2.5-Coder-32B-Instruct",
- name: "Qwen/Qwen2.5-Coder-32B-Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-11-11",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-VL-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-VL-30B-A3B-Instruct",
- name: "Qwen/Qwen3-VL-30B-A3B-Instruct",
- 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,
- cost: { input: 0.29, output: 1 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/QwQ-32B": {
- id: "Qwen/QwQ-32B",
- name: "Qwen/QwQ-32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-06",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.58 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-235B-A22B": {
- id: "Qwen/Qwen3-235B-A22B",
- name: "Qwen/Qwen3-235B-A22B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.35, output: 1.42 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-Omni-30B-A3B-Captioner": {
- id: "Qwen/Qwen3-Omni-30B-A3B-Captioner",
- name: "Qwen/Qwen3-Omni-30B-A3B-Captioner",
- 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: ["audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 66000, output: 66000 },
- },
- "Qwen/Qwen3-VL-8B-Thinking": {
- id: "Qwen/Qwen3-VL-8B-Thinking",
- name: "Qwen/Qwen3-VL-8B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.18, output: 2 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-VL-7B-Instruct": {
- id: "Qwen/Qwen2.5-VL-7B-Instruct",
- name: "Qwen/Qwen2.5-VL-7B-Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-28",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.05 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Instruct": {
- id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- name: "Qwen/Qwen3-Next-80B-A3B-Instruct",
- 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,
- cost: { input: 0.14, output: 1.4 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-8B": {
- id: "Qwen/Qwen3-8B",
- name: "Qwen/Qwen3-8B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.06, output: 0.06 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-30B-A3B-Instruct-2507": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- 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,
- cost: { input: 0.09, output: 0.3 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-23",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.09, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-32B": {
- id: "Qwen/Qwen3-32B",
- name: "Qwen/Qwen3-32B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-Coder-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
- name: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-Omni-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-Omni-30B-A3B-Instruct",
- name: "Qwen/Qwen3-Omni-30B-A3B-Instruct",
- 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", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 66000, output: 66000 },
- },
- "Qwen/Qwen3-14B": {
- id: "Qwen/Qwen3-14B",
- name: "Qwen/Qwen3-14B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen2.5-72B-Instruct-128K": {
- id: "Qwen/Qwen2.5-72B-Instruct-128K",
- name: "Qwen/Qwen2.5-72B-Instruct-128K",
- 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,
- cost: { input: 0.59, output: 0.59 },
- limit: { context: 131000, output: 4000 },
- },
- "Qwen/Qwen2.5-32B-Instruct": {
- id: "Qwen/Qwen2.5-32B-Instruct",
- name: "Qwen/Qwen2.5-32B-Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-19",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.13, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-Omni-30B-A3B-Thinking": {
- id: "Qwen/Qwen3-Omni-30B-A3B-Thinking",
- name: "Qwen/Qwen3-Omni-30B-A3B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-04",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4 },
- limit: { context: 66000, output: 66000 },
- },
- "Qwen/Qwen2.5-VL-32B-Instruct": {
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
- name: "Qwen/Qwen2.5-VL-32B-Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-24",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 0.27 },
- limit: { context: 131000, output: 131000 },
- },
- "Qwen/Qwen3-Next-80B-A3B-Thinking": {
- id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
- name: "Qwen/Qwen3-Next-80B-A3B-Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-235B-A22B-Instruct": {
- id: "Qwen/Qwen3-VL-235B-A22B-Instruct",
- name: "Qwen/Qwen3-VL-235B-A22B-Instruct",
- 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,
- cost: { input: 0.3, output: 1.5 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-14B-Instruct": {
- id: "Qwen/Qwen2.5-14B-Instruct",
- name: "Qwen/Qwen2.5-14B-Instruct",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 33000, output: 4000 },
- },
- "Qwen/Qwen3-VL-30B-A3B-Thinking": {
- id: "Qwen/Qwen3-VL-30B-A3B-Thinking",
- name: "Qwen/Qwen3-VL-30B-A3B-Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 1 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-32B-Instruct": {
- id: "Qwen/Qwen3-VL-32B-Instruct",
- name: "Qwen/Qwen3-VL-32B-Instruct",
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-VL-8B-Instruct": {
- id: "Qwen/Qwen3-VL-8B-Instruct",
- name: "Qwen/Qwen3-VL-8B-Instruct",
- 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,
- cost: { input: 0.18, output: 0.68 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- name: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 262000, output: 262000 },
- },
- "Qwen/Qwen2.5-72B-Instruct": {
- id: "Qwen/Qwen2.5-72B-Instruct",
- name: "Qwen/Qwen2.5-72B-Instruct",
- 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,
- cost: { input: 0.59, output: 0.59 },
- limit: { context: 33000, output: 4000 },
- },
- "stepfun-ai/Step-3.5-Flash": {
- id: "stepfun-ai/Step-3.5-Flash",
- name: "stepfun-ai/Step-3.5-Flash",
- family: "step",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262000, output: 262000 },
- },
- "zai-org/GLM-4.5": {
- id: "zai-org/GLM-4.5",
- name: "zai-org/GLM-4.5",
- family: "glm",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 131000, output: 131000 },
- },
- "zai-org/GLM-5V-Turbo": {
- id: "zai-org/GLM-5V-Turbo",
- name: "zai-org/GLM-5V-Turbo",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.2, output: 4, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "zai-org/GLM-4.7": {
- id: "zai-org/GLM-4.7",
- name: "zai-org/GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 205000, output: 205000 },
- },
- "zai-org/GLM-5.1": {
- id: "zai-org/GLM-5.1",
- name: "zai-org/GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.4, output: 4.4, cache_write: 0 },
- limit: { context: 205000, output: 205000 },
- },
- "zai-org/GLM-4.5-Air": {
- id: "zai-org/GLM-4.5-Air",
- name: "zai-org/GLM-4.5-Air",
- 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,
- cost: { input: 0.14, output: 0.86 },
- limit: { context: 131000, output: 131000 },
- },
- "zai-org/GLM-5": {
- id: "zai-org/GLM-5",
- name: "zai-org/GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2 },
- limit: { context: 205000, output: 205000 },
- },
- "zai-org/GLM-4.6V": {
- id: "zai-org/GLM-4.6V",
- name: "zai-org/GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-07",
- last_updated: "2025-12-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 131000, output: 131000 },
- },
- "zai-org/GLM-4.6": {
- id: "zai-org/GLM-4.6",
- name: "zai-org/GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-04",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.9 },
- limit: { context: 205000, output: 205000 },
- },
- "zai-org/GLM-4.5V": {
- id: "zai-org/GLM-4.5V",
- name: "zai-org/GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-13",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.86 },
- limit: { context: 66000, output: 66000 },
- },
- "meta-llama/Meta-Llama-3.1-8B-Instruct": {
- id: "meta-llama/Meta-Llama-3.1-8B-Instruct",
- name: "meta-llama/Meta-Llama-3.1-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-23",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.06, output: 0.06 },
- limit: { context: 33000, output: 4000 },
- },
- "inclusionAI/Ring-flash-2.0": {
- id: "inclusionAI/Ring-flash-2.0",
- name: "inclusionAI/Ring-flash-2.0",
- family: "ring",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "inclusionAI/Ling-mini-2.0": {
- id: "inclusionAI/Ling-mini-2.0",
- name: "inclusionAI/Ling-mini-2.0",
- family: "ling",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-10",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.07, output: 0.28 },
- limit: { context: 131000, output: 131000 },
- },
- "inclusionAI/Ling-flash-2.0": {
- id: "inclusionAI/Ling-flash-2.0",
- name: "inclusionAI/Ling-flash-2.0",
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "tencent/Hunyuan-A13B-Instruct": {
- id: "tencent/Hunyuan-A13B-Instruct",
- name: "tencent/Hunyuan-A13B-Instruct",
- family: "hunyuan",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "tencent/Hunyuan-MT-7B": {
- id: "tencent/Hunyuan-MT-7B",
- name: "tencent/Hunyuan-MT-7B",
- family: "hunyuan",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 33000, output: 33000 },
- },
- "deepseek-ai/DeepSeek-V3.1": {
- id: "deepseek-ai/DeepSeek-V3.1",
- name: "deepseek-ai/DeepSeek-V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/deepseek-vl2": {
- id: "deepseek-ai/deepseek-vl2",
- name: "deepseek-ai/deepseek-vl2",
- family: "deepseek",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-12-13",
- last_updated: "2025-11-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 4000, output: 4000 },
- },
- "deepseek-ai/DeepSeek-V3": {
- id: "deepseek-ai/DeepSeek-V3",
- name: "deepseek-ai/DeepSeek-V3",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B": {
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
- name: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0.18 },
- limit: { context: 131000, output: 131000 },
- },
- "deepseek-ai/DeepSeek-R1": {
- id: "deepseek-ai/DeepSeek-R1",
- name: "deepseek-ai/DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.18 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B": {
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
- name: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-20",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131000, output: 131000 },
- },
- "deepseek-ai/DeepSeek-V3.2-Exp": {
- id: "deepseek-ai/DeepSeek-V3.2-Exp",
- name: "deepseek-ai/DeepSeek-V3.2-Exp",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.41 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-V3.2": {
- id: "deepseek-ai/DeepSeek-V3.2",
- name: "deepseek-ai/DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 0.42 },
- limit: { context: 164000, output: 164000 },
- },
- "deepseek-ai/DeepSeek-V3.1-Terminus": {
- id: "deepseek-ai/DeepSeek-V3.1-Terminus",
- name: "deepseek-ai/DeepSeek-V3.1-Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 164000, output: 164000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "openai/gpt-oss-20b",
- 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,
- cost: { input: 0.04, output: 0.18 },
- limit: { context: 131000, output: 8000 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "openai/gpt-oss-120b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.45 },
- limit: { context: 131000, output: 8000 },
- },
- "baidu/ERNIE-4.5-300B-A47B": {
- id: "baidu/ERNIE-4.5-300B-A47B",
- name: "baidu/ERNIE-4.5-300B-A47B",
- 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,
- cost: { input: 0.28, output: 1.1 },
- limit: { context: 131000, output: 131000 },
- },
- "THUDM/GLM-Z1-9B-0414": {
- id: "THUDM/GLM-Z1-9B-0414",
- name: "THUDM/GLM-Z1-9B-0414",
- family: "glm-z",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.086, output: 0.086 },
- limit: { context: 131000, output: 131000 },
- },
- "THUDM/GLM-4-9B-0414": {
- id: "THUDM/GLM-4-9B-0414",
- name: "THUDM/GLM-4-9B-0414",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.086, output: 0.086 },
- limit: { context: 33000, output: 33000 },
- },
- "THUDM/GLM-4-32B-0414": {
- id: "THUDM/GLM-4-32B-0414",
- name: "THUDM/GLM-4-32B-0414",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 0.27 },
- limit: { context: 33000, output: 33000 },
- },
- "THUDM/GLM-Z1-32B-0414": {
- id: "THUDM/GLM-Z1-32B-0414",
- name: "THUDM/GLM-Z1-32B-0414",
- family: "glm-z",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-18",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.14, output: 0.57 },
- limit: { context: 131000, output: 131000 },
- },
- "moonshotai/Kimi-K2-Thinking": {
- id: "moonshotai/Kimi-K2-Thinking",
- name: "moonshotai/Kimi-K2-Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-07",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.55, output: 2.5 },
- limit: { context: 262000, output: 262000 },
- },
- "moonshotai/Kimi-K2-Instruct": {
- id: "moonshotai/Kimi-K2-Instruct",
- name: "moonshotai/Kimi-K2-Instruct",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-13",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.58, output: 2.29 },
- limit: { context: 131000, output: 131000 },
- },
- "moonshotai/Kimi-K2-Instruct-0905": {
- id: "moonshotai/Kimi-K2-Instruct-0905",
- name: "moonshotai/Kimi-K2-Instruct-0905",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-08",
- last_updated: "2025-11-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262000, output: 262000 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "moonshotai/Kimi-K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-27",
- last_updated: "2026-01-27",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.55, output: 3 },
- limit: { context: 262000, output: 262000 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMaxAI/MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2026-02-15",
- last_updated: "2026-02-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 197000, output: 131000 },
- },
- "MiniMaxAI/MiniMax-M2.1": {
- id: "MiniMaxAI/MiniMax-M2.1",
- name: "MiniMaxAI/MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: false,
- 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: false,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 197000, output: 131000 },
- },
- "ByteDance-Seed/Seed-OSS-36B-Instruct": {
- id: "ByteDance-Seed/Seed-OSS-36B-Instruct",
- name: "ByteDance-Seed/Seed-OSS-36B-Instruct",
- 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,
- cost: { input: 0.21, output: 0.57 },
- limit: { context: 262000, output: 262000 },
- },
- },
- },
- 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: {
- "alibaba/qwen3-coder-plus": {
- id: "alibaba/qwen3-coder-plus",
- name: "Qwen3 Coder Plus",
- 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,
- cost: { input: 1, output: 5 },
- limit: { context: 1000000, output: 1000000 },
- },
- "alibaba/qwen3-embedding-8b": {
- id: "alibaba/qwen3-embedding-8b",
- name: "Qwen3 Embedding 8B",
- 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: false,
- cost: { input: 0.05, output: 0 },
- limit: { context: 32768, output: 32768 },
- },
- "alibaba/qwen-3-30b": {
- id: "alibaba/qwen-3-30b",
- name: "Qwen3-30B-A3B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.08, output: 0.29 },
- limit: { context: 40960, output: 16384 },
- },
- "alibaba/qwen-3-235b": {
- id: "alibaba/qwen-3-235b",
- name: "Qwen3 235B A22B Instruct 2507",
- 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: false,
- cost: { input: 0.13, output: 0.6 },
- limit: { context: 40960, output: 16384 },
- },
- "alibaba/qwen3.5-flash": {
- id: "alibaba/qwen3.5-flash",
- name: "Qwen 3.5 Flash",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-02-24",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.001, cache_write: 0.125 },
- limit: { context: 1000000, output: 64000 },
- },
- "alibaba/qwen3.6-plus": {
- id: "alibaba/qwen3.6-plus",
- name: "Qwen 3.6 Plus",
- family: "qwen",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 3, cache_read: 0.09999999999999999, cache_write: 0.625 },
- limit: { context: 1000000, output: 64000 },
- },
- "alibaba/qwen3-max": {
- id: "alibaba/qwen3-max",
- name: "Qwen3 Max",
- 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,
- cost: { input: 1.2, output: 6 },
- limit: { context: 262144, output: 32768 },
- },
- "alibaba/qwen3-embedding-0.6b": {
- id: "alibaba/qwen3-embedding-0.6b",
- name: "Qwen3 Embedding 0.6B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-11-14",
- last_updated: "2025-11-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.01, output: 0 },
- limit: { context: 32768, output: 32768 },
- },
- "alibaba/qwen-3-32b": {
- id: "alibaba/qwen-3-32b",
- name: "Qwen 3.32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 40960, output: 16384 },
- },
- "alibaba/qwen3-next-80b-a3b-thinking": {
- id: "alibaba/qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-09-12",
- last_updated: "2025-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 1.5 },
- limit: { context: 131072, output: 65536 },
- },
- "alibaba/qwen3-vl-thinking": {
- id: "alibaba/qwen3-vl-thinking",
- name: "Qwen3 VL Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-09-24",
- last_updated: "2025-09-24",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 8.4 },
- limit: { context: 131072, output: 129024 },
- },
- "alibaba/qwen3-235b-a22b-thinking": {
- id: "alibaba/qwen3-235b-a22b-thinking",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.9 },
- limit: { context: 262114, output: 262114 },
- },
- "alibaba/qwen3-next-80b-a3b-instruct": {
- id: "alibaba/qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09-12",
- last_updated: "2025-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 1.1 },
- limit: { context: 262144, output: 32768 },
- },
- "alibaba/qwen3-coder-next": {
- id: "alibaba/qwen3-coder-next",
- name: "Qwen3 Coder Next",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-07-22",
- last_updated: "2026-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.2 },
- limit: { context: 256000, output: 256000 },
- },
- "alibaba/qwen3-embedding-4b": {
- id: "alibaba/qwen3-embedding-4b",
- name: "Qwen3 Embedding 4B",
- 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: false,
- cost: { input: 0.02, output: 0 },
- limit: { context: 32768, output: 32768 },
- },
- "alibaba/qwen3-max-thinking": {
- id: "alibaba/qwen3-max-thinking",
- name: "Qwen 3 Max Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-01",
- last_updated: "2025-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.2, output: 6, cache_read: 0.24 },
- limit: { context: 256000, output: 65536 },
- },
- "alibaba/qwen3-coder": {
- id: "alibaba/qwen3-coder",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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: false,
- cost: { input: 0.38, output: 1.53 },
- limit: { context: 262144, output: 66536 },
- },
- "alibaba/qwen3-max-preview": {
- id: "alibaba/qwen3-max-preview",
- name: "Qwen3 Max Preview",
- 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,
- cost: { input: 1.2, output: 6, cache_read: 0.24 },
- limit: { context: 262144, output: 32768 },
- },
- "alibaba/qwen3.5-plus": {
- id: "alibaba/qwen3.5-plus",
- name: "Qwen 3.5 Plus",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-16",
- last_updated: "2026-02-19",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 2.4, cache_read: 0.04, cache_write: 0.5 },
- limit: { context: 1000000, output: 64000 },
- },
- "alibaba/qwen-3-14b": {
- id: "alibaba/qwen-3-14b",
- name: "Qwen3-14B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.06, output: 0.24 },
- limit: { context: 40960, output: 16384 },
- },
- "alibaba/qwen3-vl-instruct": {
- id: "alibaba/qwen3-vl-instruct",
- name: "Qwen3 VL Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-09-24",
- last_updated: "2025-09-24",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.8 },
- limit: { context: 131072, output: 129024 },
- },
- "alibaba/qwen3-coder-30b-a3b": {
- id: "alibaba/qwen3-coder-30b-a3b",
- name: "Qwen 3 Coder 30B A3B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-04",
- release_date: "2025-04",
- last_updated: "2025-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.07, output: 0.27 },
- limit: { context: 160000, output: 32768 },
- },
- "perplexity/sonar-pro": {
- id: "perplexity/sonar-pro",
- name: "Sonar Pro",
- 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,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 8000 },
- },
- "perplexity/sonar": {
- id: "perplexity/sonar",
- name: "Sonar",
- 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,
- cost: { input: 1, output: 1 },
- limit: { context: 127000, output: 8000 },
- },
- "perplexity/sonar-reasoning": {
- id: "perplexity/sonar-reasoning",
- name: "Sonar Reasoning",
- family: "sonar-reasoning",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5 },
- limit: { context: 127000, output: 8000 },
- },
- "perplexity/sonar-reasoning-pro": {
- id: "perplexity/sonar-reasoning-pro",
- name: "Sonar Reasoning Pro",
- family: "sonar-reasoning",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 127000, output: 8000 },
- },
- "deepseek/deepseek-v3.2-thinking": {
- id: "deepseek/deepseek-v3.2-thinking",
- name: "DeepSeek V3.2 Thinking",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.42, cache_read: 0.03 },
- limit: { context: 128000, output: 64000 },
- },
- "deepseek/deepseek-v3.2-exp": {
- id: "deepseek/deepseek-v3.2-exp",
- name: "DeepSeek V3.2 Exp",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-09",
- release_date: "2025-09-29",
- last_updated: "2025-09-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.27, output: 0.4 },
- limit: { context: 163840, output: 163840 },
- },
- "deepseek/deepseek-v3.1": {
- id: "deepseek/deepseek-v3.1",
- name: "DeepSeek-V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1 },
- limit: { context: 163840, output: 128000 },
- },
- "deepseek/deepseek-v3.2": {
- id: "deepseek/deepseek-v3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- 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: false,
- cost: { input: 0.27, output: 0.4, cache_read: 0.22 },
- limit: { context: 163842, output: 8000 },
- },
- "deepseek/deepseek-v3": {
- id: "deepseek/deepseek-v3",
- name: "DeepSeek V3 0324",
- 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: false,
- cost: { input: 0.77, output: 0.77 },
- limit: { context: 163840, output: 16384 },
- },
- "deepseek/deepseek-v3.1-terminus": {
- id: "deepseek/deepseek-v3.1-terminus",
- name: "DeepSeek V3.1 Terminus",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1 },
- limit: { context: 131072, output: 65536 },
- },
- "deepseek/deepseek-r1": {
- id: "deepseek/deepseek-r1",
- name: "DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 128000, output: 32768 },
- },
- "arcee-ai/trinity-mini": {
- id: "arcee-ai/trinity-mini",
- name: "Trinity Mini",
- family: "trinity",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12",
- last_updated: "2025-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.15 },
- limit: { context: 131072, output: 131072 },
- },
- "arcee-ai/trinity-large-thinking": {
- id: "arcee-ai/trinity-large-thinking",
- name: "Trinity Large Thinking",
- family: "trinity",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-04-01",
- last_updated: "2026-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.25, output: 0.8999999999999999 },
- limit: { context: 262100, output: 80000 },
- },
- "arcee-ai/trinity-large-preview": {
- id: "arcee-ai/trinity-large-preview",
- name: "Trinity Large Preview",
- family: "trinity",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-01",
- last_updated: "2025-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1 },
- limit: { context: 131000, output: 131000 },
- },
- "recraft/recraft-v3": {
- id: "recraft/recraft-v3",
- name: "Recraft V3",
- family: "recraft",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-10",
- last_updated: "2024-10",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 512, output: 0 },
- },
- "recraft/recraft-v2": {
- id: "recraft/recraft-v2",
- name: "Recraft V2",
- family: "recraft",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-03",
- last_updated: "2024-03",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 512, output: 0 },
- },
- "voyage/voyage-3-large": {
- id: "voyage/voyage-3-large",
- name: "voyage-3-large",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-09",
- last_updated: "2024-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "voyage/voyage-4-large": {
- id: "voyage/voyage-4-large",
- name: "voyage-4-large",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-06",
- 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",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.02, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "voyage/voyage-code-3": {
- id: "voyage/voyage-code-3",
- name: "voyage-code-3",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-09",
- last_updated: "2024-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.18, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "voyage/voyage-finance-2": {
- id: "voyage/voyage-finance-2",
- name: "voyage-finance-2",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-03",
- last_updated: "2024-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.12, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "voyage/voyage-4-lite": {
- id: "voyage/voyage-4-lite",
- name: "voyage-4-lite",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-06",
- last_updated: "2026-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 32000, output: 0 },
- },
- "voyage/voyage-4": {
- id: "voyage/voyage-4",
- name: "voyage-4",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-06",
- last_updated: "2026-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 32000, output: 0 },
- },
- "voyage/voyage-code-2": {
- id: "voyage/voyage-code-2",
- name: "voyage-code-2",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-01",
- last_updated: "2024-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.12, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "voyage/voyage-law-2": {
- id: "voyage/voyage-law-2",
- name: "voyage-law-2",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-03",
- last_updated: "2024-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.12, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "voyage/voyage-3.5": {
- id: "voyage/voyage-3.5",
- name: "voyage-3.5",
- family: "voyage",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.06, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "morph/morph-v3-large": {
- id: "morph/morph-v3-large",
- name: "Morph v3 Large",
- 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,
- cost: { input: 0.9, output: 1.9 },
- limit: { context: 32000, output: 32000 },
- },
- "morph/morph-v3-fast": {
- id: "morph/morph-v3-fast",
- name: "Morph v3 Fast",
- 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,
- cost: { input: 0.8, output: 1.2 },
- limit: { context: 16000, output: 16000 },
- },
- "zai/glm-5v-turbo": {
- id: "zai/glm-5v-turbo",
- name: "GLM 5V Turbo",
- family: "glm",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-04-01",
- last_updated: "2026-04-03",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 4, cache_read: 0.24 },
- limit: { context: 200000, output: 128000 },
- },
- "zai/glm-4.7": {
- id: "zai/glm-4.7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.43, output: 1.75, cache_read: 0.08 },
- limit: { context: 202752, output: 120000 },
- },
- "zai/glm-5": {
- id: "zai/glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202800, output: 131072 },
- },
- "zai/glm-4.7-flashx": {
- id: "zai/glm-4.7-flashx",
- name: "GLM 4.7 FlashX",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-01",
- last_updated: "2025-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.4, cache_read: 0.01 },
- limit: { context: 200000, output: 128000 },
- },
- "zai/glm-4.6v-flash": {
- id: "zai/glm-4.6v-flash",
- name: "GLM-4.6V-Flash",
- family: "glm",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- limit: { context: 128000, output: 24000 },
- },
- "zai/glm-4.5": {
- id: "zai/glm-4.5",
- name: "GLM 4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 131072, output: 131072 },
- },
- "zai/glm-4.5-air": {
- id: "zai/glm-4.5-air",
- name: "GLM 4.5 Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 128000, output: 96000 },
- },
- "zai/glm-5-turbo": {
- id: "zai/glm-5-turbo",
- name: "GLM 5 Turbo",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-15",
- last_updated: "2026-03-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.2, output: 4, cache_read: 0.24 },
- limit: { context: 202800, output: 131100 },
- },
- "zai/glm-4.5v": {
- id: "zai/glm-4.5v",
- name: "GLM 4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.8 },
- limit: { context: 66000, output: 66000 },
- },
- "zai/glm-4.6": {
- id: "zai/glm-4.6",
- name: "GLM 4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.45, output: 1.8 },
- limit: { context: 200000, output: 96000 },
- },
- "zai/glm-4.6v": {
- id: "zai/glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.9, cache_read: 0.05 },
- limit: { context: 128000, output: 24000 },
- },
- "zai/glm-4.7-flash": {
- id: "zai/glm-4.7-flash",
- name: "GLM 4.7 Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-13",
- last_updated: "2026-03-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.07, output: 0.39999999999999997 },
- limit: { context: 200000, output: 131000 },
- },
- "cohere/command-a": {
- id: "cohere/command-a",
- name: "Command A",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, output: 8000 },
- },
- "cohere/embed-v4.0": {
- id: "cohere/embed-v4.0",
- name: "Embed v4.0",
- family: "cohere-embed",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-04-15",
- last_updated: "2025-04-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.12, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "prime-intellect/intellect-3": {
- id: "prime-intellect/intellect-3",
- name: "INTELLECT 3",
- family: "intellect",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-11-26",
- last_updated: "2025-11-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 131072, output: 131072 },
- },
- "xai/grok-4.20-non-reasoning": {
- id: "xai/grok-4.20-non-reasoning",
- name: "Grok 4.20 Non-Reasoning",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-09",
- last_updated: "2026-03-23",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.19999999999999998 },
- limit: { context: 2000000, output: 2000000 },
- },
- "xai/grok-4.20-non-reasoning-beta": {
- id: "xai/grok-4.20-non-reasoning-beta",
- name: "Grok 4.20 Beta Non-Reasoning",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-13",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.19999999999999998 },
- limit: { context: 2000000, output: 2000000 },
- },
- "xai/grok-4.20-reasoning": {
- id: "xai/grok-4.20-reasoning",
- name: "Grok 4.20 Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-09",
- last_updated: "2026-03-23",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.19999999999999998 },
- limit: { context: 2000000, output: 2000000 },
- },
- "xai/grok-imagine-image": {
- id: "xai/grok-imagine-image",
- name: "Grok Imagine Image",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-01-28",
- last_updated: "2026-02-19",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- limit: { context: 0, output: 0 },
- },
- "xai/grok-4.20-multi-agent-beta": {
- id: "xai/grok-4.20-multi-agent-beta",
- name: "Grok 4.20 Multi Agent Beta",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.19999999999999998 },
- limit: { context: 2000000, output: 2000000 },
- },
- "xai/grok-imagine-image-pro": {
- id: "xai/grok-imagine-image-pro",
- name: "Grok Imagine Image Pro",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-01-28",
- last_updated: "2026-02-19",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- limit: { context: 0, output: 0 },
- },
- "xai/grok-4-fast-reasoning": {
- id: "xai/grok-4-fast-reasoning",
- name: "Grok 4 Fast Reasoning",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 256000 },
- },
- "xai/grok-4.1-fast-non-reasoning": {
- id: "xai/grok-4.1-fast-non-reasoning",
- name: "Grok 4.1 Fast Non-Reasoning",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "xai/grok-4.20-reasoning-beta": {
- id: "xai/grok-4.20-reasoning-beta",
- name: "Grok 4.20 Beta Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-11",
- last_updated: "2026-03-13",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.19999999999999998 },
- limit: { context: 2000000, output: 2000000 },
- },
- "xai/grok-4.20-multi-agent": {
- id: "xai/grok-4.20-multi-agent",
- name: "Grok 4.20 Multi-Agent",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-09",
- last_updated: "2026-03-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6, cache_read: 0.19999999999999998 },
- limit: { context: 2000000, output: 2000000 },
- },
- "xai/grok-4.1-fast-reasoning": {
- id: "xai/grok-4.1-fast-reasoning",
- name: "Grok 4.1 Fast Reasoning",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "xai/grok-4-fast-non-reasoning": {
- id: "xai/grok-4-fast-non-reasoning",
- name: "Grok 4 Fast (Non-Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "xai/grok-3": {
- id: "xai/grok-3",
- name: "Grok 3",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 8192 },
- },
- "xai/grok-3-mini": {
- id: "xai/grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, reasoning: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 8192 },
- },
- "xai/grok-2-vision": {
- id: "xai/grok-2-vision",
- name: "Grok 2 Vision",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 10, cache_read: 2 },
- limit: { context: 8192, output: 4096 },
- },
- "xai/grok-4": {
- id: "xai/grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, reasoning: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 64000 },
- },
- "xai/grok-code-fast-1": {
- id: "xai/grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "xai/grok-3-fast": {
- id: "xai/grok-3-fast",
- name: "Grok 3 Fast",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 1.25 },
- limit: { context: 131072, output: 8192 },
- },
- "xai/grok-3-mini-fast": {
- id: "xai/grok-3-mini-fast",
- name: "Grok 3 Mini Fast",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 4, reasoning: 4, cache_read: 0.15 },
- limit: { context: 131072, output: 8192 },
- },
- "nvidia/nemotron-3-super-120b-a12b": {
- id: "nvidia/nemotron-3-super-120b-a12b",
- name: "NVIDIA Nemotron 3 Super 120B A12B",
- family: "nemotron",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.65 },
- limit: { context: 256000, output: 32000 },
- },
- "nvidia/nemotron-3-nano-30b-a3b": {
- id: "nvidia/nemotron-3-nano-30b-a3b",
- name: "Nemotron 3 Nano 30B A3B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-12",
- last_updated: "2024-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.06, output: 0.24 },
- limit: { context: 262144, output: 262144 },
- },
- "nvidia/nemotron-nano-12b-v2-vl": {
- id: "nvidia/nemotron-nano-12b-v2-vl",
- name: "Nvidia Nemotron Nano 12B V2 VL",
- family: "nemotron",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-12",
- last_updated: "2024-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 131072, output: 131072 },
- },
- "nvidia/nemotron-nano-9b-v2": {
- id: "nvidia/nemotron-nano-9b-v2",
- name: "Nvidia Nemotron Nano 9B V2",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-18",
- last_updated: "2025-08-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.04, output: 0.16 },
- limit: { context: 131072, output: 131072 },
- },
- "inception/mercury-2": {
- id: "inception/mercury-2",
- name: "Mercury 2",
- family: "mercury",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 0.75, cache_read: 0.024999999999999998 },
- limit: { context: 128000, output: 128000 },
- },
- "inception/mercury-coder-small": {
- id: "inception/mercury-coder-small",
- name: "Mercury Coder Small Beta",
- family: "mercury",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-02-26",
- last_updated: "2025-02-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1 },
- limit: { context: 32000, output: 16384 },
- },
- "openai/gpt-5.1-codex-max": {
- id: "openai/gpt-5.1-codex-max",
- name: "GPT 5.1 Codex Max",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.2-chat": {
- id: "openai/gpt-5.2-chat",
- name: "GPT-5.2 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 128000, input: 111616, output: 16384 },
- },
- "openai/gpt-4o-mini-search-preview": {
- id: "openai/gpt-4o-mini-search-preview",
- name: "GPT 4o Mini Search Preview",
- family: "gpt-mini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- knowledge: "2023-09",
- release_date: "2025-01",
- last_updated: "2025-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, input: 111616, output: 16384 },
- },
- "openai/codex-mini": {
- id: "openai/codex-mini",
- name: "Codex Mini",
- family: "gpt-codex-mini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-05-16",
- last_updated: "2025-05-16",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 6, cache_read: 0.38 },
- limit: { context: 200000, input: 100000, output: 100000 },
- },
- "openai/gpt-5-chat": {
- id: "openai/gpt-5-chat",
- name: "GPT-5 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 128000, input: 111616, output: 16384 },
- },
- "openai/gpt-5.3-chat": {
- id: "openai/gpt-5.3-chat",
- name: "GPT-5.3 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-03",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, input: 111616, output: 16384 },
- },
- "openai/gpt-5.2-pro": {
- id: "openai/gpt-5.2-pro",
- name: "GPT 5.2 ",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/text-embedding-3-large": {
- id: "openai/text-embedding-3-large",
- name: "text-embedding-3-large",
- family: "text-embedding",
- 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,
- cost: { input: 0.13, output: 0 },
- limit: { context: 8192, input: 6656, output: 1536 },
- },
- "openai/gpt-5.3-codex": {
- id: "openai/gpt-5.3-codex",
- name: "GPT 5.3 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-24",
- last_updated: "2026-02-24",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/text-embedding-ada-002": {
- id: "openai/text-embedding-ada-002",
- name: "text-embedding-ada-002",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2022-12-15",
- last_updated: "2022-12-15",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8192, input: 6656, output: 1536 },
- },
- "openai/gpt-5.2": {
- id: "openai/gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/o3-pro": {
- id: "openai/o3-pro",
- name: "o3 Pro",
- family: "o-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-10",
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 20, output: 80 },
- limit: { context: 200000, input: 100000, output: 100000 },
- },
- "openai/gpt-5.4-mini": {
- id: "openai/gpt-5.4-mini",
- name: "GPT 5.4 Mini",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-17",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.4-nano": {
- id: "openai/gpt-5.4-nano",
- name: "GPT 5.4 Nano",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-17",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.19999999999999998, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.2-codex": {
- id: "openai/gpt-5.2-codex",
- name: "GPT-5.2-Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12",
- last_updated: "2025-12",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.1-codex-mini": {
- id: "openai/gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex mini",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-05-16",
- last_updated: "2025-05-16",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.1-thinking": {
- id: "openai/gpt-5.1-thinking",
- name: "GPT 5.1 Thinking",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5.4-pro": {
- id: "openai/gpt-5.4-pro",
- name: "GPT 5.4 Pro",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-05",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 180 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-3.5-turbo": {
- id: "openai/gpt-3.5-turbo",
- name: "GPT-3.5 Turbo",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2021-09",
- release_date: "2023-03-01",
- last_updated: "2023-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 16385, input: 12289, output: 4096 },
- },
- "openai/o3-deep-research": {
- id: "openai/o3-deep-research",
- name: "o3-deep-research",
- family: "o",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2024-10",
- release_date: "2024-06-26",
- last_updated: "2024-06-26",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 40, cache_read: 2.5 },
- limit: { context: 200000, input: 100000, output: 100000 },
- },
- "openai/text-embedding-3-small": {
- id: "openai/text-embedding-3-small",
- name: "text-embedding-3-small",
- family: "text-embedding",
- 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,
- cost: { input: 0.02, output: 0 },
- limit: { context: 8192, input: 6656, output: 1536 },
- },
- "openai/gpt-5.4": {
- id: "openai/gpt-5.4",
- name: "GPT 5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-05",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.3 },
- limit: { context: 131072, input: 98304, output: 32768 },
- },
- "openai/gpt-5-pro": {
- id: "openai/gpt-5-pro",
- name: "GPT-5 pro",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, input: 128000, output: 272000 },
- },
- "openai/gpt-oss-safeguard-20b": {
- id: "openai/gpt-oss-safeguard-20b",
- name: "gpt-oss-safeguard-20b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.08, output: 0.3, cache_read: 0.04 },
- limit: { context: 131072, input: 65536, output: 65536 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 131072, output: 131072 },
- },
- "openai/gpt-3.5-turbo-instruct": {
- id: "openai/gpt-3.5-turbo-instruct",
- name: "GPT-3.5 Turbo Instruct",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2021-09",
- release_date: "2023-03-01",
- last_updated: "2023-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 2 },
- limit: { context: 8192, input: 4096, output: 4096 },
- },
- "openai/gpt-5.1-instant": {
- id: "openai/gpt-5.1-instant",
- name: "GPT-5.1 Instant",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 128000, input: 111616, output: 16384 },
- },
- "openai/gpt-5.1-codex": {
- id: "openai/gpt-5.1-codex",
- name: "GPT-5.1-Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "GPT-4.1 mini",
- 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,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-4o": {
- id: "openai/gpt-4o",
- name: "GPT-4o",
- 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o3": {
- id: "openai/o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4.1-nano": {
- id: "openai/gpt-4.1-nano",
- name: "GPT-4.1 nano",
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1047576, output: 32768 },
- },
- "openai/gpt-5-codex": {
- id: "openai/gpt-5-codex",
- name: "GPT-5-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/o3-mini": {
- id: "openai/o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o1": {
- id: "openai/o1",
- name: "o1",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o mini",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4-turbo": {
- id: "openai/gpt-4-turbo",
- name: "GPT-4 Turbo",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.005 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "amazon/titan-embed-text-v2": {
- id: "amazon/titan-embed-text-v2",
- name: "Titan Text Embeddings V2",
- family: "titan-embed",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-04",
- last_updated: "2024-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.02, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "amazon/nova-2-lite": {
- id: "amazon/nova-2-lite",
- name: "Nova 2 Lite",
- family: "nova",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-12-01",
- last_updated: "2024-12-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 1000000, output: 1000000 },
- },
- "amazon/nova-pro": {
- id: "amazon/nova-pro",
- name: "Nova Pro",
- 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,
- cost: { input: 0.8, output: 3.2, cache_read: 0.2 },
- limit: { context: 300000, output: 8192 },
- },
- "amazon/nova-lite": {
- id: "amazon/nova-lite",
- name: "Nova Lite",
- 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,
- cost: { input: 0.06, output: 0.24, cache_read: 0.015 },
- limit: { context: 300000, output: 8192 },
- },
- "amazon/nova-micro": {
- id: "amazon/nova-micro",
- name: "Nova Micro",
- 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,
- cost: { input: 0.035, output: 0.14, cache_read: 0.00875 },
- limit: { context: 128000, output: 8192 },
- },
- "mistral/mistral-nemo": {
- id: "mistral/mistral-nemo",
- name: "Mistral Nemo",
- family: "mistral-nemo",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.04, output: 0.17 },
- limit: { context: 60288, output: 16000 },
- },
- "mistral/ministral-14b": {
- id: "mistral/ministral-14b",
- name: "Ministral 14B",
- family: "ministral",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12-01",
- last_updated: "2025-12-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 256000, output: 256000 },
- },
- "mistral/codestral-embed": {
- id: "mistral/codestral-embed",
- name: "Codestral Embed",
- family: "codestral-embed",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "mistral/mistral-medium": {
- id: "mistral/mistral-medium",
- name: "Mistral Medium 3.1",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 128000, output: 64000 },
- },
- "mistral/mistral-embed": {
- id: "mistral/mistral-embed",
- name: "Mistral Embed",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "mistral/devstral-2": {
- id: "mistral/devstral-2",
- name: "Devstral 2",
- 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 },
- },
- "mistral/mistral-large-3": {
- id: "mistral/mistral-large-3",
- name: "Mistral Large 3",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 256000, output: 256000 },
- },
- "mistral/devstral-small-2": {
- id: "mistral/devstral-small-2",
- name: "Devstral Small 2",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-05-07",
- last_updated: "2025-05-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 256000, output: 256000 },
- },
- "mistral/devstral-small": {
- id: "mistral/devstral-small",
- name: "Devstral Small 1.1",
- family: "devstral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-05-07",
- last_updated: "2025-05-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 64000 },
- },
- "mistral/ministral-8b": {
- id: "mistral/ministral-8b",
- name: "Ministral 8B (latest)",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral/magistral-medium": {
- id: "mistral/magistral-medium",
- name: "Magistral Medium (latest)",
- family: "magistral-medium",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 5 },
- limit: { context: 128000, output: 16384 },
- },
- "mistral/mistral-small": {
- id: "mistral/mistral-small",
- name: "Mistral Small (latest)",
- family: "mistral-small",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 256000, output: 256000 },
- },
- "mistral/magistral-small": {
- id: "mistral/magistral-small",
- name: "Magistral Small",
- family: "magistral-small",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral/pixtral-12b": {
- id: "mistral/pixtral-12b",
- name: "Pixtral 12B",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral/mixtral-8x22b-instruct": {
- id: "mistral/mixtral-8x22b-instruct",
- name: "Mixtral 8x22B",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 64000, output: 64000 },
- },
- "mistral/pixtral-large": {
- id: "mistral/pixtral-large",
- name: "Pixtral Large (latest)",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral/ministral-3b": {
- id: "mistral/ministral-3b",
- name: "Ministral 3B (latest)",
- 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,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 128000, output: 128000 },
- },
- "mistral/codestral": {
- id: "mistral/codestral",
- name: "Codestral (latest)",
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 4096 },
- },
- "meta/llama-3.2-1b": {
- id: "meta/llama-3.2-1b",
- name: "Llama 3.2 1B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-09-18",
- last_updated: "2024-09-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/llama-3.1-8b": {
- id: "meta/llama-3.1-8b",
- name: "Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.03, output: 0.05 },
- limit: { context: 131072, output: 16384 },
- },
- "meta/llama-3.2-90b": {
- id: "meta/llama-3.2-90b",
- name: "Llama 3.2 90B Vision Instruct",
- 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: false,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/llama-3.2-3b": {
- id: "meta/llama-3.2-3b",
- name: "Llama 3.2 3B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-09-18",
- last_updated: "2024-09-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/llama-3.2-11b": {
- id: "meta/llama-3.2-11b",
- name: "Llama 3.2 11B Vision Instruct",
- 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: false,
- cost: { input: 0.16, output: 0.16 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/llama-3.1-70b": {
- id: "meta/llama-3.1-70b",
- name: "Llama 3.1 70B Instruct",
- 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,
- cost: { input: 0.4, output: 0.4 },
- limit: { context: 131072, output: 16384 },
- },
- "meta/llama-3.3-70b": {
- id: "meta/llama-3.3-70b",
- name: "Llama-3.3-70B-Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-4-maverick": {
- id: "meta/llama-4-maverick",
- name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "meta/llama-4-scout": {
- id: "meta/llama-4-scout",
- name: "Llama-4-Scout-17B-16E-Instruct-FP8",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "vercel/v0-1.5-md": {
- id: "vercel/v0-1.5-md",
- name: "v0-1.5-md",
- family: "v0",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-09",
- last_updated: "2025-06-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, output: 32000 },
- },
- "vercel/v0-1.0-md": {
- id: "vercel/v0-1.0-md",
- name: "v0-1.0-md",
- family: "v0",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 128000, output: 32000 },
- },
- "minimax/minimax-m2.7": {
- id: "minimax/minimax-m2.7",
- name: "Minimax M2.7",
- family: "minimax",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131000 },
- },
- "minimax/minimax-m2.7-highspeed": {
- id: "minimax/minimax-m2.7-highspeed",
- name: "MiniMax M2.7 High Speed",
- family: "minimax",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131100 },
- },
- "minimax/minimax-m2": {
- id: "minimax/minimax-m2",
- name: "MiniMax M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1.15, cache_read: 0.03, cache_write: 0.38 },
- limit: { context: 262114, output: 262114 },
- },
- "minimax/minimax-m2.1": {
- id: "minimax/minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.38 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2.1-lightning": {
- id: "minimax/minimax-m2.1-lightning",
- name: "MiniMax M2.1 Lightning",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.4, cache_read: 0.03, cache_write: 0.38 },
- limit: { context: 204800, output: 131072 },
- },
- "minimax/minimax-m2.5": {
- id: "minimax/minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 204800, output: 131000 },
- },
- "minimax/minimax-m2.5-highspeed": {
- id: "minimax/minimax-m2.5-highspeed",
- name: "MiniMax M2.5 High Speed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-03-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.4, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 0, output: 0 },
- },
- "kwaipilot/kat-coder-pro-v1": {
- id: "kwaipilot/kat-coder-pro-v1",
- name: "KAT-Coder-Pro V1",
- family: "kat-coder",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-10-24",
- last_updated: "2025-10-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 256000, output: 32000 },
- },
- "kwaipilot/kat-coder-pro-v2": {
- id: "kwaipilot/kat-coder-pro-v2",
- name: "Kat Coder Pro V2",
- family: "kat-coder",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-27",
- last_updated: "2026-03-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 256000, output: 256000 },
- },
- "google/gemini-2.5-flash-lite-preview-09-2025": {
- id: "google/gemini-2.5-flash-lite-preview-09-2025",
- name: "Gemini 2.5 Flash Lite Preview 09-25",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.01 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-3.1-flash-lite-preview": {
- id: "google/gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite Preview",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-03",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
- limit: { context: 1000000, output: 65000 },
- },
- "google/gemini-3-pro-image": {
- id: "google/gemini-3-pro-image",
- name: "Nano Banana Pro (Gemini 3 Pro Image)",
- family: "gemini-pro",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-03",
- release_date: "2025-09",
- last_updated: "2025-09",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 2, output: 120 },
- limit: { context: 65536, output: 32768 },
- },
- "google/gemini-3.1-pro-preview": {
- id: "google/gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-19",
- last_updated: "2026-02-24",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 1000000, output: 64000 },
- },
- "google/gemini-3-pro-preview": {
- id: "google/gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1000000, output: 64000 },
- },
- "google/imagen-4.0-ultra-generate-001": {
- id: "google/imagen-4.0-ultra-generate-001",
- name: "Imagen 4 Ultra",
- family: "imagen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- 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-embedding-001": {
- id: "google/gemini-embedding-001",
- name: "Gemini Embedding 001",
- family: "gemini-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "google/gemma-4-31b-it": {
- id: "google/gemma-4-31b-it",
- name: "Gemma 4 31B IT",
- family: "gemma",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 0.39999999999999997 },
- limit: { context: 262144, output: 131072 },
- },
- "google/gemini-2.5-flash-image": {
- id: "google/gemini-2.5-flash-image",
- name: "Nano Banana (Gemini 2.5 Flash Image)",
- family: "gemini-flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-03-20",
- last_updated: "2025-03-20",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 32768, output: 32768 },
- },
- "google/text-embedding-005": {
- id: "google/text-embedding-005",
- name: "Text Embedding 005",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-08",
- last_updated: "2024-08",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.03, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "google/text-multilingual-embedding-002": {
- id: "google/text-multilingual-embedding-002",
- name: "Text Multilingual Embedding 002",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-03",
- last_updated: "2024-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.03, output: 0 },
- 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)",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.5, output: 3 },
- limit: { context: 131072, output: 32768 },
- },
- "google/gemini-3-flash": {
- id: "google/gemini-3-flash",
- name: "Gemini 3 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 3, cache_read: 0.05 },
- limit: { context: 1000000, output: 64000 },
- },
- "google/imagen-4.0-generate-001": {
- id: "google/imagen-4.0-generate-001",
- name: "Imagen 4",
- family: "imagen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- 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-preview-09-2025": {
- id: "google/gemini-2.5-flash-preview-09-2025",
- name: "Gemini 2.5 Flash Preview 09-25",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.03, cache_write: 0.383 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-embedding-2": {
- id: "google/gemini-embedding-2",
- name: "Gemini Embedding 2",
- family: "gemini-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-10",
- last_updated: "2026-03-23",
- modalities: { input: ["text"], output: ["text"] },
- 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",
- family: "gemma",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.13, output: 0.39999999999999997 },
- limit: { context: 262144, output: 131072 },
- },
- "google/imagen-4.0-fast-generate-001": {
- id: "google/imagen-4.0-fast-generate-001",
- name: "Imagen 4 Fast",
- family: "imagen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-06",
- last_updated: "2025-06",
- 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",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.01 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-flash-image-preview": {
- id: "google/gemini-2.5-flash-image-preview",
- name: "Nano Banana Preview (Gemini 2.5 Flash Image Preview)",
- family: "gemini-flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-03-20",
- last_updated: "2025-03-20",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 32768, output: 32768 },
- },
- "google/gemini-2.0-flash-lite": {
- id: "google/gemini-2.0-flash-lite",
- name: "Gemini 2.0 Flash Lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 1048576, output: 8192 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, input_audio: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.0-flash": {
- id: "google/gemini-2.0-flash",
- name: "Gemini 2.0 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 8192 },
- },
- "moonshotai/kimi-k2-turbo": {
- id: "moonshotai/kimi-k2-turbo",
- name: "Kimi K2 Turbo",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2025-09-05",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.4, output: 10 },
- limit: { context: 256000, output: 16384 },
- },
- "moonshotai/kimi-k2.5": {
- id: "moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2026-01-26",
- last_updated: "2026-01-26",
- modalities: { input: ["text", "image", "video"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.2 },
- limit: { context: 262144, output: 262144 },
- },
- "moonshotai/kimi-k2-thinking-turbo": {
- id: "moonshotai/kimi-k2-thinking-turbo",
- name: "Kimi K2 Thinking Turbo",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 1.15, output: 8, cache_read: 0.15 },
- limit: { context: 262114, output: 262114 },
- },
- "moonshotai/kimi-k2-0905": {
- id: "moonshotai/kimi-k2-0905",
- name: "Kimi K2 0905",
- family: "kimi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-09-05",
- last_updated: "2025-09-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 131072, output: 16384 },
- },
- "moonshotai/kimi-k2-thinking": {
- id: "moonshotai/kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 0.47, output: 2, cache_read: 0.14 },
- limit: { context: 216144, output: 216144 },
- },
- "moonshotai/kimi-k2": {
- id: "moonshotai/kimi-k2",
- name: "Kimi K2 Instruct",
- family: "kimi",
- 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,
- cost: { input: 1, output: 3 },
- limit: { context: 131072, output: 16384 },
- status: "deprecated",
- },
- "anthropic/claude-3.5-sonnet-20240620": {
- id: "anthropic/claude-3.5-sonnet-20240620",
- name: "Claude 3.5 Sonnet (2024-06-20)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-06-20",
- last_updated: "2024-06-20",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-opus-4.6": {
- id: "anthropic/claude-opus-4.6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2025-05",
- release_date: "2026-02",
- last_updated: "2026-02",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-opus-4.5": {
- id: "anthropic/claude-opus-4.5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 18.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-haiku-4.5": {
- id: "anthropic/claude-haiku-4.5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4.6": {
- id: "anthropic/claude-sonnet-4.6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- tool_call: true,
- interleaved: 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,
- cost: {
- input: 3,
- output: 15,
- cache_read: 0.3,
- cache_write: 3.75,
- context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
- },
- limit: { context: 1000000, output: 128000 },
- },
- "anthropic/claude-3-opus": {
- id: "anthropic/claude-3-opus",
- name: "Claude Opus 3",
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic/claude-3.5-haiku": {
- id: "anthropic/claude-3.5-haiku",
- name: "Claude Haiku 3.5",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-opus-4": {
- id: "anthropic/claude-opus-4",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-3-haiku": {
- id: "anthropic/claude-3-haiku",
- name: "Claude Haiku 3",
- 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,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "anthropic/claude-sonnet-4.5": {
- id: "anthropic/claude-sonnet-4.5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-3.5-sonnet": {
- id: "anthropic/claude-3.5-sonnet",
- name: "Claude Sonnet 3.5 v2",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "anthropic/claude-3.7-sonnet": {
- id: "anthropic/claude-3.7-sonnet",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "anthropic/claude-opus-4.1": {
- id: "anthropic/claude-opus-4.1",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "xiaomi/mimo-v2-pro": {
- id: "xiaomi/mimo-v2-pro",
- name: "MiMo V2 Pro",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 3, cache_read: 0.19999999999999998 },
- limit: { context: 1000000, output: 128000 },
- },
- "xiaomi/mimo-v2-flash": {
- id: "xiaomi/mimo-v2-flash",
- name: "MiMo V2 Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.29 },
- limit: { context: 262144, output: 32000 },
- },
- "bytedance/seed-1.6": {
- id: "bytedance/seed-1.6",
- name: "Seed 1.6",
- family: "seed",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-09",
- last_updated: "2025-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.05 },
- limit: { context: 256000, output: 32000 },
- },
- "bytedance/seed-1.8": {
- id: "bytedance/seed-1.8",
- name: "Seed 1.8",
- family: "seed",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-10",
- last_updated: "2025-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.05 },
- limit: { context: 256000, output: 64000 },
- },
- "meituan/longcat-flash-chat": {
- id: "meituan/longcat-flash-chat",
- name: "LongCat Flash Chat",
- family: "longcat",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-08-30",
- last_updated: "2025-08-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 128000, output: 8192 },
- },
- "meituan/longcat-flash-thinking": {
- id: "meituan/longcat-flash-thinking",
- name: "LongCat Flash Thinking",
- family: "longcat",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-09-23",
- last_updated: "2025-09-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 1.5 },
- limit: { context: 128000, output: 8192 },
- },
- "meituan/longcat-flash-thinking-2601": {
- id: "meituan/longcat-flash-thinking-2601",
- name: "LongCat Flash Thinking 2601",
- family: "longcat",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- release_date: "2026-03-13",
- last_updated: "2026-03-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- limit: { context: 32768, output: 32768 },
- },
- "bfl/flux-pro-1.0-fill": {
- id: "bfl/flux-pro-1.0-fill",
- name: "FLUX.1 Fill [pro]",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-10",
- last_updated: "2024-10",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 512, output: 0 },
- },
- "bfl/flux-pro-1.1": {
- id: "bfl/flux-pro-1.1",
- name: "FLUX1.1 [pro]",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-10",
- 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",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-06",
- last_updated: "2025-06",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 512, output: 0 },
- },
- "bfl/flux-kontext-max": {
- id: "bfl/flux-kontext-max",
- name: "FLUX.1 Kontext Max",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2025-06",
- 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",
- family: "flux",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- release_date: "2024-11",
- last_updated: "2024-11",
- modalities: { input: ["text"], output: ["image"] },
- open_weights: false,
- limit: { context: 512, output: 0 },
- },
- },
- },
- 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",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 196608, output: 128000 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7": {
- id: "MiniMax-M2.7",
- name: "MiniMax-M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7-highspeed": {
- id: "MiniMax-M2.7-highspeed",
- name: "MiniMax-M2.7-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.1": {
- id: "MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.5-highspeed": {
- id: "MiniMax-M2.5-highspeed",
- name: "MiniMax-M2.5-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-13",
- last_updated: "2026-02-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- llmgateway: {
- id: "llmgateway",
- env: ["LLMGATEWAY_API_KEY"],
- npm: "@ai-sdk/openai-compatible",
- api: "https://api.llmgateway.io/v1",
- name: "LLM Gateway",
- doc: "https://llmgateway.io/docs",
- models: {
- "minimax-m2.7": {
- id: "minimax-m2.7",
- name: "MiniMax M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 204800, output: 131100 },
- },
- "gpt-4o-mini-search-preview": {
- id: "gpt-4o-mini-search-preview",
- name: "GPT-4o Mini Search Preview",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-10-01",
- last_updated: "2024-10-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-4-1-fast-reasoning": {
- id: "grok-4-1-fast-reasoning",
- name: "Grok 4.1 Fast Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-4-20-beta-0309-non-reasoning": {
- id: "grok-4-20-beta-0309-non-reasoning",
- name: "Grok 4.20 Beta Non-Reasoning (0309)",
- 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,
- cost: { input: 2, output: 6, cache_read: 0.2 },
- limit: { context: 2000000, output: 30000 },
- },
- "qwen3-coder-plus": {
- id: "qwen3-coder-plus",
- name: "Qwen3 Coder Plus",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-23",
- last_updated: "2025-09-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 6, output: 60 },
- limit: { context: 1000000, output: 66000 },
- },
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "Claude Opus 4.5",
- family: "claude",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-24",
- last_updated: "2025-11-24",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5 },
- limit: { context: 200000, output: 32000 },
- },
- "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)",
- family: "gemini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.01 },
- limit: { context: 1048576, output: 65535 },
- },
- "qwen3-235b-a22b-instruct-2507": {
- id: "qwen3-235b-a22b-instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262000, output: 8192 },
- status: "beta",
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-26",
- last_updated: "2026-01-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 32768 },
- },
- "llama-3.3-70b-instruct": {
- id: "llama-3.3-70b-instruct",
- name: "Llama 3.3 70B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-12-06",
- last_updated: "2024-12-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4 },
- limit: { context: 128000, output: 16384 },
- },
- "mistral-large-2512": {
- id: "mistral-large-2512",
- name: "Mistral Large 3",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 262144, output: 16384 },
- },
- "llama-4-scout": {
- id: "llama-4-scout",
- name: "Llama 4 Scout",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.18, output: 0.59 },
- limit: { context: 32768, output: 16384 },
- status: "beta",
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 200000, output: 128000 },
- },
- "minimax-m2.7-highspeed": {
- id: "minimax-m2.7-highspeed",
- name: "MiniMax M2.7 Highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.06 },
- limit: { context: 204800, output: 131100 },
- },
- "hermes-2-pro-llama-3-8b": {
- id: "hermes-2-pro-llama-3-8b",
- name: "Hermes 2 Pro Llama 3 8B",
- family: "nousresearch",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-05-27",
- last_updated: "2024-05-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.14, output: 0.14 },
- limit: { context: 8192, output: 8192 },
- status: "beta",
- },
- "qwen-coder-plus": {
- id: "qwen-coder-plus",
- name: "Qwen Coder Plus",
- 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: true,
- cost: { input: 1, output: 5 },
- limit: { context: 131072, output: 8192 },
- },
- auto: {
- id: "auto",
- name: "Auto Route",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "gemma-3n-e4b-it": {
- id: "gemma-3n-e4b-it",
- name: "Gemma 3n E4B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-06-26",
- last_updated: "2025-06-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 1000000, output: 16384 },
- },
- "claude-3-5-sonnet-20241022": {
- id: "claude-3-5-sonnet-20241022",
- name: "Claude 3.5 Sonnet (2024-10-22)",
- family: "claude",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-10-22",
- last_updated: "2024-10-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 8192 },
- status: "deprecated",
- },
- "gpt-5.2-pro": {
- id: "gpt-5.2-pro",
- name: "GPT-5.2 Pro",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-11",
- last_updated: "2025-12-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 21, output: 168 },
- limit: { context: 400000, output: 272000 },
- },
- "qwq-plus": {
- id: "qwq-plus",
- name: "QwQ Plus",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-06",
- last_updated: "2025-03-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 2.4 },
- limit: { context: 131072, output: 8192 },
- },
- "glm-4.6v-flashx": {
- id: "glm-4.6v-flashx",
- name: "GLM-4.6V FlashX",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.04, output: 0.4, cache_read: 0 },
- limit: { context: 128000, output: 16000 },
- },
- "gemini-3.1-flash-lite-preview": {
- id: "gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite (Preview)",
- family: "gemini",
- attachment: true,
- reasoning: false,
- 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: false,
- cost: { input: 0.25, output: 1.5, cache_read: 0.03 },
- limit: { context: 1048576, output: 65536 },
- },
- "qwen-vl-plus": {
- id: "qwen-vl-plus",
- name: "Qwen VL Plus",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-02-05",
- last_updated: "2025-02-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.21, output: 0.64 },
- limit: { context: 131072, output: 32000 },
- },
- "gemma-2-27b-it-together": {
- id: "gemma-2-27b-it-together",
- name: "Gemma 2 27B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-06-27",
- last_updated: "2024-06-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.08 },
- limit: { context: 8192, output: 16384 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2 },
- limit: { context: 202800, output: 131100 },
- },
- "devstral-2512": {
- id: "devstral-2512",
- name: "Devstral 2",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-09",
- last_updated: "2025-12-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2 },
- limit: { context: 262144, output: 16384 },
- },
- "qwen3-32b": {
- id: "qwen3-32b",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 32768, output: 8192 },
- },
- "codestral-2508": {
- id: "codestral-2508",
- name: "Codestral",
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 16384 },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude",
- attachment: false,
- reasoning: true,
- 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: false,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 64000 },
- },
- "glm-4.7-flashx": {
- id: "glm-4.7-flashx",
- name: "GLM-4.7 FlashX",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.07, output: 0.4, cache_read: 0.01 },
- limit: { context: 200000, output: 128000 },
- },
- "gemma-3-1b-it": {
- id: "gemma-3-1b-it",
- name: "Gemma 3 1B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-12",
- last_updated: "2025-03-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 1000000, output: 16384 },
- },
- "gemini-3.1-pro-preview": {
- id: "gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro (Preview)",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-19",
- last_updated: "2026-02-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 1048576, output: 65536 },
- },
- "qwen35-397b-a17b": {
- id: "qwen35-397b-a17b",
- name: "Qwen3.5 397B A17B",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-16",
- last_updated: "2026-02-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen-max": {
- id: "qwen-max",
- name: "Qwen Max",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-05",
- last_updated: "2025-09-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.6, output: 6.4 },
- limit: { context: 131072, output: 32000 },
- },
- "gpt-5.3-chat-latest": {
- id: "gpt-5.3-chat-latest",
- name: "GPT-5.3 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2026-03-03",
- last_updated: "2026-03-03",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 128000, output: 16384 },
- },
- "gemini-2.0-flash": {
- id: "gemini-2.0-flash",
- name: "Gemini 2.0 Flash",
- family: "gemini",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-02-05",
- last_updated: "2025-02-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1048576, output: 8192 },
- status: "deprecated",
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash (Preview)",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-17",
- last_updated: "2025-12-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 3, cache_read: 0.05 },
- limit: { context: 1048576, output: 65535 },
- },
- "qwen-plus": {
- id: "qwen-plus",
- name: "Qwen Plus",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-25",
- last_updated: "2025-01-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.2, cache_read: 0.08 },
- limit: { context: 131072, output: 32000 },
- },
- "glm-4-32b-0414-128k": {
- id: "glm-4-32b-0414-128k",
- name: "GLM-4 32B (0414-128k)",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 128000, output: 16384 },
- },
- "seed-1-6-flash-250715": {
- id: "seed-1-6-flash-250715",
- name: "Seed 1.6 Flash (250715)",
- family: "seed",
- attachment: true,
- reasoning: true,
- 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: false,
- cost: { input: 0.07, output: 0.3, cache_read: 0.02 },
- limit: { context: 256000, output: 16384 },
- },
- "qwen-omni-turbo": {
- id: "qwen-omni-turbo",
- name: "Qwen Omni Turbo",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-26",
- last_updated: "2025-03-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 32768, output: 8192 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-3-haiku-20240307": {
- id: "claude-3-haiku-20240307",
- name: "Claude 3 Haiku (2024-03-07)",
- family: "claude",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-03-04",
- last_updated: "2024-03-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03 },
- limit: { context: 200000, output: 4096 },
- },
- "seed-1-6-250615": {
- id: "seed-1-6-250615",
- name: "Seed 1.6 (250615)",
- family: "seed",
- attachment: true,
- reasoning: true,
- 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: false,
- cost: { input: 0.25, output: 2, cache_read: 0.05 },
- limit: { context: 256000, output: 16384 },
- },
- "qwen3-vl-235b-a22b-thinking": {
- id: "qwen3-vl-235b-a22b-thinking",
- name: "Qwen3 VL 235B A22B Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-09-23",
- last_updated: "2025-09-23",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 2 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen3-vl-30b-a3b-thinking": {
- id: "qwen3-vl-30b-a3b-thinking",
- name: "Qwen3 VL 30B A3B Thinking",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-11",
- last_updated: "2025-10-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1 },
- limit: { context: 131072, output: 32768 },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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: false,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 400000, output: 128000 },
- },
- "minimax-m2": {
- id: "minimax-m2",
- name: "MiniMax M2",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1, cache_read: 0.03 },
- limit: { context: 196608, output: 131072 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "Claude Sonnet 4.5 (2025-09-29)",
- family: "claude",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 64000 },
- },
- "qwen-flash": {
- id: "qwen-flash",
- name: "Qwen Flash",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-09",
- last_updated: "2024-09-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 1000000, output: 32000 },
- },
- "gpt-4-turbo": {
- id: "gpt-4-turbo",
- name: "GPT-4 Turbo",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2023-11-06",
- last_updated: "2023-11-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 16384 },
- },
- "cogview-4": {
- id: "cogview-4",
- name: "CogView-4",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-04",
- last_updated: "2025-03-04",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen2-5-vl-32b-instruct": {
- id: "qwen2-5-vl-32b-instruct",
- name: "Qwen2.5 VL 32B Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.4, output: 4.2 },
- limit: { context: 131072, output: 32768 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-25",
- last_updated: "2025-03-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 1048576, output: 65536 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "Grok 4.1 Fast Non-Reasoning",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "sonar-pro": {
- id: "sonar-pro",
- name: "Sonar Pro",
- family: "sonar",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-07",
- last_updated: "2025-03-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 200000, output: 16384 },
- },
- "pixtral-large-latest": {
- id: "pixtral-large-latest",
- name: "Pixtral Large Latest",
- family: "mistral",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-11-18",
- last_updated: "2024-11-18",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 4, output: 12 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-11",
- last_updated: "2025-12-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 400000, output: 128000 },
- },
- "qwen3-vl-8b-instruct": {
- id: "qwen3-vl-8b-instruct",
- name: "Qwen3 VL 8B Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-14",
- last_updated: "2025-10-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.5 },
- limit: { context: 131072, output: 8192 },
- },
- "claude-3-7-sonnet": {
- id: "claude-3-7-sonnet",
- name: "Claude 3.7 Sonnet",
- family: "claude",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-02-24",
- last_updated: "2025-02-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 8192 },
- },
- "grok-4-20-beta-0309-reasoning": {
- id: "grok-4-20-beta-0309-reasoning",
- name: "Grok 4.20 Beta Reasoning (0309)",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 6, cache_read: 0.2 },
- limit: { context: 2000000, output: 30000 },
- },
- "grok-imagine-image": {
- id: "grok-imagine-image",
- name: "Grok Imagine Image",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-03-02",
- last_updated: "2026-03-02",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "gpt-4o-mini": {
- id: "gpt-4o-mini",
- name: "GPT-4o Mini",
- family: "gpt",
- 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: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "gemini-pro-latest": {
- id: "gemini-pro-latest",
- name: "Gemini Pro Latest",
- family: "gemini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-17",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.75, output: 4.5, cache_read: 0.08 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-3-5-haiku": {
- id: "claude-3-5-haiku",
- name: "Claude 3.5 Haiku",
- family: "claude",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-10-22",
- last_updated: "2024-10-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.8, output: 4, cache_read: 0.08 },
- limit: { context: 200000, output: 8192 },
- status: "deprecated",
- },
- "qwen3-max": {
- id: "qwen3-max",
- name: "Qwen3 Max",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-24",
- last_updated: "2025-09-24",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 3, output: 15, cache_read: 0.6 },
- limit: { context: 256000, output: 32800 },
- },
- "minimax-m2.1": {
- id: "minimax-m2.1",
- name: "MiniMax M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.27, output: 1.1 },
- limit: { context: 196608, output: 131072 },
- },
- "gemini-3-pro-image-preview": {
- id: "gemini-3-pro-image-preview",
- name: "Gemini 3 Pro Image (Preview)",
- family: "gemini",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-20",
- last_updated: "2025-11-20",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 2, output: 12, cache_read: 0.2 },
- limit: { context: 65536, output: 32768 },
- },
- "mixtral-8x7b-instruct-together": {
- id: "mixtral-8x7b-instruct-together",
- name: "Mixtral 8x7B Instruct",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2023-12-10",
- last_updated: "2023-12-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.06, output: 0.06 },
- limit: { context: 32768, output: 16384 },
- },
- "qwen-max-latest": {
- id: "qwen-max-latest",
- name: "Qwen Max Latest",
- 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: true,
- cost: { input: 1.6, output: 6.4 },
- limit: { context: 131072, output: 32000 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4 Mini",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 16384 },
- },
- "glm-4.6v-flash": {
- id: "glm-4.6v-flash",
- name: "GLM-4.6V Flash",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16000 },
- },
- "gpt-5.4-nano": {
- id: "gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-17",
- last_updated: "2026-03-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-2.5-flash-image": {
- id: "gemini-2.5-flash-image",
- name: "Gemini 2.5 Flash Image",
- family: "gemini",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-02",
- last_updated: "2025-10-02",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.3, output: 30, cache_read: 0.03 },
- limit: { context: 32768, output: 32768 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 128000, output: 16384 },
- },
- "mistral-large-latest": {
- id: "mistral-large-latest",
- name: "Mistral Large Latest",
- family: "mistral",
- 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,
- cost: { input: 4, output: 12 },
- limit: { context: 128000, output: 16384 },
- },
- "mistral-small-2506": {
- id: "mistral-small-2506",
- name: "Mistral Small 3.2",
- family: "mistral",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-06-20",
- last_updated: "2025-06-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 16384 },
- },
- "gemma-3-12b-it": {
- id: "gemma-3-12b-it",
- name: "Gemma 3 12B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 1000000, output: 16384 },
- },
- "seedream-4-0": {
- id: "seedream-4-0",
- name: "Seedream 4.0",
- family: "seed",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-09-16",
- last_updated: "2025-09-16",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen3-30b-a3b-instruct-2507": {
- id: "qwen3-30b-a3b-instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- family: "qwen",
- 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: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262000, output: 8192 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-14",
- last_updated: "2026-01-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 400000, output: 128000 },
- },
- "minimax-text-01": {
- id: "minimax-text-01",
- name: "MiniMax Text 01",
- family: "minimax",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 0.2, output: 1.1 },
- limit: { context: 1000000, output: 131072 },
- },
- "qwen3-32b-fp8": {
- id: "qwen3-32b-fp8",
- name: "Qwen3 32B FP8",
- 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,
- cost: { input: 0.1, output: 0.45 },
- limit: { context: 40960, output: 20000 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.03 },
- limit: { context: 1048576, output: 65535 },
- },
- "llama-4-scout-17b-instruct": {
- id: "llama-4-scout-17b-instruct",
- name: "Llama 4 Scout 17B Instruct",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.66 },
- limit: { context: 8192, output: 2048 },
- status: "beta",
- },
- "gpt-5.2-chat-latest": {
- id: "gpt-5.2-chat-latest",
- name: "GPT-5.2 Chat",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.18 },
- limit: { context: 128000, output: 16400 },
- },
- "qwen3-4b-fp8": {
- id: "qwen3-4b-fp8",
- name: "Qwen3 4B FP8",
- 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,
- cost: { input: 0.03, output: 0.03 },
- limit: { context: 128000, output: 20000 },
- },
- "veo-3.1-generate-preview": {
- id: "veo-3.1-generate-preview",
- name: "Veo 3.1",
- family: "gemini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-03-14",
- last_updated: "2026-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 1 },
- status: "beta",
- },
- "llama-guard-4-12b": {
- id: "llama-guard-4-12b",
- name: "Llama Guard 4 12B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-04-30",
- last_updated: "2025-04-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 131072, output: 16384 },
- },
- "gemma-3n-e2b-it": {
- id: "gemma-3n-e2b-it",
- name: "Gemma 3n E2B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-06-26",
- last_updated: "2025-06-26",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 1000000, output: 16384 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex mini",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-12",
- last_updated: "2025-11-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 400000, output: 128000 },
- },
- "gemini-3.1-flash-image-preview": {
- id: "gemini-3.1-flash-image-preview",
- name: "Gemini 3.1 Flash Image (Preview)",
- family: "gemini",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-26",
- last_updated: "2026-02-26",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.5 },
- limit: { context: 65536, output: 65536 },
- },
- "ministral-8b-2512": {
- id: "ministral-8b-2512",
- name: "Ministral 8B",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 262144, output: 16384 },
- },
- "grok-4-fast": {
- id: "grok-4-fast",
- name: "Grok 4 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "gemma-3-27b": {
- id: "gemma-3-27b",
- name: "Gemma 3 27B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-12",
- last_updated: "2025-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.27 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-imagine-image-pro": {
- id: "grok-imagine-image-pro",
- name: "Grok Imagine Image Pro",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-03-02",
- last_updated: "2026-03-02",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen3-vl-flash": {
- id: "qwen3-vl-flash",
- name: "Qwen3 VL Flash",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-15",
- last_updated: "2025-10-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 262144, output: 32768 },
- },
- "llama-3.1-70b-instruct": {
- id: "llama-3.1-70b-instruct",
- name: "Llama 3.1 70B Instruct",
- 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,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 128000, output: 2048 },
- status: "beta",
- },
- "seed-1-8-251228": {
- id: "seed-1-8-251228",
- name: "Seed 1.8 (251228)",
- family: "seed",
- attachment: true,
- reasoning: true,
- 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: false,
- cost: { input: 0.25, output: 2, cache_read: 0.05 },
- limit: { context: 256000, output: 16384 },
- },
- "qwen3-235b-a22b-thinking-2507": {
- id: "qwen3-235b-a22b-thinking-2507",
- name: "Qwen3 235B A22B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262000, output: 8192 },
- status: "beta",
- },
- "qwen3-next-80b-a3b-thinking": {
- id: "qwen3-next-80b-a3b-thinking",
- name: "Qwen3 Next 80B A3B Thinking",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-09-10",
- last_updated: "2025-09-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.5, output: 6 },
- limit: { context: 131072, output: 32768 },
- status: "beta",
- },
- "seed-1-6-250915": {
- id: "seed-1-6-250915",
- name: "Seed 1.6 (250915)",
- family: "seed",
- attachment: true,
- reasoning: true,
- 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: false,
- cost: { input: 0.25, output: 2, cache_read: 0.05 },
- limit: { context: 256000, output: 16384 },
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: false,
- 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: false,
- cost: { input: 0.2, output: 1.5 },
- limit: { context: 256000, output: 10000 },
- },
- "glm-4.5-x": {
- id: "glm-4.5-x",
- name: "GLM-4.5 X",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2.2, output: 8.9, cache_read: 0.45 },
- limit: { context: 128000, output: 16384 },
- status: "beta",
- },
- "veo-3.1-fast-generate-preview": {
- id: "veo-3.1-fast-generate-preview",
- name: "Veo 3.1 Fast",
- family: "gemini",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-03-14",
- last_updated: "2026-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 1 },
- status: "beta",
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-01",
- last_updated: "2025-11-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "gemma-3-4b-it": {
- id: "gemma-3-4b-it",
- name: "Gemma 3 4B IT",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-03-10",
- last_updated: "2025-03-10",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 1000000, output: 16384 },
- },
- "kimi-k2-thinking-turbo": {
- id: "kimi-k2-thinking-turbo",
- name: "Kimi K2 Thinking Turbo",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.15, output: 8, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen-image-max": {
- id: "qwen-image-max",
- name: "Qwen Image Max",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-08-04",
- last_updated: "2025-08-04",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen3-30b-a3b-thinking-2507": {
- id: "qwen3-30b-a3b-thinking-2507",
- name: "Qwen3 30B A3B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262000, output: 8192 },
- },
- "grok-4-fast-reasoning": {
- id: "grok-4-fast-reasoning",
- name: "Grok 4 Fast Reasoning",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- o1: {
- id: "o1",
- name: "o1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 16384 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM-4.5 Air",
- family: "glm",
- attachment: false,
- reasoning: false,
- 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: false,
- cost: { input: 0.2, output: 1.1, cache_read: 0.03 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.4-pro": {
- id: "gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-01",
- last_updated: "2026-03-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 180 },
- limit: { context: 1050000, output: 128000 },
- },
- "claude-3-5-sonnet": {
- id: "claude-3-5-sonnet",
- name: "Claude 3.5 Sonnet",
- family: "claude",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-06-20",
- last_updated: "2024-06-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 16384 },
- },
- "gpt-3.5-turbo": {
- id: "gpt-3.5-turbo",
- name: "GPT-3.5 Turbo",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2022-11-30",
- last_updated: "2022-11-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 16385, output: 16384 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "o3 Mini",
- family: "gpt",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 16384 },
- },
- "qwen-image-max-2025-12-30": {
- id: "qwen-image-max-2025-12-30",
- name: "Qwen Image Max 2025-12-30",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-31",
- last_updated: "2025-12-31",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen-vl-max": {
- id: "qwen-vl-max",
- name: "Qwen VL Max",
- 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: true,
- cost: { input: 0.8, output: 3.2 },
- limit: { context: 131072, output: 32000 },
- },
- sonar: {
- id: "sonar",
- name: "Sonar",
- family: "sonar",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-01",
- last_updated: "2025-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 1 },
- limit: { context: 130000, output: 16384 },
- },
- "qwen3-coder-flash": {
- id: "qwen3-coder-flash",
- name: "Qwen3 Coder Flash",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-22",
- last_updated: "2025-07-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.5, cache_read: 0.06 },
- limit: { context: 1000000, output: 65536 },
- },
- "deepseek-v3.1": {
- id: "deepseek-v3.1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.56, output: 1.68, cache_read: 0.11 },
- limit: { context: 128000, output: 32768 },
- },
- "ministral-3b-2512": {
- id: "ministral-3b-2512",
- name: "Ministral 3B",
- 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,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 131072, output: 16384 },
- },
- "grok-4-20-multi-agent-beta-0309": {
- id: "grok-4-20-multi-agent-beta-0309",
- name: "Grok 4.20 Multi-Agent Beta (0309)",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 6, cache_read: 0.2 },
- limit: { context: 2000000, output: 30000 },
- },
- "qwen-plus-latest": {
- id: "qwen-plus-latest",
- name: "Qwen Plus Latest",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-09",
- last_updated: "2024-09-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.2, cache_read: 0.08 },
- limit: { context: 1000000, output: 32000 },
- },
- "glm-4.5v": {
- id: "glm-4.5v",
- name: "GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-11",
- last_updated: "2025-08-11",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 1.8, cache_read: 0.11 },
- limit: { context: 128000, output: 16000 },
- },
- "seedream-4-5": {
- id: "seedream-4-5",
- name: "Seedream 4.5",
- family: "seed",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-12-03",
- last_updated: "2025-12-03",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "llama-3.1-nemotron-ultra-253b": {
- id: "llama-3.1-nemotron-ultra-253b",
- name: "Llama 3.1 Nemotron Ultra 253B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-07",
- last_updated: "2025-04-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 1.8 },
- limit: { context: 128000, output: 16384 },
- },
- "grok-4": {
- id: "grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 256000, output: 256000 },
- },
- "llama-4-maverick-17b-instruct": {
- id: "llama-4-maverick-17b-instruct",
- name: "Llama 4 Maverick 17B Instruct",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.24, output: 0.97 },
- limit: { context: 8192, output: 2048 },
- status: "beta",
- },
- "grok-4-0709": {
- id: "grok-4-0709",
- name: "Grok 4 (0709)",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 256000, output: 256000 },
- },
- "qwen3-next-80b-a3b-instruct": {
- id: "qwen3-next-80b-a3b-instruct",
- name: "Qwen3 Next 80B A3B Instruct",
- family: "qwen",
- 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,
- cost: { input: 0.5, output: 2 },
- limit: { context: 129024, output: 32768 },
- },
- "gpt-4": {
- id: "gpt-4",
- name: "GPT-4",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2023-03-14",
- last_updated: "2023-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 30, output: 60 },
- limit: { context: 8192, output: 8192 },
- },
- "qwen-image": {
- id: "qwen-image",
- name: "Qwen Image",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-08-04",
- last_updated: "2025-08-04",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen-image-edit-plus": {
- id: "qwen-image-edit-plus",
- name: "Qwen Image Edit Plus",
- 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: ["text", "image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-30",
- last_updated: "2025-09-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11 },
- limit: { context: 200000, output: 16384 },
- },
- "qwen3-30b-a3b-fp8": {
- id: "qwen3-30b-a3b-fp8",
- name: "Qwen3 30B A3B FP8",
- 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,
- cost: { input: 0.09, output: 0.45 },
- limit: { context: 40960, output: 20000 },
- },
- "minimax-m2.1-lightning": {
- id: "minimax-m2.1-lightning",
- name: "MiniMax M2.1 Lightning",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.12, output: 0.48 },
- limit: { context: 196608, output: 131072 },
- },
- "claude-3-haiku": {
- id: "claude-3-haiku",
- name: "Claude 3 Haiku",
- family: "claude",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-03-04",
- last_updated: "2024-03-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03 },
- limit: { context: 200000, output: 4096 },
- },
- "glm-image": {
- id: "glm-image",
- name: "GLM-Image",
- family: "glm",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-01-14",
- last_updated: "2025-01-14",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.9, cache_read: 0.05 },
- limit: { context: 128000, output: 16000 },
- },
- "qwen3-max-2026-01-23": {
- id: "qwen3-max-2026-01-23",
- name: "Qwen3 Max 2026-01-23",
- family: "qwen",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-01-23",
- last_updated: "2026-01-23",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.2, output: 6, cache_read: 0.24 },
- limit: { context: 262144, output: 65536 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "Claude Opus 4.1",
- family: "claude",
- attachment: true,
- reasoning: true,
- 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: false,
- cost: { input: 15, output: 75, cache_read: 1.5 },
- limit: { context: 200000, output: 32000 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-03-06",
- last_updated: "2026-03-06",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 1050000, output: 128000 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "Claude Haiku 4.5 (2025-10-01)",
- family: "claude",
- attachment: false,
- reasoning: false,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1 },
- limit: { context: 200000, output: 64000 },
- },
- "qwen-image-edit-max": {
- id: "qwen-image-edit-max",
- name: "Qwen Image Edit Max",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2026-01-16",
- last_updated: "2026-01-16",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "glm-4.5-flash": {
- id: "glm-4.5-flash",
- name: "GLM-4.5 Flash",
- family: "glm",
- 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: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "llama-3.2-3b-instruct": {
- id: "llama-3.2-3b-instruct",
- name: "Llama 3.2 3B Instruct",
- 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,
- cost: { input: 0.03, output: 0.05 },
- limit: { context: 32768, output: 32000 },
- status: "beta",
- },
- "qwen3-coder-next": {
- id: "qwen3-coder-next",
- name: "Qwen3 Coder Next",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.11, output: 0.68, cache_read: 0.06 },
- limit: { context: 262144, output: 262144 },
- },
- "qwen-image-plus": {
- id: "qwen-image-plus",
- name: "Qwen Image Plus",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-08-04",
- last_updated: "2025-08-04",
- modalities: { input: ["text"], output: ["text", "image"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 2000, output: 4096 },
- },
- "qwen3-vl-plus": {
- id: "qwen3-vl-plus",
- name: "Qwen3 VL Plus",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-09-23",
- last_updated: "2025-09-23",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 1.6, cache_read: 0.04 },
- limit: { context: 262144, output: 32768 },
- },
- "grok-4-1-fast": {
- id: "grok-4-1-fast",
- name: "Grok 4.1 Fast",
- family: "grok",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "claude-sonnet-4-20250514": {
- id: "claude-sonnet-4-20250514",
- name: "Claude Sonnet 4 (2025-05-14)",
- family: "claude",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-05-14",
- last_updated: "2025-05-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 16384 },
- },
- "qwen3-coder-480b-a35b-instruct": {
- id: "qwen3-coder-480b-a35b-instruct",
- name: "Qwen3 Coder 480B A35B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 1.8 },
- limit: { context: 262000, output: 8192 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5 },
- limit: { context: 1000000, output: 128000 },
- },
- "gpt-4o-search-preview": {
- id: "gpt-4o-search-preview",
- name: "GPT-4o Search Preview",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-10-01",
- last_updated: "2024-10-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 16384 },
- },
- custom: {
- id: "custom",
- name: "Custom Model",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "GPT-4.1 Nano",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1000000, output: 16384 },
- },
- "claude-3-7-sonnet-20250219": {
- id: "claude-3-7-sonnet-20250219",
- name: "Claude 3.7 Sonnet (2025-02-19)",
- family: "claude",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-02-19",
- last_updated: "2025-02-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 8192 },
- },
- "qwen3-vl-30b-a3b-instruct": {
- id: "qwen3-vl-30b-a3b-instruct",
- name: "Qwen3 VL 30B A3B Instruct",
- family: "qwen",
- 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: true,
- cost: { input: 0.2, output: 0.7 },
- limit: { context: 131072, output: 32768 },
- },
- "qwen3-coder-30b-a3b-instruct": {
- id: "qwen3-coder-30b-a3b-instruct",
- name: "Qwen3 Coder 30B A3B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-31",
- last_updated: "2025-07-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 262000, output: 8192 },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03 },
- limit: { context: 204800, output: 131100 },
- },
- o3: {
- id: "o3",
- name: "o3",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-06-01",
- last_updated: "2025-06-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 16384 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.28, output: 0.42, cache_read: 0.03 },
- limit: { context: 163840, output: 16384 },
- },
- "qwen3-235b-a22b-fp8": {
- id: "qwen3-235b-a22b-fp8",
- name: "Qwen3 235B A22B FP8",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-28",
- last_updated: "2025-04-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.8 },
- limit: { context: 40960, output: 20000 },
- },
- "gpt-oss-20b": {
- id: "gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.5 },
- limit: { context: 131072, output: 32766 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "GPT-5 Pro",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 272000 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "minimax-m2.5-highspeed": {
- id: "minimax-m2.5-highspeed",
- name: "MiniMax M2.5 Highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2024-01-01",
- last_updated: "2024-01-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.03 },
- limit: { context: 204800, output: 131100 },
- },
- "qwen-turbo": {
- id: "qwen-turbo",
- name: "Qwen Turbo",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-02-01",
- last_updated: "2025-02-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 1000000, output: 8192 },
- },
- "kimi-k2": {
- id: "kimi-k2",
- name: "Kimi K2",
- family: "kimi",
- 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: false,
- cost: { input: 1, output: 3, cache_read: 0.5 },
- limit: { context: 131072, output: 16384 },
- },
- "llama-3-8b-instruct": {
- id: "llama-3-8b-instruct",
- name: "Llama 3 8B Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-03",
- last_updated: "2025-04-03",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 8192, output: 8192 },
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3 },
- limit: { context: 200000, output: 64000 },
- },
- "qwen3-vl-235b-a22b-instruct": {
- id: "qwen3-vl-235b-a22b-instruct",
- name: "Qwen3 VL 235B A22B Instruct",
- 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,
- cost: { input: 0.5, output: 2 },
- limit: { context: 131072, output: 32768 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- family: "gemini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-07-22",
- last_updated: "2025-07-22",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.01 },
- limit: { context: 1048576, output: 65535 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "glm-4.7-flash": {
- id: "glm-4.7-flash",
- name: "GLM-4.7 Flash",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-12-22",
- last_updated: "2025-12-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 128000 },
- },
- "gemini-2.5-flash-image-preview": {
- id: "gemini-2.5-flash-image-preview",
- name: "Gemini 2.5 Flash Image (Preview)",
- family: "gemini",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-02",
- last_updated: "2025-10-02",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5 },
- limit: { context: 32768, output: 32768 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.75 },
- limit: { context: 131072, output: 32766 },
- },
- "gpt-5-chat-latest": {
- id: "gpt-5-chat-latest",
- name: "GPT-5 Chat Latest",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-08-01",
- last_updated: "2025-08-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "claude-opus-4-20250514": {
- id: "claude-opus-4-20250514",
- name: "Claude Opus 4 (2025-05-14)",
- family: "claude",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2025-05-22",
- last_updated: "2025-05-22",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5 },
- limit: { context: 200000, output: 16384 },
- },
- "qwen2-5-vl-72b-instruct": {
- id: "qwen2-5-vl-72b-instruct",
- name: "Qwen2.5 VL 72B Instruct",
- family: "qwen",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-01-26",
- last_updated: "2025-01-26",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.4 },
- limit: { context: 32768, output: 8192 },
- },
- "qwen25-coder-7b": {
- id: "qwen25-coder-7b",
- name: "Qwen2.5 Coder 7B",
- family: "qwen",
- attachment: false,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2024-09-19",
- last_updated: "2024-09-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.01, output: 0.03 },
- limit: { context: 32768, output: 8192 },
- },
- "llama-3.1-8b-instruct": {
- id: "llama-3.1-8b-instruct",
- name: "Llama 3.1 8B Instruct",
- 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,
- cost: { input: 0.22, output: 0.22 },
- limit: { context: 128000, output: 2048 },
- status: "beta",
- },
- "llama-3-70b-instruct": {
- id: "llama-3-70b-instruct",
- name: "Llama 3 70B Instruct",
- 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,
- cost: { input: 0.51, output: 0.74 },
- limit: { context: 8192, output: 8000 },
- },
- "deepseek-r1-0528": {
- id: "deepseek-r1-0528",
- name: "DeepSeek R1 (0528)",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: false,
- temperature: true,
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.8, output: 2.4 },
- limit: { context: 64000, output: 16384 },
- status: "beta",
- },
- "glm-4.5-airx": {
- id: "glm-4.5-airx",
- name: "GLM-4.5 AirX",
- 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,
- cost: { input: 1.1, output: 4.5, cache_read: 0.22 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1000000, output: 16384 },
- },
- "devstral-small-2507": {
- id: "devstral-small-2507",
- name: "Devstral Small 1.1",
- family: "mistral",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 131072, output: 16384 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-06",
- last_updated: "2025-11-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "gemini-2.0-flash-lite": {
- id: "gemini-2.0-flash-lite",
- name: "Gemini 2.0 Flash Lite",
- family: "gemini",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-02-25",
- last_updated: "2025-02-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.08, output: 0.3 },
- limit: { context: 1048576, output: 8192 },
- status: "deprecated",
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "GPT-4.1 Mini",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1000000, output: 16384 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-11-13",
- last_updated: "2025-11-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10 },
- limit: { context: 400000, output: 272000 },
- },
- "grok-3": {
- id: "grok-3",
- name: "Grok-3",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15 },
- limit: { context: 131072, output: 16384 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "Grok 4 Fast Non-Reasoning",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- release_date: "2025-10-10",
- last_updated: "2025-10-10",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "ministral-14b-2512": {
- id: "ministral-14b-2512",
- name: "Ministral 14B",
- 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,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 262144, output: 16384 },
- },
- "llama-3.2-11b-instruct": {
- id: "llama-3.2-11b-instruct",
- name: "Llama 3.2 11B Instruct",
- 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,
- cost: { input: 0.07, output: 0.33 },
- limit: { context: 128000, output: 16384 },
- status: "beta",
- },
- "sonar-reasoning-pro": {
- id: "sonar-reasoning-pro",
- name: "Sonar Reasoning Pro",
- family: "sonar",
- attachment: false,
- reasoning: true,
- tool_call: false,
- structured_output: true,
- temperature: true,
- release_date: "2025-03-07",
- last_updated: "2025-03-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8 },
- limit: { context: 128000, output: 16384 },
- },
- "claude-3-opus": {
- id: "claude-3-opus",
- name: "Claude 3 Opus",
- family: "claude",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-03-04",
- last_updated: "2024-03-04",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 15, output: 75, cache_read: 1.5 },
- limit: { context: 200000, output: 4096 },
- },
- },
- },
- "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-flash-lite-latest": {
- id: "gemini-flash-lite-latest",
- name: "Gemini Flash-Lite Latest",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-pro-preview-05-06": {
- id: "gemini-2.5-pro-preview-05-06",
- name: "Gemini 2.5 Pro Preview 05-06",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-05-06",
- last_updated: "2025-05-06",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-3.1-pro-preview-customtools": {
- id: "gemini-3.1-pro-preview-customtools",
- name: "Gemini 3.1 Pro Preview Custom Tools",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "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-25",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-3.1-pro-preview": {
- id: "gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.0-flash": {
- id: "gemini-2.0-flash",
- name: "Gemini 2.0 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.025 },
- limit: { context: 1048576, output: 8192 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 0.5,
- output: 3,
- cache_read: 0.05,
- context_over_200k: { input: 0.5, output: 3, cache_read: 0.05 },
- },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-preview-05-20": {
- id: "gemini-2.5-flash-preview-05-20",
- name: "Gemini 2.5 Flash Preview 05-20",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.0375 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-embedding-001": {
- id: "gemini-embedding-001",
- name: "Gemini Embedding 001",
- 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,
- cost: { input: 0.15, output: 0 },
- limit: { context: 2048, output: 3072 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-flash-latest": {
- id: "gemini-flash-latest",
- name: "Gemini Flash Latest",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, cache_write: 0.383 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-pro-preview-06-05": {
- id: "gemini-2.5-pro-preview-06-05",
- name: "Gemini 2.5 Pro Preview 06-05",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "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",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 65536, output: 65536 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, cache_write: 0.383 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-preview-04-17": {
- id: "gemini-2.5-flash-preview-04-17",
- name: "Gemini 2.5 Flash Preview 04-17",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-04-17",
- last_updated: "2025-04-17",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.0375 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-preview-09-2025": {
- id: "gemini-2.5-flash-preview-09-2025",
- name: "Gemini 2.5 Flash Preview 09-25",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, cache_write: 0.383 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.0-flash-lite": {
- id: "gemini-2.0-flash-lite",
- name: "Gemini 2.0 Flash Lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 1048576, output: 8192 },
- },
- "zai-org/glm-5-maas": {
- id: "zai-org/glm-5-maas",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.1 },
- limit: { context: 202752, output: 131072 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- "zai-org/glm-4.7-maas": {
- id: "zai-org/glm-4.7-maas",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2 },
- limit: { context: 200000, output: 128000 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- "deepseek-ai/deepseek-v3.2-maas": {
- id: "deepseek-ai/deepseek-v3.2-maas",
- name: "DeepSeek V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.56, output: 1.68, cache_read: 0.056 },
- limit: { context: 163840, output: 65536 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- "deepseek-ai/deepseek-v3.1-maas": {
- id: "deepseek-ai/deepseek-v3.1-maas",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.7 },
- limit: { context: 163840, output: 32768 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- "openai/gpt-oss-120b-maas": {
- id: "openai/gpt-oss-120b-maas",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.36 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-oss-20b-maas": {
- id: "openai/gpt-oss-20b-maas",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.07, output: 0.25 },
- limit: { context: 131072, output: 32768 },
- },
- "meta/llama-3.3-70b-instruct-maas": {
- id: "meta/llama-3.3-70b-instruct-maas",
- name: "Llama 3.3 70B Instruct",
- 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,
- cost: { input: 0.72, output: 0.72 },
- limit: { context: 128000, output: 8192 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- "meta/llama-4-maverick-17b-128e-instruct-maas": {
- id: "meta/llama-4-maverick-17b-128e-instruct-maas",
- name: "Llama 4 Maverick 17B 128E Instruct",
- 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,
- cost: { input: 0.35, output: 1.15 },
- 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",
- },
- },
- "qwen/qwen3-235b-a22b-instruct-2507-maas": {
- id: "qwen/qwen3-235b-a22b-instruct-2507-maas",
- name: "Qwen3 235B A22B Instruct",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.22, output: 0.88 },
- limit: { context: 262144, output: 16384 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- "moonshotai/kimi-k2-thinking-maas": {
- id: "moonshotai/kimi-k2-thinking-maas",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5 },
- limit: { context: 262144, output: 262144 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi",
- },
- },
- },
- },
- "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/zai-org/glm-4.7-flash": {
- id: "@cf/zai-org/glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.06, output: 0.4 },
- limit: { context: 131072, output: 131072 },
- },
- "@cf/nvidia/nemotron-3-120b-a12b": {
- id: "@cf/nvidia/nemotron-3-120b-a12b",
- name: "Nemotron 3 Super 120B",
- family: "nemotron",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 256000, output: 256000 },
- },
- "@cf/openai/gpt-oss-20b": {
- id: "@cf/openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.3 },
- limit: { context: 128000, output: 16384 },
- },
- "@cf/openai/gpt-oss-120b": {
- id: "@cf/openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.35, output: 0.75 },
- limit: { context: 128000, output: 16384 },
- },
- "@cf/meta/llama-4-scout-17b-16e-instruct": {
- id: "@cf/meta/llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17B 16E Instruct",
- family: "llama",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- release_date: "2025-04-16",
- last_updated: "2025-04-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.27, output: 0.85 },
- limit: { context: 128000, output: 16384 },
- },
- "@cf/google/gemma-4-26b-a4b-it": {
- id: "@cf/google/gemma-4-26b-a4b-it",
- name: "Gemma 4 26B A4B IT",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-15",
- last_updated: "2025-12-15",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 256000, output: 16384 },
- },
- "@cf/moonshotai/kimi-k2.5": {
- id: "@cf/moonshotai/kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 256000, output: 256000 },
- },
- },
- },
- groq: {
- id: "groq",
- env: ["GROQ_API_KEY"],
- npm: "@ai-sdk/groq",
- name: "Groq",
- doc: "https://console.groq.com/docs/models",
- models: {
- "gemma2-9b-it": {
- id: "gemma2-9b-it",
- name: "Gemma 2 9B",
- family: "gemma",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-06-27",
- last_updated: "2024-06-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 8192, output: 8192 },
- status: "deprecated",
- },
- "mistral-saba-24b": {
- id: "mistral-saba-24b",
- name: "Mistral Saba 24B",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2025-02-06",
- last_updated: "2025-02-06",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.79, output: 0.79 },
- limit: { context: 32768, output: 32768 },
- status: "deprecated",
- },
- "deepseek-r1-distill-llama-70b": {
- id: "deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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: true,
- cost: { input: 0.75, output: 0.99 },
- limit: { context: 131072, output: 8192 },
- status: "deprecated",
- },
- "llama-guard-3-8b": {
- id: "llama-guard-3-8b",
- name: "Llama Guard 3 8B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2024-07-23",
- last_updated: "2024-07-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 8192, output: 8192 },
- status: "deprecated",
- },
- "llama-3.3-70b-versatile": {
- id: "llama-3.3-70b-versatile",
- name: "Llama 3.3 70B Versatile",
- 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,
- cost: { input: 0.59, output: 0.79 },
- limit: { context: 131072, output: 32768 },
- },
- "allam-2-7b": {
- id: "allam-2-7b",
- name: "ALLaM-2-7b",
- family: "allam",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2024-09",
- last_updated: "2024-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 4096, output: 4096 },
- },
- "whisper-large-v3": {
- id: "whisper-large-v3",
- name: "Whisper Large V3",
- family: "whisper",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-09",
- release_date: "2023-09-01",
- last_updated: "2025-09-05",
- modalities: { input: ["audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 448, output: 448 },
- },
- "llama-3.1-8b-instant": {
- id: "llama-3.1-8b-instant",
- name: "Llama 3.1 8B Instant",
- 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,
- cost: { input: 0.05, output: 0.08 },
- limit: { context: 131072, output: 131072 },
- },
- "llama3-70b-8192": {
- id: "llama3-70b-8192",
- name: "Llama 3 70B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-03",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.59, output: 0.79 },
- limit: { context: 8192, output: 8192 },
- status: "deprecated",
- },
- "qwen-qwq-32b": {
- id: "qwen-qwq-32b",
- name: "Qwen QwQ 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2024-11-27",
- last_updated: "2024-11-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.29, output: 0.39 },
- limit: { context: 131072, output: 16384 },
- status: "deprecated",
- },
- "whisper-large-v3-turbo": {
- id: "whisper-large-v3-turbo",
- name: "Whisper Large v3 Turbo",
- family: "whisper",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-10-01",
- last_updated: "2024-10-01",
- modalities: { input: ["audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 448, output: 448 },
- },
- "llama3-8b-8192": {
- id: "llama3-8b-8192",
- name: "Llama 3 8B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-03",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.08 },
- limit: { context: 8192, output: 8192 },
- status: "deprecated",
- },
- "canopylabs/orpheus-arabic-saudi": {
- id: "canopylabs/orpheus-arabic-saudi",
- name: "Orpheus Arabic Saudi",
- family: "canopylabs",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-12-16",
- release_date: "2025-12-16",
- last_updated: "2025-12-16",
- modalities: { input: ["text"], output: ["audio"] },
- open_weights: false,
- cost: { input: 40, output: 0 },
- limit: { context: 4000, output: 50000 },
- },
- "canopylabs/orpheus-v1-english": {
- id: "canopylabs/orpheus-v1-english",
- name: "Orpheus V1 English",
- family: "canopylabs",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2025-12-19",
- release_date: "2025-12-19",
- last_updated: "2025-12-19",
- modalities: { input: ["text"], output: ["audio"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 4000, output: 50000 },
- },
- "meta-llama/llama-4-scout-17b-16e-instruct": {
- id: "meta-llama/llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17B",
- family: "llama",
- attachment: false,
- 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,
- cost: { input: 0.11, output: 0.34 },
- limit: { context: 131072, output: 8192 },
- },
- "meta-llama/llama-prompt-guard-2-22m": {
- id: "meta-llama/llama-prompt-guard-2-22m",
- name: "Llama Prompt Guard 2 22M",
- 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: true,
- cost: { input: 0.03, output: 0.03 },
- limit: { context: 512, output: 512 },
- },
- "meta-llama/llama-guard-4-12b": {
- id: "meta-llama/llama-guard-4-12b",
- name: "Llama Guard 4 12B",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- release_date: "2025-04-05",
- last_updated: "2025-04-05",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.2, output: 0.2 },
- limit: { context: 131072, output: 1024 },
- status: "deprecated",
- },
- "meta-llama/llama-4-maverick-17b-128e-instruct": {
- id: "meta-llama/llama-4-maverick-17b-128e-instruct",
- name: "Llama 4 Maverick 17B",
- family: "llama",
- attachment: false,
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 131072, output: 8192 },
- status: "deprecated",
- },
- "meta-llama/llama-prompt-guard-2-86m": {
- id: "meta-llama/llama-prompt-guard-2-86m",
- name: "Llama Prompt Guard 2 86M",
- 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: true,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 512, output: 512 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 131072, output: 65536 },
- },
- "openai/gpt-oss-safeguard-20b": {
- id: "openai/gpt-oss-safeguard-20b",
- name: "Safety GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-03-05",
- last_updated: "2025-03-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.075, output: 0.3, cache_read: 0.037 },
- limit: { context: 131072, output: 65536 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 65536 },
- },
- "qwen/qwen3-32b": {
- id: "qwen/qwen3-32b",
- name: "Qwen3 32B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11-08",
- release_date: "2024-12-23",
- last_updated: "2024-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.29, output: 0.59 },
- limit: { context: 131072, output: 40960 },
- },
- "groq/compound": {
- id: "groq/compound",
- name: "Compound",
- family: "groq",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-09-04",
- release_date: "2025-09-04",
- last_updated: "2025-09-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "groq/compound-mini": {
- id: "groq/compound-mini",
- name: "Compound Mini",
- family: "groq",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-09-04",
- release_date: "2025-09-04",
- last_updated: "2025-09-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "moonshotai/kimi-k2-instruct": {
- id: "moonshotai/kimi-k2-instruct",
- name: "Kimi K2 Instruct",
- family: "kimi",
- 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,
- cost: { input: 1, output: 3 },
- limit: { context: 131072, output: 16384 },
- status: "deprecated",
- },
- "moonshotai/kimi-k2-instruct-0905": {
- id: "moonshotai/kimi-k2-instruct-0905",
- name: "Kimi K2 Instruct 0905",
- family: "kimi",
- 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,
- cost: { input: 1, output: 3 },
- limit: { context: 262144, output: 16384 },
- },
- },
- },
- 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: {
- "mistral-nemo": {
- id: "mistral-nemo",
- name: "Mistral Nemo",
- family: "mistral-nemo",
- 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"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 128000, output: 128000 },
- },
- "gpt-5.1-codex-max": {
- id: "gpt-5.1-codex-max",
- name: "GPT-5.1 Codex Max",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5.2-chat": {
- id: "gpt-5.2-chat",
- name: "GPT-5.2 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "codex-mini": {
- id: "codex-mini",
- name: "Codex Mini",
- family: "gpt-codex-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.5, output: 6, cache_read: 0.375 },
- limit: { context: 200000, output: 100000 },
- },
- "phi-4-multimodal": {
- id: "phi-4-multimodal",
- name: "Phi-4-multimodal",
- 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,
- cost: { input: 0.08, output: 0.32, input_audio: 4 },
- limit: { context: 128000, output: 4096 },
- },
- "phi-3.5-mini-instruct": {
- id: "phi-3.5-mini-instruct",
- name: "Phi-3.5-mini-instruct",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 128000, output: 4096 },
- },
- "llama-4-scout-17b-16e-instruct": {
- id: "llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17B 16E Instruct",
- 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,
- cost: { input: 0.2, output: 0.78 },
- limit: { context: 128000, output: 8192 },
- },
- "grok-4-1-fast-reasoning": {
- id: "grok-4-1-fast-reasoning",
- name: "Grok 4.1 Fast (Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-06-27",
- last_updated: "2025-06-27",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 128000, input: 128000, output: 8192 },
- status: "beta",
- },
- "phi-3-medium-4k-instruct": {
- id: "phi-3-medium-4k-instruct",
- name: "Phi-3-medium-instruct (4k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 4096, output: 1024 },
- },
- "ministral-3b": {
- id: "ministral-3b",
- name: "Ministral 3B",
- 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,
- cost: { input: 0.04, output: 0.04 },
- limit: { context: 128000, output: 8192 },
- },
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-02-31",
- release_date: "2025-11-18",
- last_updated: "2025-11-18",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "meta-llama-3.1-8b-instruct": {
- id: "meta-llama-3.1-8b-instruct",
- name: "Meta-Llama-3.1-8B-Instruct",
- 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,
- cost: { input: 0.3, output: 0.61 },
- limit: { context: 128000, output: 32768 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3 },
- limit: { context: 262144, output: 262144 },
- provider: {
- npm: "@ai-sdk/openai-compatible",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models",
- shape: "completions",
- },
- },
- "llama-3.3-70b-instruct": {
- id: "llama-3.3-70b-instruct",
- name: "Llama-3.3-70B-Instruct",
- 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,
- cost: { input: 0.71, output: 0.71 },
- limit: { context: 128000, output: 32768 },
- },
- "deepseek-v3-0324": {
- id: "deepseek-v3-0324",
- name: "DeepSeek-V3-0324",
- family: "deepseek",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.14, output: 4.56 },
- limit: { context: 131072, output: 131072 },
- },
- "gpt-5-chat": {
- id: "gpt-5-chat",
- name: "GPT-5 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2024-10-24",
- release_date: "2025-08-07",
- last_updated: "2025-08-07",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 128000, output: 16384 },
- },
- "phi-3.5-moe-instruct": {
- id: "phi-3.5-moe-instruct",
- name: "Phi-3.5-MoE-instruct",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.16, output: 0.64 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-5.3-chat": {
- id: "gpt-5.3-chat",
- name: "GPT-5.3 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: false,
- knowledge: "2025-08-31",
- release_date: "2026-03-03",
- last_updated: "2026-03-03",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 128000, output: 16384 },
- },
- "o1-mini": {
- id: "o1-mini",
- name: "o1-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2023-09",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 128000, output: 65536 },
- },
- "text-embedding-3-large": {
- id: "text-embedding-3-large",
- name: "text-embedding-3-large",
- 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,
- cost: { input: 0.13, output: 0 },
- limit: { context: 8191, output: 3072 },
- },
- "phi-3-mini-128k-instruct": {
- id: "phi-3-mini-128k-instruct",
- name: "Phi-3-mini-instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 128000, output: 4096 },
- },
- "phi-4-reasoning": {
- id: "phi-4-reasoning",
- name: "Phi-4-reasoning",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 32000, output: 4096 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.03 },
- limit: { context: 272000, output: 128000 },
- },
- "gpt-5-nano": {
- id: "gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
- limit: { context: 272000, output: 128000 },
- },
- "meta-llama-3-70b-instruct": {
- id: "meta-llama-3-70b-instruct",
- name: "Meta-Llama-3-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 2.68, output: 3.54 },
- limit: { context: 8192, output: 2048 },
- },
- "phi-3-small-8k-instruct": {
- id: "phi-3-small-8k-instruct",
- name: "Phi-3-small-instruct (8k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 8192, output: 2048 },
- },
- "gpt-5.3-codex": {
- id: "gpt-5.3-codex",
- name: "GPT-5.3 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-4-turbo": {
- id: "gpt-4-turbo",
- name: "GPT-4 Turbo",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "text-embedding-ada-002": {
- id: "text-embedding-ada-002",
- name: "text-embedding-ada-002",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 8192, output: 1536 },
- },
- "llama-3.2-90b-vision-instruct": {
- id: "llama-3.2-90b-vision-instruct",
- name: "Llama-3.2-90B-Vision-Instruct",
- 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,
- cost: { input: 2.04, output: 2.04 },
- limit: { context: 128000, output: 8192 },
- },
- "deepseek-r1": {
- id: "deepseek-r1",
- name: "DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 163840, output: 163840 },
- },
- "grok-4-1-fast-non-reasoning": {
- id: "grok-4-1-fast-non-reasoning",
- name: "Grok 4.1 Fast (Non-Reasoning)",
- 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,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 128000, input: 128000, output: 8192 },
- status: "beta",
- },
- "deepseek-v3.2-speciale": {
- id: "deepseek-v3.2-speciale",
- name: "DeepSeek-V3.2-Speciale",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 1.68 },
- limit: { context: 128000, output: 128000 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "mistral-large-2411": {
- id: "mistral-large-2411",
- name: "Mistral Large 24.11",
- family: "mistral-large",
- 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"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 6 },
- limit: { context: 128000, output: 32768 },
- },
- "claude-opus-4-1": {
- id: "claude-opus-4-1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "gpt-4o-mini": {
- id: "gpt-4o-mini",
- name: "GPT-4o mini",
- 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,
- cost: { input: 0.15, output: 0.6, cache_read: 0.08 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-5.4-mini": {
- id: "gpt-5.4-mini",
- name: "GPT-5.4 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "cohere-command-r-08-2024": {
- id: "cohere-command-r-08-2024",
- name: "Command R",
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4000 },
- },
- "cohere-command-a": {
- id: "cohere-command-a",
- name: "Command A",
- family: "command-a",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 256000, output: 8000 },
- },
- "llama-3.2-11b-vision-instruct": {
- id: "llama-3.2-11b-vision-instruct",
- name: "Llama-3.2-11B-Vision-Instruct",
- 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,
- cost: { input: 0.37, output: 0.37 },
- limit: { context: 128000, output: 8192 },
- },
- "meta-llama-3.1-405b-instruct": {
- id: "meta-llama-3.1-405b-instruct",
- name: "Meta-Llama-3.1-405B-Instruct",
- 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,
- cost: { input: 5.33, output: 16 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-5.1-chat": {
- id: "gpt-5.1-chat",
- name: "GPT-5.1 Chat",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-4-turbo-vision": {
- id: "gpt-4-turbo-vision",
- name: "GPT-4 Turbo Vision",
- 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,
- cost: { input: 10, output: 30 },
- limit: { context: 128000, output: 4096 },
- },
- "o4-mini": {
- id: "o4-mini",
- name: "o4-mini",
- family: "o-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.28 },
- limit: { context: 200000, output: 100000 },
- },
- "gpt-5.4-nano": {
- id: "gpt-5.4-nano",
- name: "GPT-5.4 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.75, output: 14, cache_read: 0.175 },
- limit: { context: 400000, output: 128000 },
- },
- "cohere-embed-v-4-0": {
- id: "cohere-embed-v-4-0",
- name: "Embed v4",
- 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,
- cost: { input: 0.12, output: 0 },
- limit: { context: 128000, output: 1536 },
- },
- "gpt-5.1-codex-mini": {
- id: "gpt-5.1-codex-mini",
- name: "GPT-5.1 Codex Mini",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-3.5-turbo-0125": {
- id: "gpt-3.5-turbo-0125",
- name: "GPT-3.5 Turbo 0125",
- 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,
- cost: { input: 0.5, output: 1.5 },
- limit: { context: 16384, output: 16384 },
- },
- "o1-preview": {
- id: "o1-preview",
- name: "o1-preview",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2023-09",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 16.5, output: 66, cache_read: 8.25 },
- limit: { context: 128000, output: 32768 },
- },
- "cohere-embed-v3-multilingual": {
- id: "cohere-embed-v3-multilingual",
- name: "Embed v3 Multilingual",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 512, output: 1024 },
- },
- "grok-4-20-non-reasoning": {
- id: "grok-4-20-non-reasoning",
- name: "Grok 4.20 (Non-Reasoning)",
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 262000, output: 8192 },
- status: "beta",
- },
- "grok-code-fast-1": {
- id: "grok-code-fast-1",
- name: "Grok Code Fast 1",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.5, cache_read: 0.02 },
- limit: { context: 256000, output: 10000 },
- },
- "gpt-5.1": {
- id: "gpt-5.1",
- name: "GPT-5.1",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 272000, output: 128000 },
- },
- "grok-4-fast-reasoning": {
- id: "grok-4-fast-reasoning",
- name: "Grok 4 Fast (Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- o1: {
- id: "o1",
- name: "o1",
- family: "o",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 15, output: 60, cache_read: 7.5 },
- limit: { context: 200000, output: 100000 },
- },
- "mistral-small-2503": {
- id: "mistral-small-2503",
- name: "Mistral Small 3.1",
- 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,
- cost: { input: 0.1, output: 0.3 },
- limit: { context: 128000, output: 32768 },
- },
- "gpt-5.4-pro": {
- id: "gpt-5.4-pro",
- name: "GPT-5.4 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 30, output: 180 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "model-router": {
- id: "model-router",
- name: "Model Router",
- 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,
- cost: { input: 0.14, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "gpt-3.5-turbo-1106": {
- id: "gpt-3.5-turbo-1106",
- name: "GPT-3.5 Turbo 1106",
- 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,
- cost: { input: 1, output: 2 },
- limit: { context: 16384, output: 16384 },
- },
- "o3-mini": {
- id: "o3-mini",
- name: "o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.1, output: 4.4, cache_read: 0.55 },
- limit: { context: 200000, output: 100000 },
- },
- "text-embedding-3-small": {
- id: "text-embedding-3-small",
- name: "text-embedding-3-small",
- 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,
- cost: { input: 0.02, output: 0 },
- limit: { context: 8191, output: 1536 },
- },
- "deepseek-v3.1": {
- id: "deepseek-v3.1",
- name: "DeepSeek-V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2025-08-21",
- last_updated: "2025-08-21",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.56, output: 1.68 },
- limit: { context: 131072, output: 131072 },
- },
- "claude-opus-4-5": {
- id: "claude-opus-4-5",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "phi-3-mini-4k-instruct": {
- id: "phi-3-mini-4k-instruct",
- name: "Phi-3-mini-instruct (4k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.13, output: 0.52 },
- limit: { context: 4096, output: 1024 },
- },
- "meta-llama-3.1-70b-instruct": {
- id: "meta-llama-3.1-70b-instruct",
- name: "Meta-Llama-3.1-70B-Instruct",
- 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,
- cost: { input: 2.68, output: 3.54 },
- limit: { context: 128000, output: 32768 },
- },
- "grok-4": {
- id: "grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, reasoning: 15, cache_read: 0.75 },
- limit: { context: 256000, output: 64000 },
- },
- "phi-4-mini-reasoning": {
- id: "phi-4-mini-reasoning",
- name: "Phi-4-mini-reasoning",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-4": {
- id: "gpt-4",
- name: "GPT-4",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-11",
- release_date: "2023-03-14",
- last_updated: "2023-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 60, output: 120 },
- limit: { context: 8192, output: 8192 },
- },
- "meta-llama-3-8b-instruct": {
- id: "meta-llama-3-8b-instruct",
- name: "Meta-Llama-3-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 0.61 },
- limit: { context: 8192, output: 2048 },
- },
- "gpt-5-codex": {
- id: "gpt-5-codex",
- name: "GPT-5-Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 400000, output: 128000 },
- },
- "gpt-5.4": {
- id: "gpt-5.4",
- name: "GPT-5.4",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 15, cache_read: 0.25 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "phi-4-mini": {
- id: "phi-4-mini",
- name: "Phi-4-mini",
- 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,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 128000, output: 4096 },
- },
- "grok-4-20-reasoning": {
- id: "grok-4-20-reasoning",
- name: "Grok 4.20 (Reasoning)",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 2, output: 6 },
- limit: { context: 262000, output: 8192 },
- status: "beta",
- },
- "gpt-3.5-turbo-0301": {
- id: "gpt-3.5-turbo-0301",
- name: "GPT-3.5 Turbo 0301",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2021-08",
- release_date: "2023-03-01",
- last_updated: "2023-03-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.5, output: 2 },
- limit: { context: 4096, output: 4096 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: {
- input: 5,
- output: 25,
- cache_read: 0.5,
- cache_write: 6.25,
- context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
- },
- limit: { context: 200000, output: 128000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "phi-3-small-128k-instruct": {
- id: "phi-3-small-128k-instruct",
- name: "Phi-3-small-instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-4.1-nano": {
- id: "gpt-4.1-nano",
- name: "GPT-4.1 nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-05",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.03 },
- limit: { context: 1047576, output: 32768 },
- },
- "grok-3-mini": {
- id: "grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 0.5, reasoning: 0.5, cache_read: 0.075 },
- limit: { context: 131072, output: 8192 },
- },
- o3: {
- id: "o3",
- name: "o3",
- family: "o",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 200000, output: 100000 },
- },
- "deepseek-v3.2": {
- id: "deepseek-v3.2",
- name: "DeepSeek-V3.2",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.58, output: 1.68 },
- limit: { context: 128000, output: 128000 },
- },
- "gpt-5-pro": {
- id: "gpt-5-pro",
- name: "GPT-5 Pro",
- family: "gpt-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 120 },
- limit: { context: 400000, output: 272000 },
- },
- "gpt-4o": {
- id: "gpt-4o",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: 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,
- cost: { input: 2.5, output: 10, cache_read: 1.25 },
- limit: { context: 128000, output: 16384 },
- },
- "phi-3-medium-128k-instruct": {
- id: "phi-3-medium-128k-instruct",
- name: "Phi-3-medium-instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.17, output: 0.68 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-3.5-turbo-0613": {
- id: "gpt-3.5-turbo-0613",
- name: "GPT-3.5 Turbo 0613",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2021-08",
- release_date: "2023-06-13",
- last_updated: "2023-06-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 4 },
- limit: { context: 16384, output: 16384 },
- },
- "cohere-command-r-plus-08-2024": {
- id: "cohere-command-r-plus-08-2024",
- name: "Command R+",
- 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,
- cost: { input: 2.5, output: 10 },
- limit: { context: 128000, output: 4000 },
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- provider: {
- npm: "@ai-sdk/anthropic",
- api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
- },
- },
- "phi-4": {
- id: "phi-4",
- name: "Phi-4",
- 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,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 128000, output: 4096 },
- },
- "gpt-5": {
- id: "gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.13 },
- limit: { context: 272000, output: 128000 },
- },
- "gpt-4-32k": {
- id: "gpt-4-32k",
- name: "GPT-4 32K",
- family: "gpt",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-11",
- release_date: "2023-03-14",
- last_updated: "2023-03-14",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 60, output: 120 },
- limit: { context: 32768, output: 32768 },
- },
- "cohere-embed-v3-english": {
- id: "cohere-embed-v3-english",
- name: "Embed v3 English",
- 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,
- cost: { input: 0.1, output: 0 },
- limit: { context: 512, output: 1024 },
- },
- "phi-4-reasoning-plus": {
- id: "phi-4-reasoning-plus",
- name: "Phi-4-reasoning-plus",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.125, output: 0.5 },
- limit: { context: 32000, output: 4096 },
- },
- "mistral-medium-2505": {
- id: "mistral-medium-2505",
- name: "Mistral Medium 3",
- 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,
- cost: { input: 0.4, output: 2 },
- limit: { context: 128000, output: 128000 },
- },
- "gpt-3.5-turbo-instruct": {
- id: "gpt-3.5-turbo-instruct",
- name: "GPT-3.5 Turbo Instruct",
- 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,
- cost: { input: 1.5, output: 2 },
- limit: { context: 4096, output: 4096 },
- },
- "deepseek-r1-0528": {
- id: "deepseek-r1-0528",
- name: "DeepSeek-R1-0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 163840, output: 163840 },
- },
- "gpt-4.1": {
- id: "gpt-4.1",
- name: "GPT-4.1",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-05",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: true,
- temperature: true,
- knowledge: "2024-08",
- release_date: "2025-11-06",
- last_updated: "2025-12-02",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "gpt-4.1-mini": {
- id: "gpt-4.1-mini",
- name: "GPT-4.1 mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-05",
- release_date: "2025-04-14",
- last_updated: "2025-04-14",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.4, output: 1.6, cache_read: 0.1 },
- limit: { context: 1047576, output: 32768 },
- },
- "gpt-5.1-codex": {
- id: "gpt-5.1-codex",
- name: "GPT-5.1 Codex",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "codestral-2501": {
- id: "codestral-2501",
- name: "Codestral 25.01",
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 256000, output: 256000 },
- },
- "llama-4-maverick-17b-128e-instruct-fp8": {
- id: "llama-4-maverick-17b-128e-instruct-fp8",
- name: "Llama 4 Maverick 17B 128E Instruct FP8",
- 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,
- cost: { input: 0.25, output: 1 },
- limit: { context: 128000, output: 8192 },
- },
- "grok-3": {
- id: "grok-3",
- name: "Grok 3",
- family: "grok",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-11",
- release_date: "2025-02-17",
- last_updated: "2025-02-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.75 },
- limit: { context: 131072, output: 8192 },
- },
- "grok-4-fast-non-reasoning": {
- id: "grok-4-fast-non-reasoning",
- name: "Grok 4 Fast (Non-Reasoning)",
- family: "grok",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2025-07",
- release_date: "2025-09-19",
- last_updated: "2025-09-19",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.2, output: 0.5, cache_read: 0.05 },
- limit: { context: 2000000, output: 30000 },
- },
- "mai-ds-r1": {
- id: "mai-ds-r1",
- name: "MAI-DS-R1",
- family: "mai",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.35, output: 5.4 },
- limit: { context: 128000, output: 8192 },
- },
- },
- },
- 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: {
- "x-ai/grok-4": {
- id: "x-ai/grok-4",
- name: "Grok 4",
- family: "grok",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.75, cache_write: 15 },
- limit: { context: 256000, output: 64000 },
- },
- "deepseek-ai/deepseek-r1-distill-llama-70b": {
- id: "deepseek-ai/deepseek-r1-distill-llama-70b",
- name: "DeepSeek R1 Distill Llama 70B",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.03, output: 0.14 },
- limit: { context: 131072, output: 131072 },
- },
- "openai/gpt-5-mini": {
- id: "openai/gpt-5-mini",
- name: "GPT-5 Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2, cache_read: 0.025 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-5-nano": {
- id: "openai/gpt-5-nano",
- name: "GPT-5 Nano",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.05, output: 0.4, cache_read: 0.005 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-oss-20b": {
- id: "openai/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.05, output: 0.2 },
- limit: { context: 131072, output: 65536 },
- },
- "openai/gpt-5": {
- id: "openai/gpt-5",
- name: "GPT-5",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.125 },
- limit: { context: 400000, output: 128000 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-08-05",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 32768 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 2, output: 8, cache_read: 0.5 },
- limit: { context: 1047576, output: 32768 },
- },
- "z-ai/glm-5": {
- id: "z-ai/glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.95, output: 3.15 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen/qwen3-coder": {
- id: "qwen/qwen3-coder",
- name: "Qwen3 Coder",
- 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,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 262144, output: 66536 },
- },
- "google/gemini-2.5-pro": {
- id: "google/gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "google/gemini-2.5-flash": {
- id: "google/gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.0375 },
- limit: { context: 1048576, output: 65536 },
- },
- "moonshotai/kimi-k2": {
- id: "moonshotai/kimi-k2",
- name: "Kimi K2",
- family: "kimi",
- 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,
- cost: { input: 0.55, output: 2.2 },
- limit: { context: 131072, output: 32768 },
- },
- "anthropic/claude-opus-4.1": {
- id: "anthropic/claude-opus-4.1",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "anthropic/claude-sonnet-4": {
- id: "anthropic/claude-sonnet-4",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3-VL-Embedding-8B": {
- id: "Qwen/Qwen3-VL-Embedding-8B",
- name: "Qwen3-VL Embedding 8B",
- 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,
- cost: { input: 0.09, output: 0.09 },
- limit: { context: 32000, output: 4096 },
- },
- "Qwen/Qwen3-VL-235B-A22B-Instruct-FP8": {
- id: "Qwen/Qwen3-VL-235B-A22B-Instruct-FP8",
- name: "Qwen3-VL 235B",
- 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,
- cost: { input: 1.64, output: 1.91 },
- limit: { context: 218000, output: 8192 },
- },
- "neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8": {
- id: "neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8",
- name: "Llama 3.1 8B",
- 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,
- cost: { input: 0.16, output: 0.27 },
- limit: { context: 128000, output: 8192 },
- },
- "neuralmagic/Mistral-Nemo-Instruct-2407-FP8": {
- id: "neuralmagic/Mistral-Nemo-Instruct-2407-FP8",
- name: "Mistral Nemo",
- family: "mistral",
- attachment: false,
- reasoning: false,
- tool_call: true,
- structured_output: false,
- temperature: true,
- release_date: "2024-07-01",
- last_updated: "2024-07-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.49, output: 0.71 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT-OSS 120B",
- family: "gpt",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.49, output: 0.71 },
- limit: { context: 131000, output: 8192 },
- },
- "cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic": {
- id: "cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic",
- name: "Llama 3.3 70B",
- 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,
- cost: { input: 0.49, output: 0.71 },
- limit: { context: 128000, output: 8192 },
- },
- "google/gemma-3-27b-it": {
- id: "google/gemma-3-27b-it",
- name: "Gemma 3 27B",
- 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,
- cost: { input: 0.49, output: 0.71 },
- limit: { context: 37000, output: 8192 },
- },
- "intfloat/e5-mistral-7b-instruct": {
- id: "intfloat/e5-mistral-7b-instruct",
- name: "E5 Mistral 7B",
- 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,
- cost: { input: 0.02, output: 0.02 },
- limit: { context: 4096, output: 4096 },
- },
- },
- },
- "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: {
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi-K2.5",
- family: "kimi",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 202752, output: 16384 },
- },
- "hunyuan-turbos": {
- id: "hunyuan-turbos",
- name: "Hunyuan-TurboS",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 16384 },
- },
- "hunyuan-t1": {
- id: "hunyuan-t1",
- name: "Hunyuan-T1",
- family: "hunyuan",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 16384 },
- },
- "hunyuan-2.0-instruct": {
- id: "hunyuan-2.0-instruct",
- name: "Tencent HY 2.0 Instruct",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 16384 },
- },
- "minimax-m2.5": {
- id: "minimax-m2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 204800, output: 32768 },
- },
- "tc-code-latest": {
- id: "tc-code-latest",
- name: "Auto",
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 16384 },
- },
- "hunyuan-2.0-thinking": {
- id: "hunyuan-2.0-thinking",
- name: "Tencent HY 2.0 Think",
- family: "hunyuan",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 16384 },
- },
- },
- },
- "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: {
- "gemma-3-27b": {
- id: "gemma-3-27b",
- name: "Gemma 3 27B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "whisper-large-v3": {
- id: "whisper-large-v3",
- name: "Whisper large-v3",
- family: "whisper",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: false,
- temperature: true,
- knowledge: "2023-09",
- release_date: "2023-09-01",
- last_updated: "2023-09-01",
- modalities: { input: ["audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 0, output: 4096 },
- },
- "qwen3-embedding-4b": {
- id: "qwen3-embedding-4b",
- name: "Qwen3-Embedding 4B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 32000, output: 2560 },
- },
- "gpt-oss-120b": {
- id: "gpt-oss-120b",
- name: "gpt-oss-120b",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 128000 },
- },
- "qwen3-coder-30b-a3b": {
- id: "qwen3-coder-30b-a3b",
- name: "Qwen3-Coder 30B-A3B",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- },
- },
- google: {
- id: "google",
- env: ["GOOGLE_GENERATIVE_AI_API_KEY", "GEMINI_API_KEY"],
- npm: "@ai-sdk/google",
- name: "Google",
- doc: "https://ai.google.dev/gemini-api/docs/pricing",
- models: {
- "gemini-flash-lite-latest": {
- id: "gemini-flash-lite-latest",
- name: "Gemini Flash-Lite Latest",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-pro-preview-05-06": {
- id: "gemini-2.5-pro-preview-05-06",
- name: "Gemini 2.5 Pro Preview 05-06",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-05-06",
- last_updated: "2025-05-06",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-live-2.5-flash-preview-native-audio": {
- id: "gemini-live-2.5-flash-preview-native-audio",
- name: "Gemini Live 2.5 Flash Preview Native Audio",
- family: "gemini-flash",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: false,
- knowledge: "2025-01",
- release_date: "2025-06-17",
- last_updated: "2025-09-18",
- modalities: { input: ["text", "audio", "video"], output: ["text", "audio"] },
- open_weights: false,
- cost: { input: 0.5, output: 2, input_audio: 3, output_audio: 12 },
- limit: { context: 131072, output: 65536 },
- },
- "gemini-3.1-pro-preview-customtools": {
- id: "gemini-3.1-pro-preview-customtools",
- name: "Gemini 3.1 Pro Preview Custom Tools",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "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-25",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-1.5-flash": {
- id: "gemini-1.5-flash",
- name: "Gemini 1.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-05-14",
- last_updated: "2024-05-14",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3, cache_read: 0.01875 },
- limit: { context: 1000000, output: 8192 },
- },
- "gemini-1.5-pro": {
- id: "gemini-1.5-pro",
- name: "Gemini 1.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-02-15",
- last_updated: "2024-02-15",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 5, cache_read: 0.3125 },
- limit: { context: 1000000, output: 8192 },
- },
- "gemma-3n-e4b-it": {
- id: "gemma-3n-e4b-it",
- name: "Gemma 3n 4B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2000 },
- },
- "gemini-3.1-flash-lite-preview": {
- id: "gemini-3.1-flash-lite-preview",
- name: "Gemini 3.1 Flash Lite Preview",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-3.1-pro-preview": {
- id: "gemini-3.1-pro-preview",
- name: "Gemini 3.1 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.0-flash": {
- id: "gemini-2.0-flash",
- name: "Gemini 2.0 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 8192 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: {
- input: 0.5,
- output: 3,
- cache_read: 0.05,
- context_over_200k: { input: 0.5, output: 3, cache_read: 0.05 },
- },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-preview-tts": {
- id: "gemini-2.5-flash-preview-tts",
- name: "Gemini 2.5 Flash Preview TTS",
- family: "gemini-flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-01",
- release_date: "2025-05-01",
- last_updated: "2025-05-01",
- modalities: { input: ["text"], output: ["audio"] },
- open_weights: false,
- cost: { input: 0.5, output: 10 },
- limit: { context: 8000, output: 16000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2, output: 12, cache_read: 0.2, context_over_200k: { input: 4, output: 18, cache_read: 0.4 } },
- limit: { context: 1000000, output: 64000 },
- },
- "gemini-2.5-flash-preview-05-20": {
- id: "gemini-2.5-flash-preview-05-20",
- name: "Gemini 2.5 Flash Preview 05-20",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-05-20",
- last_updated: "2025-05-20",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.0375 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-embedding-001": {
- id: "gemini-embedding-001",
- name: "Gemini Embedding 001",
- 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,
- cost: { input: 0.15, output: 0 },
- limit: { context: 2048, output: 3072 },
- },
- "gemini-2.5-pro": {
- id: "gemini-2.5-pro",
- name: "Gemini 2.5 Pro",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-flash-latest": {
- id: "gemini-flash-latest",
- name: "Gemini Flash Latest",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, input_audio: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemma-4-31b-it": {
- id: "gemma-4-31b-it",
- name: "Gemma 4 31B",
- family: "gemma",
- attachment: false,
- reasoning: true,
- 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: 8192 },
- },
- "gemini-2.5-pro-preview-06-05": {
- id: "gemini-2.5-pro-preview-06-05",
- name: "Gemini 2.5 Pro Preview 06-05",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-06-05",
- last_updated: "2025-06-05",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 1.25, output: 10, cache_read: 0.31 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-flash-image": {
- id: "gemini-2.5-flash-image",
- name: "Gemini 2.5 Flash Image",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.3, output: 30, cache_read: 0.075 },
- limit: { context: 32768, output: 32768 },
- },
- "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",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025, input_audio: 0.3 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemma-3-12b-it": {
- id: "gemma-3-12b-it",
- name: "Gemma 3 12B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, input_audio: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemma-3n-e2b-it": {
- id: "gemma-3n-e2b-it",
- name: "Gemma 3n 2B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-07-09",
- last_updated: "2025-07-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2000 },
- },
- "gemini-3.1-flash-image-preview": {
- id: "gemini-3.1-flash-image-preview",
- name: "Gemini 3.1 Flash Image (Preview)",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 60 },
- limit: { context: 131072, output: 32768 },
- },
- "gemma-3-4b-it": {
- id: "gemma-3-4b-it",
- name: "Gemma 3 4B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: false,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-13",
- last_updated: "2025-03-13",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 32768, output: 8192 },
- },
- "gemini-2.5-flash-preview-04-17": {
- id: "gemini-2.5-flash-preview-04-17",
- name: "Gemini 2.5 Flash Preview 04-17",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-04-17",
- last_updated: "2025-04-17",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.15, output: 0.6, cache_read: 0.0375 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemini-2.5-pro-preview-tts": {
- id: "gemini-2.5-pro-preview-tts",
- name: "Gemini 2.5 Pro Preview TTS",
- family: "gemini-flash",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-01",
- release_date: "2025-05-01",
- last_updated: "2025-05-01",
- modalities: { input: ["text"], output: ["audio"] },
- open_weights: false,
- cost: { input: 1, output: 20 },
- limit: { context: 8000, output: 16000 },
- },
- "gemini-2.5-flash-preview-09-2025": {
- id: "gemini-2.5-flash-preview-09-2025",
- name: "Gemini 2.5 Flash Preview 09-25",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-25",
- last_updated: "2025-09-25",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.3, output: 2.5, cache_read: 0.075, input_audio: 1 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemma-3-27b-it": {
- id: "gemma-3-27b-it",
- name: "Gemma 3 27B",
- family: "gemma",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-03-12",
- last_updated: "2025-03-12",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 8192 },
- },
- "gemini-2.5-flash-lite": {
- id: "gemini-2.5-flash-lite",
- name: "Gemini 2.5 Flash Lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.1, output: 0.4, cache_read: 0.025 },
- limit: { context: 1048576, output: 65536 },
- },
- "gemma-4-26b-it": {
- id: "gemma-4-26b-it",
- name: "Gemma 4 26B",
- family: "gemma",
- attachment: false,
- reasoning: true,
- 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: 8192 },
- },
- "gemini-2.5-flash-image-preview": {
- id: "gemini-2.5-flash-image-preview",
- name: "Gemini 2.5 Flash Image (Preview)",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2025-06",
- release_date: "2025-08-26",
- last_updated: "2025-08-26",
- modalities: { input: ["text", "image"], output: ["text", "image"] },
- open_weights: false,
- cost: { input: 0.3, output: 30, cache_read: 0.075 },
- limit: { context: 32768, output: 32768 },
- },
- "gemini-1.5-flash-8b": {
- id: "gemini-1.5-flash-8b",
- name: "Gemini 1.5 Flash-8B",
- family: "gemini-flash",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04",
- release_date: "2024-10-03",
- last_updated: "2024-10-03",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.0375, output: 0.15, cache_read: 0.01 },
- limit: { context: 1000000, output: 8192 },
- },
- "gemini-live-2.5-flash": {
- id: "gemini-live-2.5-flash",
- name: "Gemini Live 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-01",
- release_date: "2025-09-01",
- last_updated: "2025-09-01",
- modalities: { input: ["text", "image", "audio", "video"], output: ["text", "audio"] },
- open_weights: false,
- cost: { input: 0.5, output: 2, input_audio: 3, output_audio: 12 },
- limit: { context: 128000, output: 8000 },
- },
- "gemini-2.0-flash-lite": {
- id: "gemini-2.0-flash-lite",
- name: "Gemini 2.0 Flash Lite",
- family: "gemini-flash-lite",
- attachment: true,
- reasoning: false,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2024-12-11",
- last_updated: "2024-12-11",
- modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0.075, output: 0.3 },
- limit: { context: 1048576, output: 8192 },
- },
- },
- },
- 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-r1": {
- id: "public/deepseek-r1",
- name: "DeepSeek R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.55, output: 2.2 },
- limit: { context: 131072, output: 32000 },
- },
- "public/minimax-m25": {
- id: "public/minimax-m25",
- name: "MiniMax M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.29, output: 1.16 },
- limit: { context: 204800, output: 131072 },
- },
- "public/deepseek-v3": {
- id: "public/deepseek-v3",
- name: "DeepSeek V3",
- 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,
- cost: { input: 0.28, output: 1.1 },
- limit: { context: 131072, output: 8192 },
- },
- },
- },
- 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-0905-preview": {
- id: "kimi-k2-0905-preview",
- name: "Kimi K2 0905",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2.5": {
- id: "kimi-k2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 3, cache_read: 0.1 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2-thinking-turbo": {
- id: "kimi-k2-thinking-turbo",
- name: "Kimi K2 Thinking Turbo",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.15, output: 8, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2-turbo-preview": {
- id: "kimi-k2-turbo-preview",
- name: "Kimi K2 Turbo",
- family: "kimi",
- 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,
- cost: { input: 2.4, output: 10, cache_read: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "kimi-k2-0711-preview": {
- id: "kimi-k2-0711-preview",
- name: "Kimi K2 0711",
- family: "kimi",
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 131072, output: 16384 },
- },
- "kimi-k2-thinking": {
- id: "kimi-k2-thinking",
- name: "Kimi K2 Thinking",
- family: "kimi-thinking",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.5, cache_read: 0.15 },
- limit: { context: 262144, output: 262144 },
- },
- },
- },
- 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: {
- "zai-org/GLM-4.7": {
- id: "zai-org/GLM-4.7",
- name: "GLM 4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-12",
- release_date: "2026-01-19",
- last_updated: "2026-01-19",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.7, output: 2.3 },
- limit: { context: 128000, output: 8192 },
- },
- "BAAI/bge-reranker-v2-m3": {
- id: "BAAI/bge-reranker-v2-m3",
- name: "bge-reranker-v2-m3",
- family: "bge",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-04",
- release_date: "2025-04-23",
- last_updated: "2025-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.1 },
- limit: { context: 512, output: 512 },
- },
- "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",
- family: "mistral-small",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.3 },
- limit: { context: 32000, output: 8192 },
- },
- "meta-llama/Llama-3.3-70B-Instruct": {
- id: "meta-llama/Llama-3.3-70B-Instruct",
- name: "Llama 3.3 70B Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2025-04-27",
- last_updated: "2025-04-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.9, output: 0.9 },
- limit: { context: 128000, output: 8192 },
- },
- "KBLab/kb-whisper-large": {
- id: "KBLab/kb-whisper-large",
- name: "KB-Whisper-Large",
- family: "whisper",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-04",
- release_date: "2025-04-27",
- last_updated: "2025-04-27",
- modalities: { input: ["audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 3, output: 3 },
- limit: { context: 480000, output: 4800 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT-OSS-120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 128000, output: 8192 },
- },
- "intfloat/multilingual-e5-large-instruct": {
- id: "intfloat/multilingual-e5-large-instruct",
- name: "Multilingual-E5-large-instruct",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-04",
- release_date: "2025-04-27",
- last_updated: "2025-04-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0 },
- limit: { context: 512, output: 1024 },
- },
- "intfloat/multilingual-e5-large": {
- id: "intfloat/multilingual-e5-large",
- name: "Multilingual-E5-large",
- family: "text-embedding",
- attachment: false,
- reasoning: false,
- tool_call: false,
- temperature: false,
- knowledge: "2025-09",
- release_date: "2025-09-11",
- last_updated: "2025-09-11",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.02, output: 0 },
- limit: { context: 512, output: 1024 },
- },
- },
- },
- "github-models": {
- id: "github-models",
- env: ["GITHUB_TOKEN"],
- npm: "@ai-sdk/openai-compatible",
- api: "https://models.github.ai/inference",
- name: "GitHub Models",
- doc: "https://docs.github.com/en/github-models",
- models: {
- "deepseek/deepseek-v3-0324": {
- id: "deepseek/deepseek-v3-0324",
- name: "DeepSeek-V3-0324",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-03-24",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "deepseek/deepseek-r1": {
- id: "deepseek/deepseek-r1",
- name: "DeepSeek-R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 65536, output: 8192 },
- },
- "deepseek/deepseek-r1-0528": {
- id: "deepseek/deepseek-r1-0528",
- name: "DeepSeek-R1-0528",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-05-28",
- last_updated: "2025-05-28",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 65536, output: 8192 },
- },
- "ai21-labs/ai21-jamba-1.5-mini": {
- id: "ai21-labs/ai21-jamba-1.5-mini",
- name: "AI21 Jamba 1.5 Mini",
- family: "jamba",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-08-29",
- last_updated: "2024-08-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 4096 },
- },
- "ai21-labs/ai21-jamba-1.5-large": {
- id: "ai21-labs/ai21-jamba-1.5-large",
- name: "AI21 Jamba 1.5 Large",
- family: "jamba",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-08-29",
- last_updated: "2024-08-29",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 256000, output: 4096 },
- },
- "microsoft/phi-3.5-mini-instruct": {
- id: "microsoft/phi-3.5-mini-instruct",
- name: "Phi-3.5-mini instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-medium-4k-instruct": {
- id: "microsoft/phi-3-medium-4k-instruct",
- name: "Phi-3-medium instruct (4k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 4096, output: 1024 },
- },
- "microsoft/phi-3.5-moe-instruct": {
- id: "microsoft/phi-3.5-moe-instruct",
- name: "Phi-3.5-MoE instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-mini-128k-instruct": {
- id: "microsoft/phi-3-mini-128k-instruct",
- name: "Phi-3-mini instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-4-mini-instruct": {
- id: "microsoft/phi-4-mini-instruct",
- name: "Phi-4-mini-instruct",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-4-reasoning": {
- id: "microsoft/phi-4-reasoning",
- name: "Phi-4-Reasoning",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-small-8k-instruct": {
- id: "microsoft/phi-3-small-8k-instruct",
- name: "Phi-3-small instruct (8k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2048 },
- },
- "microsoft/phi-3.5-vision-instruct": {
- id: "microsoft/phi-3.5-vision-instruct",
- name: "Phi-3.5-vision instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-08-20",
- last_updated: "2024-08-20",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-mini-4k-instruct": {
- id: "microsoft/phi-3-mini-4k-instruct",
- name: "Phi-3-mini instruct (4k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 4096, output: 1024 },
- },
- "microsoft/phi-4-mini-reasoning": {
- id: "microsoft/phi-4-mini-reasoning",
- name: "Phi-4-mini-reasoning",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-small-128k-instruct": {
- id: "microsoft/phi-3-small-128k-instruct",
- name: "Phi-3-small instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-3-medium-128k-instruct": {
- id: "microsoft/phi-3-medium-128k-instruct",
- name: "Phi-3-medium instruct (128k)",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-04-23",
- last_updated: "2024-04-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/phi-4": {
- id: "microsoft/phi-4",
- name: "Phi-4",
- family: "phi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 16000, output: 4096 },
- },
- "microsoft/phi-4-multimodal-instruct": {
- id: "microsoft/phi-4-multimodal-instruct",
- name: "Phi-4-multimodal-instruct",
- family: "phi",
- attachment: false,
- reasoning: true,
- tool_call: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "microsoft/mai-ds-r1": {
- id: "microsoft/mai-ds-r1",
- name: "MAI-DS-R1",
- family: "mai",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-06",
- release_date: "2025-01-20",
- last_updated: "2025-01-20",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 65536, output: 8192 },
- },
- "cohere/cohere-command-r-08-2024": {
- id: "cohere/cohere-command-r-08-2024",
- name: "Cohere Command R 08-2024",
- family: "command-r",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-08-01",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "cohere/cohere-command-a": {
- id: "cohere/cohere-command-a",
- name: "Cohere Command A",
- family: "command-a",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-11-01",
- last_updated: "2024-11-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "cohere/cohere-command-r-plus": {
- id: "cohere/cohere-command-r-plus",
- name: "Cohere Command R+",
- family: "command-r",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-04-04",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "cohere/cohere-command-r": {
- id: "cohere/cohere-command-r",
- name: "Cohere Command R",
- family: "command-r",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-03-11",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "cohere/cohere-command-r-plus-08-2024": {
- id: "cohere/cohere-command-r-plus-08-2024",
- name: "Cohere Command R+ 08-2024",
- family: "command-r",
- attachment: false,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-08-01",
- last_updated: "2024-08-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 4096 },
- },
- "xai/grok-3-mini": {
- id: "xai/grok-3-mini",
- name: "Grok 3 Mini",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-12-09",
- last_updated: "2024-12-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "xai/grok-3": {
- id: "xai/grok-3",
- name: "Grok 3",
- family: "grok",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2024-12-09",
- last_updated: "2024-12-09",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "openai/o1-mini": {
- id: "openai/o1-mini",
- name: "OpenAI o1-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2023-10",
- release_date: "2024-09-12",
- last_updated: "2024-12-17",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 65536 },
- },
- "openai/gpt-4o-mini": {
- id: "openai/gpt-4o-mini",
- name: "GPT-4o mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o4-mini": {
- id: "openai/o4-mini",
- name: "OpenAI o4-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2024-04",
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o1-preview": {
- id: "openai/o1-preview",
- name: "OpenAI o1-preview",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2023-10",
- release_date: "2024-09-12",
- last_updated: "2024-09-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "openai/o1": {
- id: "openai/o1",
- name: "OpenAI o1",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2023-10",
- release_date: "2024-09-12",
- last_updated: "2024-12-17",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/o3-mini": {
- id: "openai/o3-mini",
- name: "OpenAI o3-mini",
- family: "o-mini",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2024-04",
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4.1-nano": {
- id: "openai/gpt-4.1-nano",
- name: "GPT-4.1-nano",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/o3": {
- id: "openai/o3",
- name: "OpenAI o3",
- family: "o",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: false,
- knowledge: "2024-04",
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 200000, output: 100000 },
- },
- "openai/gpt-4o": {
- id: "openai/gpt-4o",
- name: "GPT-4o",
- family: "gpt",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2023-10",
- release_date: "2024-05-13",
- last_updated: "2024-05-13",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4.1": {
- id: "openai/gpt-4.1",
- name: "GPT-4.1",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "openai/gpt-4.1-mini": {
- id: "openai/gpt-4.1-mini",
- name: "GPT-4.1-mini",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 16384 },
- },
- "meta/llama-4-scout-17b-16e-instruct": {
- id: "meta/llama-4-scout-17b-16e-instruct",
- name: "Llama 4 Scout 17B 16E Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/meta-llama-3.1-8b-instruct": {
- id: "meta/meta-llama-3.1-8b-instruct",
- name: "Meta-Llama-3.1-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "meta/llama-3.3-70b-instruct": {
- id: "meta/llama-3.3-70b-instruct",
- name: "Llama-3.3-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "meta/meta-llama-3-70b-instruct": {
- id: "meta/meta-llama-3-70b-instruct",
- name: "Meta-Llama-3-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2048 },
- },
- "meta/llama-3.2-90b-vision-instruct": {
- id: "meta/llama-3.2-90b-vision-instruct",
- name: "Llama-3.2-90B-Vision-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-09-25",
- last_updated: "2024-09-25",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/llama-3.2-11b-vision-instruct": {
- id: "meta/llama-3.2-11b-vision-instruct",
- name: "Llama-3.2-11B-Vision-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-09-25",
- last_updated: "2024-09-25",
- modalities: { input: ["text", "image", "audio"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "meta/meta-llama-3.1-405b-instruct": {
- id: "meta/meta-llama-3.1-405b-instruct",
- name: "Meta-Llama-3.1-405B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "meta/meta-llama-3.1-70b-instruct": {
- id: "meta/meta-llama-3.1-70b-instruct",
- name: "Meta-Llama-3.1-70B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "meta/meta-llama-3-8b-instruct": {
- id: "meta/meta-llama-3-8b-instruct",
- name: "Meta-Llama-3-8B-Instruct",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-12",
- release_date: "2024-04-18",
- last_updated: "2024-04-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2048 },
- },
- "meta/llama-4-maverick-17b-128e-instruct-fp8": {
- id: "meta/llama-4-maverick-17b-128e-instruct-fp8",
- name: "Llama 4 Maverick 17B 128E Instruct FP8",
- family: "llama",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-12",
- release_date: "2025-01-31",
- last_updated: "2025-01-31",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "core42/jais-30b-chat": {
- id: "core42/jais-30b-chat",
- name: "JAIS 30b Chat",
- family: "jais",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2023-03",
- release_date: "2023-08-30",
- last_updated: "2023-08-30",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 8192, output: 2048 },
- },
- "mistral-ai/mistral-nemo": {
- id: "mistral-ai/mistral-nemo",
- name: "Mistral Nemo",
- family: "mistral-nemo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-03",
- release_date: "2024-07-18",
- last_updated: "2024-07-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "mistral-ai/ministral-3b": {
- id: "mistral-ai/ministral-3b",
- name: "Ministral 3B",
- family: "ministral",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 8192 },
- },
- "mistral-ai/mistral-large-2411": {
- id: "mistral-ai/mistral-large-2411",
- name: "Mistral Large 24.11",
- family: "mistral-large",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2024-11-01",
- last_updated: "2024-11-01",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "mistral-ai/mistral-small-2503": {
- id: "mistral-ai/mistral-small-2503",
- name: "Mistral Small 3.1",
- family: "mistral-small",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "mistral-ai/mistral-medium-2505": {
- id: "mistral-ai/mistral-medium-2505",
- name: "Mistral Medium 3 (25.05)",
- family: "mistral-medium",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-09",
- release_date: "2025-05-01",
- last_updated: "2025-05-01",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0 },
- limit: { context: 128000, output: 32768 },
- },
- "mistral-ai/codestral-2501": {
- id: "mistral-ai/codestral-2501",
- name: "Codestral 25.01",
- family: "codestral",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 32000, output: 8192 },
- },
- },
- },
- 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",
- 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,
- cost: { input: 0.15, output: 0.15 },
- limit: { context: 32768, output: 32768 },
- },
- "Qwen/Qwen3.5-397B-A17B": {
- id: "Qwen/Qwen3.5-397B-A17B",
- name: "Qwen3.5 397B A17B",
- family: "qwen",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-16",
- last_updated: "2026-02-16",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 3.6 },
- limit: { context: 262144, output: 130000 },
- },
- "Qwen/Qwen3-Coder-Next-FP8": {
- id: "Qwen/Qwen3-Coder-Next-FP8",
- name: "Qwen3 Coder Next FP8",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 1.2 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507-tput": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
- name: "Qwen3 235B A22B Instruct 2507 FP8",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 0.6 },
- limit: { context: 262144, output: 262144 },
- },
- "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8": {
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
- name: "Qwen3 Coder 480B A35B Instruct",
- 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,
- cost: { input: 2, output: 2 },
- limit: { context: 262144, output: 262144 },
- },
- "zai-org/GLM-5.1": {
- id: "zai-org/GLM-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- tool_call: true,
- structured_output: true,
- temperature: true,
- knowledge: "2025-11",
- release_date: "2026-04-07",
- last_updated: "2026-04-07",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.4, output: 4.4 },
- limit: { context: 202752, output: 131072 },
- },
- "meta-llama/Llama-3.3-70B-Instruct-Turbo": {
- id: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
- name: "Llama 3.3 70B",
- 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,
- cost: { input: 0.88, output: 0.88 },
- limit: { context: 131072, output: 131072 },
- },
- "deepseek-ai/DeepSeek-V3": {
- id: "deepseek-ai/DeepSeek-V3",
- name: "DeepSeek V3",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1.25, output: 1.25 },
- limit: { context: 131072, output: 131072 },
- },
- "deepseek-ai/DeepSeek-R1": {
- id: "deepseek-ai/DeepSeek-R1",
- name: "DeepSeek R1",
- family: "deepseek-thinking",
- attachment: false,
- reasoning: true,
- tool_call: false,
- temperature: true,
- knowledge: "2024-07",
- release_date: "2024-12-26",
- last_updated: "2025-03-24",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 3, output: 7 },
- limit: { context: 163839, output: 163839 },
- },
- "deepseek-ai/DeepSeek-V3-1": {
- id: "deepseek-ai/DeepSeek-V3-1",
- name: "DeepSeek V3.1",
- family: "deepseek",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.7 },
- limit: { context: 131072, output: 131072 },
- },
- "openai/gpt-oss-120b": {
- id: "openai/gpt-oss-120b",
- name: "GPT OSS 120B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.15, output: 0.6 },
- limit: { context: 131072, output: 131072 },
- },
- "google/gemma-4-31B-it": {
- id: "google/gemma-4-31B-it",
- name: "Gemma 4 31B Instruct",
- family: "gemma",
- attachment: true,
- reasoning: true,
- tool_call: 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,
- cost: { input: 0.2, output: 0.5 },
- limit: { context: 262144, output: 131072 },
- },
- "moonshotai/Kimi-K2.5": {
- id: "moonshotai/Kimi-K2.5",
- name: "Kimi K2.5",
- family: "kimi",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.5, output: 2.8 },
- limit: { context: 262144, output: 262144 },
- },
- "MiniMaxAI/MiniMax-M2.5": {
- id: "MiniMaxAI/MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- "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: {
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.71, output: 3.57 },
- limit: { context: 200000, output: 32000 },
- },
- "gemini-3-flash-preview": {
- id: "gemini-3-flash-preview",
- name: "Gemini 3 Flash Preview",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.43, context_over_200k: { input: 0.07, output: 0.43 } },
- limit: { context: 1048576, output: 65536 },
- },
- "gpt-5-mini": {
- id: "gpt-5-mini",
- name: "GPT-5-Mini",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.04, output: 0.29 },
- limit: { context: 200000, output: 64000 },
- },
- "gemini-3-pro-preview": {
- id: "gemini-3-pro-preview",
- name: "Gemini 3 Pro Preview",
- family: "gemini-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.57, output: 3.43 },
- limit: { context: 1000000, output: 65000 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.43, output: 2.14 },
- limit: { context: 200000, output: 64000 },
- },
- "gpt-5.2": {
- id: "gpt-5.2",
- name: "GPT-5.2",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.25, output: 2 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gpt-5.2-codex": {
- id: "gpt-5.2-codex",
- name: "GPT-5.2 Codex",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 1.14 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "gemini-2.5-flash": {
- id: "gemini-2.5-flash",
- name: "Gemini 2.5 Flash",
- family: "gemini-flash",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.09, output: 0.71, context_over_200k: { input: 0.09, output: 0.71 } },
- limit: { context: 1048576, output: 65536 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.14, output: 0.71 },
- limit: { context: 200000, output: 64000 },
- },
- },
- },
- 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-3-sonnet-20240229": {
- id: "claude-3-sonnet-20240229",
- name: "Claude Sonnet 3",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "claude-haiku-4-5": {
- id: "claude-haiku-4-5",
- name: "Claude Haiku 4.5 (latest)",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-5-20251101": {
- id: "claude-opus-4-5-20251101",
- name: "Claude Opus 4.5",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2025-11-01",
- last_updated: "2025-11-01",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-3-opus-20240229": {
- id: "claude-3-opus-20240229",
- name: "Claude Opus 3",
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 4096 },
- },
- "claude-3-5-haiku-20241022": {
- id: "claude-3-5-haiku-20241022",
- name: "Claude Haiku 3.5",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "claude-3-5-sonnet-20241022": {
- id: "claude-3-5-sonnet-20241022",
- name: "Claude Sonnet 3.5 v2",
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "claude-sonnet-4-6": {
- id: "claude-sonnet-4-6",
- name: "Claude Sonnet 4.6",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 1000000, output: 64000 },
- },
- "claude-opus-4-0": {
- id: "claude-opus-4-0",
- name: "Claude Opus 4 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "claude-3-haiku-20240307": {
- id: "claude-3-haiku-20240307",
- name: "Claude Haiku 3",
- 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,
- cost: { input: 0.25, output: 1.25, cache_read: 0.03, cache_write: 0.3 },
- limit: { context: 200000, output: 4096 },
- },
- "claude-sonnet-4-5-20250929": {
- id: "claude-sonnet-4-5-20250929",
- name: "Claude Sonnet 4.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-3-5-haiku-latest": {
- id: "claude-3-5-haiku-latest",
- name: "Claude Haiku 3.5 (latest)",
- 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,
- cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
- limit: { context: 200000, output: 8192 },
- },
- "claude-opus-4-1": {
- id: "claude-opus-4-1",
- name: "Claude Opus 4.1 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "claude-sonnet-4-0": {
- id: "claude-sonnet-4-0",
- name: "Claude Sonnet 4 (latest)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-3-5-sonnet-20240620": {
- id: "claude-3-5-sonnet-20240620",
- name: "Claude Sonnet 3.5",
- family: "claude-sonnet",
- attachment: true,
- reasoning: false,
- tool_call: true,
- temperature: true,
- knowledge: "2024-04-30",
- release_date: "2024-06-20",
- last_updated: "2024-06-20",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 8192 },
- },
- "claude-opus-4-5": {
- id: "claude-opus-4-5",
- name: "Claude Opus 4.5 (latest)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-1-20250805": {
- id: "claude-opus-4-1-20250805",
- name: "Claude Opus 4.1",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- "claude-haiku-4-5-20251001": {
- id: "claude-haiku-4-5-20251001",
- name: "Claude Haiku 4.5",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-sonnet-4-20250514": {
- id: "claude-sonnet-4-20250514",
- name: "Claude Sonnet 4",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-6": {
- id: "claude-opus-4-6",
- name: "Claude Opus 4.6",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
- 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" } },
- },
- },
- },
- },
- "claude-3-7-sonnet-20250219": {
- id: "claude-3-7-sonnet-20250219",
- name: "Claude Sonnet 3.7",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-sonnet-4-5": {
- id: "claude-sonnet-4-5",
- name: "Claude Sonnet 4.5 (latest)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
- limit: { context: 200000, output: 64000 },
- },
- "claude-opus-4-20250514": {
- id: "claude-opus-4-20250514",
- name: "Claude Opus 4",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
- limit: { context: 200000, output: 32000 },
- },
- },
- },
- 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: {
- "Qwen/Qwen3-30B-A3B-Thinking-2507": {
- id: "Qwen/Qwen3-30B-A3B-Thinking-2507",
- name: "Qwen3 30B A3B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 32768 },
- },
- "Qwen/Qwen3-30B-A3B-Instruct-2507": {
- id: "Qwen/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 16384 },
- },
- "Qwen/Qwen3-235B-A22B-Instruct-2507": {
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
- name: "Qwen3 235B A22B Instruct 2507",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 131072 },
- },
- "Qwen/Qwen3-Coder-30B-A3B-Instruct": {
- id: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
- name: "Qwen3 Coder 30B A3B Instruct",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 65536 },
- },
- "Qwen/Qwen3-235B-A22B-Thinking-2507": {
- id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
- name: "Qwen3-235B-A22B-Thinking-2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 262144, output: 131072 },
- },
- "ZhipuAI/GLM-4.5": {
- id: "ZhipuAI/GLM-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "ZhipuAI/GLM-4.6": {
- id: "ZhipuAI/GLM-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 202752, output: 98304 },
- },
- },
- },
- 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)",
- family: "gpt-nano",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-gpt-5-mini": {
- id: "duo-chat-gpt-5-mini",
- name: "Agentic Chat (GPT-5 Mini)",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-sonnet-4-6": {
- id: "duo-chat-sonnet-4-6",
- name: "Agentic Chat (Claude Sonnet 4.6)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 64000 },
- },
- "duo-chat-gpt-5-2": {
- id: "duo-chat-gpt-5-2",
- name: "Agentic Chat (GPT-5.2)",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-gpt-5-codex": {
- id: "duo-chat-gpt-5-codex",
- name: "Agentic Chat (GPT-5 Codex)",
- family: "gpt-codex",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-gpt-5-1": {
- id: "duo-chat-gpt-5-1",
- name: "Agentic Chat (GPT-5.1)",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-gpt-5-2-codex": {
- id: "duo-chat-gpt-5-2-codex",
- name: "Agentic Chat (GPT-5.2 Codex)",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-sonnet-4-5": {
- id: "duo-chat-sonnet-4-5",
- name: "Agentic Chat (Claude Sonnet 4.5)",
- family: "claude-sonnet",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 64000 },
- },
- "duo-chat-gpt-5-4": {
- id: "duo-chat-gpt-5-4",
- name: "Agentic Chat (GPT-5.4)",
- family: "gpt",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 1050000, input: 922000, output: 128000 },
- },
- "duo-chat-haiku-4-5": {
- id: "duo-chat-haiku-4-5",
- name: "Agentic Chat (Claude Haiku 4.5)",
- family: "claude-haiku",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 64000 },
- },
- "duo-chat-gpt-5-3-codex": {
- id: "duo-chat-gpt-5-3-codex",
- name: "Agentic Chat (GPT-5.3 Codex)",
- family: "gpt-codex",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-gpt-5-4-mini": {
- id: "duo-chat-gpt-5-4-mini",
- name: "Agentic Chat (GPT-5.4 Mini)",
- family: "gpt-mini",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 400000, input: 272000, output: 128000 },
- },
- "duo-chat-opus-4-5": {
- id: "duo-chat-opus-4-5",
- name: "Agentic Chat (Claude Opus 4.5)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 64000 },
- },
- "duo-chat-opus-4-6": {
- id: "duo-chat-opus-4-6",
- name: "Agentic Chat (Claude Opus 4.6)",
- family: "claude-opus",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2025-03-31",
- release_date: "2026-02-05",
- last_updated: "2026-02-05",
- modalities: { input: ["text", "image", "pdf"], output: ["text"] },
- open_weights: false,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 1000000, output: 64000 },
- },
- },
- },
- 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-omni": {
- id: "mimo-v2-omni",
- name: "MiMo-V2-Omni",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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", "video", "pdf"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.4, output: 2, cache_read: 0.08 },
- limit: { context: 256000, output: 128000 },
- },
- "mimo-v2-pro": {
- id: "mimo-v2-pro",
- name: "MiMo-V2-Pro",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3, cache_read: 0.2 },
- limit: { context: 1000000, output: 128000 },
- },
- "mimo-v2-flash": {
- id: "mimo-v2-flash",
- name: "MiMo-V2-Flash",
- family: "mimo",
- attachment: false,
- reasoning: true,
- tool_call: true,
- interleaved: { field: "reasoning_content" },
- temperature: true,
- knowledge: "2024-12-01",
- release_date: "2025-12-16",
- last_updated: "2026-02-04",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.1, output: 0.3, cache_read: 0.01 },
- limit: { context: 256000, output: 64000 },
- },
- },
- },
- 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: {
- "arcee_ai/AFM/models/trinity-mini": {
- id: "arcee_ai/AFM/models/trinity-mini",
- name: "Trinity Mini",
- family: "trinity-mini",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- knowledge: "2024-10",
- release_date: "2025-12",
- last_updated: "2026-02-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.045, output: 0.15 },
- limit: { context: 131072, output: 131072 },
- },
- "mistralai/completion/models/Ministral-3-14B-Reasoning-2512": {
- id: "mistralai/completion/models/Ministral-3-14B-Reasoning-2512",
- name: "Ministral 3 14B Reasoning 2512",
- family: "ministral",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 2.5, output: 1.7 },
- limit: { context: 262144, output: 262144 },
- },
- "mistralai/completion/models/Ministral-3-3B-Reasoning-2512": {
- id: "mistralai/completion/models/Ministral-3-3B-Reasoning-2512",
- name: "Ministral 3 3B Reasoning 2512",
- family: "ministral",
- attachment: true,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12",
- last_updated: "2026-02-25",
- modalities: { input: ["text", "image"], output: ["text"] },
- open_weights: true,
- cost: { input: 1.039, output: 0.54825 },
- limit: { context: 262144, output: 262144 },
- },
- "deepseek-ai/deepseek-ocr/models/DeepSeek-OCR": {
- id: "deepseek-ai/deepseek-ocr/models/DeepSeek-OCR",
- name: "DeepSeek OCR",
- 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,
- cost: { input: 0.2, output: 0.7 },
- limit: { context: 8192, output: 8192 },
- },
- "openai/chat-completion/models/gpt-oss-20b": {
- id: "openai/chat-completion/models/gpt-oss-20b",
- name: "GPT OSS 20B",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2025-12-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.045, output: 0.18 },
- limit: { context: 131072, output: 16384 },
- },
- "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",
- family: "gpt-oss",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-08-05",
- last_updated: "2026-02-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.09, output: 0.36 },
- limit: { context: 131072, output: 16384 },
- },
- "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",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-25",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct": {
- id: "qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct",
- name: "Qwen3 Coder 30B A3B Instruct",
- 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,
- cost: { input: 0.11458, output: 0.74812 },
- limit: { context: 262144, output: 65536 },
- },
- "qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507": {
- id: "qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507",
- name: "Qwen3 30B A3B Thinking 2507",
- family: "qwen",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.36, output: 1.3 },
- limit: { context: 262144, output: 131072 },
- },
- "qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507": {
- id: "qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507",
- name: "Qwen3 30B A3B Instruct 2507",
- 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,
- cost: { input: 0.3, output: 0.5 },
- limit: { context: 262144, output: 262144 },
- },
- "clarifai/main/models/mm-poly-8b": {
- id: "clarifai/main/models/mm-poly-8b",
- name: "MM Poly 8B",
- 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,
- cost: { input: 0.658, output: 1.11 },
- limit: { context: 32768, output: 4096 },
- },
- },
- },
- "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",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-10-27",
- last_updated: "2025-10-27",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 196608, output: 128000 },
- },
- "MiniMax-M2.5": {
- id: "MiniMax-M2.5",
- name: "MiniMax-M2.5",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-12",
- last_updated: "2026-02-12",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.03, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7": {
- id: "MiniMax-M2.7",
- name: "MiniMax-M2.7",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.7-highspeed": {
- id: "MiniMax-M2.7-highspeed",
- name: "MiniMax-M2.7-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-03-18",
- last_updated: "2026-03-18",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.1": {
- id: "MiniMax-M2.1",
- name: "MiniMax-M2.1",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2025-12-23",
- last_updated: "2025-12-23",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.3, output: 1.2 },
- limit: { context: 204800, output: 131072 },
- },
- "MiniMax-M2.5-highspeed": {
- id: "MiniMax-M2.5-highspeed",
- name: "MiniMax-M2.5-highspeed",
- family: "minimax",
- attachment: false,
- reasoning: true,
- tool_call: true,
- temperature: true,
- release_date: "2026-02-13",
- last_updated: "2026-02-13",
- modalities: { input: ["text"], output: ["text"] },
- open_weights: true,
- cost: { input: 0.6, output: 2.4, cache_read: 0.06, cache_write: 0.375 },
- limit: { context: 204800, output: 131072 },
- },
- },
- },
- "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-pro": {
- id: "mimo-v2-pro",
- name: "MiMo-V2-Pro",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 1000000, output: 128000 },
- },
- "mimo-v2-tts": {
- id: "mimo-v2-tts",
- name: "MiMo-V2-TTS",
- 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,
- cost: { input: 0, output: 0 },
- limit: { context: 8000, output: 16000 },
- },
- "mimo-v2-omni": {
- id: "mimo-v2-omni",
- name: "MiMo-V2-Omni",
- family: "mimo",
- attachment: true,
- reasoning: true,
- 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", "video", "pdf"], output: ["text"] },
- open_weights: true,
- cost: { input: 0, output: 0, cache_read: 0 },
- limit: { context: 256000, output: 128000 },
- },
- },
- },
- 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",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 5, output: 22, cache_read: 1.2, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-5": {
- id: "glm-5",
- name: "GLM-5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 1, output: 3.2, cache_read: 0.2, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-5.1": {
- id: "glm-5.1",
- name: "GLM-5.1",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 6, output: 24, cache_read: 1.3, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.7-flash": {
- id: "glm-4.7-flash",
- name: "GLM-4.7-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.5-flash": {
- id: "glm-4.5-flash",
- name: "GLM-4.5-Flash",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.6v": {
- id: "glm-4.6v",
- name: "GLM-4.6V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.3, output: 0.9 },
- limit: { context: 128000, output: 32768 },
- },
- "glm-4.6": {
- id: "glm-4.6",
- name: "GLM-4.6",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11, cache_write: 0 },
- limit: { context: 204800, output: 131072 },
- },
- "glm-4.5v": {
- id: "glm-4.5v",
- name: "GLM-4.5V",
- family: "glm",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 1.8 },
- limit: { context: 64000, output: 16384 },
- },
- "glm-4.5-air": {
- id: "glm-4.5-air",
- name: "GLM-4.5-Air",
- family: "glm-air",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.2, output: 1.1, cache_read: 0.03, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.5": {
- id: "glm-4.5",
- name: "GLM-4.5",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11, cache_write: 0 },
- limit: { context: 131072, output: 98304 },
- },
- "glm-4.7-flashx": {
- id: "glm-4.7-flashx",
- name: "GLM-4.7-FlashX",
- family: "glm-flash",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.07, output: 0.4, cache_read: 0.01, cache_write: 0 },
- limit: { context: 200000, output: 131072 },
- },
- "glm-4.7": {
- id: "glm-4.7",
- name: "GLM-4.7",
- family: "glm",
- attachment: false,
- reasoning: true,
- 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,
- cost: { input: 0.6, output: 2.2, cache_read: 0.11, cache_write: 0 },
- limit: { context: 204800, 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-lite-v1": {
- id: "nova-2-lite-v1",
- name: "Nova 2 Lite",
- family: "nova-lite",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, reasoning: 0 },
- limit: { context: 1000000, output: 64000 },
- },
- "nova-2-pro-v1": {
- id: "nova-2-pro-v1",
- name: "Nova 2 Pro",
- family: "nova-pro",
- attachment: true,
- reasoning: true,
- 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,
- cost: { input: 0, output: 0, reasoning: 0 },
- limit: { context: 1000000, output: 64000 },
- },
- },
- },
-}
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index e401a067c7..a26b254d5a 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -18,11 +18,12 @@ import { Flag } from "../flag/flag"
import { iife } from "@/util/iife"
import { Global } from "../global"
import path from "path"
-import { Filesystem } from "../util/filesystem"
import { Effect, Layer, Context } from "effect"
import { EffectLogger } from "@/effect/logger"
import { InstanceState } from "@/effect/instance-state"
import { makeRuntime } from "@/effect/run-service"
+import { AppFileSystem } from "@/filesystem"
+import { isRecord } from "@/util/record"
// Direct imports for bundled providers
import { createAmazonBedrock, type AmazonBedrockProviderSettings } from "@ai-sdk/amazon-bedrock"
@@ -46,6 +47,7 @@ import { createTogetherAI } from "@ai-sdk/togetherai"
import { createPerplexity } from "@ai-sdk/perplexity"
import { createVercel } from "@ai-sdk/vercel"
import { createVenice } from "venice-ai-sdk-provider"
+import { createAlibaba } from "@ai-sdk/alibaba"
import {
createGitLab,
VERSION as GITLAB_PROVIDER_VERSION,
@@ -145,6 +147,7 @@ export namespace Provider {
"@ai-sdk/togetherai": createTogetherAI,
"@ai-sdk/perplexity": createPerplexity,
"@ai-sdk/vercel": createVercel,
+ "@ai-sdk/alibaba": createAlibaba,
"gitlab-ai-provider": createGitLab,
"@ai-sdk/github-copilot": createGitHubCopilotOpenAICompatible,
"venice-ai-sdk-provider": createVenice,
@@ -1028,641 +1031,662 @@ export namespace Provider {
}
}
- const layer: Layer.Layer = Layer.effect(
- Service,
- Effect.gen(function* () {
- const config = yield* Config.Service
- const auth = yield* Auth.Service
- const plugin = yield* Plugin.Service
+ const layer: Layer.Layer =
+ Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const fs = yield* AppFileSystem.Service
+ const config = yield* Config.Service
+ const auth = yield* Auth.Service
+ const plugin = yield* Plugin.Service
- const state = yield* InstanceState.make(() =>
- Effect.gen(function* () {
- using _ = log.time("state")
- const cfg = yield* config.get()
- const modelsDev = yield* Effect.promise(() => ModelsDev.get())
- const database = mapValues(modelsDev, fromModelsDevProvider)
+ const state = yield* InstanceState.make(() =>
+ Effect.gen(function* () {
+ using _ = log.time("state")
+ const cfg = yield* config.get()
+ const modelsDev = yield* Effect.promise(() => ModelsDev.get())
+ const database = mapValues(modelsDev, fromModelsDevProvider)
- const providers: Record = {} as Record
- const languages = new Map()
- const modelLoaders: {
- [providerID: string]: CustomModelLoader
- } = {}
- const varsLoaders: {
- [providerID: string]: CustomVarsLoader
- } = {}
- const sdk = new Map()
- const discoveryLoaders: {
- [providerID: string]: CustomDiscoverModels
- } = {}
- const dep = {
- auth: (id: string) => auth.get(id).pipe(Effect.orDie),
- config: () => config.get(),
- }
-
- log.info("init")
-
- function mergeProvider(providerID: ProviderID, provider: Partial) {
- const existing = providers[providerID]
- if (existing) {
- // @ts-expect-error
- providers[providerID] = mergeDeep(existing, provider)
- return
- }
- const match = database[providerID]
- if (!match) return
- // @ts-expect-error
- providers[providerID] = mergeDeep(match, provider)
- }
-
- // load plugins first so config() hook runs before reading cfg.provider
- const plugins = yield* plugin.list()
-
- // now read config providers - includes any modifications from plugin config() hook
- const configProviders = Object.entries(cfg.provider ?? {})
- const disabled = new Set(cfg.disabled_providers ?? [])
- const enabled = cfg.enabled_providers ? new Set(cfg.enabled_providers) : null
-
- function isProviderAllowed(providerID: ProviderID): boolean {
- if (enabled && !enabled.has(providerID)) return false
- if (disabled.has(providerID)) return false
- return true
- }
-
- // extend database from config
- for (const [providerID, provider] of configProviders) {
- const existing = database[providerID]
- const parsed: Info = {
- id: ProviderID.make(providerID),
- name: provider.name ?? existing?.name ?? providerID,
- env: provider.env ?? existing?.env ?? [],
- options: mergeDeep(existing?.options ?? {}, provider.options ?? {}),
- source: "config",
- models: existing?.models ?? {},
+ const providers: Record = {} as Record
+ const languages = new Map()
+ const modelLoaders: {
+ [providerID: string]: CustomModelLoader
+ } = {}
+ const varsLoaders: {
+ [providerID: string]: CustomVarsLoader
+ } = {}
+ const sdk = new Map()
+ const discoveryLoaders: {
+ [providerID: string]: CustomDiscoverModels
+ } = {}
+ const dep = {
+ auth: (id: string) => auth.get(id).pipe(Effect.orDie),
+ config: () => config.get(),
}
- for (const [modelID, model] of Object.entries(provider.models ?? {})) {
- const existingModel = parsed.models[model.id ?? modelID]
- const name = iife(() => {
- if (model.name) return model.name
- if (model.id && model.id !== modelID) return modelID
- return existingModel?.name ?? modelID
- })
- const parsedModel: Model = {
- id: ModelID.make(modelID),
- api: {
- id: model.id ?? existingModel?.api.id ?? modelID,
- npm:
- model.provider?.npm ??
- provider.npm ??
- existingModel?.api.npm ??
- modelsDev[providerID]?.npm ??
- "@ai-sdk/openai-compatible",
- url: model.provider?.api ?? provider?.api ?? existingModel?.api.url ?? modelsDev[providerID]?.api,
- },
- status: model.status ?? existingModel?.status ?? "active",
- name,
- providerID: ProviderID.make(providerID),
- capabilities: {
- temperature: model.temperature ?? existingModel?.capabilities.temperature ?? false,
- reasoning: model.reasoning ?? existingModel?.capabilities.reasoning ?? false,
- attachment: model.attachment ?? existingModel?.capabilities.attachment ?? false,
- toolcall: model.tool_call ?? existingModel?.capabilities.toolcall ?? true,
- input: {
- text: model.modalities?.input?.includes("text") ?? existingModel?.capabilities.input.text ?? true,
- audio:
- model.modalities?.input?.includes("audio") ?? existingModel?.capabilities.input.audio ?? false,
- image:
- model.modalities?.input?.includes("image") ?? existingModel?.capabilities.input.image ?? false,
- video:
- model.modalities?.input?.includes("video") ?? existingModel?.capabilities.input.video ?? false,
- pdf: model.modalities?.input?.includes("pdf") ?? existingModel?.capabilities.input.pdf ?? false,
- },
- output: {
- text: model.modalities?.output?.includes("text") ?? existingModel?.capabilities.output.text ?? true,
- audio:
- model.modalities?.output?.includes("audio") ?? existingModel?.capabilities.output.audio ?? false,
- image:
- model.modalities?.output?.includes("image") ?? existingModel?.capabilities.output.image ?? false,
- video:
- model.modalities?.output?.includes("video") ?? existingModel?.capabilities.output.video ?? false,
- pdf: model.modalities?.output?.includes("pdf") ?? existingModel?.capabilities.output.pdf ?? false,
- },
- interleaved: model.interleaved ?? false,
- },
- cost: {
- input: model?.cost?.input ?? existingModel?.cost?.input ?? 0,
- output: model?.cost?.output ?? existingModel?.cost?.output ?? 0,
- cache: {
- read: model?.cost?.cache_read ?? existingModel?.cost?.cache.read ?? 0,
- write: model?.cost?.cache_write ?? existingModel?.cost?.cache.write ?? 0,
- },
- },
- options: mergeDeep(existingModel?.options ?? {}, model.options ?? {}),
- limit: {
- context: model.limit?.context ?? existingModel?.limit?.context ?? 0,
- input: model.limit?.input ?? existingModel?.limit?.input,
- output: model.limit?.output ?? existingModel?.limit?.output ?? 0,
- },
- headers: mergeDeep(existingModel?.headers ?? {}, model.headers ?? {}),
- family: model.family ?? existingModel?.family ?? "",
- release_date: model.release_date ?? existingModel?.release_date ?? "",
- variants: {},
+ log.info("init")
+
+ function mergeProvider(providerID: ProviderID, provider: Partial) {
+ const existing = providers[providerID]
+ if (existing) {
+ // @ts-expect-error
+ providers[providerID] = mergeDeep(existing, provider)
+ return
}
- const merged = mergeDeep(ProviderTransform.variants(parsedModel), model.variants ?? {})
- parsedModel.variants = mapValues(
- pickBy(merged, (v) => !v.disabled),
- (v) => omit(v, ["disabled"]),
- )
- parsed.models[modelID] = parsedModel
+ const match = database[providerID]
+ if (!match) return
+ // @ts-expect-error
+ providers[providerID] = mergeDeep(match, provider)
}
- database[providerID] = parsed
- }
- // load env
- const env = Env.all()
- for (const [id, provider] of Object.entries(database)) {
- const providerID = ProviderID.make(id)
- if (disabled.has(providerID)) continue
- const apiKey = provider.env.map((item) => env[item]).find(Boolean)
- if (!apiKey) continue
- mergeProvider(providerID, {
- source: "env",
- key: provider.env.length === 1 ? apiKey : undefined,
- })
- }
+ // load plugins first so config() hook runs before reading cfg.provider
+ const plugins = yield* plugin.list()
- // load apikeys
- const auths = yield* auth.all().pipe(Effect.orDie)
- for (const [id, provider] of Object.entries(auths)) {
- const providerID = ProviderID.make(id)
- if (disabled.has(providerID)) continue
- if (provider.type === "api") {
+ // now read config providers - includes any modifications from plugin config() hook
+ const configProviders = Object.entries(cfg.provider ?? {})
+ const disabled = new Set(cfg.disabled_providers ?? [])
+ const enabled = cfg.enabled_providers ? new Set(cfg.enabled_providers) : null
+
+ function isProviderAllowed(providerID: ProviderID): boolean {
+ if (enabled && !enabled.has(providerID)) return false
+ if (disabled.has(providerID)) return false
+ return true
+ }
+
+ // extend database from config
+ for (const [providerID, provider] of configProviders) {
+ const existing = database[providerID]
+ const parsed: Info = {
+ id: ProviderID.make(providerID),
+ name: provider.name ?? existing?.name ?? providerID,
+ env: provider.env ?? existing?.env ?? [],
+ options: mergeDeep(existing?.options ?? {}, provider.options ?? {}),
+ source: "config",
+ models: existing?.models ?? {},
+ }
+
+ for (const [modelID, model] of Object.entries(provider.models ?? {})) {
+ const existingModel = parsed.models[model.id ?? modelID]
+ const name = iife(() => {
+ if (model.name) return model.name
+ if (model.id && model.id !== modelID) return modelID
+ return existingModel?.name ?? modelID
+ })
+ const parsedModel: Model = {
+ id: ModelID.make(modelID),
+ api: {
+ id: model.id ?? existingModel?.api.id ?? modelID,
+ npm:
+ model.provider?.npm ??
+ provider.npm ??
+ existingModel?.api.npm ??
+ modelsDev[providerID]?.npm ??
+ "@ai-sdk/openai-compatible",
+ url: model.provider?.api ?? provider?.api ?? existingModel?.api.url ?? modelsDev[providerID]?.api,
+ },
+ status: model.status ?? existingModel?.status ?? "active",
+ name,
+ providerID: ProviderID.make(providerID),
+ capabilities: {
+ temperature: model.temperature ?? existingModel?.capabilities.temperature ?? false,
+ reasoning: model.reasoning ?? existingModel?.capabilities.reasoning ?? false,
+ attachment: model.attachment ?? existingModel?.capabilities.attachment ?? false,
+ toolcall: model.tool_call ?? existingModel?.capabilities.toolcall ?? true,
+ input: {
+ text: model.modalities?.input?.includes("text") ?? existingModel?.capabilities.input.text ?? true,
+ audio:
+ model.modalities?.input?.includes("audio") ?? existingModel?.capabilities.input.audio ?? false,
+ image:
+ model.modalities?.input?.includes("image") ?? existingModel?.capabilities.input.image ?? false,
+ video:
+ model.modalities?.input?.includes("video") ?? existingModel?.capabilities.input.video ?? false,
+ pdf: model.modalities?.input?.includes("pdf") ?? existingModel?.capabilities.input.pdf ?? false,
+ },
+ output: {
+ text:
+ model.modalities?.output?.includes("text") ?? existingModel?.capabilities.output.text ?? true,
+ audio:
+ model.modalities?.output?.includes("audio") ??
+ existingModel?.capabilities.output.audio ??
+ false,
+ image:
+ model.modalities?.output?.includes("image") ??
+ existingModel?.capabilities.output.image ??
+ false,
+ video:
+ model.modalities?.output?.includes("video") ??
+ existingModel?.capabilities.output.video ??
+ false,
+ pdf: model.modalities?.output?.includes("pdf") ?? existingModel?.capabilities.output.pdf ?? false,
+ },
+ interleaved: model.interleaved ?? false,
+ },
+ cost: {
+ input: model?.cost?.input ?? existingModel?.cost?.input ?? 0,
+ output: model?.cost?.output ?? existingModel?.cost?.output ?? 0,
+ cache: {
+ read: model?.cost?.cache_read ?? existingModel?.cost?.cache.read ?? 0,
+ write: model?.cost?.cache_write ?? existingModel?.cost?.cache.write ?? 0,
+ },
+ },
+ options: mergeDeep(existingModel?.options ?? {}, model.options ?? {}),
+ limit: {
+ context: model.limit?.context ?? existingModel?.limit?.context ?? 0,
+ input: model.limit?.input ?? existingModel?.limit?.input,
+ output: model.limit?.output ?? existingModel?.limit?.output ?? 0,
+ },
+ headers: mergeDeep(existingModel?.headers ?? {}, model.headers ?? {}),
+ family: model.family ?? existingModel?.family ?? "",
+ release_date: model.release_date ?? existingModel?.release_date ?? "",
+ variants: {},
+ }
+ const merged = mergeDeep(ProviderTransform.variants(parsedModel), model.variants ?? {})
+ parsedModel.variants = mapValues(
+ pickBy(merged, (v) => !v.disabled),
+ (v) => omit(v, ["disabled"]),
+ )
+ parsed.models[modelID] = parsedModel
+ }
+ database[providerID] = parsed
+ }
+
+ // load env
+ const env = Env.all()
+ for (const [id, provider] of Object.entries(database)) {
+ const providerID = ProviderID.make(id)
+ if (disabled.has(providerID)) continue
+ const apiKey = provider.env.map((item) => env[item]).find(Boolean)
+ if (!apiKey) continue
mergeProvider(providerID, {
- source: "api",
- key: provider.key,
+ source: "env",
+ key: provider.env.length === 1 ? apiKey : undefined,
})
}
- }
- // plugin auth loader - database now has entries for config providers
- for (const plugin of plugins) {
- if (!plugin.auth) continue
- const providerID = ProviderID.make(plugin.auth.provider)
- if (disabled.has(providerID)) continue
-
- const stored = yield* auth.get(providerID).pipe(Effect.orDie)
- if (!stored) continue
- if (!plugin.auth.loader) continue
-
- const options = yield* Effect.promise(() =>
- plugin.auth!.loader!(
- () =>
- Effect.runPromise(auth.get(providerID).pipe(Effect.orDie, Effect.provide(EffectLogger.layer))) as any,
- database[plugin.auth!.provider],
- ),
- )
- const opts = options ?? {}
- const patch: Partial = providers[providerID] ? { options: opts } : { source: "custom", options: opts }
- mergeProvider(providerID, patch)
- }
-
- for (const [id, fn] of Object.entries(custom(dep))) {
- const providerID = ProviderID.make(id)
- if (disabled.has(providerID)) continue
- const data = database[providerID]
- if (!data) {
- log.error("Provider does not exist in model list " + providerID)
- continue
+ // load apikeys
+ const auths = yield* auth.all().pipe(Effect.orDie)
+ for (const [id, provider] of Object.entries(auths)) {
+ const providerID = ProviderID.make(id)
+ if (disabled.has(providerID)) continue
+ if (provider.type === "api") {
+ mergeProvider(providerID, {
+ source: "api",
+ key: provider.key,
+ })
+ }
}
- const result = yield* fn(data)
- if (result && (result.autoload || providers[providerID])) {
- if (result.getModel) modelLoaders[providerID] = result.getModel
- if (result.vars) varsLoaders[providerID] = result.vars
- if (result.discoverModels) discoveryLoaders[providerID] = result.discoverModels
- const opts = result.options ?? {}
+
+ // plugin auth loader - database now has entries for config providers
+ for (const plugin of plugins) {
+ if (!plugin.auth) continue
+ const providerID = ProviderID.make(plugin.auth.provider)
+ if (disabled.has(providerID)) continue
+
+ const stored = yield* auth.get(providerID).pipe(Effect.orDie)
+ if (!stored) continue
+ if (!plugin.auth.loader) continue
+
+ const options = yield* Effect.promise(() =>
+ plugin.auth!.loader!(
+ () =>
+ Effect.runPromise(
+ auth.get(providerID).pipe(Effect.orDie, Effect.provide(EffectLogger.layer)),
+ ) as any,
+ database[plugin.auth!.provider],
+ ),
+ )
+ const opts = options ?? {}
const patch: Partial = providers[providerID]
? { options: opts }
: { source: "custom", options: opts }
mergeProvider(providerID, patch)
}
- }
- // load config - re-apply with updated data
- for (const [id, provider] of configProviders) {
- const providerID = ProviderID.make(id)
- const partial: Partial = { source: "config" }
- if (provider.env) partial.env = provider.env
- if (provider.name) partial.name = provider.name
- if (provider.options) partial.options = provider.options
- mergeProvider(providerID, partial)
- }
-
- const gitlab = ProviderID.make("gitlab")
- if (discoveryLoaders[gitlab] && providers[gitlab] && isProviderAllowed(gitlab)) {
- yield* Effect.promise(async () => {
- try {
- const discovered = await discoveryLoaders[gitlab]()
- for (const [modelID, model] of Object.entries(discovered)) {
- if (!providers[gitlab].models[modelID]) {
- providers[gitlab].models[modelID] = model
- }
- }
- } catch (e) {
- log.warn("state discovery error", { id: "gitlab", error: e })
+ for (const [id, fn] of Object.entries(custom(dep))) {
+ const providerID = ProviderID.make(id)
+ if (disabled.has(providerID)) continue
+ const data = database[providerID]
+ if (!data) {
+ log.error("Provider does not exist in model list " + providerID)
+ continue
+ }
+ const result = yield* fn(data)
+ if (result && (result.autoload || providers[providerID])) {
+ if (result.getModel) modelLoaders[providerID] = result.getModel
+ if (result.vars) varsLoaders[providerID] = result.vars
+ if (result.discoverModels) discoveryLoaders[providerID] = result.discoverModels
+ const opts = result.options ?? {}
+ const patch: Partial = providers[providerID]
+ ? { options: opts }
+ : { source: "custom", options: opts }
+ mergeProvider(providerID, patch)
}
- })
- }
-
- for (const hook of plugins) {
- const p = hook.provider
- const models = p?.models
- if (!p || !models) continue
-
- const providerID = ProviderID.make(p.id)
- if (disabled.has(providerID)) continue
-
- const provider = providers[providerID]
- if (!provider) continue
- const pluginAuth = yield* auth.get(providerID).pipe(Effect.orDie)
-
- provider.models = yield* Effect.promise(async () => {
- const next = await models(provider, { auth: pluginAuth })
- return Object.fromEntries(
- Object.entries(next).map(([id, model]) => [
- id,
- {
- ...model,
- id: ModelID.make(id),
- providerID,
- },
- ]),
- )
- })
- }
-
- for (const [id, provider] of Object.entries(providers)) {
- const providerID = ProviderID.make(id)
- if (!isProviderAllowed(providerID)) {
- delete providers[providerID]
- continue
}
- const configProvider = cfg.provider?.[providerID]
+ // load config - re-apply with updated data
+ for (const [id, provider] of configProviders) {
+ const providerID = ProviderID.make(id)
+ const partial: Partial = { source: "config" }
+ if (provider.env) partial.env = provider.env
+ if (provider.name) partial.name = provider.name
+ if (provider.options) partial.options = provider.options
+ mergeProvider(providerID, partial)
+ }
- for (const [modelID, model] of Object.entries(provider.models)) {
- model.api.id = model.api.id ?? model.id ?? modelID
- if (
- modelID === "gpt-5-chat-latest" ||
- (providerID === ProviderID.openrouter && modelID === "openai/gpt-5-chat")
- )
- delete provider.models[modelID]
- if (model.status === "alpha" && !Flag.OPENCODE_ENABLE_EXPERIMENTAL_MODELS) delete provider.models[modelID]
- if (model.status === "deprecated") delete provider.models[modelID]
- if (
- (configProvider?.blacklist && configProvider.blacklist.includes(modelID)) ||
- (configProvider?.whitelist && !configProvider.whitelist.includes(modelID))
- )
- delete provider.models[modelID]
+ const gitlab = ProviderID.make("gitlab")
+ if (discoveryLoaders[gitlab] && providers[gitlab] && isProviderAllowed(gitlab)) {
+ yield* Effect.promise(async () => {
+ try {
+ const discovered = await discoveryLoaders[gitlab]()
+ for (const [modelID, model] of Object.entries(discovered)) {
+ if (!providers[gitlab].models[modelID]) {
+ providers[gitlab].models[modelID] = model
+ }
+ }
+ } catch (e) {
+ log.warn("state discovery error", { id: "gitlab", error: e })
+ }
+ })
+ }
- model.variants = mapValues(ProviderTransform.variants(model), (v) => v)
+ for (const hook of plugins) {
+ const p = hook.provider
+ const models = p?.models
+ if (!p || !models) continue
- const configVariants = configProvider?.models?.[modelID]?.variants
- if (configVariants && model.variants) {
- const merged = mergeDeep(model.variants, configVariants)
- model.variants = mapValues(
- pickBy(merged, (v) => !v.disabled),
- (v) => omit(v, ["disabled"]),
+ const providerID = ProviderID.make(p.id)
+ if (disabled.has(providerID)) continue
+
+ const provider = providers[providerID]
+ if (!provider) continue
+ const pluginAuth = yield* auth.get(providerID).pipe(Effect.orDie)
+
+ provider.models = yield* Effect.promise(async () => {
+ const next = await models(provider, { auth: pluginAuth })
+ return Object.fromEntries(
+ Object.entries(next).map(([id, model]) => [
+ id,
+ {
+ ...model,
+ id: ModelID.make(id),
+ providerID,
+ },
+ ]),
)
+ })
+ }
+
+ for (const [id, provider] of Object.entries(providers)) {
+ const providerID = ProviderID.make(id)
+ if (!isProviderAllowed(providerID)) {
+ delete providers[providerID]
+ continue
}
- }
- if (Object.keys(provider.models).length === 0) {
- delete providers[providerID]
- continue
- }
+ const configProvider = cfg.provider?.[providerID]
- log.info("found", { providerID })
- }
+ for (const [modelID, model] of Object.entries(provider.models)) {
+ model.api.id = model.api.id ?? model.id ?? modelID
+ if (
+ modelID === "gpt-5-chat-latest" ||
+ (providerID === ProviderID.openrouter && modelID === "openai/gpt-5-chat")
+ )
+ delete provider.models[modelID]
+ if (model.status === "alpha" && !Flag.OPENCODE_ENABLE_EXPERIMENTAL_MODELS)
+ delete provider.models[modelID]
+ if (model.status === "deprecated") delete provider.models[modelID]
+ if (
+ (configProvider?.blacklist && configProvider.blacklist.includes(modelID)) ||
+ (configProvider?.whitelist && !configProvider.whitelist.includes(modelID))
+ )
+ delete provider.models[modelID]
- return {
- models: languages,
- providers,
- sdk,
- modelLoaders,
- varsLoaders,
- }
- }),
- )
+ model.variants = mapValues(ProviderTransform.variants(model), (v) => v)
- const list = Effect.fn("Provider.list")(() => InstanceState.use(state, (s) => s.providers))
-
- async function resolveSDK(model: Model, s: State) {
- try {
- using _ = log.time("getSDK", {
- providerID: model.providerID,
- })
- const provider = s.providers[model.providerID]
- const options = { ...provider.options }
-
- if (model.providerID === "google-vertex" && !model.api.npm.includes("@ai-sdk/openai-compatible")) {
- delete options.fetch
- }
-
- if (model.api.npm.includes("@ai-sdk/openai-compatible") && options["includeUsage"] !== false) {
- options["includeUsage"] = true
- }
-
- const baseURL = iife(() => {
- let url =
- typeof options["baseURL"] === "string" && options["baseURL"] !== "" ? options["baseURL"] : model.api.url
- if (!url) return
-
- const loader = s.varsLoaders[model.providerID]
- if (loader) {
- const vars = loader(options)
- for (const [key, value] of Object.entries(vars)) {
- const field = "${" + key + "}"
- url = url.replaceAll(field, value)
- }
- }
-
- url = url.replace(/\$\{([^}]+)\}/g, (item, key) => {
- const val = Env.get(String(key))
- return val ?? item
- })
- return url
- })
-
- if (baseURL !== undefined) options["baseURL"] = baseURL
- if (options["apiKey"] === undefined && provider.key) options["apiKey"] = provider.key
- if (model.headers)
- options["headers"] = {
- ...options["headers"],
- ...model.headers,
- }
-
- const key = Hash.fast(
- JSON.stringify({
- providerID: model.providerID,
- npm: model.api.npm,
- options,
- }),
- )
- const existing = s.sdk.get(key)
- if (existing) return existing
-
- const customFetch = options["fetch"]
- const chunkTimeout = options["chunkTimeout"]
- delete options["chunkTimeout"]
-
- options["fetch"] = async (input: any, init?: BunFetchRequestInit) => {
- const fetchFn = customFetch ?? fetch
- const opts = init ?? {}
- const chunkAbortCtl =
- typeof chunkTimeout === "number" && chunkTimeout > 0 ? new AbortController() : undefined
- const signals: AbortSignal[] = []
-
- if (opts.signal) signals.push(opts.signal)
- if (chunkAbortCtl) signals.push(chunkAbortCtl.signal)
- if (options["timeout"] !== undefined && options["timeout"] !== null && options["timeout"] !== false)
- signals.push(AbortSignal.timeout(options["timeout"]))
-
- const combined = signals.length === 0 ? null : signals.length === 1 ? signals[0] : AbortSignal.any(signals)
- if (combined) opts.signal = combined
-
- // Strip openai itemId metadata following what codex does
- if (model.api.npm === "@ai-sdk/openai" && opts.body && opts.method === "POST") {
- const body = JSON.parse(opts.body as string)
- const isAzure = model.providerID.includes("azure")
- const keepIds = isAzure && body.store === true
- if (!keepIds && Array.isArray(body.input)) {
- for (const item of body.input) {
- if ("id" in item) {
- delete item.id
- }
+ const configVariants = configProvider?.models?.[modelID]?.variants
+ if (configVariants && model.variants) {
+ const merged = mergeDeep(model.variants, configVariants)
+ model.variants = mapValues(
+ pickBy(merged, (v) => !v.disabled),
+ (v) => omit(v, ["disabled"]),
+ )
}
- opts.body = JSON.stringify(body)
}
+
+ if (Object.keys(provider.models).length === 0) {
+ delete providers[providerID]
+ continue
+ }
+
+ log.info("found", { providerID })
}
- const res = await fetchFn(input, {
- ...opts,
- // @ts-ignore see here: https://github.com/oven-sh/bun/issues/16682
- timeout: false,
- })
+ return {
+ models: languages,
+ providers,
+ sdk,
+ modelLoaders,
+ varsLoaders,
+ }
+ }),
+ )
- if (!chunkAbortCtl) return res
- return wrapSSE(res, chunkTimeout, chunkAbortCtl)
- }
+ const list = Effect.fn("Provider.list")(() => InstanceState.use(state, (s) => s.providers))
- const bundledFn = BUNDLED_PROVIDERS[model.api.npm]
- if (bundledFn) {
- log.info("using bundled provider", {
+ async function resolveSDK(model: Model, s: State) {
+ try {
+ using _ = log.time("getSDK", {
providerID: model.providerID,
- pkg: model.api.npm,
})
- const loaded = bundledFn({
+ const provider = s.providers[model.providerID]
+ const options = { ...provider.options }
+
+ if (model.providerID === "google-vertex" && !model.api.npm.includes("@ai-sdk/openai-compatible")) {
+ delete options.fetch
+ }
+
+ if (model.api.npm.includes("@ai-sdk/openai-compatible") && options["includeUsage"] !== false) {
+ options["includeUsage"] = true
+ }
+
+ const baseURL = iife(() => {
+ let url =
+ typeof options["baseURL"] === "string" && options["baseURL"] !== "" ? options["baseURL"] : model.api.url
+ if (!url) return
+
+ const loader = s.varsLoaders[model.providerID]
+ if (loader) {
+ const vars = loader(options)
+ for (const [key, value] of Object.entries(vars)) {
+ const field = "${" + key + "}"
+ url = url.replaceAll(field, value)
+ }
+ }
+
+ url = url.replace(/\$\{([^}]+)\}/g, (item, key) => {
+ const val = Env.get(String(key))
+ return val ?? item
+ })
+ return url
+ })
+
+ if (baseURL !== undefined) options["baseURL"] = baseURL
+ if (options["apiKey"] === undefined && provider.key) options["apiKey"] = provider.key
+ if (model.headers)
+ options["headers"] = {
+ ...options["headers"],
+ ...model.headers,
+ }
+
+ const key = Hash.fast(
+ JSON.stringify({
+ providerID: model.providerID,
+ npm: model.api.npm,
+ options,
+ }),
+ )
+ const existing = s.sdk.get(key)
+ if (existing) return existing
+
+ const customFetch = options["fetch"]
+ const chunkTimeout = options["chunkTimeout"]
+ delete options["chunkTimeout"]
+
+ options["fetch"] = async (input: any, init?: BunFetchRequestInit) => {
+ const fetchFn = customFetch ?? fetch
+ const opts = init ?? {}
+ const chunkAbortCtl =
+ typeof chunkTimeout === "number" && chunkTimeout > 0 ? new AbortController() : undefined
+ const signals: AbortSignal[] = []
+
+ if (opts.signal) signals.push(opts.signal)
+ if (chunkAbortCtl) signals.push(chunkAbortCtl.signal)
+ if (options["timeout"] !== undefined && options["timeout"] !== null && options["timeout"] !== false)
+ signals.push(AbortSignal.timeout(options["timeout"]))
+
+ const combined =
+ signals.length === 0 ? null : signals.length === 1 ? signals[0] : AbortSignal.any(signals)
+ if (combined) opts.signal = combined
+
+ // Strip openai itemId metadata following what codex does
+ if (model.api.npm === "@ai-sdk/openai" && opts.body && opts.method === "POST") {
+ const body = JSON.parse(opts.body as string)
+ const isAzure = model.providerID.includes("azure")
+ const keepIds = isAzure && body.store === true
+ if (!keepIds && Array.isArray(body.input)) {
+ for (const item of body.input) {
+ if ("id" in item) {
+ delete item.id
+ }
+ }
+ opts.body = JSON.stringify(body)
+ }
+ }
+
+ const res = await fetchFn(input, {
+ ...opts,
+ // @ts-ignore see here: https://github.com/oven-sh/bun/issues/16682
+ timeout: false,
+ })
+
+ if (!chunkAbortCtl) return res
+ return wrapSSE(res, chunkTimeout, chunkAbortCtl)
+ }
+
+ const bundledFn = BUNDLED_PROVIDERS[model.api.npm]
+ if (bundledFn) {
+ log.info("using bundled provider", {
+ providerID: model.providerID,
+ pkg: model.api.npm,
+ })
+ const loaded = bundledFn({
+ name: model.providerID,
+ ...options,
+ })
+ s.sdk.set(key, loaded)
+ return loaded as SDK
+ }
+
+ let installedPath: string
+ if (!model.api.npm.startsWith("file://")) {
+ const item = await Npm.add(model.api.npm)
+ if (!item.entrypoint) throw new Error(`Package ${model.api.npm} has no import entrypoint`)
+ installedPath = item.entrypoint
+ } else {
+ log.info("loading local provider", { pkg: model.api.npm })
+ installedPath = model.api.npm
+ }
+
+ const mod = await import(installedPath)
+
+ const fn = mod[Object.keys(mod).find((key) => key.startsWith("create"))!]
+ const loaded = fn({
name: model.providerID,
...options,
})
s.sdk.set(key, loaded)
return loaded as SDK
- }
-
- let installedPath: string
- if (!model.api.npm.startsWith("file://")) {
- const item = await Npm.add(model.api.npm)
- if (!item.entrypoint) throw new Error(`Package ${model.api.npm} has no import entrypoint`)
- installedPath = item.entrypoint
- } else {
- log.info("loading local provider", { pkg: model.api.npm })
- installedPath = model.api.npm
- }
-
- const mod = await import(installedPath)
-
- const fn = mod[Object.keys(mod).find((key) => key.startsWith("create"))!]
- const loaded = fn({
- name: model.providerID,
- ...options,
- })
- s.sdk.set(key, loaded)
- return loaded as SDK
- } catch (e) {
- throw new InitError({ providerID: model.providerID }, { cause: e })
- }
- }
-
- const getProvider = Effect.fn("Provider.getProvider")((providerID: ProviderID) =>
- InstanceState.use(state, (s) => s.providers[providerID]),
- )
-
- const getModel = Effect.fn("Provider.getModel")(function* (providerID: ProviderID, modelID: ModelID) {
- const s = yield* InstanceState.get(state)
- const provider = s.providers[providerID]
- if (!provider) {
- const available = Object.keys(s.providers)
- const matches = fuzzysort.go(providerID, available, { limit: 3, threshold: -10000 })
- throw new ModelNotFoundError({ providerID, modelID, suggestions: matches.map((m) => m.target) })
- }
-
- const info = provider.models[modelID]
- if (!info) {
- const available = Object.keys(provider.models)
- const matches = fuzzysort.go(modelID, available, { limit: 3, threshold: -10000 })
- throw new ModelNotFoundError({ providerID, modelID, suggestions: matches.map((m) => m.target) })
- }
- return info
- })
-
- const getLanguage = Effect.fn("Provider.getLanguage")(function* (model: Model) {
- const s = yield* InstanceState.get(state)
- const key = `${model.providerID}/${model.id}`
- if (s.models.has(key)) return s.models.get(key)!
-
- return yield* Effect.promise(async () => {
- const url = e2eURL()
- if (url) {
- const language = createOpenAICompatible({
- name: model.providerID,
- apiKey: "test-key",
- baseURL: url,
- }).chatModel(model.api.id)
- s.models.set(key, language)
- return language
- }
-
- const provider = s.providers[model.providerID]
- const sdk = await resolveSDK(model, s)
-
- try {
- const language = s.modelLoaders[model.providerID]
- ? await s.modelLoaders[model.providerID](sdk, model.api.id, {
- ...provider.options,
- ...model.options,
- })
- : sdk.languageModel(model.api.id)
- s.models.set(key, language)
- return language
} catch (e) {
- if (e instanceof NoSuchModelError)
- throw new ModelNotFoundError(
- {
- modelID: model.id,
- providerID: model.providerID,
- },
- { cause: e },
- )
- throw e
+ throw new InitError({ providerID: model.providerID }, { cause: e })
}
+ }
+
+ const getProvider = Effect.fn("Provider.getProvider")((providerID: ProviderID) =>
+ InstanceState.use(state, (s) => s.providers[providerID]),
+ )
+
+ const getModel = Effect.fn("Provider.getModel")(function* (providerID: ProviderID, modelID: ModelID) {
+ const s = yield* InstanceState.get(state)
+ const provider = s.providers[providerID]
+ if (!provider) {
+ const available = Object.keys(s.providers)
+ const matches = fuzzysort.go(providerID, available, { limit: 3, threshold: -10000 })
+ throw new ModelNotFoundError({ providerID, modelID, suggestions: matches.map((m) => m.target) })
+ }
+
+ const info = provider.models[modelID]
+ if (!info) {
+ const available = Object.keys(provider.models)
+ const matches = fuzzysort.go(modelID, available, { limit: 3, threshold: -10000 })
+ throw new ModelNotFoundError({ providerID, modelID, suggestions: matches.map((m) => m.target) })
+ }
+ return info
})
- })
- const closest = Effect.fn("Provider.closest")(function* (providerID: ProviderID, query: string[]) {
- const s = yield* InstanceState.get(state)
- const provider = s.providers[providerID]
- if (!provider) return undefined
- for (const item of query) {
- for (const modelID of Object.keys(provider.models)) {
- if (modelID.includes(item)) return { providerID, modelID }
+ const getLanguage = Effect.fn("Provider.getLanguage")(function* (model: Model) {
+ const s = yield* InstanceState.get(state)
+ const key = `${model.providerID}/${model.id}`
+ if (s.models.has(key)) return s.models.get(key)!
+
+ return yield* Effect.promise(async () => {
+ const url = e2eURL()
+ if (url) {
+ const language = createOpenAICompatible({
+ name: model.providerID,
+ apiKey: "test-key",
+ baseURL: url,
+ }).chatModel(model.api.id)
+ s.models.set(key, language)
+ return language
+ }
+
+ const provider = s.providers[model.providerID]
+ const sdk = await resolveSDK(model, s)
+
+ try {
+ const language = s.modelLoaders[model.providerID]
+ ? await s.modelLoaders[model.providerID](sdk, model.api.id, {
+ ...provider.options,
+ ...model.options,
+ })
+ : sdk.languageModel(model.api.id)
+ s.models.set(key, language)
+ return language
+ } catch (e) {
+ if (e instanceof NoSuchModelError)
+ throw new ModelNotFoundError(
+ {
+ modelID: model.id,
+ providerID: model.providerID,
+ },
+ { cause: e },
+ )
+ throw e
+ }
+ })
+ })
+
+ const closest = Effect.fn("Provider.closest")(function* (providerID: ProviderID, query: string[]) {
+ const s = yield* InstanceState.get(state)
+ const provider = s.providers[providerID]
+ if (!provider) return undefined
+ for (const item of query) {
+ for (const modelID of Object.keys(provider.models)) {
+ if (modelID.includes(item)) return { providerID, modelID }
+ }
}
- }
- return undefined
- })
+ return undefined
+ })
- const getSmallModel = Effect.fn("Provider.getSmallModel")(function* (providerID: ProviderID) {
- const cfg = yield* config.get()
+ const getSmallModel = Effect.fn("Provider.getSmallModel")(function* (providerID: ProviderID) {
+ const cfg = yield* config.get()
- if (cfg.small_model) {
- const parsed = parseModel(cfg.small_model)
- return yield* getModel(parsed.providerID, parsed.modelID)
- }
+ if (cfg.small_model) {
+ const parsed = parseModel(cfg.small_model)
+ return yield* getModel(parsed.providerID, parsed.modelID)
+ }
- const s = yield* InstanceState.get(state)
- const provider = s.providers[providerID]
- if (!provider) return undefined
+ const s = yield* InstanceState.get(state)
+ const provider = s.providers[providerID]
+ if (!provider) return undefined
- let priority = [
- "claude-haiku-4-5",
- "claude-haiku-4.5",
- "3-5-haiku",
- "3.5-haiku",
- "gemini-3-flash",
- "gemini-2.5-flash",
- "gpt-5-nano",
- ]
- if (providerID.startsWith("opencode")) {
- priority = ["gpt-5-nano"]
- }
- if (providerID.startsWith("github-copilot")) {
- priority = ["gpt-5-mini", "claude-haiku-4.5", ...priority]
- }
- for (const item of priority) {
- if (providerID === ProviderID.amazonBedrock) {
- const crossRegionPrefixes = ["global.", "us.", "eu."]
- const candidates = Object.keys(provider.models).filter((m) => m.includes(item))
+ let priority = [
+ "claude-haiku-4-5",
+ "claude-haiku-4.5",
+ "3-5-haiku",
+ "3.5-haiku",
+ "gemini-3-flash",
+ "gemini-2.5-flash",
+ "gpt-5-nano",
+ ]
+ if (providerID.startsWith("opencode")) {
+ priority = ["gpt-5-nano"]
+ }
+ if (providerID.startsWith("github-copilot")) {
+ priority = ["gpt-5-mini", "claude-haiku-4.5", ...priority]
+ }
+ for (const item of priority) {
+ if (providerID === ProviderID.amazonBedrock) {
+ const crossRegionPrefixes = ["global.", "us.", "eu."]
+ const candidates = Object.keys(provider.models).filter((m) => m.includes(item))
- const globalMatch = candidates.find((m) => m.startsWith("global."))
- if (globalMatch) return yield* getModel(providerID, ModelID.make(globalMatch))
+ const globalMatch = candidates.find((m) => m.startsWith("global."))
+ if (globalMatch) return yield* getModel(providerID, ModelID.make(globalMatch))
- const region = provider.options?.region
- if (region) {
- const regionPrefix = region.split("-")[0]
- if (regionPrefix === "us" || regionPrefix === "eu") {
- const regionalMatch = candidates.find((m) => m.startsWith(`${regionPrefix}.`))
- if (regionalMatch) return yield* getModel(providerID, ModelID.make(regionalMatch))
+ const region = provider.options?.region
+ if (region) {
+ const regionPrefix = region.split("-")[0]
+ if (regionPrefix === "us" || regionPrefix === "eu") {
+ const regionalMatch = candidates.find((m) => m.startsWith(`${regionPrefix}.`))
+ if (regionalMatch) return yield* getModel(providerID, ModelID.make(regionalMatch))
+ }
+ }
+
+ const unprefixed = candidates.find((m) => !crossRegionPrefixes.some((p) => m.startsWith(p)))
+ if (unprefixed) return yield* getModel(providerID, ModelID.make(unprefixed))
+ } else {
+ for (const model of Object.keys(provider.models)) {
+ if (model.includes(item)) return yield* getModel(providerID, ModelID.make(model))
}
}
-
- const unprefixed = candidates.find((m) => !crossRegionPrefixes.some((p) => m.startsWith(p)))
- if (unprefixed) return yield* getModel(providerID, ModelID.make(unprefixed))
- } else {
- for (const model of Object.keys(provider.models)) {
- if (model.includes(item)) return yield* getModel(providerID, ModelID.make(model))
- }
}
- }
- return undefined
- })
+ return undefined
+ })
- const defaultModel = Effect.fn("Provider.defaultModel")(function* () {
- const cfg = yield* config.get()
- if (cfg.model) return parseModel(cfg.model)
+ const defaultModel = Effect.fn("Provider.defaultModel")(function* () {
+ const cfg = yield* config.get()
+ if (cfg.model) return parseModel(cfg.model)
- const s = yield* InstanceState.get(state)
- const recent = yield* Effect.promise(() =>
- Filesystem.readJson<{
- recent?: { providerID: ProviderID; modelID: ModelID }[]
- }>(path.join(Global.Path.state, "model.json"))
- .then((x): { providerID: ProviderID; modelID: ModelID }[] => (Array.isArray(x.recent) ? x.recent : []))
- .catch((): { providerID: ProviderID; modelID: ModelID }[] => []),
- )
- for (const entry of recent) {
- const provider = s.providers[entry.providerID]
- if (!provider) continue
- if (!provider.models[entry.modelID]) continue
- return { providerID: entry.providerID, modelID: entry.modelID }
- }
+ const s = yield* InstanceState.get(state)
+ const recent = yield* fs.readJson(path.join(Global.Path.state, "model.json")).pipe(
+ Effect.map((x): { providerID: ProviderID; modelID: ModelID }[] => {
+ if (!isRecord(x) || !Array.isArray(x.recent)) return []
+ return x.recent.flatMap((item) => {
+ if (!isRecord(item)) return []
+ if (typeof item.providerID !== "string") return []
+ if (typeof item.modelID !== "string") return []
+ return [{ providerID: ProviderID.make(item.providerID), modelID: ModelID.make(item.modelID) }]
+ })
+ }),
+ Effect.catch(() => Effect.succeed([] as { providerID: ProviderID; modelID: ModelID }[])),
+ )
+ for (const entry of recent) {
+ const provider = s.providers[entry.providerID]
+ if (!provider) continue
+ if (!provider.models[entry.modelID]) continue
+ return { providerID: entry.providerID, modelID: entry.modelID }
+ }
- const provider = Object.values(s.providers).find(
- (p) => !cfg.provider || Object.keys(cfg.provider).includes(p.id),
- )
- if (!provider) throw new Error("no providers found")
- const [model] = sort(Object.values(provider.models))
- if (!model) throw new Error("no models found")
- return {
- providerID: provider.id,
- modelID: model.id,
- }
- })
+ const provider = Object.values(s.providers).find(
+ (p) => !cfg.provider || Object.keys(cfg.provider).includes(p.id),
+ )
+ if (!provider) throw new Error("no providers found")
+ const [model] = sort(Object.values(provider.models))
+ if (!model) throw new Error("no models found")
+ return {
+ providerID: provider.id,
+ modelID: model.id,
+ }
+ })
- return Service.of({ list, getProvider, getModel, getLanguage, closest, getSmallModel, defaultModel })
- }),
- )
+ return Service.of({ list, getProvider, getModel, getLanguage, closest, getSmallModel, defaultModel })
+ }),
+ )
export const defaultLayer = Layer.suspend(() =>
layer.pipe(
+ Layer.provide(AppFileSystem.defaultLayer),
Layer.provide(Config.defaultLayer),
Layer.provide(Auth.defaultLayer),
Layer.provide(Plugin.defaultLayer),
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index dea8cf936a..8cdc48e243 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -209,6 +209,9 @@ export namespace ProviderTransform {
copilot: {
copilot_cache_control: { type: "ephemeral" },
},
+ alibaba: {
+ cacheControl: { type: "ephemeral" },
+ },
}
for (const msg of unique([...system, ...final])) {
@@ -285,7 +288,8 @@ export namespace ProviderTransform {
model.api.id.includes("claude") ||
model.id.includes("anthropic") ||
model.id.includes("claude") ||
- model.api.npm === "@ai-sdk/anthropic") &&
+ model.api.npm === "@ai-sdk/anthropic" ||
+ model.api.npm === "@ai-sdk/alibaba") &&
model.api.npm !== "@ai-sdk/gateway"
) {
msgs = applyCaching(msgs, model)
diff --git a/packages/opencode/src/pty/index.ts b/packages/opencode/src/pty/index.ts
index a563bb954b..1891721851 100644
--- a/packages/opencode/src/pty/index.ts
+++ b/packages/opencode/src/pty/index.ts
@@ -1,7 +1,6 @@
import { BusEvent } from "@/bus/bus-event"
import { Bus } from "@/bus"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { Instance } from "@/project/instance"
import type { Proc } from "#pty"
import z from "zod"
@@ -361,34 +360,4 @@ export namespace Pty {
)
export const defaultLayer = layer.pipe(Layer.provide(Bus.layer), Layer.provide(Plugin.defaultLayer))
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function list() {
- return runPromise((svc) => svc.list())
- }
-
- export async function get(id: PtyID) {
- return runPromise((svc) => svc.get(id))
- }
-
- export async function write(id: PtyID, data: string) {
- return runPromise((svc) => svc.write(id, data))
- }
-
- export async function connect(id: PtyID, ws: Socket, cursor?: number) {
- return runPromise((svc) => svc.connect(id, ws, cursor))
- }
-
- export async function create(input: CreateInput) {
- return runPromise((svc) => svc.create(input))
- }
-
- export async function update(id: PtyID, input: UpdateInput) {
- return runPromise((svc) => svc.update(id, input))
- }
-
- export async function remove(id: PtyID) {
- return runPromise((svc) => svc.remove(id))
- }
}
diff --git a/packages/opencode/src/question/index.ts b/packages/opencode/src/question/index.ts
index ca83bb7b2e..178bc7943c 100644
--- a/packages/opencode/src/question/index.ts
+++ b/packages/opencode/src/question/index.ts
@@ -2,7 +2,6 @@ import { Deferred, Effect, Layer, Schema, Context } from "effect"
import { Bus } from "@/bus"
import { BusEvent } from "@/bus/bus-event"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { SessionID, MessageID } from "@/session/schema"
import { Log } from "@/util/log"
import z from "zod"
@@ -199,26 +198,4 @@ export namespace Question {
)
export const defaultLayer = layer.pipe(Layer.provide(Bus.layer))
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function ask(input: {
- sessionID: SessionID
- questions: Info[]
- tool?: { messageID: MessageID; callID: string }
- }): Promise {
- return runPromise((s) => s.ask(input))
- }
-
- export async function reply(input: { requestID: QuestionID; answers: Answer[] }) {
- return runPromise((s) => s.reply(input))
- }
-
- export async function reject(requestID: QuestionID) {
- return runPromise((s) => s.reject(requestID))
- }
-
- export async function list() {
- return runPromise((s) => s.list())
- }
}
diff --git a/packages/opencode/src/server/instance/experimental.ts b/packages/opencode/src/server/instance/experimental.ts
index 464617c69b..978aa03a99 100644
--- a/packages/opencode/src/server/instance/experimental.ts
+++ b/packages/opencode/src/server/instance/experimental.ts
@@ -162,7 +162,13 @@ export const ExperimentalRoutes = lazy(() =>
},
}),
async (c) => {
- return c.json(await ToolRegistry.ids())
+ const ids = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const registry = yield* ToolRegistry.Service
+ return yield* registry.ids()
+ }),
+ )
+ return c.json(ids)
},
)
.get(
@@ -205,11 +211,17 @@ export const ExperimentalRoutes = lazy(() =>
),
async (c) => {
const { provider, model } = c.req.valid("query")
- const tools = await ToolRegistry.tools({
- providerID: ProviderID.make(provider),
- modelID: ModelID.make(model),
- agent: await Agent.get(await Agent.defaultAgent()),
- })
+ const tools = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const agents = yield* Agent.Service
+ const registry = yield* ToolRegistry.Service
+ return yield* registry.tools({
+ providerID: ProviderID.make(provider),
+ modelID: ModelID.make(model),
+ agent: yield* agents.get(yield* agents.defaultAgent()),
+ })
+ }),
+ )
return c.json(
tools.map((t) => ({
id: t.id,
diff --git a/packages/opencode/src/server/instance/file.ts b/packages/opencode/src/server/instance/file.ts
index 60789ef4b7..713513b38d 100644
--- a/packages/opencode/src/server/instance/file.ts
+++ b/packages/opencode/src/server/instance/file.ts
@@ -1,6 +1,7 @@
import { Hono } from "hono"
import { describeRoute, validator, resolver } from "hono-openapi"
import z from "zod"
+import { AppRuntime } from "../../effect/app-runtime"
import { File } from "../../file"
import { Ripgrep } from "../../file/ripgrep"
import { LSP } from "../../lsp"
@@ -34,12 +35,10 @@ export const FileRoutes = lazy(() =>
),
async (c) => {
const pattern = c.req.valid("query").pattern
- const result = await Ripgrep.search({
- cwd: Instance.directory,
- pattern,
- limit: 10,
- })
- return c.json(result)
+ const result = await AppRuntime.runPromise(
+ Ripgrep.Service.use((svc) => svc.search({ cwd: Instance.directory, pattern, limit: 10 })),
+ )
+ return c.json(result.items)
},
)
.get(
diff --git a/packages/opencode/src/server/instance/index.ts b/packages/opencode/src/server/instance/index.ts
index 2acc424e4e..6009130a2f 100644
--- a/packages/opencode/src/server/instance/index.ts
+++ b/packages/opencode/src/server/instance/index.ts
@@ -1,6 +1,7 @@
import { describeRoute, resolver, validator } from "hono-openapi"
import { Hono } from "hono"
import type { UpgradeWebSocket } from "hono/ws"
+import { Effect } from "effect"
import z from "zod"
import { Format } from "../../format"
import { TuiRoutes } from "./tui"
@@ -119,11 +120,17 @@ export const InstanceRoutes = (upgrade: UpgradeWebSocket): Hono =>
},
}),
async (c) => {
- const [branch, default_branch] = await Promise.all([Vcs.branch(), Vcs.defaultBranch()])
- return c.json({
- branch,
- default_branch,
- })
+ return c.json(
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ const [branch, default_branch] = yield* Effect.all([vcs.branch(), vcs.defaultBranch()], {
+ concurrency: 2,
+ })
+ return { branch, default_branch }
+ }),
+ ),
+ )
},
)
.get(
@@ -150,7 +157,14 @@ export const InstanceRoutes = (upgrade: UpgradeWebSocket): Hono =>
}),
),
async (c) => {
- return c.json(await Vcs.diff(c.req.valid("query").mode))
+ return c.json(
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.diff(c.req.valid("query").mode)
+ }),
+ ),
+ )
},
)
.get(
@@ -215,7 +229,12 @@ export const InstanceRoutes = (upgrade: UpgradeWebSocket): Hono =>
},
}),
async (c) => {
- const skills = await Skill.all()
+ const skills = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const skill = yield* Skill.Service
+ return yield* skill.all()
+ }),
+ )
return c.json(skills)
},
)
diff --git a/packages/opencode/src/server/instance/middleware.ts b/packages/opencode/src/server/instance/middleware.ts
index 1a5011477e..19bd26535a 100644
--- a/packages/opencode/src/server/instance/middleware.ts
+++ b/packages/opencode/src/server/instance/middleware.ts
@@ -10,6 +10,7 @@ import { InstanceBootstrap } from "@/project/bootstrap"
import { Session } from "@/session"
import { SessionID } from "@/session/schema"
import { WorkspaceContext } from "@/control-plane/workspace-context"
+import { AppRuntime } from "@/effect/app-runtime"
type Rule = { method?: string; path: string; exact?: boolean; action: "local" | "forward" }
@@ -66,7 +67,7 @@ export function WorkspaceRouterMiddleware(upgrade: UpgradeWebSocket): Middleware
if (!workspaceID) {
return Instance.provide({
directory,
- init: InstanceBootstrap,
+ init: () => AppRuntime.runPromise(InstanceBootstrap),
async fn() {
return next()
},
@@ -103,7 +104,7 @@ export function WorkspaceRouterMiddleware(upgrade: UpgradeWebSocket): Middleware
fn: () =>
Instance.provide({
directory: target.directory,
- init: InstanceBootstrap,
+ init: () => AppRuntime.runPromise(InstanceBootstrap),
async fn() {
return next()
},
diff --git a/packages/opencode/src/server/instance/project.ts b/packages/opencode/src/server/instance/project.ts
index e5dd5782d6..a249539541 100644
--- a/packages/opencode/src/server/instance/project.ts
+++ b/packages/opencode/src/server/instance/project.ts
@@ -8,6 +8,7 @@ import { ProjectID } from "../../project/schema"
import { errors } from "../error"
import { lazy } from "../../util/lazy"
import { InstanceBootstrap } from "../../project/bootstrap"
+import { AppRuntime } from "@/effect/app-runtime"
export const ProjectRoutes = lazy(() =>
new Hono()
@@ -83,7 +84,7 @@ export const ProjectRoutes = lazy(() =>
directory: dir,
worktree: dir,
project: next,
- init: InstanceBootstrap,
+ init: () => AppRuntime.runPromise(InstanceBootstrap),
})
return c.json(next)
},
diff --git a/packages/opencode/src/server/instance/pty.ts b/packages/opencode/src/server/instance/pty.ts
index c333f4dd69..576cbe5de6 100644
--- a/packages/opencode/src/server/instance/pty.ts
+++ b/packages/opencode/src/server/instance/pty.ts
@@ -1,7 +1,9 @@
import { Hono, type MiddlewareHandler } from "hono"
import { describeRoute, validator, resolver } from "hono-openapi"
import type { UpgradeWebSocket } from "hono/ws"
+import { Effect } from "effect"
import z from "zod"
+import { AppRuntime } from "@/effect/app-runtime"
import { Pty } from "@/pty"
import { PtyID } from "@/pty/schema"
import { NotFoundError } from "../../storage/db"
@@ -27,7 +29,14 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
},
}),
async (c) => {
- return c.json(await Pty.list())
+ return c.json(
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ return yield* pty.list()
+ }),
+ ),
+ )
},
)
.post(
@@ -50,7 +59,12 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
}),
validator("json", Pty.CreateInput),
async (c) => {
- const info = await Pty.create(c.req.valid("json"))
+ const info = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ return yield* pty.create(c.req.valid("json"))
+ }),
+ )
return c.json(info)
},
)
@@ -74,7 +88,12 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
}),
validator("param", z.object({ ptyID: PtyID.zod })),
async (c) => {
- const info = await Pty.get(c.req.valid("param").ptyID)
+ const info = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ return yield* pty.get(c.req.valid("param").ptyID)
+ }),
+ )
if (!info) {
throw new NotFoundError({ message: "Session not found" })
}
@@ -102,7 +121,12 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
validator("param", z.object({ ptyID: PtyID.zod })),
validator("json", Pty.UpdateInput),
async (c) => {
- const info = await Pty.update(c.req.valid("param").ptyID, c.req.valid("json"))
+ const info = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ return yield* pty.update(c.req.valid("param").ptyID, c.req.valid("json"))
+ }),
+ )
return c.json(info)
},
)
@@ -126,7 +150,12 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
}),
validator("param", z.object({ ptyID: PtyID.zod })),
async (c) => {
- await Pty.remove(c.req.valid("param").ptyID)
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ yield* pty.remove(c.req.valid("param").ptyID)
+ }),
+ )
return c.json(true)
},
)
@@ -150,6 +179,11 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
}),
validator("param", z.object({ ptyID: PtyID.zod })),
upgradeWebSocket(async (c) => {
+ type Handler = {
+ onMessage: (message: string | ArrayBuffer) => void
+ onClose: () => void
+ }
+
const id = PtyID.zod.parse(c.req.param("ptyID"))
const cursor = (() => {
const value = c.req.query("cursor")
@@ -158,8 +192,17 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
if (!Number.isSafeInteger(parsed) || parsed < -1) return
return parsed
})()
- let handler: Awaited>
- if (!(await Pty.get(id))) throw new Error("Session not found")
+ let handler: Handler | undefined
+ if (
+ !(await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ return yield* pty.get(id)
+ }),
+ ))
+ ) {
+ throw new Error("Session not found")
+ }
type Socket = {
readyState: number
@@ -185,7 +228,12 @@ export function PtyRoutes(upgradeWebSocket: UpgradeWebSocket) {
ws.close()
return
}
- handler = await Pty.connect(id, socket, cursor)
+ handler = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ return yield* pty.connect(id, socket, cursor)
+ }),
+ )
ready = true
for (const msg of pending) handler?.onMessage(msg)
pending.length = 0
diff --git a/packages/opencode/src/server/instance/question.ts b/packages/opencode/src/server/instance/question.ts
index 3fff895fa6..501ae21816 100644
--- a/packages/opencode/src/server/instance/question.ts
+++ b/packages/opencode/src/server/instance/question.ts
@@ -3,6 +3,7 @@ import { describeRoute, validator } from "hono-openapi"
import { resolver } from "hono-openapi"
import { QuestionID } from "@/question/schema"
import { Question } from "../../question"
+import { AppRuntime } from "@/effect/app-runtime"
import z from "zod"
import { errors } from "../error"
import { lazy } from "../../util/lazy"
@@ -27,7 +28,7 @@ export const QuestionRoutes = lazy(() =>
},
}),
async (c) => {
- const questions = await Question.list()
+ const questions = await AppRuntime.runPromise(Question.Service.use((svc) => svc.list()))
return c.json(questions)
},
)
@@ -59,10 +60,14 @@ export const QuestionRoutes = lazy(() =>
async (c) => {
const params = c.req.valid("param")
const json = c.req.valid("json")
- await Question.reply({
- requestID: params.requestID,
- answers: json.answers,
- })
+ await AppRuntime.runPromise(
+ Question.Service.use((svc) =>
+ svc.reply({
+ requestID: params.requestID,
+ answers: json.answers,
+ }),
+ ),
+ )
return c.json(true)
},
)
@@ -92,7 +97,7 @@ export const QuestionRoutes = lazy(() =>
),
async (c) => {
const params = c.req.valid("param")
- await Question.reject(params.requestID)
+ await AppRuntime.runPromise(Question.Service.use((svc) => svc.reject(params.requestID)))
return c.json(true)
},
),
diff --git a/packages/opencode/src/server/instance/session.ts b/packages/opencode/src/server/instance/session.ts
index 016fb3ee1a..b28db3a894 100644
--- a/packages/opencode/src/server/instance/session.ts
+++ b/packages/opencode/src/server/instance/session.ts
@@ -13,6 +13,7 @@ import { SessionShare } from "@/share/session"
import { SessionStatus } from "@/session/status"
import { SessionSummary } from "@/session/summary"
import { Todo } from "../../session/todo"
+import { Effect } from "effect"
import { AppRuntime } from "../../effect/app-runtime"
import { Agent } from "../../agent/agent"
import { Snapshot } from "@/snapshot"
@@ -724,11 +725,17 @@ export const SessionRoutes = lazy(() =>
),
async (c) => {
const params = c.req.valid("param")
- await SessionRunState.assertNotBusy(params.sessionID)
- await Session.removeMessage({
- sessionID: params.sessionID,
- messageID: params.messageID,
- })
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const state = yield* SessionRunState.Service
+ const session = yield* Session.Service
+ yield* state.assertNotBusy(params.sessionID)
+ yield* session.removeMessage({
+ sessionID: params.sessionID,
+ messageID: params.messageID,
+ })
+ }),
+ )
return c.json(true)
},
)
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index 3d49035881..b43b724a00 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -4,7 +4,7 @@ import { BusEvent } from "@/bus/bus-event"
import { Bus } from "@/bus"
import { Decimal } from "decimal.js"
import z from "zod"
-import { type ProviderMetadata } from "ai"
+import { type ProviderMetadata, type LanguageModelUsage } from "ai"
import { Flag } from "../flag/flag"
import { Installation } from "../installation"
@@ -28,7 +28,6 @@ import { SessionID, MessageID, PartID } from "./schema"
import type { Provider } from "@/provider/provider"
import { Permission } from "@/permission"
import { Global } from "@/global"
-import type { LanguageModelV2Usage } from "@ai-sdk/provider"
import { Effect, Layer, Option, Context } from "effect"
import { makeRuntime } from "@/effect/run-service"
@@ -240,7 +239,7 @@ export namespace Session {
export const getUsage = (input: {
model: Provider.Model
- usage: LanguageModelV2Usage
+ usage: LanguageModelUsage
metadata?: ProviderMetadata
}) => {
const safe = (value: number) => {
@@ -249,11 +248,14 @@ export namespace Session {
}
const inputTokens = safe(input.usage.inputTokens ?? 0)
const outputTokens = safe(input.usage.outputTokens ?? 0)
- const reasoningTokens = safe(input.usage.reasoningTokens ?? 0)
+ const reasoningTokens = safe(input.usage.outputTokenDetails?.reasoningTokens ?? input.usage.reasoningTokens ?? 0)
- const cacheReadInputTokens = safe(input.usage.cachedInputTokens ?? 0)
+ const cacheReadInputTokens = safe(
+ input.usage.inputTokenDetails?.cacheReadTokens ?? input.usage.cachedInputTokens ?? 0,
+ )
const cacheWriteInputTokens = safe(
- (input.metadata?.["anthropic"]?.["cacheCreationInputTokens"] ??
+ (input.usage.inputTokenDetails?.cacheWriteTokens ??
+ input.metadata?.["anthropic"]?.["cacheCreationInputTokens"] ??
// google-vertex-anthropic returns metadata under "vertex" key
// (AnthropicMessagesLanguageModel custom provider key from 'vertex.anthropic.messages')
input.metadata?.["vertex"]?.["cacheCreationInputTokens"] ??
@@ -274,7 +276,7 @@ export namespace Session {
const tokens = {
total,
input: adjustedInputTokens,
- output: outputTokens - reasoningTokens,
+ output: safe(outputTokens - reasoningTokens),
reasoning: reasoningTokens,
cache: {
write: cacheWriteInputTokens,
diff --git a/packages/opencode/src/session/instruction.ts b/packages/opencode/src/session/instruction.ts
index 9b01c9524f..04f2610dfe 100644
--- a/packages/opencode/src/session/instruction.ts
+++ b/packages/opencode/src/session/instruction.ts
@@ -4,7 +4,6 @@ import { Effect, Layer, Context } from "effect"
import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http"
import { Config } from "@/config/config"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { Flag } from "@/flag/flag"
import { AppFileSystem } from "@/filesystem"
import { withTransientReadRetry } from "@/util/effect-http-client"
@@ -238,21 +237,7 @@ export namespace Instruction {
Layer.provide(FetchHttpClient.layer),
)
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export function clear(messageID: MessageID) {
- return runPromise((svc) => svc.clear(messageID))
- }
-
- export async function systemPaths() {
- return runPromise((svc) => svc.systemPaths())
- }
-
export function loaded(messages: MessageV2.WithParts[]) {
return extract(messages)
}
-
- export async function resolve(messages: MessageV2.WithParts[], filepath: string, messageID: MessageID) {
- return runPromise((svc) => svc.resolve(messages, filepath, messageID))
- }
}
diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts
index aa42e1c1dc..4c18d1f7e0 100644
--- a/packages/opencode/src/session/message-v2.ts
+++ b/packages/opencode/src/session/message-v2.ts
@@ -25,6 +25,8 @@ interface FetchDecompressionError extends Error {
}
export namespace MessageV2 {
+ export const SYNTHETIC_ATTACHMENT_PROMPT = "Attached image(s) from tool result:"
+
export function isMedia(mime: string) {
return mime.startsWith("image/") || mime === "application/pdf"
}
@@ -808,7 +810,7 @@ export namespace MessageV2 {
parts: [
{
type: "text" as const,
- text: "Attached image(s) from tool result:",
+ text: SYNTHETIC_ATTACHMENT_PROMPT,
},
...media.map((attachment) => ({
type: "file" as const,
diff --git a/packages/opencode/src/session/run-state.ts b/packages/opencode/src/session/run-state.ts
index 2c570f5208..f67c726ec7 100644
--- a/packages/opencode/src/session/run-state.ts
+++ b/packages/opencode/src/session/run-state.ts
@@ -1,6 +1,5 @@
import { InstanceState } from "@/effect/instance-state"
import { Runner } from "@/effect/runner"
-import { makeRuntime } from "@/effect/run-service"
import { Effect, Layer, Scope, Context } from "effect"
import { Session } from "."
import { MessageV2 } from "./message-v2"
@@ -106,9 +105,4 @@ export namespace SessionRunState {
)
export const defaultLayer = layer.pipe(Layer.provide(SessionStatus.defaultLayer))
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function assertNotBusy(sessionID: SessionID) {
- return runPromise((svc) => svc.assertNotBusy(sessionID))
- }
}
diff --git a/packages/opencode/src/skill/index.ts b/packages/opencode/src/skill/index.ts
index be74c0b342..6c4f290a08 100644
--- a/packages/opencode/src/skill/index.ts
+++ b/packages/opencode/src/skill/index.ts
@@ -7,7 +7,6 @@ import { NamedError } from "@opencode-ai/util/error"
import type { Agent } from "@/agent/agent"
import { Bus } from "@/bus"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { Flag } from "@/flag/flag"
import { Global } from "@/global"
import { Permission } from "@/permission"
@@ -262,22 +261,4 @@ export namespace Skill {
.map((skill) => `- **${skill.name}**: ${skill.description}`),
].join("\n")
}
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function get(name: string) {
- return runPromise((skill) => skill.get(name))
- }
-
- export async function all() {
- return runPromise((skill) => skill.all())
- }
-
- export async function dirs() {
- return runPromise((skill) => skill.dirs())
- }
-
- export async function available(agent?: Agent.Info) {
- return runPromise((skill) => skill.available(agent))
- }
}
diff --git a/packages/opencode/src/snapshot/index.ts b/packages/opencode/src/snapshot/index.ts
index 834cdde252..995e8d3fda 100644
--- a/packages/opencode/src/snapshot/index.ts
+++ b/packages/opencode/src/snapshot/index.ts
@@ -177,8 +177,39 @@ export namespace Snapshot {
const all = Array.from(new Set([...tracked, ...untracked]))
if (!all.length) return
+ // Filter out files that are now gitignored even if previously tracked
+ // Files may have been tracked before being gitignored, so we need to check
+ // against the source project's current gitignore rules
+ // Use --no-index to check purely against patterns (ignoring whether file is tracked)
+ const checkArgs = [
+ ...quote,
+ "--git-dir",
+ path.join(state.worktree, ".git"),
+ "--work-tree",
+ state.worktree,
+ "check-ignore",
+ "--no-index",
+ "--",
+ ...all,
+ ]
+ const check = yield* git(checkArgs, { cwd: state.directory })
+ const ignored =
+ check.code === 0 ? new Set(check.text.trim().split("\n").filter(Boolean)) : new Set()
+ const filtered = all.filter((item) => !ignored.has(item))
+
+ // Remove newly-ignored files from snapshot index to prevent re-adding
+ if (ignored.size > 0) {
+ const ignoredFiles = Array.from(ignored)
+ log.info("removing gitignored files from snapshot", { count: ignoredFiles.length })
+ yield* git([...cfg, ...args(["rm", "--cached", "-f", "--", ...ignoredFiles])], {
+ cwd: state.directory,
+ })
+ }
+
+ if (!filtered.length) return
+
const large = (yield* Effect.all(
- all.map((item) =>
+ filtered.map((item) =>
fs
.stat(path.join(state.directory, item))
.pipe(Effect.catch(() => Effect.void))
@@ -259,14 +290,39 @@ export namespace Snapshot {
log.warn("failed to get diff", { hash, exitCode: result.code })
return { hash, files: [] }
}
+ const files = result.text
+ .trim()
+ .split("\n")
+ .map((x) => x.trim())
+ .filter(Boolean)
+
+ // Filter out files that are now gitignored
+ if (files.length > 0) {
+ const checkArgs = [
+ ...quote,
+ "--git-dir",
+ path.join(state.worktree, ".git"),
+ "--work-tree",
+ state.worktree,
+ "check-ignore",
+ "--no-index",
+ "--",
+ ...files,
+ ]
+ const check = yield* git(checkArgs, { cwd: state.directory })
+ if (check.code === 0) {
+ const ignored = new Set(check.text.trim().split("\n").filter(Boolean))
+ const filtered = files.filter((item) => !ignored.has(item))
+ return {
+ hash,
+ files: filtered.map((x) => path.join(state.worktree, x).replaceAll("\\", "/")),
+ }
+ }
+ }
+
return {
hash,
- files: result.text
- .trim()
- .split("\n")
- .map((x) => x.trim())
- .filter(Boolean)
- .map((x) => path.join(state.worktree, x).replaceAll("\\", "/")),
+ files: files.map((x) => path.join(state.worktree, x).replaceAll("\\", "/")),
}
}),
)
@@ -616,6 +672,30 @@ export namespace Snapshot {
} satisfies Row,
]
})
+
+ // Filter out files that are now gitignored
+ if (rows.length > 0) {
+ const files = rows.map((r) => r.file)
+ const checkArgs = [
+ ...quote,
+ "--git-dir",
+ path.join(state.worktree, ".git"),
+ "--work-tree",
+ state.worktree,
+ "check-ignore",
+ "--no-index",
+ "--",
+ ...files,
+ ]
+ const check = yield* git(checkArgs, { cwd: state.directory })
+ if (check.code === 0) {
+ const ignored = new Set(check.text.trim().split("\n").filter(Boolean))
+ const filtered = rows.filter((r) => !ignored.has(r.file))
+ rows.length = 0
+ rows.push(...filtered)
+ }
+ }
+
const step = 100
const patch = (file: string, before: string, after: string) =>
formatPatch(structuredPatch(file, file, before, after, "", "", { context: Number.MAX_SAFE_INTEGER }))
diff --git a/packages/opencode/src/tool/grep.ts b/packages/opencode/src/tool/grep.ts
index b5ae6c3503..9b5143cec5 100644
--- a/packages/opencode/src/tool/grep.ts
+++ b/packages/opencode/src/tool/grep.ts
@@ -1,11 +1,8 @@
import z from "zod"
-import { Effect } from "effect"
-import * as Stream from "effect/Stream"
+import { Effect, Option } from "effect"
import { Tool } from "./tool"
-import { Filesystem } from "../util/filesystem"
import { Ripgrep } from "../file/ripgrep"
-import { ChildProcess } from "effect/unstable/process"
-import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
+import { AppFileSystem } from "../filesystem"
import DESCRIPTION from "./grep.txt"
import { Instance } from "../project/instance"
@@ -17,7 +14,8 @@ const MAX_LINE_LENGTH = 2000
export const GrepTool = Tool.define(
"grep",
Effect.gen(function* () {
- const spawner = yield* ChildProcessSpawner
+ const fs = yield* AppFileSystem.Service
+ const rg = yield* Ripgrep.Service
return {
description: DESCRIPTION,
@@ -28,6 +26,11 @@ export const GrepTool = Tool.define(
}),
execute: (params: { pattern: string; path?: string; include?: string }, ctx: Tool.Context) =>
Effect.gen(function* () {
+ const empty = {
+ title: params.pattern,
+ metadata: { matches: 0, truncated: false },
+ output: "No files found",
+ }
if (!params.pattern) {
throw new Error("pattern is required")
}
@@ -43,92 +46,58 @@ export const GrepTool = Tool.define(
},
})
- let searchPath = params.path ?? Instance.directory
- searchPath = path.isAbsolute(searchPath) ? searchPath : path.resolve(Instance.directory, searchPath)
+ const searchPath = AppFileSystem.resolve(
+ path.isAbsolute(params.path ?? Instance.directory)
+ ? (params.path ?? Instance.directory)
+ : path.join(Instance.directory, params.path ?? "."),
+ )
yield* assertExternalDirectoryEffect(ctx, searchPath, { kind: "directory" })
- const rgPath = yield* Effect.promise(() => Ripgrep.filepath())
- const args = ["-nH", "--hidden", "--no-messages", "--field-match-separator=|", "--regexp", params.pattern]
- if (params.include) {
- args.push("--glob", params.include)
- }
- args.push(searchPath)
+ const result = yield* rg.search({
+ cwd: searchPath,
+ pattern: params.pattern,
+ glob: params.include ? [params.include] : undefined,
+ })
- const result = yield* Effect.scoped(
- Effect.gen(function* () {
- const handle = yield* spawner.spawn(
- ChildProcess.make(rgPath, args, {
- stdin: "ignore",
- }),
- )
+ if (result.items.length === 0) return empty
- const [output, errorOutput] = yield* Effect.all(
- [Stream.mkString(Stream.decodeText(handle.stdout)), Stream.mkString(Stream.decodeText(handle.stderr))],
- { concurrency: 2 },
- )
-
- const exitCode = yield* handle.exitCode
-
- return { output, errorOutput, exitCode }
- }),
+ const rows = result.items.map((item) => ({
+ path: AppFileSystem.resolve(
+ path.isAbsolute(item.path.text) ? item.path.text : path.join(searchPath, item.path.text),
+ ),
+ line: item.line_number,
+ text: item.lines.text,
+ }))
+ const times = new Map(
+ (yield* Effect.forEach(
+ [...new Set(rows.map((row) => row.path))],
+ Effect.fnUntraced(function* (file) {
+ const info = yield* fs.stat(file).pipe(Effect.catch(() => Effect.succeed(undefined)))
+ if (!info || info.type === "Directory") return undefined
+ return [
+ file,
+ info.mtime.pipe(
+ Option.map((time) => time.getTime()),
+ Option.getOrElse(() => 0),
+ ) ?? 0,
+ ] as const
+ }),
+ { concurrency: 16 },
+ )).filter((entry): entry is readonly [string, number] => Boolean(entry)),
)
+ const matches = rows.flatMap((row) => {
+ const mtime = times.get(row.path)
+ if (mtime === undefined) return []
+ return [{ ...row, mtime }]
+ })
- const { output, errorOutput, exitCode } = result
-
- // Exit codes: 0 = matches found, 1 = no matches, 2 = errors (but may still have matches)
- // With --no-messages, we suppress error output but still get exit code 2 for broken symlinks etc.
- // Only fail if exit code is 2 AND no output was produced
- if (exitCode === 1 || (exitCode === 2 && !output.trim())) {
- return {
- title: params.pattern,
- metadata: { matches: 0, truncated: false },
- output: "No files found",
- }
- }
-
- if (exitCode !== 0 && exitCode !== 2) {
- throw new Error(`ripgrep failed: ${errorOutput}`)
- }
-
- const hasErrors = exitCode === 2
-
- // Handle both Unix (\n) and Windows (\r\n) line endings
- const lines = output.trim().split(/\r?\n/)
- const matches = []
-
- for (const line of lines) {
- if (!line) continue
-
- const [filePath, lineNumStr, ...lineTextParts] = line.split("|")
- if (!filePath || !lineNumStr || lineTextParts.length === 0) continue
-
- const lineNum = parseInt(lineNumStr, 10)
- const lineText = lineTextParts.join("|")
-
- const stats = Filesystem.stat(filePath)
- if (!stats) continue
-
- matches.push({
- path: filePath,
- modTime: stats.mtime.getTime(),
- lineNum,
- lineText,
- })
- }
-
- matches.sort((a, b) => b.modTime - a.modTime)
+ matches.sort((a, b) => b.mtime - a.mtime)
const limit = 100
const truncated = matches.length > limit
const finalMatches = truncated ? matches.slice(0, limit) : matches
- if (finalMatches.length === 0) {
- return {
- title: params.pattern,
- metadata: { matches: 0, truncated: false },
- output: "No files found",
- }
- }
+ if (finalMatches.length === 0) return empty
const totalMatches = matches.length
const outputLines = [`Found ${totalMatches} matches${truncated ? ` (showing first ${limit})` : ""}`]
@@ -143,10 +112,8 @@ export const GrepTool = Tool.define(
outputLines.push(`${match.path}:`)
}
const truncatedLineText =
- match.lineText.length > MAX_LINE_LENGTH
- ? match.lineText.substring(0, MAX_LINE_LENGTH) + "..."
- : match.lineText
- outputLines.push(` Line ${match.lineNum}: ${truncatedLineText}`)
+ match.text.length > MAX_LINE_LENGTH ? match.text.substring(0, MAX_LINE_LENGTH) + "..." : match.text
+ outputLines.push(` Line ${match.line}: ${truncatedLineText}`)
}
if (truncated) {
@@ -156,7 +123,7 @@ export const GrepTool = Tool.define(
)
}
- if (hasErrors) {
+ if (result.partial) {
outputLines.push("")
outputLines.push("(Some paths were inaccessible and skipped)")
}
diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts
index afb19a468c..3ed9e4b185 100644
--- a/packages/opencode/src/tool/registry.ts
+++ b/packages/opencode/src/tool/registry.ts
@@ -36,7 +36,6 @@ import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner"
import { Ripgrep } from "../file/ripgrep"
import { Format } from "../format"
import { InstanceState } from "@/effect/instance-state"
-import { makeRuntime } from "@/effect/run-service"
import { Env } from "../env"
import { Question } from "../question"
import { Todo } from "../session/todo"
@@ -344,18 +343,4 @@ export namespace ToolRegistry {
Layer.provide(Truncate.defaultLayer),
),
)
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function ids() {
- return runPromise((svc) => svc.ids())
- }
-
- export async function tools(input: {
- providerID: ProviderID
- modelID: ModelID
- agent: Agent.Info
- }): Promise<(Tool.Def & { id: string })[]> {
- return runPromise((svc) => svc.tools(input))
- }
}
diff --git a/packages/opencode/src/tool/tool.ts b/packages/opencode/src/tool/tool.ts
index 4a74fbb2d1..cfca59acc4 100644
--- a/packages/opencode/src/tool/tool.ts
+++ b/packages/opencode/src/tool/tool.ts
@@ -70,7 +70,12 @@ export namespace Tool {
? Def
: never
- function wrap(id: string, init: Init) {
+ function wrap(
+ id: string,
+ init: Init,
+ truncate: Truncate.Interface,
+ agents: Agent.Interface,
+ ) {
return () =>
Effect.gen(function* () {
const toolInfo = init instanceof Function ? { ...(yield* init()) } : { ...init }
@@ -102,8 +107,8 @@ export namespace Tool {
if (result.metadata.truncated !== undefined) {
return result
}
- const agent = yield* Effect.promise(() => Agent.get(ctx.agent))
- const truncated = yield* Effect.promise(() => Truncate.output(result.output, {}, agent))
+ const agent = yield* agents.get(ctx.agent)
+ const truncated = yield* truncate.output(result.output, {}, agent)
return {
...result,
output: truncated.content,
@@ -128,9 +133,14 @@ export namespace Tool {
export function define(
id: ID,
init: Effect.Effect, never, R>,
- ): Effect.Effect, never, R> & { id: ID } {
+ ): Effect.Effect, never, R | Truncate.Service | Agent.Service> & { id: ID } {
return Object.assign(
- Effect.map(init, (init) => ({ id, init: wrap(id, init) })),
+ Effect.gen(function* () {
+ const resolved = yield* init
+ const truncate = yield* Truncate.Service
+ const agents = yield* Agent.Service
+ return { id, init: wrap(id, resolved, truncate, agents) }
+ }),
{ id },
)
}
diff --git a/packages/opencode/src/tool/truncate.ts b/packages/opencode/src/tool/truncate.ts
index 716929cc64..fa9e0bcabe 100644
--- a/packages/opencode/src/tool/truncate.ts
+++ b/packages/opencode/src/tool/truncate.ts
@@ -2,7 +2,6 @@ import { NodePath } from "@effect/platform-node"
import { Cause, Duration, Effect, Layer, Schedule, Context } from "effect"
import path from "path"
import type { Agent } from "../agent/agent"
-import { makeRuntime } from "@/effect/run-service"
import { AppFileSystem } from "@/filesystem"
import { evaluate } from "@/permission/evaluate"
import { Identifier } from "../id/id"
@@ -135,10 +134,4 @@ export namespace Truncate {
)
export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer), Layer.provide(NodePath.layer))
-
- const { runPromise } = makeRuntime(Service, defaultLayer)
-
- export async function output(text: string, options: Options = {}, agent?: Agent.Info): Promise {
- return runPromise((s) => s.output(text, options, agent))
- }
}
diff --git a/packages/opencode/src/util/log.ts b/packages/opencode/src/util/log.ts
index 2ca4c0a3de..f94e9866f7 100644
--- a/packages/opencode/src/util/log.ts
+++ b/packages/opencode/src/util/log.ts
@@ -15,6 +15,7 @@ export namespace Log {
WARN: 2,
ERROR: 3,
}
+ const keep = 10
let level: Level = "INFO"
@@ -78,15 +79,19 @@ export namespace Log {
}
async function cleanup(dir: string) {
- const files = await Glob.scan("????-??-??T??????.log", {
- cwd: dir,
- absolute: true,
- include: "file",
- })
- if (files.length <= 5) return
+ const files = (
+ await Glob.scan("????-??-??T??????.log", {
+ cwd: dir,
+ absolute: false,
+ include: "file",
+ }).catch(() => [])
+ )
+ .filter((file) => path.basename(file) === file)
+ .sort()
+ if (files.length <= keep) return
- const filesToDelete = files.slice(0, -10)
- await Promise.all(filesToDelete.map((file) => fs.unlink(file).catch(() => {})))
+ const doomed = files.slice(0, -keep)
+ await Promise.all(doomed.map((file) => fs.unlink(path.join(dir, file)).catch(() => {})))
}
function formatError(error: Error, depth = 0): string {
diff --git a/packages/opencode/src/v2/message.ts b/packages/opencode/src/v2/message.ts
index 008a45a369..868ab82802 100644
--- a/packages/opencode/src/v2/message.ts
+++ b/packages/opencode/src/v2/message.ts
@@ -10,59 +10,106 @@ export namespace Message {
})),
)
- export class File extends Schema.Class("Message.File")({
- url: Schema.String,
+ export class Source extends Schema.Class("Message.Source")({
+ start: Schema.Number,
+ end: Schema.Number,
+ text: Schema.String,
+ }) {}
+
+ export class FileAttachment extends Schema.Class("Message.File.Attachment")({
+ uri: Schema.String,
mime: Schema.String,
+ name: Schema.String.pipe(Schema.optional),
+ description: Schema.String.pipe(Schema.optional),
+ source: Source.pipe(Schema.optional),
}) {
static create(url: string) {
- return new File({
- url,
+ return new FileAttachment({
+ uri: url,
mime: "text/plain",
})
}
}
- export class UserContent extends Schema.Class("Message.User.Content")({
- text: Schema.String,
- synthetic: Schema.Boolean.pipe(Schema.optional),
- agent: Schema.String.pipe(Schema.optional),
- files: Schema.Array(File).pipe(Schema.optional),
+ export class AgentAttachment extends Schema.Class("Message.Agent.Attachment")({
+ name: Schema.String,
+ source: Source.pipe(Schema.optional),
}) {}
export class User extends Schema.Class("Message.User")({
id: ID,
type: Schema.Literal("user"),
+ text: Schema.String,
+ files: Schema.Array(FileAttachment).pipe(Schema.optional),
+ agents: Schema.Array(AgentAttachment).pipe(Schema.optional),
time: Schema.Struct({
created: Schema.DateTimeUtc,
}),
- content: UserContent,
}) {
- static create(content: Schema.Schema.Type) {
+ static create(input: { text: User["text"]; files?: User["files"]; agents?: User["agents"] }) {
const msg = new User({
id: ID.create(),
type: "user",
+ ...input,
time: {
created: Effect.runSync(DateTime.now),
},
- content,
})
return msg
}
-
- static file(url: string) {
- return new File({
- url,
- mime: "text/plain",
- })
- }
}
- export namespace User {}
+ export class Synthetic extends Schema.Class("Message.Synthetic")({
+ id: ID,
+ type: Schema.Literal("synthetic"),
+ text: Schema.String,
+ time: Schema.Struct({
+ created: Schema.DateTimeUtc,
+ }),
+ }) {}
+
+ export class Request extends Schema.Class("Message.Request")({
+ id: ID,
+ type: Schema.Literal("start"),
+ model: Schema.Struct({
+ id: Schema.String,
+ providerID: Schema.String,
+ variant: Schema.String.pipe(Schema.optional),
+ }),
+ time: Schema.Struct({
+ created: Schema.DateTimeUtc,
+ }),
+ }) {}
+
+ export class Text extends Schema.Class("Message.Text")({
+ id: ID,
+ type: Schema.Literal("text"),
+ text: Schema.String,
+ time: Schema.Struct({
+ created: Schema.DateTimeUtc,
+ completed: Schema.DateTimeUtc.pipe(Schema.optional),
+ }),
+ }) {}
+
+ export class Complete extends Schema.Class("Message.Complete")({
+ id: ID,
+ type: Schema.Literal("complete"),
+ time: Schema.Struct({
+ created: Schema.DateTimeUtc,
+ }),
+ cost: Schema.Number,
+ tokens: Schema.Struct({
+ total: Schema.Number,
+ input: Schema.Number,
+ output: Schema.Number,
+ reasoning: Schema.Number,
+ cache: Schema.Struct({
+ read: Schema.Number,
+ write: Schema.Number,
+ }),
+ }),
+ }) {}
+
+ export const Info = Schema.Union([User, Text])
+ export type Info = Schema.Schema.Type
}
-
-const msg = Message.User.create({
- text: "Hello world",
- files: [Message.File.create("file://example.com/file.txt")],
-})
-
-console.log(JSON.stringify(msg, null, 2))
diff --git a/packages/opencode/src/v2/session.ts b/packages/opencode/src/v2/session.ts
new file mode 100644
index 0000000000..4b4fa1978a
--- /dev/null
+++ b/packages/opencode/src/v2/session.ts
@@ -0,0 +1,71 @@
+import { Context, Layer, Schema, Effect } from "effect"
+import { Message } from "./message"
+import { Struct } from "effect"
+import { Identifier } from "@/id/id"
+import { withStatics } from "@/util/schema"
+import { Session } from "@/session"
+import { SessionID } from "@/session/schema"
+
+export namespace SessionV2 {
+ export const ID = SessionID
+
+ export type ID = Schema.Schema.Type
+
+ export class PromptInput extends Schema.Class("Session.PromptInput")({
+ ...Struct.omit(Message.User.fields, ["time", "type"]),
+ id: Schema.optionalKey(Message.ID),
+ sessionID: SessionV2.ID,
+ }) {}
+
+ export class CreateInput extends Schema.Class("Session.CreateInput")({
+ id: Schema.optionalKey(SessionV2.ID),
+ }) {}
+
+ export class Info extends Schema.Class("Session.Info")({
+ id: SessionV2.ID,
+ model: Schema.Struct({
+ id: Schema.String,
+ providerID: Schema.String,
+ modelID: Schema.String,
+ }).pipe(Schema.optional),
+ }) {}
+
+ export interface Interface {
+ fromID: (id: SessionV2.ID) => Effect.Effect
+ create: (input: CreateInput) => Effect.Effect
+ prompt: (input: PromptInput) => Effect.Effect
+ }
+
+ export class Service extends Context.Service()("Session.Service") {}
+
+ export const layer = Layer.effect(Service)(
+ Effect.gen(function* () {
+ const session = yield* Session.Service
+
+ const create: Interface["create"] = Effect.fn("Session.create")(function* (input) {
+ throw new Error("Not implemented")
+ })
+
+ const prompt: Interface["prompt"] = Effect.fn("Session.prompt")(function* (input) {
+ throw new Error("Not implemented")
+ })
+
+ const fromID: Interface["fromID"] = Effect.fn("Session.fromID")(function* (id) {
+ const match = yield* session.get(id)
+ return fromV1(match)
+ })
+
+ return Service.of({
+ create,
+ prompt,
+ fromID,
+ })
+ }),
+ )
+
+ function fromV1(input: Session.Info): Info {
+ return new Info({
+ id: SessionV2.ID.make(input.id),
+ })
+ }
+}
diff --git a/packages/opencode/src/worktree/index.ts b/packages/opencode/src/worktree/index.ts
index f4ec0af83c..b6430fa6c7 100644
--- a/packages/opencode/src/worktree/index.ts
+++ b/packages/opencode/src/worktree/index.ts
@@ -17,6 +17,7 @@ import { Effect, Layer, Path, Scope, Context, Stream } from "effect"
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
import { NodePath } from "@effect/platform-node"
import { AppFileSystem } from "@/filesystem"
+import { BootstrapRuntime } from "@/effect/bootstrap-runtime"
import { makeRuntime } from "@/effect/run-service"
import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner"
import { InstanceState } from "@/effect/instance-state"
@@ -266,7 +267,7 @@ export namespace Worktree {
const booted = yield* Effect.promise(() =>
Instance.provide({
directory: info.directory,
- init: InstanceBootstrap,
+ init: () => BootstrapRuntime.runPromise(InstanceBootstrap),
fn: () => undefined,
})
.then(() => true)
diff --git a/packages/opencode/test/AGENTS.md b/packages/opencode/test/AGENTS.md
index 209cf72da4..00564a17bf 100644
--- a/packages/opencode/test/AGENTS.md
+++ b/packages/opencode/test/AGENTS.md
@@ -79,3 +79,55 @@ await using tmp = await tmpdir({
- Directories are created in the system temp folder with prefix `opencode-test-`
- Use `await using` for automatic cleanup when the variable goes out of scope
- Paths are sanitized to strip null bytes (defensive fix for CI environments)
+
+## Testing With Effects
+
+Use `testEffect(...)` from `test/lib/effect.ts` for tests that exercise Effect services or Effect-based workflows.
+
+### Core Pattern
+
+```typescript
+import { describe, expect } from "bun:test"
+import { Effect, Layer } from "effect"
+import { provideTmpdirInstance } from "../fixture/fixture"
+import { testEffect } from "../lib/effect"
+
+const it = testEffect(Layer.mergeAll(MyService.defaultLayer))
+
+describe("my service", () => {
+ it.live("does the thing", () =>
+ provideTmpdirInstance(() =>
+ Effect.gen(function* () {
+ const svc = yield* MyService.Service
+ const out = yield* svc.run()
+ expect(out).toEqual("ok")
+ }),
+ ),
+ )
+})
+```
+
+### `it.effect` vs `it.live`
+
+- Use `it.effect(...)` when the test should run with `TestClock` and `TestConsole`.
+- Use `it.live(...)` when the test depends on real time, filesystem mtimes, child processes, git, locks, or other live OS behavior.
+- Most integration-style tests in this package use `it.live(...)`.
+
+### Effect Fixtures
+
+Prefer the Effect-aware helpers from `fixture/fixture.ts` instead of building a manual runtime in each test.
+
+- `tmpdirScoped(options?)` creates a scoped temp directory and cleans it up when the Effect scope closes.
+- `provideInstance(dir)(effect)` is the low-level helper. It does not create a directory; it just runs an Effect with `Instance.current` bound to `dir`.
+- `provideTmpdirInstance((dir) => effect, options?)` is the convenience helper. It creates a temp directory, binds it as the active instance, and disposes the instance on cleanup.
+- `provideTmpdirServer((input) => effect, options?)` does the same, but also provides the test LLM server.
+
+Use `provideTmpdirInstance(...)` by default when a test only needs one temp instance. Use `tmpdirScoped()` plus `provideInstance(...)` when a test needs multiple directories, custom setup before binding, or needs to switch instance context within one test.
+
+### Style
+
+- Define `const it = testEffect(...)` near the top of the file.
+- Keep the test body inside `Effect.gen(function* () { ... })`.
+- Yield services directly with `yield* MyService.Service` or `yield* MyTool`.
+- Avoid custom `ManagedRuntime`, `attach(...)`, or ad hoc `run(...)` wrappers when `testEffect(...)` already provides the runtime.
+- When a test needs instance-local state, prefer `provideTmpdirInstance(...)` or `provideInstance(...)` over manual `Instance.provide(...)` inside Promise-style tests.
diff --git a/packages/opencode/test/cli/tui/plugin-loader.test.ts b/packages/opencode/test/cli/tui/plugin-loader.test.ts
index e9e62d2a70..119517b10c 100644
--- a/packages/opencode/test/cli/tui/plugin-loader.test.ts
+++ b/packages/opencode/test/cli/tui/plugin-loader.test.ts
@@ -6,7 +6,6 @@ import { tmpdir } from "../../fixture/fixture"
import { createTuiPluginApi } from "../../fixture/tui-plugin"
import { Global } from "../../../src/global"
import { TuiConfig } from "../../../src/config/tui"
-import { Config } from "../../../src/config/config"
import { Filesystem } from "../../../src/util/filesystem"
const { allThemes, addTheme } = await import("../../../src/cli/cmd/tui/context/theme")
@@ -325,7 +324,6 @@ export default {
})
const cwd = spyOn(process, "cwd").mockImplementation(() => tmp.path)
const wait = spyOn(TuiConfig, "waitForDependencies").mockResolvedValue()
- const install = spyOn(Config, "installDependencies").mockResolvedValue()
try {
expect(addTheme(tmp.extra.preloadedThemeName, { theme: { primary: "#303030" } })).toBe(true)
@@ -407,7 +405,6 @@ export default {
await TuiPluginRuntime.dispose()
cwd.mockRestore()
wait.mockRestore()
- install.mockRestore()
if (backup === undefined) {
await fs.rm(globalConfigPath, { force: true })
} else {
@@ -701,7 +698,6 @@ test("updates installed theme when plugin metadata changes", async () => {
process.env.OPENCODE_PLUGIN_META_FILE = path.join(tmp.path, "plugin-meta.json")
const cwd = spyOn(process, "cwd").mockImplementation(() => tmp.path)
const wait = spyOn(TuiConfig, "waitForDependencies").mockResolvedValue()
- const install = spyOn(Config, "installDependencies").mockResolvedValue()
const api = () =>
createTuiPluginApi({
@@ -746,7 +742,6 @@ test("updates installed theme when plugin metadata changes", async () => {
await TuiPluginRuntime.dispose()
cwd.mockRestore()
wait.mockRestore()
- install.mockRestore()
delete process.env.OPENCODE_PLUGIN_META_FILE
}
})
diff --git a/packages/opencode/test/config/config.test.ts b/packages/opencode/test/config/config.test.ts
index 0ac61aee71..d6931975c1 100644
--- a/packages/opencode/test/config/config.test.ts
+++ b/packages/opencode/test/config/config.test.ts
@@ -1,5 +1,5 @@
import { test, expect, describe, mock, afterEach, beforeEach, spyOn } from "bun:test"
-import { Effect, Layer, Option } from "effect"
+import { Deferred, Effect, Fiber, Layer, Option } from "effect"
import { NodeFileSystem, NodePath } from "@effect/platform-node"
import { Config } from "../../src/config/config"
import { Instance } from "../../src/project/instance"
@@ -7,8 +7,9 @@ import { Auth } from "../../src/auth"
import { AccessToken, Account, AccountID, OrgID } from "../../src/account"
import { AppFileSystem } from "../../src/filesystem"
import { provideTmpdirInstance } from "../fixture/fixture"
-import { tmpdir } from "../fixture/fixture"
+import { tmpdir, tmpdirScoped } from "../fixture/fixture"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
+import { testEffect } from "../lib/effect"
/** Infra layer that provides FileSystem, Path, ChildProcessSpawner for test fixtures */
const infra = CrossSpawnSpawner.defaultLayer.pipe(
@@ -32,6 +33,18 @@ const emptyAuth = Layer.mock(Auth.Service)({
all: () => Effect.succeed({}),
})
+const it = testEffect(
+ Config.layer.pipe(
+ Layer.provide(AppFileSystem.defaultLayer),
+ Layer.provide(emptyAuth),
+ Layer.provide(emptyAccount),
+ Layer.provideMerge(infra),
+ ),
+)
+
+const installDeps = (dir: string, input?: Config.InstallInput) =>
+ Config.Service.use((svc) => svc.installDependencies(dir, input))
+
// Get managed config directory from environment (set in preload.ts)
const managedConfigDir = process.env.OPENCODE_TEST_MANAGED_CONFIG_DIR!
@@ -817,128 +830,134 @@ test("installs dependencies in writable OPENCODE_CONFIG_DIR", async () => {
}
})
-test("dedupes concurrent config dependency installs for the same dir", async () => {
- await using tmp = await tmpdir()
- const dir = path.join(tmp.path, "a")
- await fs.mkdir(dir, { recursive: true })
+it.live("dedupes concurrent config dependency installs for the same dir", () =>
+ Effect.gen(function* () {
+ const tmp = yield* tmpdirScoped()
+ const dir = path.join(tmp, "a")
+ yield* Effect.promise(() => fs.mkdir(dir, { recursive: true }))
- const ticks: number[] = []
- let calls = 0
- let start = () => {}
- let done = () => {}
- let blocked = () => {}
- const ready = new Promise((resolve) => {
- start = resolve
- })
- const gate = new Promise((resolve) => {
- done = resolve
- })
- const waiting = new Promise((resolve) => {
- blocked = resolve
- })
- const online = spyOn(Network, "online").mockReturnValue(false)
- const targetDir = dir
- const run = spyOn(Npm, "install").mockImplementation(async (d: string) => {
- const hit = path.normalize(d) === path.normalize(targetDir)
- if (hit) {
+ let calls = 0
+ const online = spyOn(Network, "online").mockReturnValue(false)
+ const ready = Deferred.makeUnsafe()
+ const blocked = Deferred.makeUnsafe()
+ const hold = Deferred.makeUnsafe()
+ const target = path.normalize(dir)
+ const run = spyOn(Npm, "install").mockImplementation(async (d: string) => {
+ if (path.normalize(d) !== target) return
calls += 1
- start()
- await gate
- }
- const mod = path.join(d, "node_modules", "@opencode-ai", "plugin")
- await fs.mkdir(mod, { recursive: true })
- await Filesystem.write(
- path.join(mod, "package.json"),
- JSON.stringify({ name: "@opencode-ai/plugin", version: "1.0.0" }),
- )
- if (hit) {
- start()
- await gate
- }
- })
-
- try {
- const first = Config.installDependencies(dir)
- await ready
- const second = Config.installDependencies(dir, {
- waitTick: (tick) => {
- ticks.push(tick.attempt)
- blocked()
- blocked = () => {}
- },
+ Deferred.doneUnsafe(ready, Effect.void)
+ await Effect.runPromise(Deferred.await(hold))
+ const mod = path.join(d, "node_modules", "@opencode-ai", "plugin")
+ await fs.mkdir(mod, { recursive: true })
+ await Filesystem.write(
+ path.join(mod, "package.json"),
+ JSON.stringify({ name: "@opencode-ai/plugin", version: "1.0.0" }),
+ )
})
- await waiting
- done()
- await Promise.all([first, second])
- } finally {
- online.mockRestore()
- run.mockRestore()
- }
- expect(calls).toBe(2)
- expect(ticks.length).toBeGreaterThan(0)
- expect(await Filesystem.exists(path.join(dir, "package.json"))).toBe(true)
-})
-
-test("serializes config dependency installs across dirs", async () => {
- if (process.platform !== "win32") return
-
- await using tmp = await tmpdir()
- const a = path.join(tmp.path, "a")
- const b = path.join(tmp.path, "b")
- await fs.mkdir(a, { recursive: true })
- await fs.mkdir(b, { recursive: true })
-
- let calls = 0
- let open = 0
- let peak = 0
- let start = () => {}
- let done = () => {}
- const ready = new Promise((resolve) => {
- start = resolve
- })
- const gate = new Promise((resolve) => {
- done = resolve
- })
-
- const online = spyOn(Network, "online").mockReturnValue(false)
- const run = spyOn(Npm, "install").mockImplementation(async (dir: string) => {
- const cwd = path.normalize(dir)
- const hit = cwd === path.normalize(a) || cwd === path.normalize(b)
- if (hit) {
- calls += 1
- open += 1
- peak = Math.max(peak, open)
- if (calls === 1) {
- start()
- await gate
- }
- }
- const mod = path.join(cwd, "node_modules", "@opencode-ai", "plugin")
- await fs.mkdir(mod, { recursive: true })
- await Filesystem.write(
- path.join(mod, "package.json"),
- JSON.stringify({ name: "@opencode-ai/plugin", version: "1.0.0" }),
+ yield* Effect.addFinalizer(() =>
+ Effect.sync(() => {
+ online.mockRestore()
+ run.mockRestore()
+ }),
)
- if (hit) {
- open -= 1
- }
- })
- try {
- const first = Config.installDependencies(a)
- await ready
- const second = Config.installDependencies(b)
- done()
- await Promise.all([first, second])
- } finally {
- online.mockRestore()
- run.mockRestore()
- }
+ const first = yield* installDeps(dir).pipe(Effect.forkScoped)
+ yield* Deferred.await(ready)
- expect(calls).toBe(2)
- expect(peak).toBe(1)
-})
+ let done = false
+ const second = yield* installDeps(dir, {
+ waitTick: () => {
+ Deferred.doneUnsafe(blocked, Effect.void)
+ },
+ }).pipe(
+ Effect.tap(() =>
+ Effect.sync(() => {
+ done = true
+ }),
+ ),
+ Effect.forkScoped,
+ )
+
+ yield* Deferred.await(blocked)
+ expect(done).toBe(false)
+
+ yield* Deferred.succeed(hold, void 0)
+ yield* Fiber.join(first)
+ yield* Fiber.join(second)
+
+ expect(calls).toBe(1)
+ expect(yield* Effect.promise(() => Filesystem.exists(path.join(dir, "package.json")))).toBe(true)
+ }),
+)
+
+it.live("serializes config dependency installs across dirs", () =>
+ Effect.gen(function* () {
+ if (process.platform !== "win32") return
+
+ const tmp = yield* tmpdirScoped()
+ const a = path.join(tmp, "a")
+ const b = path.join(tmp, "b")
+ yield* Effect.promise(() => fs.mkdir(a, { recursive: true }))
+ yield* Effect.promise(() => fs.mkdir(b, { recursive: true }))
+
+ let calls = 0
+ let open = 0
+ let peak = 0
+ const ready = Deferred.makeUnsafe()
+ const blocked = Deferred.makeUnsafe()
+ const hold = Deferred.makeUnsafe()
+
+ const online = spyOn(Network, "online").mockReturnValue(false)
+ const run = spyOn(Npm, "install").mockImplementation(async (dir: string) => {
+ const cwd = path.normalize(dir)
+ const hit = cwd === path.normalize(a) || cwd === path.normalize(b)
+ if (hit) {
+ calls += 1
+ open += 1
+ peak = Math.max(peak, open)
+ if (calls === 1) {
+ Deferred.doneUnsafe(ready, Effect.void)
+ await Effect.runPromise(Deferred.await(hold))
+ }
+ }
+ const mod = path.join(cwd, "node_modules", "@opencode-ai", "plugin")
+ await fs.mkdir(mod, { recursive: true })
+ await Filesystem.write(
+ path.join(mod, "package.json"),
+ JSON.stringify({ name: "@opencode-ai/plugin", version: "1.0.0" }),
+ )
+ if (hit) {
+ open -= 1
+ }
+ })
+
+ yield* Effect.addFinalizer(() =>
+ Effect.sync(() => {
+ online.mockRestore()
+ run.mockRestore()
+ }),
+ )
+
+ const first = yield* installDeps(a).pipe(Effect.forkScoped)
+ yield* Deferred.await(ready)
+
+ const second = yield* installDeps(b, {
+ waitTick: () => {
+ Deferred.doneUnsafe(blocked, Effect.void)
+ },
+ }).pipe(Effect.forkScoped)
+ yield* Deferred.await(blocked)
+ expect(peak).toBe(1)
+
+ yield* Deferred.succeed(hold, void 0)
+ yield* Fiber.join(first)
+ yield* Fiber.join(second)
+
+ expect(calls).toBe(2)
+ expect(peak).toBe(1)
+ }),
+)
test("resolves scoped npm plugins in config", async () => {
await using tmp = await tmpdir({
diff --git a/packages/opencode/test/file/ripgrep.test.ts b/packages/opencode/test/file/ripgrep.test.ts
index 3982c184f1..11d212a086 100644
--- a/packages/opencode/test/file/ripgrep.test.ts
+++ b/packages/opencode/test/file/ripgrep.test.ts
@@ -38,7 +38,9 @@ describe("file.ripgrep", () => {
expect(hasVisible).toBe(true)
expect(hasHidden).toBe(false)
})
+})
+describe("Ripgrep.Service", () => {
test("search returns empty when nothing matches", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
@@ -46,16 +48,34 @@ describe("file.ripgrep", () => {
},
})
- const hits = await Ripgrep.search({
- cwd: tmp.path,
- pattern: "needle",
+ const result = await Effect.gen(function* () {
+ const rg = yield* Ripgrep.Service
+ return yield* rg.search({ cwd: tmp.path, pattern: "needle" })
+ }).pipe(Effect.provide(Ripgrep.defaultLayer), Effect.runPromise)
+
+ expect(result.partial).toBe(false)
+ expect(result.items).toEqual([])
+ })
+
+ test("search returns matched rows", async () => {
+ await using tmp = await tmpdir({
+ init: async (dir) => {
+ await Bun.write(path.join(dir, "match.ts"), "const value = 'needle'\n")
+ await Bun.write(path.join(dir, "skip.txt"), "const value = 'other'\n")
+ },
})
- expect(hits).toEqual([])
- })
-})
+ const result = await Effect.gen(function* () {
+ const rg = yield* Ripgrep.Service
+ return yield* rg.search({ cwd: tmp.path, pattern: "needle", glob: ["*.ts"] })
+ }).pipe(Effect.provide(Ripgrep.defaultLayer), Effect.runPromise)
+
+ expect(result.partial).toBe(false)
+ expect(result.items).toHaveLength(1)
+ expect(result.items[0]?.path.text).toContain("match.ts")
+ expect(result.items[0]?.lines.text).toContain("needle")
+ })
-describe("Ripgrep.Service", () => {
test("files returns stream of filenames", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
diff --git a/packages/opencode/test/file/time.test.ts b/packages/opencode/test/file/time.test.ts
index ab7659c591..7f65d05ead 100644
--- a/packages/opencode/test/file/time.test.ts
+++ b/packages/opencode/test/file/time.test.ts
@@ -1,445 +1,422 @@
-import { describe, test, expect, afterEach } from "bun:test"
-import path from "path"
+import { afterEach, describe, expect } from "bun:test"
import fs from "fs/promises"
+import path from "path"
+import { Cause, Deferred, Effect, Exit, Fiber, Layer } from "effect"
+import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { FileTime } from "../../src/file/time"
import { Instance } from "../../src/project/instance"
import { SessionID } from "../../src/session/schema"
import { Filesystem } from "../../src/util/filesystem"
-import { tmpdir } from "../fixture/fixture"
+import { provideInstance, provideTmpdirInstance, tmpdirScoped } from "../fixture/fixture"
+import { testEffect } from "../lib/effect"
afterEach(async () => {
await Instance.disposeAll()
})
-async function touch(file: string, time: number) {
- const date = new Date(time)
- await fs.utimes(file, date, date)
-}
+const it = testEffect(Layer.mergeAll(FileTime.defaultLayer, CrossSpawnSpawner.defaultLayer))
-function gate() {
- let open!: () => void
- const wait = new Promise((resolve) => {
- open = resolve
+const id = SessionID.make("ses_00000000000000000000000001")
+
+const put = (file: string, text: string) => Effect.promise(() => fs.writeFile(file, text, "utf-8"))
+
+const touch = (file: string, time: number) =>
+ Effect.promise(() => {
+ const date = new Date(time)
+ return fs.utimes(file, date, date)
})
- return { open, wait }
-}
+
+const read = (id: SessionID, file: string) => FileTime.Service.use((svc) => svc.read(id, file))
+
+const get = (id: SessionID, file: string) => FileTime.Service.use((svc) => svc.get(id, file))
+
+const check = (id: SessionID, file: string) => FileTime.Service.use((svc) => svc.assert(id, file))
+
+const lock = (file: string, fn: () => Effect.Effect) => FileTime.Service.use((svc) => svc.withLock(file, fn))
+
+const fail = Effect.fn("FileTimeTest.fail")(function* (self: Effect.Effect) {
+ const exit = yield* self.pipe(Effect.exit)
+ if (Exit.isFailure(exit)) {
+ const err = Cause.squash(exit.cause)
+ return err instanceof Error ? err : new Error(String(err))
+ }
+ throw new Error("expected file time effect to fail")
+})
describe("file/time", () => {
- const sessionID = SessionID.make("ses_00000000000000000000000001")
-
describe("read() and get()", () => {
- test("stores read timestamp", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
+ it.live("stores read timestamp", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const before = await FileTime.get(sessionID, filepath)
+ const before = yield* get(id, file)
expect(before).toBeUndefined()
- await FileTime.read(sessionID, filepath)
+ yield* read(id, file)
- const after = await FileTime.get(sessionID, filepath)
+ const after = yield* get(id, file)
expect(after).toBeInstanceOf(Date)
expect(after!.getTime()).toBeGreaterThan(0)
- },
- })
- })
+ }),
+ ),
+ )
- test("tracks separate timestamps per session", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
+ it.live("tracks separate timestamps per session", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(SessionID.make("ses_00000000000000000000000002"), filepath)
- await FileTime.read(SessionID.make("ses_00000000000000000000000003"), filepath)
+ const one = SessionID.make("ses_00000000000000000000000002")
+ const two = SessionID.make("ses_00000000000000000000000003")
+ yield* read(one, file)
+ yield* read(two, file)
- const time1 = await FileTime.get(SessionID.make("ses_00000000000000000000000002"), filepath)
- const time2 = await FileTime.get(SessionID.make("ses_00000000000000000000000003"), filepath)
+ const first = yield* get(one, file)
+ const second = yield* get(two, file)
- expect(time1).toBeDefined()
- expect(time2).toBeDefined()
- },
- })
- })
+ expect(first).toBeDefined()
+ expect(second).toBeDefined()
+ }),
+ ),
+ )
- test("updates timestamp on subsequent reads", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
+ it.live("updates timestamp on subsequent reads", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
- const first = await FileTime.get(sessionID, filepath)
+ yield* read(id, file)
+ const first = yield* get(id, file)
- await FileTime.read(sessionID, filepath)
- const second = await FileTime.get(sessionID, filepath)
+ yield* read(id, file)
+ const second = yield* get(id, file)
expect(second!.getTime()).toBeGreaterThanOrEqual(first!.getTime())
- },
- })
- })
+ }),
+ ),
+ )
- test("isolates reads by directory", async () => {
- await using one = await tmpdir()
- await using two = await tmpdir()
- await using shared = await tmpdir()
- const filepath = path.join(shared.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
+ it.live("isolates reads by directory", () =>
+ Effect.gen(function* () {
+ const one = yield* tmpdirScoped()
+ const two = yield* tmpdirScoped()
+ const shared = yield* tmpdirScoped()
+ const file = path.join(shared, "file.txt")
+ yield* put(file, "content")
- await Instance.provide({
- directory: one.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
- },
- })
-
- await Instance.provide({
- directory: two.path,
- fn: async () => {
- expect(await FileTime.get(sessionID, filepath)).toBeUndefined()
- },
- })
- })
+ yield* provideInstance(one)(read(id, file))
+ const result = yield* provideInstance(two)(get(id, file))
+ expect(result).toBeUndefined()
+ }),
+ )
})
describe("assert()", () => {
- test("passes when file has not been modified", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
- await touch(filepath, 1_000)
+ it.live("passes when file has not been modified", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
+ yield* touch(file, 1_000)
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
- await FileTime.assert(sessionID, filepath)
- },
- })
- })
+ yield* read(id, file)
+ yield* check(id, file)
+ }),
+ ),
+ )
- test("throws when file was not read first", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
+ it.live("throws when file was not read first", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await expect(FileTime.assert(sessionID, filepath)).rejects.toThrow("You must read file")
- },
- })
- })
+ const err = yield* fail(check(id, file))
+ expect(err.message).toContain("You must read file")
+ }),
+ ),
+ )
- test("throws when file was modified after read", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
- await touch(filepath, 1_000)
+ it.live("throws when file was modified after read", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
+ yield* touch(file, 1_000)
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
- await fs.writeFile(filepath, "modified content", "utf-8")
- await touch(filepath, 2_000)
- await expect(FileTime.assert(sessionID, filepath)).rejects.toThrow("modified since it was last read")
- },
- })
- })
+ yield* read(id, file)
+ yield* put(file, "modified content")
+ yield* touch(file, 2_000)
- test("includes timestamps in error message", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
- await touch(filepath, 1_000)
+ const err = yield* fail(check(id, file))
+ expect(err.message).toContain("modified since it was last read")
+ }),
+ ),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
- await fs.writeFile(filepath, "modified", "utf-8")
- await touch(filepath, 2_000)
+ it.live("includes timestamps in error message", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
+ yield* touch(file, 1_000)
- let error: Error | undefined
- try {
- await FileTime.assert(sessionID, filepath)
- } catch (e) {
- error = e as Error
- }
- expect(error).toBeDefined()
- expect(error!.message).toContain("Last modification:")
- expect(error!.message).toContain("Last read:")
- },
- })
- })
+ yield* read(id, file)
+ yield* put(file, "modified")
+ yield* touch(file, 2_000)
+
+ const err = yield* fail(check(id, file))
+ expect(err.message).toContain("Last modification:")
+ expect(err.message).toContain("Last read:")
+ }),
+ ),
+ )
})
describe("withLock()", () => {
- test("executes function within lock", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
+ it.live("executes function within lock", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ let hit = false
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- let executed = false
- await FileTime.withLock(filepath, async () => {
- executed = true
- return "result"
- })
- expect(executed).toBe(true)
- },
- })
- })
-
- test("returns function result", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const result = await FileTime.withLock(filepath, async () => {
- return "success"
- })
- expect(result).toBe("success")
- },
- })
- })
-
- test("serializes concurrent operations on same file", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const order: number[] = []
- const hold = gate()
- const ready = gate()
-
- const op1 = FileTime.withLock(filepath, async () => {
- order.push(1)
- ready.open()
- await hold.wait
- order.push(2)
- })
-
- await ready.wait
-
- const op2 = FileTime.withLock(filepath, async () => {
- order.push(3)
- order.push(4)
- })
-
- hold.open()
-
- await Promise.all([op1, op2])
- expect(order).toEqual([1, 2, 3, 4])
- },
- })
- })
-
- test("allows concurrent operations on different files", async () => {
- await using tmp = await tmpdir()
- const filepath1 = path.join(tmp.path, "file1.txt")
- const filepath2 = path.join(tmp.path, "file2.txt")
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- let started1 = false
- let started2 = false
- const hold = gate()
- const ready = gate()
-
- const op1 = FileTime.withLock(filepath1, async () => {
- started1 = true
- ready.open()
- await hold.wait
- expect(started2).toBe(true)
- })
-
- await ready.wait
-
- const op2 = FileTime.withLock(filepath2, async () => {
- started2 = true
- hold.open()
- })
-
- await Promise.all([op1, op2])
- expect(started1).toBe(true)
- expect(started2).toBe(true)
- },
- })
- })
-
- test("releases lock even if function throws", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await expect(
- FileTime.withLock(filepath, async () => {
- throw new Error("Test error")
+ yield* lock(file, () =>
+ Effect.sync(() => {
+ hit = true
+ return "result"
}),
- ).rejects.toThrow("Test error")
+ )
- let executed = false
- await FileTime.withLock(filepath, async () => {
- executed = true
- })
- expect(executed).toBe(true)
- },
- })
- })
+ expect(hit).toBe(true)
+ }),
+ ),
+ )
+
+ it.live("returns function result", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ const result = yield* lock(file, () => Effect.succeed("success"))
+ expect(result).toBe("success")
+ }),
+ ),
+ )
+
+ it.live("serializes concurrent operations on same file", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ const order: number[] = []
+ const hold = yield* Deferred.make()
+ const ready = yield* Deferred.make()
+
+ const one = yield* lock(file, () =>
+ Effect.gen(function* () {
+ order.push(1)
+ yield* Deferred.succeed(ready, void 0)
+ yield* Deferred.await(hold)
+ order.push(2)
+ }),
+ ).pipe(Effect.forkScoped)
+
+ yield* Deferred.await(ready)
+
+ const two = yield* lock(file, () =>
+ Effect.sync(() => {
+ order.push(3)
+ order.push(4)
+ }),
+ ).pipe(Effect.forkScoped)
+
+ yield* Deferred.succeed(hold, void 0)
+ yield* Fiber.join(one)
+ yield* Fiber.join(two)
+
+ expect(order).toEqual([1, 2, 3, 4])
+ }),
+ ),
+ )
+
+ it.live("allows concurrent operations on different files", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const onefile = path.join(dir, "file1.txt")
+ const twofile = path.join(dir, "file2.txt")
+ let one = false
+ let two = false
+ const hold = yield* Deferred.make()
+ const ready = yield* Deferred.make()
+
+ const a = yield* lock(onefile, () =>
+ Effect.gen(function* () {
+ one = true
+ yield* Deferred.succeed(ready, void 0)
+ yield* Deferred.await(hold)
+ expect(two).toBe(true)
+ }),
+ ).pipe(Effect.forkScoped)
+
+ yield* Deferred.await(ready)
+
+ const b = yield* lock(twofile, () =>
+ Effect.sync(() => {
+ two = true
+ }),
+ ).pipe(Effect.forkScoped)
+
+ yield* Fiber.join(b)
+ yield* Deferred.succeed(hold, void 0)
+ yield* Fiber.join(a)
+
+ expect(one).toBe(true)
+ expect(two).toBe(true)
+ }),
+ ),
+ )
+
+ it.live("releases lock even if function throws", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ const err = yield* fail(lock(file, () => Effect.die(new Error("Test error"))))
+ expect(err.message).toContain("Test error")
+
+ let hit = false
+ yield* lock(file, () =>
+ Effect.sync(() => {
+ hit = true
+ }),
+ )
+ expect(hit).toBe(true)
+ }),
+ ),
+ )
})
describe("path normalization", () => {
- test("read with forward slashes, assert with backslashes", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
- await touch(filepath, 1_000)
+ it.live("read with forward slashes, assert with backslashes", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
+ yield* touch(file, 1_000)
- const forwardSlash = filepath.replaceAll("\\", "/")
+ const forward = file.replaceAll("\\", "/")
+ yield* read(id, forward)
+ yield* check(id, file)
+ }),
+ ),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, forwardSlash)
- // assert with the native backslash path should still work
- await FileTime.assert(sessionID, filepath)
- },
- })
- })
+ it.live("read with backslashes, assert with forward slashes", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
+ yield* touch(file, 1_000)
- test("read with backslashes, assert with forward slashes", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
- await touch(filepath, 1_000)
+ const forward = file.replaceAll("\\", "/")
+ yield* read(id, file)
+ yield* check(id, forward)
+ }),
+ ),
+ )
- const forwardSlash = filepath.replaceAll("\\", "/")
+ it.live("get returns timestamp regardless of slash direction", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
- // assert with forward slashes should still work
- await FileTime.assert(sessionID, forwardSlash)
- },
- })
- })
+ const forward = file.replaceAll("\\", "/")
+ yield* read(id, forward)
- test("get returns timestamp regardless of slash direction", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
-
- const forwardSlash = filepath.replaceAll("\\", "/")
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, forwardSlash)
- const result = await FileTime.get(sessionID, filepath)
+ const result = yield* get(id, file)
expect(result).toBeInstanceOf(Date)
- },
- })
- })
+ }),
+ ),
+ )
- test("withLock serializes regardless of slash direction", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
-
- const forwardSlash = filepath.replaceAll("\\", "/")
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
+ it.live("withLock serializes regardless of slash direction", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ const forward = file.replaceAll("\\", "/")
const order: number[] = []
- const hold = gate()
- const ready = gate()
+ const hold = yield* Deferred.make()
+ const ready = yield* Deferred.make()
- const op1 = FileTime.withLock(filepath, async () => {
- order.push(1)
- ready.open()
- await hold.wait
- order.push(2)
- })
+ const one = yield* lock(file, () =>
+ Effect.gen(function* () {
+ order.push(1)
+ yield* Deferred.succeed(ready, void 0)
+ yield* Deferred.await(hold)
+ order.push(2)
+ }),
+ ).pipe(Effect.forkScoped)
- await ready.wait
+ yield* Deferred.await(ready)
- // Use forward-slash variant -- should still serialize against op1
- const op2 = FileTime.withLock(forwardSlash, async () => {
- order.push(3)
- order.push(4)
- })
+ const two = yield* lock(forward, () =>
+ Effect.sync(() => {
+ order.push(3)
+ order.push(4)
+ }),
+ ).pipe(Effect.forkScoped)
- hold.open()
+ yield* Deferred.succeed(hold, void 0)
+ yield* Fiber.join(one)
+ yield* Fiber.join(two)
- await Promise.all([op1, op2])
expect(order).toEqual([1, 2, 3, 4])
- },
- })
- })
+ }),
+ ),
+ )
})
describe("stat() Filesystem.stat pattern", () => {
- test("reads file modification time via Filesystem.stat()", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "content", "utf-8")
- await touch(filepath, 1_000)
+ it.live("reads file modification time via Filesystem.stat()", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "content")
+ yield* touch(file, 1_000)
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
+ yield* read(id, file)
- const stats = Filesystem.stat(filepath)
- expect(stats?.mtime).toBeInstanceOf(Date)
- expect(stats!.mtime.getTime()).toBeGreaterThan(0)
+ const stat = Filesystem.stat(file)
+ expect(stat?.mtime).toBeInstanceOf(Date)
+ expect(stat!.mtime.getTime()).toBeGreaterThan(0)
- await FileTime.assert(sessionID, filepath)
- },
- })
- })
+ yield* check(id, file)
+ }),
+ ),
+ )
- test("detects modification via stat mtime", async () => {
- await using tmp = await tmpdir()
- const filepath = path.join(tmp.path, "file.txt")
- await fs.writeFile(filepath, "original", "utf-8")
- await touch(filepath, 1_000)
+ it.live("detects modification via stat mtime", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const file = path.join(dir, "file.txt")
+ yield* put(file, "original")
+ yield* touch(file, 1_000)
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- await FileTime.read(sessionID, filepath)
+ yield* read(id, file)
- const originalStat = Filesystem.stat(filepath)
+ const first = Filesystem.stat(file)
- await fs.writeFile(filepath, "modified", "utf-8")
- await touch(filepath, 2_000)
+ yield* put(file, "modified")
+ yield* touch(file, 2_000)
- const newStat = Filesystem.stat(filepath)
- expect(newStat!.mtime.getTime()).toBeGreaterThan(originalStat!.mtime.getTime())
+ const second = Filesystem.stat(file)
+ expect(second!.mtime.getTime()).toBeGreaterThan(first!.mtime.getTime())
- await expect(FileTime.assert(sessionID, filepath)).rejects.toThrow()
- },
- })
- })
+ yield* fail(check(id, file))
+ }),
+ ),
+ )
})
})
diff --git a/packages/opencode/test/plugin/github-copilot-models.test.ts b/packages/opencode/test/plugin/github-copilot-models.test.ts
index 78fe40aead..0b67588a7e 100644
--- a/packages/opencode/test/plugin/github-copilot-models.test.ts
+++ b/packages/opencode/test/plugin/github-copilot-models.test.ts
@@ -1,5 +1,6 @@
import { afterEach, expect, mock, test } from "bun:test"
import { CopilotModels } from "@/plugin/github-copilot/models"
+import { CopilotAuthPlugin } from "@/plugin/github-copilot/copilot"
const originalFetch = globalThis.fetch
@@ -115,3 +116,45 @@ test("preserves temperature support from existing provider models", async () =>
expect(models["gpt-4o"].capabilities.temperature).toBe(true)
expect(models["brand-new"].capabilities.temperature).toBe(true)
})
+
+test("remaps fallback oauth model urls to the enterprise host", async () => {
+ globalThis.fetch = mock(() => Promise.reject(new Error("timeout"))) as unknown as typeof fetch
+
+ const hooks = await CopilotAuthPlugin({
+ client: {} as never,
+ project: {} as never,
+ directory: "",
+ worktree: "",
+ serverUrl: new URL("https://example.com"),
+ $: {} as never,
+ })
+
+ const models = await hooks.provider!.models!(
+ {
+ id: "github-copilot",
+ models: {
+ claude: {
+ id: "claude",
+ providerID: "github-copilot",
+ api: {
+ id: "claude-sonnet-4.5",
+ url: "https://api.githubcopilot.com/v1",
+ npm: "@ai-sdk/anthropic",
+ },
+ },
+ },
+ } as never,
+ {
+ auth: {
+ type: "oauth",
+ refresh: "token",
+ access: "token",
+ expires: Date.now() + 60_000,
+ enterpriseUrl: "ghe.example.com",
+ } as never,
+ },
+ )
+
+ expect(models.claude.api.url).toBe("https://copilot-api.ghe.example.com")
+ expect(models.claude.api.npm).toBe("@ai-sdk/github-copilot")
+})
diff --git a/packages/opencode/test/project/vcs.test.ts b/packages/opencode/test/project/vcs.test.ts
index a327f65fab..5461de5c33 100644
--- a/packages/opencode/test/project/vcs.test.ts
+++ b/packages/opencode/test/project/vcs.test.ts
@@ -1,8 +1,10 @@
import { $ } from "bun"
import { afterEach, describe, expect, test } from "bun:test"
+import { Effect } from "effect"
import fs from "fs/promises"
import path from "path"
import { tmpdir } from "../fixture/fixture"
+import { AppRuntime } from "../../src/effect/app-runtime"
import { FileWatcher } from "../../src/file/watcher"
import { Instance } from "../../src/project/instance"
import { GlobalBus } from "../../src/bus/global"
@@ -19,8 +21,14 @@ async function withVcs(directory: string, body: () => Promise) {
return Instance.provide({
directory,
fn: async () => {
- FileWatcher.init()
- Vcs.init()
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const watcher = yield* FileWatcher.Service
+ const vcs = yield* Vcs.Service
+ yield* watcher.init()
+ yield* vcs.init()
+ }),
+ )
await Bun.sleep(500)
await body()
},
@@ -31,7 +39,12 @@ function withVcsOnly(directory: string, body: () => Promise) {
return Instance.provide({
directory,
fn: async () => {
- Vcs.init()
+ await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ yield* vcs.init()
+ }),
+ )
await body()
},
})
@@ -79,7 +92,12 @@ describeVcs("Vcs", () => {
await using tmp = await tmpdir({ git: true })
await withVcs(tmp.path, async () => {
- const branch = await Vcs.branch()
+ const branch = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.branch()
+ }),
+ )
expect(branch).toBeDefined()
expect(typeof branch).toBe("string")
})
@@ -89,7 +107,12 @@ describeVcs("Vcs", () => {
await using tmp = await tmpdir()
await withVcs(tmp.path, async () => {
- const branch = await Vcs.branch()
+ const branch = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.branch()
+ }),
+ )
expect(branch).toBeUndefined()
})
})
@@ -122,7 +145,12 @@ describeVcs("Vcs", () => {
await fs.writeFile(head, `ref: refs/heads/${branch}\n`)
await pending
- const current = await Vcs.branch()
+ const current = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.branch()
+ }),
+ )
expect(current).toBe(branch)
})
})
@@ -138,7 +166,12 @@ describe("Vcs diff", () => {
await $`git branch -M main`.cwd(tmp.path).quiet()
await withVcsOnly(tmp.path, async () => {
- const branch = await Vcs.defaultBranch()
+ const branch = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.defaultBranch()
+ }),
+ )
expect(branch).toBe("main")
})
})
@@ -149,7 +182,12 @@ describe("Vcs diff", () => {
await $`git config init.defaultBranch trunk`.cwd(tmp.path).quiet()
await withVcsOnly(tmp.path, async () => {
- const branch = await Vcs.defaultBranch()
+ const branch = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.defaultBranch()
+ }),
+ )
expect(branch).toBe("trunk")
})
})
@@ -162,7 +200,12 @@ describe("Vcs diff", () => {
await $`git worktree add -b feature/test ${dir} HEAD`.cwd(tmp.path).quiet()
await withVcsOnly(dir, async () => {
- const [branch, base] = await Promise.all([Vcs.branch(), Vcs.defaultBranch()])
+ const [branch, base] = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* Effect.all([vcs.branch(), vcs.defaultBranch()], { concurrency: 2 })
+ }),
+ )
expect(branch).toBe("feature/test")
expect(base).toBe("main")
})
@@ -176,7 +219,12 @@ describe("Vcs diff", () => {
await fs.writeFile(path.join(tmp.path, "file.txt"), "changed\n", "utf-8")
await withVcsOnly(tmp.path, async () => {
- const diff = await Vcs.diff("git")
+ const diff = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.diff("git")
+ }),
+ )
expect(diff).toEqual(
expect.arrayContaining([
expect.objectContaining({
@@ -193,7 +241,12 @@ describe("Vcs diff", () => {
await fs.writeFile(path.join(tmp.path, weird), "hello\n", "utf-8")
await withVcsOnly(tmp.path, async () => {
- const diff = await Vcs.diff("git")
+ const diff = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.diff("git")
+ }),
+ )
expect(diff).toEqual(
expect.arrayContaining([
expect.objectContaining({
@@ -214,7 +267,12 @@ describe("Vcs diff", () => {
await $`git commit --no-gpg-sign -m "branch file"`.cwd(tmp.path).quiet()
await withVcsOnly(tmp.path, async () => {
- const diff = await Vcs.diff("branch")
+ const diff = await AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const vcs = yield* Vcs.Service
+ return yield* vcs.diff("branch")
+ }),
+ )
expect(diff).toEqual(
expect.arrayContaining([
expect.objectContaining({
diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts
index 3a001e2756..1b750d1b93 100644
--- a/packages/opencode/test/provider/transform.test.ts
+++ b/packages/opencode/test/provider/transform.test.ts
@@ -1842,6 +1842,11 @@ describe("ProviderTransform.message - cache control on gateway", () => {
type: "ephemeral",
},
},
+ alibaba: {
+ cacheControl: {
+ type: "ephemeral",
+ },
+ },
})
})
@@ -1894,6 +1899,11 @@ describe("ProviderTransform.message - cache control on gateway", () => {
type: "ephemeral",
},
},
+ alibaba: {
+ cacheControl: {
+ type: "ephemeral",
+ },
+ },
})
})
})
diff --git a/packages/opencode/test/pty/pty-output-isolation.test.ts b/packages/opencode/test/pty/pty-output-isolation.test.ts
index ec1bbd4690..9ef9741bad 100644
--- a/packages/opencode/test/pty/pty-output-isolation.test.ts
+++ b/packages/opencode/test/pty/pty-output-isolation.test.ts
@@ -1,4 +1,6 @@
import { describe, expect, test } from "bun:test"
+import { AppRuntime } from "../../src/effect/app-runtime"
+import { Effect } from "effect"
import { Instance } from "../../src/project/instance"
import { Pty } from "../../src/pty"
import { tmpdir } from "../fixture/fixture"
@@ -10,48 +12,48 @@ describe("pty", () => {
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const a = await Pty.create({ command: "cat", title: "a" })
- const b = await Pty.create({ command: "cat", title: "b" })
- try {
- const outA: string[] = []
- const outB: string[] = []
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const a = yield* pty.create({ command: "cat", title: "a" })
+ const b = yield* pty.create({ command: "cat", title: "b" })
+ try {
+ const outA: string[] = []
+ const outB: string[] = []
- const ws = {
- readyState: 1,
- data: { events: { connection: "a" } },
- send: (data: unknown) => {
- outA.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
- },
- close: () => {
- // no-op (simulate abrupt drop)
- },
- }
+ const ws = {
+ readyState: 1,
+ data: { events: { connection: "a" } },
+ send: (data: unknown) => {
+ outA.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
+ },
+ close: () => {
+ // no-op (simulate abrupt drop)
+ },
+ }
- // Connect "a" first with ws.
- Pty.connect(a.id, ws as any)
+ yield* pty.connect(a.id, ws as any)
- // Now "reuse" the same ws object for another connection.
- ws.data = { events: { connection: "b" } }
- ws.send = (data: unknown) => {
- outB.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
- }
- Pty.connect(b.id, ws as any)
+ ws.data = { events: { connection: "b" } }
+ ws.send = (data: unknown) => {
+ outB.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
+ }
+ yield* pty.connect(b.id, ws as any)
- // Clear connect metadata writes.
- outA.length = 0
- outB.length = 0
+ outA.length = 0
+ outB.length = 0
- // Output from a must never show up in b.
- Pty.write(a.id, "AAA\n")
- await sleep(100)
+ yield* pty.write(a.id, "AAA\n")
+ yield* Effect.promise(() => sleep(100))
- expect(outB.join("")).not.toContain("AAA")
- } finally {
- await Pty.remove(a.id)
- await Pty.remove(b.id)
- }
- },
+ expect(outB.join("")).not.toContain("AAA")
+ } finally {
+ yield* pty.remove(a.id)
+ yield* pty.remove(b.id)
+ }
+ }),
+ ),
})
})
@@ -60,42 +62,43 @@ describe("pty", () => {
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const a = await Pty.create({ command: "cat", title: "a" })
- try {
- const outA: string[] = []
- const outB: string[] = []
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const a = yield* pty.create({ command: "cat", title: "a" })
+ try {
+ const outA: string[] = []
+ const outB: string[] = []
- const ws = {
- readyState: 1,
- data: { events: { connection: "a" } },
- send: (data: unknown) => {
- outA.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
- },
- close: () => {
- // no-op (simulate abrupt drop)
- },
- }
+ const ws = {
+ readyState: 1,
+ data: { events: { connection: "a" } },
+ send: (data: unknown) => {
+ outA.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
+ },
+ close: () => {
+ // no-op (simulate abrupt drop)
+ },
+ }
- // Connect "a" first.
- Pty.connect(a.id, ws as any)
- outA.length = 0
+ yield* pty.connect(a.id, ws as any)
+ outA.length = 0
- // Simulate Bun reusing the same websocket object for another
- // connection before the next onOpen calls Pty.connect.
- ws.data = { events: { connection: "b" } }
- ws.send = (data: unknown) => {
- outB.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
- }
+ ws.data = { events: { connection: "b" } }
+ ws.send = (data: unknown) => {
+ outB.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
+ }
- Pty.write(a.id, "AAA\n")
- await sleep(100)
+ yield* pty.write(a.id, "AAA\n")
+ yield* Effect.promise(() => sleep(100))
- expect(outB.join("")).not.toContain("AAA")
- } finally {
- await Pty.remove(a.id)
- }
- },
+ expect(outB.join("")).not.toContain("AAA")
+ } finally {
+ yield* pty.remove(a.id)
+ }
+ }),
+ ),
})
})
@@ -104,38 +107,40 @@ describe("pty", () => {
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const a = await Pty.create({ command: "cat", title: "a" })
- try {
- const out: string[] = []
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const a = yield* pty.create({ command: "cat", title: "a" })
+ try {
+ const out: string[] = []
- const ctx = { connId: 1 }
- const ws = {
- readyState: 1,
- data: ctx,
- send: (data: unknown) => {
- out.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
- },
- close: () => {
- // no-op
- },
- }
+ const ctx = { connId: 1 }
+ const ws = {
+ readyState: 1,
+ data: ctx,
+ send: (data: unknown) => {
+ out.push(typeof data === "string" ? data : Buffer.from(data as Uint8Array).toString("utf8"))
+ },
+ close: () => {
+ // no-op
+ },
+ }
- Pty.connect(a.id, ws as any)
- out.length = 0
+ yield* pty.connect(a.id, ws as any)
+ out.length = 0
- // Mutating fields on ws.data should not look like a new
- // connection lifecycle when the object identity stays stable.
- ctx.connId = 2
+ ctx.connId = 2
- Pty.write(a.id, "AAA\n")
- await sleep(100)
+ yield* pty.write(a.id, "AAA\n")
+ yield* Effect.promise(() => sleep(100))
- expect(out.join("")).toContain("AAA")
- } finally {
- await Pty.remove(a.id)
- }
- },
+ expect(out.join("")).toContain("AAA")
+ } finally {
+ yield* pty.remove(a.id)
+ }
+ }),
+ ),
})
})
})
diff --git a/packages/opencode/test/pty/pty-session.test.ts b/packages/opencode/test/pty/pty-session.test.ts
index f7a949c921..3e4d658355 100644
--- a/packages/opencode/test/pty/pty-session.test.ts
+++ b/packages/opencode/test/pty/pty-session.test.ts
@@ -1,5 +1,7 @@
import { describe, expect, test } from "bun:test"
+import { AppRuntime } from "../../src/effect/app-runtime"
import { Bus } from "../../src/bus"
+import { Effect } from "effect"
import { Instance } from "../../src/project/instance"
import { Pty } from "../../src/pty"
import type { PtyID } from "../../src/pty/schema"
@@ -27,33 +29,37 @@ describe("pty", () => {
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const log: Array<{ type: "created" | "exited" | "deleted"; id: PtyID }> = []
- const off = [
- Bus.subscribe(Pty.Event.Created, (evt) => log.push({ type: "created", id: evt.properties.info.id })),
- Bus.subscribe(Pty.Event.Exited, (evt) => log.push({ type: "exited", id: evt.properties.id })),
- Bus.subscribe(Pty.Event.Deleted, (evt) => log.push({ type: "deleted", id: evt.properties.id })),
- ]
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const log: Array<{ type: "created" | "exited" | "deleted"; id: PtyID }> = []
+ const off = [
+ Bus.subscribe(Pty.Event.Created, (evt) => log.push({ type: "created", id: evt.properties.info.id })),
+ Bus.subscribe(Pty.Event.Exited, (evt) => log.push({ type: "exited", id: evt.properties.id })),
+ Bus.subscribe(Pty.Event.Deleted, (evt) => log.push({ type: "deleted", id: evt.properties.id })),
+ ]
- let id: PtyID | undefined
- try {
- const info = await Pty.create({
- command: "/usr/bin/env",
- args: ["sh", "-c", "sleep 0.1"],
- title: "sleep",
- })
- id = info.id
+ let id: PtyID | undefined
+ try {
+ const info = yield* pty.create({
+ command: "/usr/bin/env",
+ args: ["sh", "-c", "sleep 0.1"],
+ title: "sleep",
+ })
+ id = info.id
- await wait(() => pick(log, id!).includes("exited"))
+ yield* Effect.promise(() => wait(() => pick(log, id!).includes("exited")))
- await Pty.remove(id)
- await wait(() => pick(log, id!).length >= 3)
- expect(pick(log, id!)).toEqual(["created", "exited", "deleted"])
- } finally {
- off.forEach((x) => x())
- if (id) await Pty.remove(id)
- }
- },
+ yield* pty.remove(id)
+ yield* Effect.promise(() => wait(() => pick(log, id!).length >= 3))
+ expect(pick(log, id!)).toEqual(["created", "exited", "deleted"])
+ } finally {
+ off.forEach((x) => x())
+ if (id) yield* pty.remove(id)
+ }
+ }),
+ ),
})
})
@@ -64,29 +70,33 @@ describe("pty", () => {
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const log: Array<{ type: "created" | "exited" | "deleted"; id: PtyID }> = []
- const off = [
- Bus.subscribe(Pty.Event.Created, (evt) => log.push({ type: "created", id: evt.properties.info.id })),
- Bus.subscribe(Pty.Event.Exited, (evt) => log.push({ type: "exited", id: evt.properties.id })),
- Bus.subscribe(Pty.Event.Deleted, (evt) => log.push({ type: "deleted", id: evt.properties.id })),
- ]
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const log: Array<{ type: "created" | "exited" | "deleted"; id: PtyID }> = []
+ const off = [
+ Bus.subscribe(Pty.Event.Created, (evt) => log.push({ type: "created", id: evt.properties.info.id })),
+ Bus.subscribe(Pty.Event.Exited, (evt) => log.push({ type: "exited", id: evt.properties.id })),
+ Bus.subscribe(Pty.Event.Deleted, (evt) => log.push({ type: "deleted", id: evt.properties.id })),
+ ]
- let id: PtyID | undefined
- try {
- const info = await Pty.create({ command: "/bin/sh", title: "sh" })
- id = info.id
+ let id: PtyID | undefined
+ try {
+ const info = yield* pty.create({ command: "/bin/sh", title: "sh" })
+ id = info.id
- await sleep(100)
+ yield* Effect.promise(() => sleep(100))
- await Pty.remove(id)
- await wait(() => pick(log, id!).length >= 3)
- expect(pick(log, id!)).toEqual(["created", "exited", "deleted"])
- } finally {
- off.forEach((x) => x())
- if (id) await Pty.remove(id)
- }
- },
+ yield* pty.remove(id)
+ yield* Effect.promise(() => wait(() => pick(log, id!).length >= 3))
+ expect(pick(log, id!)).toEqual(["created", "exited", "deleted"])
+ } finally {
+ off.forEach((x) => x())
+ if (id) yield* pty.remove(id)
+ }
+ }),
+ ),
})
})
})
diff --git a/packages/opencode/test/pty/pty-shell.test.ts b/packages/opencode/test/pty/pty-shell.test.ts
index 65e7e1f901..d5182061d0 100644
--- a/packages/opencode/test/pty/pty-shell.test.ts
+++ b/packages/opencode/test/pty/pty-shell.test.ts
@@ -1,4 +1,6 @@
import { describe, expect, test } from "bun:test"
+import { AppRuntime } from "../../src/effect/app-runtime"
+import { Effect } from "effect"
import { Instance } from "../../src/project/instance"
import { Pty } from "../../src/pty"
import { Shell } from "../../src/shell/shell"
@@ -17,14 +19,18 @@ describe("pty shell args", () => {
await using dir = await tmpdir()
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const info = await Pty.create({ command: ps, title: "pwsh" })
- try {
- expect(info.args).toEqual([])
- } finally {
- await Pty.remove(info.id)
- }
- },
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const info = yield* pty.create({ command: ps, title: "pwsh" })
+ try {
+ expect(info.args).toEqual([])
+ } finally {
+ yield* pty.remove(info.id)
+ }
+ }),
+ ),
})
},
{ timeout: 30000 },
@@ -43,14 +49,18 @@ describe("pty shell args", () => {
await using dir = await tmpdir()
await Instance.provide({
directory: dir.path,
- fn: async () => {
- const info = await Pty.create({ command: bash, title: "bash" })
- try {
- expect(info.args).toEqual(["-l"])
- } finally {
- await Pty.remove(info.id)
- }
- },
+ fn: () =>
+ AppRuntime.runPromise(
+ Effect.gen(function* () {
+ const pty = yield* Pty.Service
+ const info = yield* pty.create({ command: bash, title: "bash" })
+ try {
+ expect(info.args).toEqual(["-l"])
+ } finally {
+ yield* pty.remove(info.id)
+ }
+ }),
+ ),
})
},
{ timeout: 30000 },
diff --git a/packages/opencode/test/question/question.test.ts b/packages/opencode/test/question/question.test.ts
index adfeda395a..7c101ce285 100644
--- a/packages/opencode/test/question/question.test.ts
+++ b/packages/opencode/test/question/question.test.ts
@@ -4,6 +4,17 @@ import { Instance } from "../../src/project/instance"
import { QuestionID } from "../../src/question/schema"
import { tmpdir } from "../fixture/fixture"
import { SessionID } from "../../src/session/schema"
+import { AppRuntime } from "../../src/effect/app-runtime"
+
+const ask = (input: { sessionID: SessionID; questions: Question.Info[]; tool?: { messageID: any; callID: string } }) =>
+ AppRuntime.runPromise(Question.Service.use((svc) => svc.ask(input)))
+
+const list = () => AppRuntime.runPromise(Question.Service.use((svc) => svc.list()))
+
+const reply = (input: { requestID: QuestionID; answers: Question.Answer[] }) =>
+ AppRuntime.runPromise(Question.Service.use((svc) => svc.reply(input)))
+
+const reject = (id: QuestionID) => AppRuntime.runPromise(Question.Service.use((svc) => svc.reject(id)))
afterEach(async () => {
await Instance.disposeAll()
@@ -11,9 +22,9 @@ afterEach(async () => {
/** Reject all pending questions so dangling Deferred fibers don't hang the test. */
async function rejectAll() {
- const pending = await Question.list()
+ const pending = await list()
for (const req of pending) {
- await Question.reject(req.id)
+ await reject(req.id)
}
}
@@ -22,7 +33,7 @@ test("ask - returns pending promise", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const promise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions: [
{
@@ -58,16 +69,16 @@ test("ask - adds to pending list", async () => {
},
]
- const askPromise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions,
})
- const pending = await Question.list()
+ const pending = await list()
expect(pending.length).toBe(1)
expect(pending[0].questions).toEqual(questions)
await rejectAll()
- await askPromise.catch(() => {})
+ await promise.catch(() => {})
},
})
})
@@ -90,20 +101,20 @@ test("reply - resolves the pending ask with answers", async () => {
},
]
- const askPromise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions,
})
- const pending = await Question.list()
+ const pending = await list()
const requestID = pending[0].id
- await Question.reply({
+ await reply({
requestID,
answers: [["Option 1"]],
})
- const answers = await askPromise
+ const answers = await promise
expect(answers).toEqual([["Option 1"]])
},
})
@@ -114,7 +125,7 @@ test("reply - removes from pending list", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const askPromise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions: [
{
@@ -128,17 +139,17 @@ test("reply - removes from pending list", async () => {
],
})
- const pending = await Question.list()
+ const pending = await list()
expect(pending.length).toBe(1)
- await Question.reply({
+ await reply({
requestID: pending[0].id,
answers: [["Option 1"]],
})
- await askPromise
+ await promise
- const pendingAfter = await Question.list()
- expect(pendingAfter.length).toBe(0)
+ const after = await list()
+ expect(after.length).toBe(0)
},
})
})
@@ -148,7 +159,7 @@ test("reply - does nothing for unknown requestID", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- await Question.reply({
+ await reply({
requestID: QuestionID.make("que_unknown"),
answers: [["Option 1"]],
})
@@ -164,7 +175,7 @@ test("reject - throws RejectedError", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const askPromise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions: [
{
@@ -178,10 +189,10 @@ test("reject - throws RejectedError", async () => {
],
})
- const pending = await Question.list()
- await Question.reject(pending[0].id)
+ const pending = await list()
+ await reject(pending[0].id)
- await expect(askPromise).rejects.toBeInstanceOf(Question.RejectedError)
+ await expect(promise).rejects.toBeInstanceOf(Question.RejectedError)
},
})
})
@@ -191,7 +202,7 @@ test("reject - removes from pending list", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const askPromise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions: [
{
@@ -205,14 +216,14 @@ test("reject - removes from pending list", async () => {
],
})
- const pending = await Question.list()
+ const pending = await list()
expect(pending.length).toBe(1)
- await Question.reject(pending[0].id)
- askPromise.catch(() => {}) // Ignore rejection
+ await reject(pending[0].id)
+ promise.catch(() => {}) // Ignore rejection
- const pendingAfter = await Question.list()
- expect(pendingAfter.length).toBe(0)
+ const after = await list()
+ expect(after.length).toBe(0)
},
})
})
@@ -222,7 +233,7 @@ test("reject - does nothing for unknown requestID", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- await Question.reject(QuestionID.make("que_unknown"))
+ await reject(QuestionID.make("que_unknown"))
// Should not throw
},
})
@@ -254,19 +265,19 @@ test("ask - handles multiple questions", async () => {
},
]
- const askPromise = Question.ask({
+ const promise = ask({
sessionID: SessionID.make("ses_test"),
questions,
})
- const pending = await Question.list()
+ const pending = await list()
- await Question.reply({
+ await reply({
requestID: pending[0].id,
answers: [["Build"], ["Dev"]],
})
- const answers = await askPromise
+ const answers = await promise
expect(answers).toEqual([["Build"], ["Dev"]])
},
})
@@ -279,7 +290,7 @@ test("list - returns all pending requests", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const p1 = Question.ask({
+ const p1 = ask({
sessionID: SessionID.make("ses_test1"),
questions: [
{
@@ -290,7 +301,7 @@ test("list - returns all pending requests", async () => {
],
})
- const p2 = Question.ask({
+ const p2 = ask({
sessionID: SessionID.make("ses_test2"),
questions: [
{
@@ -301,7 +312,7 @@ test("list - returns all pending requests", async () => {
],
})
- const pending = await Question.list()
+ const pending = await list()
expect(pending.length).toBe(2)
await rejectAll()
p1.catch(() => {})
@@ -315,7 +326,7 @@ test("list - returns empty when no pending", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const pending = await Question.list()
+ const pending = await list()
expect(pending.length).toBe(0)
},
})
@@ -328,7 +339,7 @@ test("questions stay isolated by directory", async () => {
const p1 = Instance.provide({
directory: one.path,
fn: () =>
- Question.ask({
+ ask({
sessionID: SessionID.make("ses_one"),
questions: [
{
@@ -343,7 +354,7 @@ test("questions stay isolated by directory", async () => {
const p2 = Instance.provide({
directory: two.path,
fn: () =>
- Question.ask({
+ ask({
sessionID: SessionID.make("ses_two"),
questions: [
{
@@ -357,11 +368,11 @@ test("questions stay isolated by directory", async () => {
const onePending = await Instance.provide({
directory: one.path,
- fn: () => Question.list(),
+ fn: () => list(),
})
const twoPending = await Instance.provide({
directory: two.path,
- fn: () => Question.list(),
+ fn: () => list(),
})
expect(onePending.length).toBe(1)
@@ -371,11 +382,11 @@ test("questions stay isolated by directory", async () => {
await Instance.provide({
directory: one.path,
- fn: () => Question.reject(onePending[0].id),
+ fn: () => reject(onePending[0].id),
})
await Instance.provide({
directory: two.path,
- fn: () => Question.reject(twoPending[0].id),
+ fn: () => reject(twoPending[0].id),
})
await p1.catch(() => {})
@@ -385,10 +396,10 @@ test("questions stay isolated by directory", async () => {
test("pending question rejects on instance dispose", async () => {
await using tmp = await tmpdir({ git: true })
- const ask = Instance.provide({
+ const pending = Instance.provide({
directory: tmp.path,
fn: () => {
- return Question.ask({
+ return ask({
sessionID: SessionID.make("ses_dispose"),
questions: [
{
@@ -400,7 +411,7 @@ test("pending question rejects on instance dispose", async () => {
})
},
})
- const result = ask.then(
+ const result = pending.then(
() => "resolved" as const,
(err) => err,
)
@@ -408,8 +419,8 @@ test("pending question rejects on instance dispose", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const pending = await Question.list()
- expect(pending).toHaveLength(1)
+ const items = await list()
+ expect(items).toHaveLength(1)
await Instance.dispose()
},
})
@@ -420,10 +431,10 @@ test("pending question rejects on instance dispose", async () => {
test("pending question rejects on instance reload", async () => {
await using tmp = await tmpdir({ git: true })
- const ask = Instance.provide({
+ const pending = Instance.provide({
directory: tmp.path,
fn: () => {
- return Question.ask({
+ return ask({
sessionID: SessionID.make("ses_reload"),
questions: [
{
@@ -435,7 +446,7 @@ test("pending question rejects on instance reload", async () => {
})
},
})
- const result = ask.then(
+ const result = pending.then(
() => "resolved" as const,
(err) => err,
)
@@ -443,8 +454,8 @@ test("pending question rejects on instance reload", async () => {
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const pending = await Question.list()
- expect(pending).toHaveLength(1)
+ const items = await list()
+ expect(items).toHaveLength(1)
await Instance.reload({ directory: tmp.path })
},
})
diff --git a/packages/opencode/test/server/project-init-git.test.ts b/packages/opencode/test/server/project-init-git.test.ts
index eca562a0f5..8cb159d9a3 100644
--- a/packages/opencode/test/server/project-init-git.test.ts
+++ b/packages/opencode/test/server/project-init-git.test.ts
@@ -43,7 +43,6 @@ describe("project.initGit endpoint", () => {
worktree: tmp.path,
})
expect(reloadSpy).toHaveBeenCalledTimes(1)
- expect(reloadSpy.mock.calls[0]?.[0]?.init).toBe(InstanceBootstrap)
expect(seen.some((evt) => evt.directory === tmp.path && evt.payload.type === "server.instance.disposed")).toBe(
true,
)
diff --git a/packages/opencode/test/server/session-actions.test.ts b/packages/opencode/test/server/session-actions.test.ts
index 4ab485965e..29032c69cf 100644
--- a/packages/opencode/test/server/session-actions.test.ts
+++ b/packages/opencode/test/server/session-actions.test.ts
@@ -1,11 +1,9 @@
import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
+import { Effect } from "effect"
import { Instance } from "../../src/project/instance"
import { Server } from "../../src/server/server"
import { Session } from "../../src/session"
-import { ModelID, ProviderID } from "../../src/provider/schema"
-import { MessageID, PartID, type SessionID } from "../../src/session/schema"
import { SessionPrompt } from "../../src/session/prompt"
-import { SessionRunState } from "../../src/session/run-state"
import { Log } from "../../src/util/log"
import { tmpdir } from "../fixture/fixture"
@@ -16,25 +14,6 @@ afterEach(async () => {
await Instance.disposeAll()
})
-async function user(sessionID: SessionID, text: string) {
- const msg = await Session.updateMessage({
- id: MessageID.ascending(),
- role: "user",
- sessionID,
- agent: "build",
- model: { providerID: ProviderID.make("test"), modelID: ModelID.make("test") },
- time: { created: Date.now() },
- })
- await Session.updatePart({
- id: PartID.ascending(),
- sessionID,
- messageID: msg.id,
- type: "text",
- text,
- })
- return msg
-}
-
describe("session action routes", () => {
test("abort route calls SessionPrompt.cancel", async () => {
await using tmp = await tmpdir({ git: true })
@@ -45,9 +24,7 @@ describe("session action routes", () => {
const cancel = spyOn(SessionPrompt, "cancel").mockResolvedValue()
const app = Server.Default().app
- const res = await app.request(`/session/${session.id}/abort`, {
- method: "POST",
- })
+ const res = await app.request(`/session/${session.id}/abort`, { method: "POST" })
expect(res.status).toBe(200)
expect(await res.json()).toBe(true)
@@ -57,28 +34,4 @@ describe("session action routes", () => {
},
})
})
-
- test("delete message route returns 400 when session is busy", async () => {
- await using tmp = await tmpdir({ git: true })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const session = await Session.create({})
- const msg = await user(session.id, "hello")
- const busy = spyOn(SessionRunState, "assertNotBusy").mockRejectedValue(new Session.BusyError(session.id))
- const remove = spyOn(Session, "removeMessage").mockResolvedValue(msg.id)
- const app = Server.Default().app
-
- const res = await app.request(`/session/${session.id}/message/${msg.id}`, {
- method: "DELETE",
- })
-
- expect(res.status).toBe(400)
- expect(busy).toHaveBeenCalledWith(session.id)
- expect(remove).not.toHaveBeenCalled()
-
- await Session.remove(session.id)
- },
- })
- })
})
diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts
index 76a83c34da..61b47df34a 100644
--- a/packages/opencode/test/session/compaction.test.ts
+++ b/packages/opencode/test/session/compaction.test.ts
@@ -1005,6 +1005,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
+ inputTokenDetails: {
+ noCacheTokens: undefined,
+ cacheReadTokens: undefined,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
})
@@ -1023,7 +1032,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
- cachedInputTokens: 200,
+ inputTokenDetails: {
+ noCacheTokens: 800,
+ cacheReadTokens: 200,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
})
@@ -1039,6 +1056,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
+ inputTokenDetails: {
+ noCacheTokens: undefined,
+ cacheReadTokens: undefined,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
metadata: {
anthropic: {
@@ -1059,7 +1085,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
- cachedInputTokens: 200,
+ inputTokenDetails: {
+ noCacheTokens: 800,
+ cacheReadTokens: 200,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
metadata: {
anthropic: {},
@@ -1078,7 +1112,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
- reasoningTokens: 100,
+ inputTokenDetails: {
+ noCacheTokens: undefined,
+ cacheReadTokens: undefined,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: 400,
+ reasoningTokens: 100,
+ },
},
})
@@ -1104,7 +1146,15 @@ describe("session.getUsage", () => {
inputTokens: 0,
outputTokens: 1_000_000,
totalTokens: 1_000_000,
- reasoningTokens: 250_000,
+ inputTokenDetails: {
+ noCacheTokens: undefined,
+ cacheReadTokens: undefined,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: 750_000,
+ reasoningTokens: 250_000,
+ },
},
})
@@ -1121,6 +1171,15 @@ describe("session.getUsage", () => {
inputTokens: 0,
outputTokens: 0,
totalTokens: 0,
+ inputTokenDetails: {
+ noCacheTokens: undefined,
+ cacheReadTokens: undefined,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
})
@@ -1148,6 +1207,15 @@ describe("session.getUsage", () => {
inputTokens: 1_000_000,
outputTokens: 100_000,
totalTokens: 1_100_000,
+ inputTokenDetails: {
+ noCacheTokens: undefined,
+ cacheReadTokens: undefined,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
})
@@ -1163,7 +1231,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
- cachedInputTokens: 200,
+ inputTokenDetails: {
+ noCacheTokens: 800,
+ cacheReadTokens: 200,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
}
if (npm === "@ai-sdk/amazon-bedrock") {
const result = Session.getUsage({
@@ -1214,7 +1290,15 @@ describe("session.getUsage", () => {
inputTokens: 1000,
outputTokens: 500,
totalTokens: 1500,
- cachedInputTokens: 200,
+ inputTokenDetails: {
+ noCacheTokens: 800,
+ cacheReadTokens: 200,
+ cacheWriteTokens: undefined,
+ },
+ outputTokenDetails: {
+ textTokens: undefined,
+ reasoningTokens: undefined,
+ },
},
metadata: {
vertex: {
diff --git a/packages/opencode/test/session/instruction.test.ts b/packages/opencode/test/session/instruction.test.ts
index a8c25c6f0e..4ba3b78e42 100644
--- a/packages/opencode/test/session/instruction.test.ts
+++ b/packages/opencode/test/session/instruction.test.ts
@@ -1,5 +1,6 @@
import { afterEach, beforeEach, describe, expect, test } from "bun:test"
import path from "path"
+import { Effect } from "effect"
import { ModelID, ProviderID } from "../../src/provider/schema"
import { Instruction } from "../../src/session/instruction"
import type { MessageV2 } from "../../src/session/message-v2"
@@ -8,6 +9,9 @@ import { MessageID, PartID, SessionID } from "../../src/session/schema"
import { Global } from "../../src/global"
import { tmpdir } from "../fixture/fixture"
+const run = (effect: Effect.Effect) =>
+ Effect.runPromise(effect.pipe(Effect.provide(Instruction.defaultLayer)))
+
function loaded(filepath: string): MessageV2.WithParts[] {
const sessionID = SessionID.make("session-loaded-1")
const messageID = MessageID.make("message-loaded-1")
@@ -57,17 +61,22 @@ describe("Instruction.resolve", () => {
})
await Instance.provide({
directory: tmp.path,
- fn: async () => {
- const system = await Instruction.systemPaths()
- expect(system.has(path.join(tmp.path, "AGENTS.md"))).toBe(true)
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const system = yield* svc.systemPaths()
+ expect(system.has(path.join(tmp.path, "AGENTS.md"))).toBe(true)
- const results = await Instruction.resolve(
- [],
- path.join(tmp.path, "src", "file.ts"),
- MessageID.make("message-test-1"),
- )
- expect(results).toEqual([])
- },
+ const results = yield* svc.resolve(
+ [],
+ path.join(tmp.path, "src", "file.ts"),
+ MessageID.make("message-test-1"),
+ )
+ expect(results).toEqual([])
+ }),
+ ),
+ ),
})
})
@@ -80,18 +89,23 @@ describe("Instruction.resolve", () => {
})
await Instance.provide({
directory: tmp.path,
- fn: async () => {
- const system = await Instruction.systemPaths()
- expect(system.has(path.join(tmp.path, "subdir", "AGENTS.md"))).toBe(false)
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const system = yield* svc.systemPaths()
+ expect(system.has(path.join(tmp.path, "subdir", "AGENTS.md"))).toBe(false)
- const results = await Instruction.resolve(
- [],
- path.join(tmp.path, "subdir", "nested", "file.ts"),
- MessageID.make("message-test-2"),
- )
- expect(results.length).toBe(1)
- expect(results[0].filepath).toBe(path.join(tmp.path, "subdir", "AGENTS.md"))
- },
+ const results = yield* svc.resolve(
+ [],
+ path.join(tmp.path, "subdir", "nested", "file.ts"),
+ MessageID.make("message-test-2"),
+ )
+ expect(results.length).toBe(1)
+ expect(results[0].filepath).toBe(path.join(tmp.path, "subdir", "AGENTS.md"))
+ }),
+ ),
+ ),
})
})
@@ -104,14 +118,19 @@ describe("Instruction.resolve", () => {
})
await Instance.provide({
directory: tmp.path,
- fn: async () => {
- const filepath = path.join(tmp.path, "subdir", "AGENTS.md")
- const system = await Instruction.systemPaths()
- expect(system.has(filepath)).toBe(false)
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const filepath = path.join(tmp.path, "subdir", "AGENTS.md")
+ const system = yield* svc.systemPaths()
+ expect(system.has(filepath)).toBe(false)
- const results = await Instruction.resolve([], filepath, MessageID.make("message-test-3"))
- expect(results).toEqual([])
- },
+ const results = yield* svc.resolve([], filepath, MessageID.make("message-test-3"))
+ expect(results).toEqual([])
+ }),
+ ),
+ ),
})
})
@@ -124,17 +143,22 @@ describe("Instruction.resolve", () => {
})
await Instance.provide({
directory: tmp.path,
- fn: async () => {
- const filepath = path.join(tmp.path, "subdir", "nested", "file.ts")
- const id = MessageID.make("message-claim-1")
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const filepath = path.join(tmp.path, "subdir", "nested", "file.ts")
+ const id = MessageID.make("message-claim-1")
- const first = await Instruction.resolve([], filepath, id)
- const second = await Instruction.resolve([], filepath, id)
+ const first = yield* svc.resolve([], filepath, id)
+ const second = yield* svc.resolve([], filepath, id)
- expect(first).toHaveLength(1)
- expect(first[0].filepath).toBe(path.join(tmp.path, "subdir", "AGENTS.md"))
- expect(second).toEqual([])
- },
+ expect(first).toHaveLength(1)
+ expect(first[0].filepath).toBe(path.join(tmp.path, "subdir", "AGENTS.md"))
+ expect(second).toEqual([])
+ }),
+ ),
+ ),
})
})
@@ -147,18 +171,23 @@ describe("Instruction.resolve", () => {
})
await Instance.provide({
directory: tmp.path,
- fn: async () => {
- const filepath = path.join(tmp.path, "subdir", "nested", "file.ts")
- const id = MessageID.make("message-claim-2")
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const filepath = path.join(tmp.path, "subdir", "nested", "file.ts")
+ const id = MessageID.make("message-claim-2")
- const first = await Instruction.resolve([], filepath, id)
- await Instruction.clear(id)
- const second = await Instruction.resolve([], filepath, id)
+ const first = yield* svc.resolve([], filepath, id)
+ yield* svc.clear(id)
+ const second = yield* svc.resolve([], filepath, id)
- expect(first).toHaveLength(1)
- expect(second).toHaveLength(1)
- expect(second[0].filepath).toBe(path.join(tmp.path, "subdir", "AGENTS.md"))
- },
+ expect(first).toHaveLength(1)
+ expect(second).toHaveLength(1)
+ expect(second[0].filepath).toBe(path.join(tmp.path, "subdir", "AGENTS.md"))
+ }),
+ ),
+ ),
})
})
@@ -171,15 +200,19 @@ describe("Instruction.resolve", () => {
})
await Instance.provide({
directory: tmp.path,
- fn: async () => {
- const agents = path.join(tmp.path, "subdir", "AGENTS.md")
- const filepath = path.join(tmp.path, "subdir", "nested", "file.ts")
- const id = MessageID.make("message-claim-3")
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const agents = path.join(tmp.path, "subdir", "AGENTS.md")
+ const filepath = path.join(tmp.path, "subdir", "nested", "file.ts")
+ const id = MessageID.make("message-claim-3")
- const results = await Instruction.resolve(loaded(agents), filepath, id)
-
- expect(results).toEqual([])
- },
+ const results = yield* svc.resolve(loaded(agents), filepath, id)
+ expect(results).toEqual([])
+ }),
+ ),
+ ),
})
})
@@ -221,11 +254,16 @@ describe("Instruction.systemPaths OPENCODE_CONFIG_DIR", () => {
try {
await Instance.provide({
directory: projectTmp.path,
- fn: async () => {
- const paths = await Instruction.systemPaths()
- expect(paths.has(path.join(profileTmp.path, "AGENTS.md"))).toBe(true)
- expect(paths.has(path.join(globalTmp.path, "AGENTS.md"))).toBe(false)
- },
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const paths = yield* svc.systemPaths()
+ expect(paths.has(path.join(profileTmp.path, "AGENTS.md"))).toBe(true)
+ expect(paths.has(path.join(globalTmp.path, "AGENTS.md"))).toBe(false)
+ }),
+ ),
+ ),
})
} finally {
;(Global.Path as { config: string }).config = originalGlobalConfig
@@ -248,11 +286,16 @@ describe("Instruction.systemPaths OPENCODE_CONFIG_DIR", () => {
try {
await Instance.provide({
directory: projectTmp.path,
- fn: async () => {
- const paths = await Instruction.systemPaths()
- expect(paths.has(path.join(profileTmp.path, "AGENTS.md"))).toBe(false)
- expect(paths.has(path.join(globalTmp.path, "AGENTS.md"))).toBe(true)
- },
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const paths = yield* svc.systemPaths()
+ expect(paths.has(path.join(profileTmp.path, "AGENTS.md"))).toBe(false)
+ expect(paths.has(path.join(globalTmp.path, "AGENTS.md"))).toBe(true)
+ }),
+ ),
+ ),
})
} finally {
;(Global.Path as { config: string }).config = originalGlobalConfig
@@ -274,10 +317,15 @@ describe("Instruction.systemPaths OPENCODE_CONFIG_DIR", () => {
try {
await Instance.provide({
directory: projectTmp.path,
- fn: async () => {
- const paths = await Instruction.systemPaths()
- expect(paths.has(path.join(globalTmp.path, "AGENTS.md"))).toBe(true)
- },
+ fn: () =>
+ run(
+ Instruction.Service.use((svc) =>
+ Effect.gen(function* () {
+ const paths = yield* svc.systemPaths()
+ expect(paths.has(path.join(globalTmp.path, "AGENTS.md"))).toBe(true)
+ }),
+ ),
+ ),
})
} finally {
;(Global.Path as { config: string }).config = originalGlobalConfig
diff --git a/packages/opencode/test/skill/skill.test.ts b/packages/opencode/test/skill/skill.test.ts
index 12e16f86a1..0a14e30b7d 100644
--- a/packages/opencode/test/skill/skill.test.ts
+++ b/packages/opencode/test/skill/skill.test.ts
@@ -1,13 +1,17 @@
-import { afterEach, test, expect } from "bun:test"
+import { NodeChildProcessSpawner, NodeFileSystem, NodePath } from "@effect/platform-node"
+import { describe, expect } from "bun:test"
+import { Effect, Layer } from "effect"
import { Skill } from "../../src/skill"
-import { Instance } from "../../src/project/instance"
-import { tmpdir } from "../fixture/fixture"
+import { provideInstance, provideTmpdirInstance, tmpdir } from "../fixture/fixture"
+import { testEffect } from "../lib/effect"
import path from "path"
import fs from "fs/promises"
-afterEach(async () => {
- await Instance.disposeAll()
-})
+const node = NodeChildProcessSpawner.layer.pipe(
+ Layer.provideMerge(Layer.mergeAll(NodeFileSystem.layer, NodePath.layer)),
+)
+
+const it = testEffect(Layer.mergeAll(Skill.defaultLayer, node))
async function createGlobalSkill(homeDir: string) {
const skillDir = path.join(homeDir, ".claude", "skills", "global-test-skill")
@@ -26,14 +30,29 @@ This skill is loaded from the global home directory.
)
}
-test("discovers skills from .opencode/skill/ directory", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir = path.join(dir, ".opencode", "skill", "test-skill")
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+const withHome = (home: string, self: Effect.Effect) =>
+ Effect.acquireUseRelease(
+ Effect.sync(() => {
+ const prev = process.env.OPENCODE_TEST_HOME
+ process.env.OPENCODE_TEST_HOME = home
+ return prev
+ }),
+ () => self,
+ (prev) =>
+ Effect.sync(() => {
+ process.env.OPENCODE_TEST_HOME = prev
+ }),
+ )
+
+describe("skill", () => {
+ it.live("discovers skills from .opencode/skill/ directory", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(dir, ".opencode", "skill", "test-skill", "SKILL.md"),
+ `---
name: test-skill
description: A test skill for verification.
---
@@ -42,230 +61,217 @@ description: A test skill for verification.
Instructions here.
`,
- )
- },
- })
+ ),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(1)
- const testSkill = skills.find((s) => s.name === "test-skill")
- expect(testSkill).toBeDefined()
- expect(testSkill!.description).toBe("A test skill for verification.")
- expect(testSkill!.location).toContain(path.join("skill", "test-skill", "SKILL.md"))
- },
- })
-})
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(1)
+ const item = list.find((x) => x.name === "test-skill")
+ expect(item).toBeDefined()
+ expect(item!.description).toBe("A test skill for verification.")
+ expect(item!.location).toContain(path.join("skill", "test-skill", "SKILL.md"))
+ }),
+ { git: true },
+ ),
+ )
-test("returns skill directories from Skill.dirs", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir = path.join(dir, ".opencode", "skill", "dir-skill")
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+ it.live("returns skill directories from Skill.dirs", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ withHome(
+ dir,
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(dir, ".opencode", "skill", "dir-skill", "SKILL.md"),
+ `---
name: dir-skill
description: Skill for dirs test.
---
# Dir Skill
`,
- )
- },
- })
+ ),
+ )
- const home = process.env.OPENCODE_TEST_HOME
- process.env.OPENCODE_TEST_HOME = tmp.path
+ const skill = yield* Skill.Service
+ const dirs = yield* skill.dirs()
+ expect(dirs).toContain(path.join(dir, ".opencode", "skill", "dir-skill"))
+ expect(dirs.length).toBe(1)
+ }),
+ ),
+ { git: true },
+ ),
+ )
- try {
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const dirs = await Skill.dirs()
- const skillDir = path.join(tmp.path, ".opencode", "skill", "dir-skill")
- expect(dirs).toContain(skillDir)
- expect(dirs.length).toBe(1)
- },
- })
- } finally {
- process.env.OPENCODE_TEST_HOME = home
- }
-})
-
-test("discovers multiple skills from .opencode/skill/ directory", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir1 = path.join(dir, ".opencode", "skill", "skill-one")
- const skillDir2 = path.join(dir, ".opencode", "skill", "skill-two")
- await Bun.write(
- path.join(skillDir1, "SKILL.md"),
- `---
+ it.live("discovers multiple skills from .opencode/skill/ directory", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Promise.all([
+ Bun.write(
+ path.join(dir, ".opencode", "skill", "skill-one", "SKILL.md"),
+ `---
name: skill-one
description: First test skill.
---
# Skill One
`,
- )
- await Bun.write(
- path.join(skillDir2, "SKILL.md"),
- `---
+ ),
+ Bun.write(
+ path.join(dir, ".opencode", "skill", "skill-two", "SKILL.md"),
+ `---
name: skill-two
description: Second test skill.
---
# Skill Two
`,
- )
- },
- })
+ ),
+ ]),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(2)
- expect(skills.find((s) => s.name === "skill-one")).toBeDefined()
- expect(skills.find((s) => s.name === "skill-two")).toBeDefined()
- },
- })
-})
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(2)
+ expect(list.find((x) => x.name === "skill-one")).toBeDefined()
+ expect(list.find((x) => x.name === "skill-two")).toBeDefined()
+ }),
+ { git: true },
+ ),
+ )
-test("skips skills with missing frontmatter", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir = path.join(dir, ".opencode", "skill", "no-frontmatter")
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `# No Frontmatter
+ it.live("skips skills with missing frontmatter", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(dir, ".opencode", "skill", "no-frontmatter", "SKILL.md"),
+ `# No Frontmatter
Just some content without YAML frontmatter.
`,
- )
- },
- })
+ ),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills).toEqual([])
- },
- })
-})
+ const skill = yield* Skill.Service
+ expect(yield* skill.all()).toEqual([])
+ }),
+ { git: true },
+ ),
+ )
-test("discovers skills from .claude/skills/ directory", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir = path.join(dir, ".claude", "skills", "claude-skill")
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+ it.live("discovers skills from .claude/skills/ directory", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(dir, ".claude", "skills", "claude-skill", "SKILL.md"),
+ `---
name: claude-skill
description: A skill in the .claude/skills directory.
---
# Claude Skill
`,
+ ),
+ )
+
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(1)
+ const item = list.find((x) => x.name === "claude-skill")
+ expect(item).toBeDefined()
+ expect(item!.location).toContain(path.join(".claude", "skills", "claude-skill", "SKILL.md"))
+ }),
+ { git: true },
+ ),
+ )
+
+ it.live("discovers global skills from ~/.claude/skills/ directory", () =>
+ Effect.gen(function* () {
+ const tmp = yield* Effect.acquireRelease(
+ Effect.promise(() => tmpdir({ git: true })),
+ (tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
)
- },
- })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(1)
- const claudeSkill = skills.find((s) => s.name === "claude-skill")
- expect(claudeSkill).toBeDefined()
- expect(claudeSkill!.location).toContain(path.join(".claude", "skills", "claude-skill", "SKILL.md"))
- },
- })
-})
+ yield* withHome(
+ tmp.path,
+ Effect.gen(function* () {
+ yield* Effect.promise(() => createGlobalSkill(tmp.path))
+ yield* Effect.gen(function* () {
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(1)
+ expect(list[0].name).toBe("global-test-skill")
+ expect(list[0].description).toBe("A global skill from ~/.claude/skills for testing.")
+ expect(list[0].location).toContain(path.join(".claude", "skills", "global-test-skill", "SKILL.md"))
+ }).pipe(provideInstance(tmp.path))
+ }),
+ )
+ }),
+ )
-test("discovers global skills from ~/.claude/skills/ directory", async () => {
- await using tmp = await tmpdir({ git: true })
+ it.live("returns empty array when no skills exist", () =>
+ provideTmpdirInstance(
+ () =>
+ Effect.gen(function* () {
+ const skill = yield* Skill.Service
+ expect(yield* skill.all()).toEqual([])
+ }),
+ { git: true },
+ ),
+ )
- const originalHome = process.env.OPENCODE_TEST_HOME
- process.env.OPENCODE_TEST_HOME = tmp.path
-
- try {
- await createGlobalSkill(tmp.path)
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(1)
- expect(skills[0].name).toBe("global-test-skill")
- expect(skills[0].description).toBe("A global skill from ~/.claude/skills for testing.")
- expect(skills[0].location).toContain(path.join(".claude", "skills", "global-test-skill", "SKILL.md"))
- },
- })
- } finally {
- process.env.OPENCODE_TEST_HOME = originalHome
- }
-})
-
-test("returns empty array when no skills exist", async () => {
- await using tmp = await tmpdir({ git: true })
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills).toEqual([])
- },
- })
-})
-
-test("discovers skills from .agents/skills/ directory", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir = path.join(dir, ".agents", "skills", "agent-skill")
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+ it.live("discovers skills from .agents/skills/ directory", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(dir, ".agents", "skills", "agent-skill", "SKILL.md"),
+ `---
name: agent-skill
description: A skill in the .agents/skills directory.
---
# Agent Skill
`,
+ ),
+ )
+
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(1)
+ const item = list.find((x) => x.name === "agent-skill")
+ expect(item).toBeDefined()
+ expect(item!.location).toContain(path.join(".agents", "skills", "agent-skill", "SKILL.md"))
+ }),
+ { git: true },
+ ),
+ )
+
+ it.live("discovers global skills from ~/.agents/skills/ directory", () =>
+ Effect.gen(function* () {
+ const tmp = yield* Effect.acquireRelease(
+ Effect.promise(() => tmpdir({ git: true })),
+ (tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
)
- },
- })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(1)
- const agentSkill = skills.find((s) => s.name === "agent-skill")
- expect(agentSkill).toBeDefined()
- expect(agentSkill!.location).toContain(path.join(".agents", "skills", "agent-skill", "SKILL.md"))
- },
- })
-})
-
-test("discovers global skills from ~/.agents/skills/ directory", async () => {
- await using tmp = await tmpdir({ git: true })
-
- const originalHome = process.env.OPENCODE_TEST_HOME
- process.env.OPENCODE_TEST_HOME = tmp.path
-
- try {
- const skillDir = path.join(tmp.path, ".agents", "skills", "global-agent-skill")
- await fs.mkdir(skillDir, { recursive: true })
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+ yield* withHome(
+ tmp.path,
+ Effect.gen(function* () {
+ const skillDir = path.join(tmp.path, ".agents", "skills", "global-agent-skill")
+ yield* Effect.promise(() => fs.mkdir(skillDir, { recursive: true }))
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(skillDir, "SKILL.md"),
+ `---
name: global-agent-skill
description: A global skill from ~/.agents/skills for testing.
---
@@ -274,119 +280,114 @@ description: A global skill from ~/.agents/skills for testing.
This skill is loaded from the global home directory.
`,
- )
+ ),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(1)
- expect(skills[0].name).toBe("global-agent-skill")
- expect(skills[0].description).toBe("A global skill from ~/.agents/skills for testing.")
- expect(skills[0].location).toContain(path.join(".agents", "skills", "global-agent-skill", "SKILL.md"))
- },
- })
- } finally {
- process.env.OPENCODE_TEST_HOME = originalHome
- }
-})
+ yield* Effect.gen(function* () {
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(1)
+ expect(list[0].name).toBe("global-agent-skill")
+ expect(list[0].description).toBe("A global skill from ~/.agents/skills for testing.")
+ expect(list[0].location).toContain(path.join(".agents", "skills", "global-agent-skill", "SKILL.md"))
+ }).pipe(provideInstance(tmp.path))
+ }),
+ )
+ }),
+ )
-test("discovers skills from both .claude/skills/ and .agents/skills/", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const claudeDir = path.join(dir, ".claude", "skills", "claude-skill")
- const agentDir = path.join(dir, ".agents", "skills", "agent-skill")
- await Bun.write(
- path.join(claudeDir, "SKILL.md"),
- `---
+ it.live("discovers skills from both .claude/skills/ and .agents/skills/", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Promise.all([
+ Bun.write(
+ path.join(dir, ".claude", "skills", "claude-skill", "SKILL.md"),
+ `---
name: claude-skill
description: A skill in the .claude/skills directory.
---
# Claude Skill
`,
- )
- await Bun.write(
- path.join(agentDir, "SKILL.md"),
- `---
+ ),
+ Bun.write(
+ path.join(dir, ".agents", "skills", "agent-skill", "SKILL.md"),
+ `---
name: agent-skill
description: A skill in the .agents/skills directory.
---
# Agent Skill
`,
- )
- },
- })
+ ),
+ ]),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const skills = await Skill.all()
- expect(skills.length).toBe(2)
- expect(skills.find((s) => s.name === "claude-skill")).toBeDefined()
- expect(skills.find((s) => s.name === "agent-skill")).toBeDefined()
- },
- })
-})
+ const skill = yield* Skill.Service
+ const list = yield* skill.all()
+ expect(list.length).toBe(2)
+ expect(list.find((x) => x.name === "claude-skill")).toBeDefined()
+ expect(list.find((x) => x.name === "agent-skill")).toBeDefined()
+ }),
+ { git: true },
+ ),
+ )
-test("properly resolves directories that skills live in", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const opencodeSkillDir = path.join(dir, ".opencode", "skill", "agent-skill")
- const opencodeSkillsDir = path.join(dir, ".opencode", "skills", "agent-skill")
- const claudeDir = path.join(dir, ".claude", "skills", "claude-skill")
- const agentDir = path.join(dir, ".agents", "skills", "agent-skill")
- await Bun.write(
- path.join(claudeDir, "SKILL.md"),
- `---
+ it.live("properly resolves directories that skills live in", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() =>
+ Promise.all([
+ Bun.write(
+ path.join(dir, ".claude", "skills", "claude-skill", "SKILL.md"),
+ `---
name: claude-skill
description: A skill in the .claude/skills directory.
---
# Claude Skill
`,
- )
- await Bun.write(
- path.join(agentDir, "SKILL.md"),
- `---
+ ),
+ Bun.write(
+ path.join(dir, ".agents", "skills", "agent-skill", "SKILL.md"),
+ `---
name: agent-skill
description: A skill in the .agents/skills directory.
---
# Agent Skill
`,
- )
- await Bun.write(
- path.join(opencodeSkillDir, "SKILL.md"),
- `---
+ ),
+ Bun.write(
+ path.join(dir, ".opencode", "skill", "agent-skill", "SKILL.md"),
+ `---
name: opencode-skill
description: A skill in the .opencode/skill directory.
---
# OpenCode Skill
`,
- )
- await Bun.write(
- path.join(opencodeSkillsDir, "SKILL.md"),
- `---
+ ),
+ Bun.write(
+ path.join(dir, ".opencode", "skills", "agent-skill", "SKILL.md"),
+ `---
name: opencode-skill
description: A skill in the .opencode/skills directory.
---
# OpenCode Skill
`,
- )
- },
- })
+ ),
+ ]),
+ )
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const dirs = await Skill.dirs()
- expect(dirs.length).toBe(4)
- },
- })
+ const skill = yield* Skill.Service
+ expect((yield* skill.dirs()).length).toBe(4)
+ }),
+ { git: true },
+ ),
+ )
})
diff --git a/packages/opencode/test/snapshot/snapshot.test.ts b/packages/opencode/test/snapshot/snapshot.test.ts
index 3cedfb941d..971d053bd6 100644
--- a/packages/opencode/test/snapshot/snapshot.test.ts
+++ b/packages/opencode/test/snapshot/snapshot.test.ts
@@ -511,6 +511,49 @@ test("circular symlinks", async () => {
})
})
+test("source project gitignore is respected - ignored files are not snapshotted", async () => {
+ await using tmp = await tmpdir({
+ git: true,
+ init: async (dir) => {
+ // Create gitignore BEFORE any tracking
+ await Filesystem.write(`${dir}/.gitignore`, "*.ignored\nbuild/\nnode_modules/\n")
+ await Filesystem.write(`${dir}/tracked.txt`, "tracked content")
+ await Filesystem.write(`${dir}/ignored.ignored`, "ignored content")
+ await $`mkdir -p ${dir}/build`.quiet()
+ await Filesystem.write(`${dir}/build/output.js`, "build output")
+ await Filesystem.write(`${dir}/normal.js`, "normal js")
+ await $`git add .`.cwd(dir).quiet()
+ await $`git commit -m init`.cwd(dir).quiet()
+ },
+ })
+
+ await Instance.provide({
+ directory: tmp.path,
+ fn: async () => {
+ const before = await Snapshot.track()
+ expect(before).toBeTruthy()
+
+ // Modify tracked files and create new ones - some ignored, some not
+ await Filesystem.write(`${tmp.path}/tracked.txt`, "modified tracked")
+ await Filesystem.write(`${tmp.path}/new.ignored`, "new ignored")
+ await Filesystem.write(`${tmp.path}/new-tracked.txt`, "new tracked")
+ await Filesystem.write(`${tmp.path}/build/new-build.js`, "new build file")
+
+ const patch = await Snapshot.patch(before!)
+
+ // Modified and new tracked files should be in snapshot
+ expect(patch.files).toContain(fwd(tmp.path, "new-tracked.txt"))
+ expect(patch.files).toContain(fwd(tmp.path, "tracked.txt"))
+
+ // Ignored files should NOT be in snapshot
+ expect(patch.files).not.toContain(fwd(tmp.path, "new.ignored"))
+ expect(patch.files).not.toContain(fwd(tmp.path, "ignored.ignored"))
+ expect(patch.files).not.toContain(fwd(tmp.path, "build/output.js"))
+ expect(patch.files).not.toContain(fwd(tmp.path, "build/new-build.js"))
+ },
+ })
+})
+
test("gitignore changes", async () => {
await using tmp = await bootstrap()
await Instance.provide({
@@ -535,6 +578,75 @@ test("gitignore changes", async () => {
})
})
+test("files tracked in snapshot but now gitignored are filtered out", async () => {
+ await using tmp = await bootstrap()
+ await Instance.provide({
+ directory: tmp.path,
+ fn: async () => {
+ // First, create a file and snapshot it
+ await Filesystem.write(`${tmp.path}/later-ignored.txt`, "initial content")
+ const before = await Snapshot.track()
+ expect(before).toBeTruthy()
+
+ // Modify the file (so it appears in diff-files)
+ await Filesystem.write(`${tmp.path}/later-ignored.txt`, "modified content")
+
+ // Now add gitignore that would exclude this file
+ await Filesystem.write(`${tmp.path}/.gitignore`, "later-ignored.txt\n")
+
+ // Also create another tracked file
+ await Filesystem.write(`${tmp.path}/still-tracked.txt`, "new tracked file")
+
+ const patch = await Snapshot.patch(before!)
+
+ // The file that is now gitignored should NOT appear, even though it was
+ // previously tracked and modified
+ expect(patch.files).not.toContain(fwd(tmp.path, "later-ignored.txt"))
+
+ // The gitignore file itself should appear
+ expect(patch.files).toContain(fwd(tmp.path, ".gitignore"))
+
+ // Other tracked files should appear
+ expect(patch.files).toContain(fwd(tmp.path, "still-tracked.txt"))
+ },
+ })
+})
+
+test("gitignore updated between track calls filters from diff", async () => {
+ await using tmp = await bootstrap()
+ await Instance.provide({
+ directory: tmp.path,
+ fn: async () => {
+ // a.txt is already committed from bootstrap - track it in snapshot
+ const before = await Snapshot.track()
+ expect(before).toBeTruthy()
+
+ // Modify a.txt (so it appears in diff-files)
+ await Filesystem.write(`${tmp.path}/a.txt`, "modified content")
+
+ // Now add gitignore that would exclude a.txt
+ await Filesystem.write(`${tmp.path}/.gitignore`, "a.txt\n")
+
+ // Also modify b.txt which is not gitignored
+ await Filesystem.write(`${tmp.path}/b.txt`, "also modified")
+
+ // Second track - should not include a.txt even though it changed
+ const after = await Snapshot.track()
+ expect(after).toBeTruthy()
+
+ // Verify a.txt is NOT in the diff between snapshots
+ const diffs = await Snapshot.diffFull(before!, after!)
+ expect(diffs.some((x) => x.file === "a.txt")).toBe(false)
+
+ // But .gitignore should be in the diff
+ expect(diffs.some((x) => x.file === ".gitignore")).toBe(true)
+
+ // b.txt should be in the diff (not gitignored)
+ expect(diffs.some((x) => x.file === "b.txt")).toBe(true)
+ },
+ })
+})
+
test("git info exclude changes", async () => {
await using tmp = await bootstrap()
await Instance.provide({
diff --git a/packages/opencode/test/tool/apply_patch.test.ts b/packages/opencode/test/tool/apply_patch.test.ts
index 4efa12f2fc..03220ea3b1 100644
--- a/packages/opencode/test/tool/apply_patch.test.ts
+++ b/packages/opencode/test/tool/apply_patch.test.ts
@@ -7,12 +7,21 @@ import { Instance } from "../../src/project/instance"
import { LSP } from "../../src/lsp"
import { AppFileSystem } from "../../src/filesystem"
import { Format } from "../../src/format"
+import { Agent } from "../../src/agent/agent"
import { Bus } from "../../src/bus"
+import { Truncate } from "../../src/tool/truncate"
import { tmpdir } from "../fixture/fixture"
import { SessionID, MessageID } from "../../src/session/schema"
const runtime = ManagedRuntime.make(
- Layer.mergeAll(LSP.defaultLayer, AppFileSystem.defaultLayer, Format.defaultLayer, Bus.layer),
+ Layer.mergeAll(
+ LSP.defaultLayer,
+ AppFileSystem.defaultLayer,
+ Format.defaultLayer,
+ Bus.layer,
+ Truncate.defaultLayer,
+ Agent.defaultLayer,
+ ),
)
const baseCtx = {
diff --git a/packages/opencode/test/tool/bash.test.ts b/packages/opencode/test/tool/bash.test.ts
index e9a6ae38cf..839c066c6c 100644
--- a/packages/opencode/test/tool/bash.test.ts
+++ b/packages/opencode/test/tool/bash.test.ts
@@ -8,6 +8,7 @@ import { Instance } from "../../src/project/instance"
import { Filesystem } from "../../src/util/filesystem"
import { tmpdir } from "../fixture/fixture"
import type { Permission } from "../../src/permission"
+import { Agent } from "../../src/agent/agent"
import { Truncate } from "../../src/tool/truncate"
import { SessionID, MessageID } from "../../src/session/schema"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
@@ -15,7 +16,13 @@ import { AppFileSystem } from "../../src/filesystem"
import { Plugin } from "../../src/plugin"
const runtime = ManagedRuntime.make(
- Layer.mergeAll(CrossSpawnSpawner.defaultLayer, AppFileSystem.defaultLayer, Plugin.defaultLayer),
+ Layer.mergeAll(
+ CrossSpawnSpawner.defaultLayer,
+ AppFileSystem.defaultLayer,
+ Plugin.defaultLayer,
+ Truncate.defaultLayer,
+ Agent.defaultLayer,
+ ),
)
function initBash() {
diff --git a/packages/opencode/test/tool/edit.test.ts b/packages/opencode/test/tool/edit.test.ts
index 0695b54bac..9fe24b49b2 100644
--- a/packages/opencode/test/tool/edit.test.ts
+++ b/packages/opencode/test/tool/edit.test.ts
@@ -9,8 +9,10 @@ import { FileTime } from "../../src/file/time"
import { LSP } from "../../src/lsp"
import { AppFileSystem } from "../../src/filesystem"
import { Format } from "../../src/format"
+import { Agent } from "../../src/agent/agent"
import { Bus } from "../../src/bus"
import { BusEvent } from "../../src/bus/bus-event"
+import { Truncate } from "../../src/tool/truncate"
import { SessionID, MessageID } from "../../src/session/schema"
const ctx = {
@@ -34,7 +36,15 @@ async function touch(file: string, time: number) {
}
const runtime = ManagedRuntime.make(
- Layer.mergeAll(LSP.defaultLayer, FileTime.defaultLayer, AppFileSystem.defaultLayer, Format.defaultLayer, Bus.layer),
+ Layer.mergeAll(
+ LSP.defaultLayer,
+ FileTime.defaultLayer,
+ AppFileSystem.defaultLayer,
+ Format.defaultLayer,
+ Bus.layer,
+ Truncate.defaultLayer,
+ Agent.defaultLayer,
+ ),
)
afterAll(async () => {
@@ -55,6 +65,18 @@ const readFileTime = (sessionID: SessionID, filepath: string) =>
const subscribeBus = (def: D, callback: () => unknown) =>
runtime.runPromise(Bus.Service.use((bus) => bus.subscribeCallback(def, callback)))
+async function onceBus(def: D) {
+ const result = Promise.withResolvers()
+ const unsub = await subscribeBus(def, () => {
+ unsub()
+ result.resolve()
+ })
+ return {
+ wait: result.promise,
+ unsub,
+ }
+}
+
describe("tool.edit", () => {
describe("creating new files", () => {
test("creates new file when oldString is empty", async () => {
@@ -118,23 +140,25 @@ describe("tool.edit", () => {
fn: async () => {
const { FileWatcher } = await import("../../src/file/watcher")
- const events: string[] = []
- const unsubUpdated = await subscribeBus(FileWatcher.Event.Updated, () => events.push("updated"))
+ const updated = await onceBus(FileWatcher.Event.Updated)
- const edit = await resolve()
- await Effect.runPromise(
- edit.execute(
- {
- filePath: filepath,
- oldString: "",
- newString: "content",
- },
- ctx,
- ),
- )
+ try {
+ const edit = await resolve()
+ await Effect.runPromise(
+ edit.execute(
+ {
+ filePath: filepath,
+ oldString: "",
+ newString: "content",
+ },
+ ctx,
+ ),
+ )
- expect(events).toContain("updated")
- unsubUpdated()
+ await updated.wait
+ } finally {
+ updated.unsub()
+ }
},
})
})
@@ -349,23 +373,25 @@ describe("tool.edit", () => {
const { FileWatcher } = await import("../../src/file/watcher")
- const events: string[] = []
- const unsubUpdated = await subscribeBus(FileWatcher.Event.Updated, () => events.push("updated"))
+ const updated = await onceBus(FileWatcher.Event.Updated)
- const edit = await resolve()
- await Effect.runPromise(
- edit.execute(
- {
- filePath: filepath,
- oldString: "original",
- newString: "modified",
- },
- ctx,
- ),
- )
+ try {
+ const edit = await resolve()
+ await Effect.runPromise(
+ edit.execute(
+ {
+ filePath: filepath,
+ oldString: "original",
+ newString: "modified",
+ },
+ ctx,
+ ),
+ )
- expect(events).toContain("updated")
- unsubUpdated()
+ await updated.wait
+ } finally {
+ updated.unsub()
+ }
},
})
})
diff --git a/packages/opencode/test/tool/grep.test.ts b/packages/opencode/test/tool/grep.test.ts
index 4078c9ce6a..07ac231df0 100644
--- a/packages/opencode/test/tool/grep.test.ts
+++ b/packages/opencode/test/tool/grep.test.ts
@@ -1,17 +1,25 @@
-import { describe, expect, test } from "bun:test"
+import { describe, expect } from "bun:test"
import path from "path"
-import { Effect, Layer, ManagedRuntime } from "effect"
+import { Effect, Layer } from "effect"
import { GrepTool } from "../../src/tool/grep"
-import { Instance } from "../../src/project/instance"
-import { tmpdir } from "../fixture/fixture"
+import { provideInstance, provideTmpdirInstance } from "../fixture/fixture"
import { SessionID, MessageID } from "../../src/session/schema"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
+import { Truncate } from "../../src/tool/truncate"
+import { Agent } from "../../src/agent/agent"
+import { Ripgrep } from "../../src/file/ripgrep"
+import { AppFileSystem } from "../../src/filesystem"
+import { testEffect } from "../lib/effect"
-const runtime = ManagedRuntime.make(Layer.mergeAll(CrossSpawnSpawner.defaultLayer))
-
-function initGrep() {
- return runtime.runPromise(GrepTool.pipe(Effect.flatMap((info) => info.init())))
-}
+const it = testEffect(
+ Layer.mergeAll(
+ CrossSpawnSpawner.defaultLayer,
+ AppFileSystem.defaultLayer,
+ Ripgrep.defaultLayer,
+ Truncate.defaultLayer,
+ Agent.defaultLayer,
+ ),
+)
const ctx = {
sessionID: SessionID.make("ses_test"),
@@ -27,99 +35,59 @@ const ctx = {
const projectRoot = path.join(__dirname, "../..")
describe("tool.grep", () => {
- test("basic search", async () => {
- await Instance.provide({
- directory: projectRoot,
- fn: async () => {
- const grep = await initGrep()
- const result = await Effect.runPromise(
- grep.execute(
- {
- pattern: "export",
- path: path.join(projectRoot, "src/tool"),
- include: "*.ts",
- },
- ctx,
- ),
- )
- expect(result.metadata.matches).toBeGreaterThan(0)
- expect(result.output).toContain("Found")
- },
- })
- })
+ it.live("basic search", () =>
+ Effect.gen(function* () {
+ const info = yield* GrepTool
+ const grep = yield* info.init()
+ const result = yield* provideInstance(projectRoot)(
+ grep.execute(
+ {
+ pattern: "export",
+ path: path.join(projectRoot, "src/tool"),
+ include: "*.ts",
+ },
+ ctx,
+ ),
+ )
+ expect(result.metadata.matches).toBeGreaterThan(0)
+ expect(result.output).toContain("Found")
+ }),
+ )
- test("no matches returns correct output", async () => {
- await using tmp = await tmpdir({
- init: async (dir) => {
- await Bun.write(path.join(dir, "test.txt"), "hello world")
- },
- })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const grep = await initGrep()
- const result = await Effect.runPromise(
- grep.execute(
- {
- pattern: "xyznonexistentpatternxyz123",
- path: tmp.path,
- },
- ctx,
- ),
+ it.live("no matches returns correct output", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() => Bun.write(path.join(dir, "test.txt"), "hello world"))
+ const info = yield* GrepTool
+ const grep = yield* info.init()
+ const result = yield* grep.execute(
+ {
+ pattern: "xyznonexistentpatternxyz123",
+ path: dir,
+ },
+ ctx,
)
expect(result.metadata.matches).toBe(0)
expect(result.output).toBe("No files found")
- },
- })
- })
+ }),
+ ),
+ )
- test("handles CRLF line endings in output", async () => {
- // This test verifies the regex split handles both \n and \r\n
- await using tmp = await tmpdir({
- init: async (dir) => {
- // Create a test file with content
- await Bun.write(path.join(dir, "test.txt"), "line1\nline2\nline3")
- },
- })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const grep = await initGrep()
- const result = await Effect.runPromise(
- grep.execute(
- {
- pattern: "line",
- path: tmp.path,
- },
- ctx,
- ),
+ it.live("finds matches in tmp instance", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ yield* Effect.promise(() => Bun.write(path.join(dir, "test.txt"), "line1\nline2\nline3"))
+ const info = yield* GrepTool
+ const grep = yield* info.init()
+ const result = yield* grep.execute(
+ {
+ pattern: "line",
+ path: dir,
+ },
+ ctx,
)
expect(result.metadata.matches).toBeGreaterThan(0)
- },
- })
- })
-})
-
-describe("CRLF regex handling", () => {
- test("regex correctly splits Unix line endings", () => {
- const unixOutput = "file1.txt|1|content1\nfile2.txt|2|content2\nfile3.txt|3|content3"
- const lines = unixOutput.trim().split(/\r?\n/)
- expect(lines.length).toBe(3)
- expect(lines[0]).toBe("file1.txt|1|content1")
- expect(lines[2]).toBe("file3.txt|3|content3")
- })
-
- test("regex correctly splits Windows CRLF line endings", () => {
- const windowsOutput = "file1.txt|1|content1\r\nfile2.txt|2|content2\r\nfile3.txt|3|content3"
- const lines = windowsOutput.trim().split(/\r?\n/)
- expect(lines.length).toBe(3)
- expect(lines[0]).toBe("file1.txt|1|content1")
- expect(lines[2]).toBe("file3.txt|3|content3")
- })
-
- test("regex handles mixed line endings", () => {
- const mixedOutput = "file1.txt|1|content1\nfile2.txt|2|content2\r\nfile3.txt|3|content3"
- const lines = mixedOutput.trim().split(/\r?\n/)
- expect(lines.length).toBe(3)
- })
+ }),
+ ),
+ )
})
diff --git a/packages/opencode/test/tool/question.test.ts b/packages/opencode/test/tool/question.test.ts
index f651f019ef..eb69f1d966 100644
--- a/packages/opencode/test/tool/question.test.ts
+++ b/packages/opencode/test/tool/question.test.ts
@@ -4,7 +4,9 @@ import { Tool } from "../../src/tool/tool"
import { QuestionTool } from "../../src/tool/question"
import { Question } from "../../src/question"
import { SessionID, MessageID } from "../../src/session/schema"
+import { Agent } from "../../src/agent/agent"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
+import { Truncate } from "../../src/tool/truncate"
import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect"
@@ -19,7 +21,9 @@ const ctx = {
ask: () => Effect.void,
}
-const it = testEffect(Layer.mergeAll(Question.defaultLayer, CrossSpawnSpawner.defaultLayer))
+const it = testEffect(
+ Layer.mergeAll(Question.defaultLayer, CrossSpawnSpawner.defaultLayer, Truncate.defaultLayer, Agent.defaultLayer),
+)
const pending = Effect.fn("QuestionToolTest.pending")(function* (question: Question.Interface) {
for (;;) {
diff --git a/packages/opencode/test/tool/read.test.ts b/packages/opencode/test/tool/read.test.ts
index c41cefda37..2064193d5b 100644
--- a/packages/opencode/test/tool/read.test.ts
+++ b/packages/opencode/test/tool/read.test.ts
@@ -11,6 +11,7 @@ import { Instance } from "../../src/project/instance"
import { SessionID, MessageID } from "../../src/session/schema"
import { Instruction } from "../../src/session/instruction"
import { ReadTool } from "../../src/tool/read"
+import { Truncate } from "../../src/tool/truncate"
import { Tool } from "../../src/tool/tool"
import { Filesystem } from "../../src/util/filesystem"
import { provideInstance, tmpdirScoped } from "../fixture/fixture"
@@ -41,6 +42,7 @@ const it = testEffect(
FileTime.defaultLayer,
Instruction.defaultLayer,
LSP.defaultLayer,
+ Truncate.defaultLayer,
),
)
diff --git a/packages/opencode/test/tool/registry.test.ts b/packages/opencode/test/tool/registry.test.ts
index e3a274bb21..5b59e314e1 100644
--- a/packages/opencode/test/tool/registry.test.ts
+++ b/packages/opencode/test/tool/registry.test.ts
@@ -1,157 +1,154 @@
-import { afterEach, describe, expect, test } from "bun:test"
+import { NodeChildProcessSpawner, NodeFileSystem, NodePath } from "@effect/platform-node"
+import { afterEach, describe, expect } from "bun:test"
import path from "path"
import fs from "fs/promises"
-import { tmpdir } from "../fixture/fixture"
+import { Effect, Layer } from "effect"
import { Instance } from "../../src/project/instance"
import { ToolRegistry } from "../../src/tool/registry"
+import { provideTmpdirInstance } from "../fixture/fixture"
+import { testEffect } from "../lib/effect"
+
+const node = NodeChildProcessSpawner.layer.pipe(
+ Layer.provideMerge(Layer.mergeAll(NodeFileSystem.layer, NodePath.layer)),
+)
+
+const it = testEffect(Layer.mergeAll(ToolRegistry.defaultLayer, node))
afterEach(async () => {
await Instance.disposeAll()
})
describe("tool.registry", () => {
- test("loads tools from .opencode/tool (singular)", async () => {
- await using tmp = await tmpdir({
- init: async (dir) => {
- const opencodeDir = path.join(dir, ".opencode")
- await fs.mkdir(opencodeDir, { recursive: true })
-
- const toolDir = path.join(opencodeDir, "tool")
- await fs.mkdir(toolDir, { recursive: true })
-
- await Bun.write(
- path.join(toolDir, "hello.ts"),
- [
- "export default {",
- " description: 'hello tool',",
- " args: {},",
- " execute: async () => {",
- " return 'hello world'",
- " },",
- "}",
- "",
- ].join("\n"),
+ it.live("loads tools from .opencode/tool (singular)", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const opencode = path.join(dir, ".opencode")
+ const tool = path.join(opencode, "tool")
+ yield* Effect.promise(() => fs.mkdir(tool, { recursive: true }))
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(tool, "hello.ts"),
+ [
+ "export default {",
+ " description: 'hello tool',",
+ " args: {},",
+ " execute: async () => {",
+ " return 'hello world'",
+ " },",
+ "}",
+ "",
+ ].join("\n"),
+ ),
)
- },
- })
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const ids = await ToolRegistry.ids()
+ const registry = yield* ToolRegistry.Service
+ const ids = yield* registry.ids()
expect(ids).toContain("hello")
- },
- })
- })
+ }),
+ ),
+ )
- test("loads tools from .opencode/tools (plural)", async () => {
- await using tmp = await tmpdir({
- init: async (dir) => {
- const opencodeDir = path.join(dir, ".opencode")
- await fs.mkdir(opencodeDir, { recursive: true })
-
- const toolsDir = path.join(opencodeDir, "tools")
- await fs.mkdir(toolsDir, { recursive: true })
-
- await Bun.write(
- path.join(toolsDir, "hello.ts"),
- [
- "export default {",
- " description: 'hello tool',",
- " args: {},",
- " execute: async () => {",
- " return 'hello world'",
- " },",
- "}",
- "",
- ].join("\n"),
+ it.live("loads tools from .opencode/tools (plural)", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const opencode = path.join(dir, ".opencode")
+ const tools = path.join(opencode, "tools")
+ yield* Effect.promise(() => fs.mkdir(tools, { recursive: true }))
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(tools, "hello.ts"),
+ [
+ "export default {",
+ " description: 'hello tool',",
+ " args: {},",
+ " execute: async () => {",
+ " return 'hello world'",
+ " },",
+ "}",
+ "",
+ ].join("\n"),
+ ),
)
- },
- })
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const ids = await ToolRegistry.ids()
+ const registry = yield* ToolRegistry.Service
+ const ids = yield* registry.ids()
expect(ids).toContain("hello")
- },
- })
- })
+ }),
+ ),
+ )
- test("loads tools with external dependencies without crashing", async () => {
- await using tmp = await tmpdir({
- init: async (dir) => {
- const opencodeDir = path.join(dir, ".opencode")
- await fs.mkdir(opencodeDir, { recursive: true })
-
- const toolsDir = path.join(opencodeDir, "tools")
- await fs.mkdir(toolsDir, { recursive: true })
-
- await Bun.write(
- path.join(opencodeDir, "package.json"),
- JSON.stringify({
- name: "custom-tools",
- dependencies: {
- "@opencode-ai/plugin": "^0.0.0",
- cowsay: "^1.6.0",
- },
- }),
+ it.live("loads tools with external dependencies without crashing", () =>
+ provideTmpdirInstance((dir) =>
+ Effect.gen(function* () {
+ const opencode = path.join(dir, ".opencode")
+ const tools = path.join(opencode, "tools")
+ yield* Effect.promise(() => fs.mkdir(tools, { recursive: true }))
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(opencode, "package.json"),
+ JSON.stringify({
+ name: "custom-tools",
+ dependencies: {
+ "@opencode-ai/plugin": "^0.0.0",
+ cowsay: "^1.6.0",
+ },
+ }),
+ ),
)
-
- await Bun.write(
- path.join(opencodeDir, "package-lock.json"),
- JSON.stringify({
- name: "custom-tools",
- lockfileVersion: 3,
- packages: {
- "": {
- dependencies: {
- "@opencode-ai/plugin": "^0.0.0",
- cowsay: "^1.6.0",
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(opencode, "package-lock.json"),
+ JSON.stringify({
+ name: "custom-tools",
+ lockfileVersion: 3,
+ packages: {
+ "": {
+ dependencies: {
+ "@opencode-ai/plugin": "^0.0.0",
+ cowsay: "^1.6.0",
+ },
},
},
- },
- }),
+ }),
+ ),
)
- const cowsayDir = path.join(opencodeDir, "node_modules", "cowsay")
- await fs.mkdir(cowsayDir, { recursive: true })
- await Bun.write(
- path.join(cowsayDir, "package.json"),
- JSON.stringify({
- name: "cowsay",
- type: "module",
- exports: "./index.js",
- }),
+ const cowsay = path.join(opencode, "node_modules", "cowsay")
+ yield* Effect.promise(() => fs.mkdir(cowsay, { recursive: true }))
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(cowsay, "package.json"),
+ JSON.stringify({
+ name: "cowsay",
+ type: "module",
+ exports: "./index.js",
+ }),
+ ),
)
- await Bun.write(
- path.join(cowsayDir, "index.js"),
- ["export function say({ text }) {", " return `moo ${text}`", "}", ""].join("\n"),
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(cowsay, "index.js"),
+ ["export function say({ text }) {", " return `moo ${text}`", "}", ""].join("\n"),
+ ),
)
-
- await Bun.write(
- path.join(toolsDir, "cowsay.ts"),
- [
- "import { say } from 'cowsay'",
- "export default {",
- " description: 'tool that imports cowsay at top level',",
- " args: { text: { type: 'string' } },",
- " execute: async ({ text }: { text: string }) => {",
- " return say({ text })",
- " },",
- "}",
- "",
- ].join("\n"),
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(tools, "cowsay.ts"),
+ [
+ "import { say } from 'cowsay'",
+ "export default {",
+ " description: 'tool that imports cowsay at top level',",
+ " args: { text: { type: 'string' } },",
+ " execute: async ({ text }: { text: string }) => {",
+ " return say({ text })",
+ " },",
+ "}",
+ "",
+ ].join("\n"),
+ ),
)
- },
- })
-
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const ids = await ToolRegistry.ids()
+ const registry = yield* ToolRegistry.Service
+ const ids = yield* registry.ids()
expect(ids).toContain("cowsay")
- },
- })
- })
+ }),
+ ),
+ )
})
diff --git a/packages/opencode/test/tool/skill.test.ts b/packages/opencode/test/tool/skill.test.ts
index 47a8321efc..1cebf342db 100644
--- a/packages/opencode/test/tool/skill.test.ts
+++ b/packages/opencode/test/tool/skill.test.ts
@@ -1,6 +1,9 @@
+import { NodeChildProcessSpawner, NodeFileSystem, NodePath } from "@effect/platform-node"
import { Effect, Layer, ManagedRuntime } from "effect"
+import { Agent } from "../../src/agent/agent"
import { Skill } from "../../src/skill"
import { Ripgrep } from "../../src/file/ripgrep"
+import { Truncate } from "../../src/tool/truncate"
import { afterEach, describe, expect, test } from "bun:test"
import path from "path"
import { pathToFileURL } from "url"
@@ -9,8 +12,9 @@ import type { Tool } from "../../src/tool/tool"
import { Instance } from "../../src/project/instance"
import { SkillTool } from "../../src/tool/skill"
import { ToolRegistry } from "../../src/tool/registry"
-import { tmpdir } from "../fixture/fixture"
+import { provideTmpdirInstance, tmpdir } from "../fixture/fixture"
import { SessionID, MessageID } from "../../src/session/schema"
+import { testEffect } from "../lib/effect"
const baseCtx: Omit = {
sessionID: SessionID.make("ses_test"),
@@ -26,85 +30,94 @@ afterEach(async () => {
await Instance.disposeAll()
})
+const node = NodeChildProcessSpawner.layer.pipe(
+ Layer.provideMerge(Layer.mergeAll(NodeFileSystem.layer, NodePath.layer)),
+)
+
+const it = testEffect(Layer.mergeAll(ToolRegistry.defaultLayer, node))
+
describe("tool.skill", () => {
- test("description lists skill location URL", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- const skillDir = path.join(dir, ".opencode", "skill", "tool-skill")
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+ it.live("description lists skill location URL", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ const skill = path.join(dir, ".opencode", "skill", "tool-skill")
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(skill, "SKILL.md"),
+ `---
name: tool-skill
description: Skill for tool tests.
---
# Tool Skill
`,
- )
- },
- })
+ ),
+ )
+ const home = process.env.OPENCODE_TEST_HOME
+ process.env.OPENCODE_TEST_HOME = dir
+ yield* Effect.addFinalizer(() =>
+ Effect.sync(() => {
+ process.env.OPENCODE_TEST_HOME = home
+ }),
+ )
+ const registry = yield* ToolRegistry.Service
+ const desc =
+ (yield* registry.tools({
+ providerID: "opencode" as any,
+ modelID: "gpt-5" as any,
+ agent: { name: "build", mode: "primary", permission: [], options: {} },
+ })).find((tool) => tool.id === SkillTool.id)?.description ?? ""
+ expect(desc).toContain("**tool-skill**: Skill for tool tests.")
+ }),
+ { git: true },
+ ),
+ )
- const home = process.env.OPENCODE_TEST_HOME
- process.env.OPENCODE_TEST_HOME = tmp.path
-
- try {
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const desc = await ToolRegistry.tools({
- providerID: "opencode" as any,
- modelID: "gpt-5" as any,
- agent: { name: "build", mode: "primary" as const, permission: [], options: {} },
- }).then((tools) => tools.find((tool) => tool.id === SkillTool.id)?.description ?? "")
- expect(desc).toContain(`**tool-skill**: Skill for tool tests.`)
- },
- })
- } finally {
- process.env.OPENCODE_TEST_HOME = home
- }
- })
-
- test("description sorts skills by name and is stable across calls", async () => {
- await using tmp = await tmpdir({
- git: true,
- init: async (dir) => {
- for (const [name, description] of [
- ["zeta-skill", "Zeta skill."],
- ["alpha-skill", "Alpha skill."],
- ["middle-skill", "Middle skill."],
- ]) {
- const skillDir = path.join(dir, ".opencode", "skill", name)
- await Bun.write(
- path.join(skillDir, "SKILL.md"),
- `---
+ it.live("description sorts skills by name and is stable across calls", () =>
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ for (const [name, description] of [
+ ["zeta-skill", "Zeta skill."],
+ ["alpha-skill", "Alpha skill."],
+ ["middle-skill", "Middle skill."],
+ ]) {
+ const skill = path.join(dir, ".opencode", "skill", name)
+ yield* Effect.promise(() =>
+ Bun.write(
+ path.join(skill, "SKILL.md"),
+ `---
name: ${name}
description: ${description}
---
# ${name}
`,
+ ),
+ )
+ }
+ const home = process.env.OPENCODE_TEST_HOME
+ process.env.OPENCODE_TEST_HOME = dir
+ yield* Effect.addFinalizer(() =>
+ Effect.sync(() => {
+ process.env.OPENCODE_TEST_HOME = home
+ }),
)
- }
- },
- })
- const home = process.env.OPENCODE_TEST_HOME
- process.env.OPENCODE_TEST_HOME = tmp.path
-
- try {
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
const agent = { name: "build", mode: "primary" as const, permission: [], options: {} }
- const load = () =>
- ToolRegistry.tools({
- providerID: "opencode" as any,
- modelID: "gpt-5" as any,
- agent,
- }).then((tools) => tools.find((tool) => tool.id === SkillTool.id)?.description ?? "")
- const first = await load()
- const second = await load()
+ const registry = yield* ToolRegistry.Service
+ const load = Effect.fnUntraced(function* () {
+ return (
+ (yield* registry.tools({
+ providerID: "opencode" as any,
+ modelID: "gpt-5" as any,
+ agent,
+ })).find((tool) => tool.id === SkillTool.id)?.description ?? ""
+ )
+ })
+ const first = yield* load()
+ const second = yield* load()
expect(first).toBe(second)
@@ -115,12 +128,10 @@ description: ${description}
expect(alpha).toBeGreaterThan(-1)
expect(middle).toBeGreaterThan(alpha)
expect(zeta).toBeGreaterThan(middle)
- },
- })
- } finally {
- process.env.OPENCODE_TEST_HOME = home
- }
- })
+ }),
+ { git: true },
+ ),
+ )
test("execute returns skill content block with files", async () => {
await using tmp = await tmpdir({
@@ -150,7 +161,9 @@ Use this skill.
await Instance.provide({
directory: tmp.path,
fn: async () => {
- const runtime = ManagedRuntime.make(Layer.mergeAll(Skill.defaultLayer, Ripgrep.defaultLayer))
+ const runtime = ManagedRuntime.make(
+ Layer.mergeAll(Skill.defaultLayer, Ripgrep.defaultLayer, Truncate.defaultLayer, Agent.defaultLayer),
+ )
const info = await runtime.runPromise(SkillTool)
const tool = await runtime.runPromise(info.init())
const requests: Array> = []
diff --git a/packages/opencode/test/tool/task.test.ts b/packages/opencode/test/tool/task.test.ts
index e2ae52bf05..436c46490b 100644
--- a/packages/opencode/test/tool/task.test.ts
+++ b/packages/opencode/test/tool/task.test.ts
@@ -10,6 +10,7 @@ import type { SessionPrompt } from "../../src/session/prompt"
import { MessageID, PartID } from "../../src/session/schema"
import { ModelID, ProviderID } from "../../src/provider/schema"
import { TaskTool, type TaskPromptOps } from "../../src/tool/task"
+import { Truncate } from "../../src/tool/truncate"
import { ToolRegistry } from "../../src/tool/registry"
import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect"
@@ -29,6 +30,7 @@ const it = testEffect(
Config.defaultLayer,
CrossSpawnSpawner.defaultLayer,
Session.defaultLayer,
+ Truncate.defaultLayer,
ToolRegistry.defaultLayer,
),
)
diff --git a/packages/opencode/test/tool/tool-define.test.ts b/packages/opencode/test/tool/tool-define.test.ts
index 425c83ffdd..b8003e475d 100644
--- a/packages/opencode/test/tool/tool-define.test.ts
+++ b/packages/opencode/test/tool/tool-define.test.ts
@@ -1,7 +1,11 @@
import { describe, test, expect } from "bun:test"
-import { Effect } from "effect"
+import { Effect, Layer, ManagedRuntime } from "effect"
import z from "zod"
+import { Agent } from "../../src/agent/agent"
import { Tool } from "../../src/tool/tool"
+import { Truncate } from "../../src/tool/truncate"
+
+const runtime = ManagedRuntime.make(Layer.mergeAll(Truncate.defaultLayer, Agent.defaultLayer))
const params = z.object({ input: z.string() })
@@ -21,7 +25,7 @@ describe("Tool.define", () => {
const original = makeTool("test")
const originalExecute = original.execute
- const info = await Effect.runPromise(Tool.define("test-tool", Effect.succeed(original)))
+ const info = await runtime.runPromise(Tool.define("test-tool", Effect.succeed(original)))
await Effect.runPromise(info.init())
await Effect.runPromise(info.init())
@@ -31,7 +35,7 @@ describe("Tool.define", () => {
})
test("effect-defined tool returns fresh objects and is unaffected", async () => {
- const info = await Effect.runPromise(
+ const info = await runtime.runPromise(
Tool.define(
"test-fn-tool",
Effect.succeed(() => Effect.succeed(makeTool("test"))),
@@ -45,7 +49,7 @@ describe("Tool.define", () => {
})
test("object-defined tool returns distinct objects per init() call", async () => {
- const info = await Effect.runPromise(Tool.define("test-copy", Effect.succeed(makeTool("test"))))
+ const info = await runtime.runPromise(Tool.define("test-copy", Effect.succeed(makeTool("test"))))
const first = await Effect.runPromise(info.init())
const second = await Effect.runPromise(info.init())
diff --git a/packages/opencode/test/tool/truncation.test.ts b/packages/opencode/test/tool/truncation.test.ts
index 9ec5b78400..493cd9d7e1 100644
--- a/packages/opencode/test/tool/truncation.test.ts
+++ b/packages/opencode/test/tool/truncation.test.ts
@@ -1,7 +1,7 @@
import { describe, test, expect } from "bun:test"
import { NodeFileSystem } from "@effect/platform-node"
import { Effect, FileSystem, Layer } from "effect"
-import { Truncate, Truncate as TruncateSvc } from "../../src/tool/truncate"
+import { Truncate } from "../../src/tool/truncate"
import { Identifier } from "../../src/id/id"
import { Process } from "../../src/util/process"
import { Filesystem } from "../../src/util/filesystem"
@@ -12,120 +12,155 @@ import { writeFileStringScoped } from "../lib/filesystem"
const FIXTURES_DIR = path.join(import.meta.dir, "fixtures")
const ROOT = path.resolve(import.meta.dir, "..", "..")
+const it = testEffect(Layer.mergeAll(Truncate.defaultLayer, NodeFileSystem.layer))
+
describe("Truncate", () => {
describe("output", () => {
- test("truncates large json file by bytes", async () => {
- const content = await Filesystem.readText(path.join(FIXTURES_DIR, "models-api.json"))
- const result = await Truncate.output(content)
+ it.live("truncates large json file by bytes", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const content = yield* Effect.promise(() => Filesystem.readText(path.join(FIXTURES_DIR, "models-api.json")))
+ const result = yield* svc.output(content)
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("truncated...")
- if (result.truncated) expect(result.outputPath).toBeDefined()
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("truncated...")
+ if (result.truncated) expect(result.outputPath).toBeDefined()
+ }),
+ )
- test("returns content unchanged when under limits", async () => {
- const content = "line1\nline2\nline3"
- const result = await Truncate.output(content)
+ it.live("returns content unchanged when under limits", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const content = "line1\nline2\nline3"
+ const result = yield* svc.output(content)
- expect(result.truncated).toBe(false)
- expect(result.content).toBe(content)
- })
+ expect(result.truncated).toBe(false)
+ expect(result.content).toBe(content)
+ }),
+ )
- test("truncates by line count", async () => {
- const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n")
- const result = await Truncate.output(lines, { maxLines: 10 })
+ it.live("truncates by line count", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n")
+ const result = yield* svc.output(lines, { maxLines: 10 })
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("...90 lines truncated...")
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("...90 lines truncated...")
+ }),
+ )
- test("truncates by byte count", async () => {
- const content = "a".repeat(1000)
- const result = await Truncate.output(content, { maxBytes: 100 })
+ it.live("truncates by byte count", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const content = "a".repeat(1000)
+ const result = yield* svc.output(content, { maxBytes: 100 })
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("truncated...")
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("truncated...")
+ }),
+ )
- test("truncates from head by default", async () => {
- const lines = Array.from({ length: 10 }, (_, i) => `line${i}`).join("\n")
- const result = await Truncate.output(lines, { maxLines: 3 })
+ it.live("truncates from head by default", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const lines = Array.from({ length: 10 }, (_, i) => `line${i}`).join("\n")
+ const result = yield* svc.output(lines, { maxLines: 3 })
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("line0")
- expect(result.content).toContain("line1")
- expect(result.content).toContain("line2")
- expect(result.content).not.toContain("line9")
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("line0")
+ expect(result.content).toContain("line1")
+ expect(result.content).toContain("line2")
+ expect(result.content).not.toContain("line9")
+ }),
+ )
- test("truncates from tail when direction is tail", async () => {
- const lines = Array.from({ length: 10 }, (_, i) => `line${i}`).join("\n")
- const result = await Truncate.output(lines, { maxLines: 3, direction: "tail" })
+ it.live("truncates from tail when direction is tail", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const lines = Array.from({ length: 10 }, (_, i) => `line${i}`).join("\n")
+ const result = yield* svc.output(lines, { maxLines: 3, direction: "tail" })
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("line7")
- expect(result.content).toContain("line8")
- expect(result.content).toContain("line9")
- expect(result.content).not.toContain("line0")
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("line7")
+ expect(result.content).toContain("line8")
+ expect(result.content).toContain("line9")
+ expect(result.content).not.toContain("line0")
+ }),
+ )
test("uses default MAX_LINES and MAX_BYTES", () => {
expect(Truncate.MAX_LINES).toBe(2000)
expect(Truncate.MAX_BYTES).toBe(50 * 1024)
})
- test("large single-line file truncates with byte message", async () => {
- const content = await Filesystem.readText(path.join(FIXTURES_DIR, "models-api.json"))
- const result = await Truncate.output(content)
+ it.live("large single-line file truncates with byte message", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const content = yield* Effect.promise(() => Filesystem.readText(path.join(FIXTURES_DIR, "models-api.json")))
+ const result = yield* svc.output(content)
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("bytes truncated...")
- expect(Buffer.byteLength(content, "utf-8")).toBeGreaterThan(Truncate.MAX_BYTES)
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("bytes truncated...")
+ expect(Buffer.byteLength(content, "utf-8")).toBeGreaterThan(Truncate.MAX_BYTES)
+ }),
+ )
- test("writes full output to file when truncated", async () => {
- const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n")
- const result = await Truncate.output(lines, { maxLines: 10 })
+ it.live("writes full output to file when truncated", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n")
+ const result = yield* svc.output(lines, { maxLines: 10 })
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("The tool call succeeded but the output was truncated")
- expect(result.content).toContain("Grep")
- if (!result.truncated) throw new Error("expected truncated")
- expect(result.outputPath).toBeDefined()
- expect(result.outputPath).toContain("tool_")
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("The tool call succeeded but the output was truncated")
+ expect(result.content).toContain("Grep")
+ if (!result.truncated) throw new Error("expected truncated")
+ expect(result.outputPath).toBeDefined()
+ expect(result.outputPath).toContain("tool_")
- const written = await Filesystem.readText(result.outputPath!)
- expect(written).toBe(lines)
- })
+ const written = yield* Effect.promise(() => Filesystem.readText(result.outputPath!))
+ expect(written).toBe(lines)
+ }),
+ )
- test("suggests Task tool when agent has task permission", async () => {
- const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n")
- const agent = { permission: [{ permission: "task", pattern: "*", action: "allow" as const }] }
- const result = await Truncate.output(lines, { maxLines: 10 }, agent as any)
+ it.live("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")
+ const agent = { permission: [{ permission: "task", pattern: "*", action: "allow" as const }] }
+ const result = yield* svc.output(lines, { maxLines: 10 }, agent as any)
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("Grep")
- expect(result.content).toContain("Task tool")
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("Grep")
+ expect(result.content).toContain("Task tool")
+ }),
+ )
- test("omits Task tool hint when agent lacks task permission", async () => {
- const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n")
- const agent = { permission: [{ permission: "task", pattern: "*", action: "deny" as const }] }
- const result = await Truncate.output(lines, { maxLines: 10 }, agent as any)
+ it.live("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")
+ const agent = { permission: [{ permission: "task", pattern: "*", action: "deny" as const }] }
+ const result = yield* svc.output(lines, { maxLines: 10 }, agent as any)
- expect(result.truncated).toBe(true)
- expect(result.content).toContain("Grep")
- expect(result.content).not.toContain("Task tool")
- })
+ expect(result.truncated).toBe(true)
+ expect(result.content).toContain("Grep")
+ expect(result.content).not.toContain("Task tool")
+ }),
+ )
- test("does not write file when not truncated", async () => {
- const content = "short content"
- const result = await Truncate.output(content)
+ it.live("does not write file when not truncated", () =>
+ Effect.gen(function* () {
+ const svc = yield* Truncate.Service
+ const content = "short content"
+ const result = yield* svc.output(content)
- expect(result.truncated).toBe(false)
- if (result.truncated) throw new Error("expected not truncated")
- expect("outputPath" in result).toBe(false)
- })
+ expect(result.truncated).toBe(false)
+ if (result.truncated) throw new Error("expected not truncated")
+ expect("outputPath" in result).toBe(false)
+ }),
+ )
test("loads truncate effect in a fresh process", async () => {
const out = await Process.run([process.execPath, "run", path.join(ROOT, "src", "tool", "truncate.ts")], {
@@ -138,10 +173,10 @@ describe("Truncate", () => {
describe("cleanup", () => {
const DAY_MS = 24 * 60 * 60 * 1000
- const it = testEffect(Layer.mergeAll(TruncateSvc.defaultLayer, NodeFileSystem.layer))
it.live("deletes files older than 7 days and preserves recent files", () =>
Effect.gen(function* () {
+ const svc = yield* Truncate.Service
const fs = yield* FileSystem.FileSystem
yield* fs.makeDirectory(Truncate.DIR, { recursive: true })
@@ -151,7 +186,7 @@ describe("Truncate", () => {
yield* writeFileStringScoped(old, "old content")
yield* writeFileStringScoped(recent, "recent content")
- yield* TruncateSvc.Service.use((s) => s.cleanup())
+ yield* svc.cleanup()
expect(yield* fs.exists(old)).toBe(false)
expect(yield* fs.exists(recent)).toBe(true)
diff --git a/packages/opencode/test/tool/webfetch.test.ts b/packages/opencode/test/tool/webfetch.test.ts
index c6b2fd331c..7d2ff1dcab 100644
--- a/packages/opencode/test/tool/webfetch.test.ts
+++ b/packages/opencode/test/tool/webfetch.test.ts
@@ -1,7 +1,9 @@
import { describe, expect, test } from "bun:test"
import path from "path"
-import { Effect } from "effect"
+import { Effect, Layer } from "effect"
import { FetchHttpClient } from "effect/unstable/http"
+import { Agent } from "../../src/agent/agent"
+import { Truncate } from "../../src/tool/truncate"
import { Instance } from "../../src/project/instance"
import { WebFetchTool } from "../../src/tool/webfetch"
import { SessionID, MessageID } from "../../src/session/schema"
@@ -24,10 +26,11 @@ async function withFetch(fetch: (req: Request) => Response | Promise,
await fn(server.url)
}
-function initTool() {
+function exec(args: { url: string; format: "text" | "markdown" | "html" }) {
return WebFetchTool.pipe(
Effect.flatMap((info) => info.init()),
- Effect.provide(FetchHttpClient.layer),
+ Effect.flatMap((tool) => tool.execute(args, ctx)),
+ Effect.provide(Layer.mergeAll(FetchHttpClient.layer, Truncate.defaultLayer, Agent.defaultLayer)),
Effect.runPromise,
)
}
@@ -41,10 +44,7 @@ describe("tool.webfetch", () => {
await Instance.provide({
directory: projectRoot,
fn: async () => {
- const webfetch = await initTool()
- const result = await Effect.runPromise(
- webfetch.execute({ url: new URL("/image.png", url).toString(), format: "markdown" }, ctx),
- )
+ const result = await exec({ url: new URL("/image.png", url).toString(), format: "markdown" })
expect(result.output).toBe("Image fetched successfully")
expect(result.attachments).toBeDefined()
expect(result.attachments?.length).toBe(1)
@@ -72,10 +72,7 @@ describe("tool.webfetch", () => {
await Instance.provide({
directory: projectRoot,
fn: async () => {
- const webfetch = await initTool()
- const result = await Effect.runPromise(
- webfetch.execute({ url: new URL("/image.svg", url).toString(), format: "html" }, ctx),
- )
+ const result = await exec({ url: new URL("/image.svg", url).toString(), format: "html" })
expect(result.output).toContain("