event.stopPropagation()}>
server.healthy() === false || sync.data.mcp_ready)
- const healthy = createMemo(() => {
- const serverHealthy = server.healthy() === true
+ const mcpIssue = createMemo(() => {
const mcp = Object.values(sync.data.mcp ?? {})
- const issue = mcp.some((item) => item.status !== "connected" && item.status !== "disabled")
- return serverHealthy && !issue
+ const failed = mcp.some((item) => item.status === "failed" || item.status === "needs_client_registration")
+ const warn = mcp.some((item) => item.status === "needs_auth")
+ if (failed) return "critical" as const
+ if (warn) return "warning" as const
})
+ const healthy = createMemo(() => server.healthy() === true && !mcpIssue())
return (
diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts
index 405153647a..94f0158f3c 100644
--- a/packages/app/src/i18n/ar.ts
+++ b/packages/app/src/i18n/ar.ts
@@ -276,6 +276,7 @@ export const dict = {
"mcp.status.connected": "متصل",
"mcp.status.failed": "فشل",
"mcp.status.needs_auth": "يحتاج إلى مصادقة",
+ "mcp.auth.clickToAuthenticate": "انقر للمصادقة",
"mcp.status.disabled": "معطل",
"dialog.fork.empty": "لا توجد رسائل للتفرع منها",
"dialog.directory.search.placeholder": "البحث في المجلدات",
diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts
index 9a3a476802..070fa5319c 100644
--- a/packages/app/src/i18n/br.ts
+++ b/packages/app/src/i18n/br.ts
@@ -276,6 +276,7 @@ export const dict = {
"mcp.status.connected": "conectado",
"mcp.status.failed": "falhou",
"mcp.status.needs_auth": "precisa de autenticação",
+ "mcp.auth.clickToAuthenticate": "Clique para autenticar",
"mcp.status.disabled": "desabilitado",
"dialog.fork.empty": "Nenhuma mensagem para bifurcar",
"dialog.directory.search.placeholder": "Buscar pastas",
diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts
index ae34749c32..8f3e985aa8 100644
--- a/packages/app/src/i18n/bs.ts
+++ b/packages/app/src/i18n/bs.ts
@@ -300,6 +300,7 @@ export const dict = {
"mcp.status.connected": "povezano",
"mcp.status.failed": "neuspjelo",
"mcp.status.needs_auth": "potrebna autentifikacija",
+ "mcp.auth.clickToAuthenticate": "Kliknite za autentifikaciju",
"mcp.status.disabled": "onemogućeno",
"dialog.fork.empty": "Nema poruka za fork",
diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts
index 370420398b..9ae4b26bbf 100644
--- a/packages/app/src/i18n/da.ts
+++ b/packages/app/src/i18n/da.ts
@@ -298,6 +298,7 @@ export const dict = {
"mcp.status.connected": "forbundet",
"mcp.status.failed": "mislykkedes",
"mcp.status.needs_auth": "kræver godkendelse",
+ "mcp.auth.clickToAuthenticate": "Klik for at godkende",
"mcp.status.disabled": "deaktiveret",
"dialog.fork.empty": "Ingen beskeder at forgrene fra",
diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts
index 532ff7c08b..633ff8db24 100644
--- a/packages/app/src/i18n/de.ts
+++ b/packages/app/src/i18n/de.ts
@@ -282,6 +282,7 @@ export const dict = {
"mcp.status.connected": "verbunden",
"mcp.status.failed": "fehlgeschlagen",
"mcp.status.needs_auth": "benötigt Authentifizierung",
+ "mcp.auth.clickToAuthenticate": "Zum Authentifizieren klicken",
"mcp.status.disabled": "deaktiviert",
"dialog.fork.empty": "Keine Nachrichten zum Abzweigen vorhanden",
"dialog.directory.search.placeholder": "Ordner durchsuchen",
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index a42bb62610..6bb9d3fc44 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -306,6 +306,7 @@ export const dict = {
"mcp.status.failed": "failed",
"mcp.status.needs_auth": "needs auth",
"mcp.status.disabled": "disabled",
+ "mcp.auth.clickToAuthenticate": "Click to authenticate",
"dialog.fork.empty": "No messages to fork from",
@@ -902,7 +903,7 @@ export const dict = {
"settings.permissions.tool.read.title": "Read",
"settings.permissions.tool.read.description": "Reading a file (matches the file path)",
"settings.permissions.tool.edit.title": "Edit",
- "settings.permissions.tool.edit.description": "Modify files, including edits, writes, patches, and multi-edits",
+ "settings.permissions.tool.edit.description": "Modify files, including edits, writes, and patches",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Match files using glob patterns",
"settings.permissions.tool.grep.title": "Grep",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index cde8f3ec5e..30777c4b36 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -299,6 +299,7 @@ export const dict = {
"mcp.status.connected": "conectado",
"mcp.status.failed": "fallido",
"mcp.status.needs_auth": "necesita auth",
+ "mcp.auth.clickToAuthenticate": "Haz clic para autenticar",
"mcp.status.disabled": "deshabilitado",
"dialog.fork.empty": "No hay mensajes desde donde bifurcar",
diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts
index 6cea948b1c..bde4a8fe2e 100644
--- a/packages/app/src/i18n/fr.ts
+++ b/packages/app/src/i18n/fr.ts
@@ -277,6 +277,7 @@ export const dict = {
"mcp.status.connected": "connecté",
"mcp.status.failed": "échoué",
"mcp.status.needs_auth": "nécessite auth",
+ "mcp.auth.clickToAuthenticate": "Cliquez pour vous authentifier",
"mcp.status.disabled": "désactivé",
"dialog.fork.empty": "Aucun message à partir duquel bifurquer",
"dialog.directory.search.placeholder": "Rechercher des dossiers",
diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts
index ec4d95b98e..6dd4041694 100644
--- a/packages/app/src/i18n/ja.ts
+++ b/packages/app/src/i18n/ja.ts
@@ -275,6 +275,7 @@ export const dict = {
"mcp.status.connected": "接続済み",
"mcp.status.failed": "失敗",
"mcp.status.needs_auth": "認証が必要",
+ "mcp.auth.clickToAuthenticate": "クリックして認証",
"mcp.status.disabled": "無効",
"dialog.fork.empty": "フォーク元のメッセージがありません",
"dialog.directory.search.placeholder": "フォルダを検索",
diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts
index 6eb064244b..9038af6156 100644
--- a/packages/app/src/i18n/ko.ts
+++ b/packages/app/src/i18n/ko.ts
@@ -275,6 +275,7 @@ export const dict = {
"mcp.status.connected": "연결됨",
"mcp.status.failed": "실패",
"mcp.status.needs_auth": "인증 필요",
+ "mcp.auth.clickToAuthenticate": "클릭하여 인증",
"mcp.status.disabled": "비활성화됨",
"dialog.fork.empty": "분기할 메시지 없음",
"dialog.directory.search.placeholder": "폴더 검색",
diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts
index a280a3dbf1..f0fa26b58e 100644
--- a/packages/app/src/i18n/no.ts
+++ b/packages/app/src/i18n/no.ts
@@ -302,6 +302,7 @@ export const dict = {
"mcp.status.connected": "tilkoblet",
"mcp.status.failed": "mislyktes",
"mcp.status.needs_auth": "trenger autentisering",
+ "mcp.auth.clickToAuthenticate": "Klikk for å autentisere",
"mcp.status.disabled": "deaktivert",
"dialog.fork.empty": "Ingen meldinger å forgrene fra",
diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts
index eea33b7234..cc7689ef14 100644
--- a/packages/app/src/i18n/pl.ts
+++ b/packages/app/src/i18n/pl.ts
@@ -277,6 +277,7 @@ export const dict = {
"mcp.status.connected": "połączono",
"mcp.status.failed": "niepowodzenie",
"mcp.status.needs_auth": "wymaga autoryzacji",
+ "mcp.auth.clickToAuthenticate": "Kliknij, aby się uwierzytelnić",
"mcp.status.disabled": "wyłączone",
"dialog.fork.empty": "Brak wiadomości do rozwidlenia",
"dialog.directory.search.placeholder": "Szukaj folderów",
diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts
index 6e455220be..6f20d73ecb 100644
--- a/packages/app/src/i18n/ru.ts
+++ b/packages/app/src/i18n/ru.ts
@@ -299,6 +299,7 @@ export const dict = {
"mcp.status.connected": "подключено",
"mcp.status.failed": "ошибка",
"mcp.status.needs_auth": "требуется авторизация",
+ "mcp.auth.clickToAuthenticate": "Нажмите, чтобы авторизоваться",
"mcp.status.disabled": "отключено",
"dialog.fork.empty": "Нет сообщений для ответвления",
diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts
index 998962db98..b978c6ea04 100644
--- a/packages/app/src/i18n/th.ts
+++ b/packages/app/src/i18n/th.ts
@@ -299,6 +299,7 @@ export const dict = {
"mcp.status.connected": "เชื่อมต่อแล้ว",
"mcp.status.failed": "ล้มเหลว",
"mcp.status.needs_auth": "ต้องการการตรวจสอบสิทธิ์",
+ "mcp.auth.clickToAuthenticate": "คลิกเพื่อยืนยันตัวตน",
"mcp.status.disabled": "ปิดใช้งาน",
"dialog.fork.empty": "ไม่มีข้อความให้แตกแขนง",
diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts
index 4d006a43b1..e0a5584554 100644
--- a/packages/app/src/i18n/tr.ts
+++ b/packages/app/src/i18n/tr.ts
@@ -304,6 +304,7 @@ export const dict = {
"mcp.status.connected": "bağlı",
"mcp.status.failed": "başarısız",
"mcp.status.needs_auth": "kimlik doğrulama gerekli",
+ "mcp.auth.clickToAuthenticate": "Kimlik doğrulamak için tıklayın",
"mcp.status.disabled": "devre dışı",
"dialog.fork.empty": "Dallandırılacak mesaj yok",
diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts
index a422a5d61d..787f2b6227 100644
--- a/packages/app/src/i18n/zh.ts
+++ b/packages/app/src/i18n/zh.ts
@@ -319,6 +319,7 @@ export const dict = {
"mcp.status.connected": "已连接",
"mcp.status.failed": "失败",
"mcp.status.needs_auth": "需要授权",
+ "mcp.auth.clickToAuthenticate": "点击进行授权",
"mcp.status.disabled": "已禁用",
"dialog.fork.empty": "没有可用于分叉的消息",
diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts
index 7d894a83e0..a5747bea02 100644
--- a/packages/app/src/i18n/zht.ts
+++ b/packages/app/src/i18n/zht.ts
@@ -299,6 +299,7 @@ export const dict = {
"mcp.status.connected": "已連線",
"mcp.status.failed": "失敗",
"mcp.status.needs_auth": "需要授權",
+ "mcp.auth.clickToAuthenticate": "點擊以進行授權",
"mcp.status.disabled": "已停用",
"dialog.fork.empty": "沒有可用於分支的訊息",
diff --git a/packages/console/app/package.json b/packages/console/app/package.json
index 7e736ca775..a84909b24c 100644
--- a/packages/console/app/package.json
+++ b/packages/console/app/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-app",
- "version": "1.14.48",
+ "version": "1.14.51",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/console/app/src/config.ts b/packages/console/app/src/config.ts
index 829da5751e..2cd039fef7 100644
--- a/packages/console/app/src/config.ts
+++ b/packages/console/app/src/config.ts
@@ -9,8 +9,8 @@ export const config = {
github: {
repoUrl: "https://github.com/anomalyco/opencode",
starsFormatted: {
- compact: "150K",
- full: "150,000",
+ compact: "160K",
+ full: "160,000",
},
},
@@ -22,8 +22,8 @@ export const config = {
// Static stats (used on landing page)
stats: {
- contributors: "850",
- commits: "11,000",
- monthlyUsers: "6.5M",
+ contributors: "900",
+ commits: "13,000",
+ monthlyUsers: "7.5M",
},
} as const
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index d9e5641690..3af36ad77a 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -216,7 +216,7 @@ export async function handler(
// ie. 400 error is usually provider error like malformed request
res.status !== 400 &&
// ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found.
- res.status !== 404 &&
+ !(modelInfo.id.startsWith("gpt-") && res.status === 404) &&
// ie. cannot change codex model providers mid-session
modelInfo.stickyProvider !== "strict" &&
modelInfo.fallbackProvider &&
diff --git a/packages/console/core/package.json b/packages/console/core/package.json
index 986103ece3..fe648d3251 100644
--- a/packages/console/core/package.json
+++ b/packages/console/core/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/console-core",
- "version": "1.14.48",
+ "version": "1.14.51",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/console/function/package.json b/packages/console/function/package.json
index 5c1d1ba223..2ed10a8c29 100644
--- a/packages/console/function/package.json
+++ b/packages/console/function/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-function",
- "version": "1.14.48",
+ "version": "1.14.51",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json
index 6c101f051e..8f46ecbc6a 100644
--- a/packages/console/mail/package.json
+++ b/packages/console/mail/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-mail",
- "version": "1.14.48",
+ "version": "1.14.51",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
diff --git a/packages/core/package.json b/packages/core/package.json
index 4c47fea8b9..69257ed102 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.14.48",
+ "version": "1.14.51",
"name": "@opencode-ai/core",
"type": "module",
"license": "MIT",
diff --git a/packages/core/src/catalog.ts b/packages/core/src/catalog.ts
index 3aa5915420..d27f17bfb8 100644
--- a/packages/core/src/catalog.ts
+++ b/packages/core/src/catalog.ts
@@ -5,6 +5,8 @@ import { produce, type Draft } from "immer"
import { ModelV2 } from "./model"
import { PluginV2 } from "./plugin"
import { ProviderV2 } from "./provider"
+import { Location } from "./location"
+import { EventV2 } from "./event"
type ProviderRecord = {
provider: ProviderV2.Info
@@ -23,6 +25,15 @@ export class ModelNotFoundError extends Schema.TaggedErrorClass Effect.Effect
@@ -56,9 +67,11 @@ export class Service extends Context.Service()("@opencode/v2
export const layer = Layer.effect(
Service,
Effect.gen(function* () {
+ yield* Location.Service
let records = HashMap.empty()
let defaultModel: { providerID: ProviderV2.ID; modelID: ModelV2.ID } | undefined
const plugin = yield* PluginV2.Service
+ const events = yield* EventV2.Service
const resolve = (model: ModelV2.Info) => {
const provider = Option.getOrThrow(HashMap.get(records, model.providerID)).provider
@@ -155,14 +168,12 @@ export const layer = Layer.effect(
)
const updated = yield* plugin.trigger("model.update", {}, { model, cancel: false })
if (updated.cancel) return
+ const next = new ModelV2.Info({ ...updated.model, id: modelID, providerID })
records = HashMap.set(records, providerID, {
provider: record.provider,
- models: HashMap.set(
- record.models,
- modelID,
- new ModelV2.Info({ ...updated.model, id: modelID, providerID }),
- ),
+ models: HashMap.set(record.models, modelID, next),
})
+ yield* events.publish(Event.ModelUpdated, { model: resolve(next) })
return
}),
@@ -255,4 +266,4 @@ export const layer = Layer.effect(
const SMALL_MODEL_RE = /\b(nano|flash|lite|mini|haiku|small|fast)\b/
-export const defaultLayer = layer.pipe(Layer.provide(PluginV2.defaultLayer))
+export const defaultLayer = layer.pipe(Layer.provideMerge(EventV2.defaultLayer), Layer.provide(PluginV2.defaultLayer))
diff --git a/packages/core/src/event.ts b/packages/core/src/event.ts
new file mode 100644
index 0000000000..e01dc5b0d6
--- /dev/null
+++ b/packages/core/src/event.ts
@@ -0,0 +1,157 @@
+import { Context, Effect, Layer, Option, PubSub, Schema, Stream } from "effect"
+import { Location } from "./location"
+import { withStatics } from "./schema"
+import { Identifier } from "./util/identifier"
+
+export const ID = Schema.String.pipe(
+ Schema.brand("Event.ID"),
+ withStatics((schema) => ({ create: () => schema.make("evt_" + Identifier.ascending()) })),
+)
+export type ID = typeof ID.Type
+
+export type Definition = {
+ readonly type: Type
+ readonly version?: number
+ readonly aggregate?: string
+ readonly data: DataSchema
+}
+
+export type Data = Schema.Schema.Type
+
+export type Payload = {
+ readonly id: ID
+ readonly type: D["type"]
+ readonly data: Data
+ readonly version?: number
+ readonly location?: Location.Ref
+ readonly metadata?: Record
+}
+
+export type Sync = (event: Payload) => Effect.Effect
+
+export const registry = new Map()
+
+export function define(input: {
+ readonly type: Type
+ readonly version?: number
+ readonly aggregate?: string
+ readonly schema: Fields
+}): Schema.Schema>>> & Definition> {
+ const Data = Schema.Struct(input.schema)
+ const Payload = Schema.Struct({
+ id: ID,
+ metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),
+ type: Schema.Literal(input.type),
+ version: Schema.optional(Schema.Number),
+ location: Schema.optional(Location.Ref),
+ data: Data,
+ }).annotate({ identifier: input.type })
+
+ const definition = Object.assign(Payload, {
+ type: input.type,
+ ...(input.version === undefined ? {} : { version: input.version }),
+ ...(input.aggregate === undefined ? {} : { aggregate: input.aggregate }),
+ data: Data,
+ })
+ registry.set(input.type, definition)
+ return definition as Schema.Schema>>> &
+ Definition>
+}
+
+export function definitions() {
+ return registry.values().toArray()
+}
+
+export interface PublishOptions {
+ readonly id?: ID
+ readonly metadata?: Record
+}
+
+export type Unsubscribe = Effect.Effect
+
+export interface Interface {
+ readonly publish: (
+ definition: D,
+ data: Data,
+ options?: PublishOptions,
+ ) => Effect.Effect>
+ readonly publishEvent: (event: Payload) => Effect.Effect>
+ readonly subscribe: (definition: D) => Stream.Stream>
+ readonly all: () => Stream.Stream
+ readonly sync: (handler: Sync) => Effect.Effect
+}
+
+export class Service extends Context.Service()("@opencode/Event") {}
+
+export const layer = Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const all = yield* PubSub.unbounded()
+ const typed = new Map>()
+ const syncHandlers = new Array()
+
+ const getOrCreate = (definition: Definition) =>
+ Effect.gen(function* () {
+ const existing = typed.get(definition.type)
+ if (existing) return existing
+ const pubsub = yield* PubSub.unbounded()
+ typed.set(definition.type, pubsub)
+ return pubsub
+ })
+
+ yield* Effect.addFinalizer(() =>
+ Effect.gen(function* () {
+ yield* PubSub.shutdown(all)
+ yield* Effect.forEach(typed.values(), PubSub.shutdown, { discard: true })
+ }),
+ )
+
+ function publishEvent(event: Payload) {
+ return Effect.gen(function* () {
+ for (const sync of syncHandlers) {
+ yield* sync(event as Payload)
+ }
+ const pubsub = typed.get(event.type)
+ if (pubsub) yield* PubSub.publish(pubsub, event as Payload)
+ yield* PubSub.publish(all, event as Payload)
+ return event
+ })
+ }
+
+ function publish(definition: D, data: Data, options?: PublishOptions) {
+ return Effect.gen(function* () {
+ const location = Option.getOrUndefined(yield* Effect.serviceOption(Location.Service))
+ const event = {
+ id: options?.id ?? ID.create(),
+ ...(options?.metadata ? { metadata: options.metadata } : {}),
+ type: definition.type,
+ ...(definition.version === undefined ? {} : { version: definition.version }),
+ ...(location ? { location } : {}),
+ data,
+ } as Payload
+ return yield* publishEvent(event)
+ })
+ }
+
+ const subscribe = (definition: D): Stream.Stream> =>
+ Stream.unwrap(getOrCreate(definition).pipe(Effect.map((pubsub) => Stream.fromPubSub(pubsub)))).pipe(
+ Stream.map((event) => event as Payload),
+ )
+
+ const streamAll = (): Stream.Stream => Stream.fromPubSub(all)
+ const sync = (handler: Sync): Effect.Effect =>
+ Effect.sync(() => {
+ syncHandlers.push(handler)
+ return Effect.sync(() => {
+ const index = syncHandlers.indexOf(handler)
+ if (index >= 0) syncHandlers.splice(index, 1)
+ })
+ })
+
+ return Service.of({ publish, publishEvent, subscribe, all: streamAll, sync })
+ }),
+)
+
+export const defaultLayer = layer
+
+export * as EventV2 from "./event"
diff --git a/packages/core/src/flag/flag.ts b/packages/core/src/flag/flag.ts
index f76d1aaf9d..d1480179a1 100644
--- a/packages/core/src/flag/flag.ts
+++ b/packages/core/src/flag/flag.ts
@@ -5,11 +5,6 @@ function truthy(key: string) {
return value === "true" || value === "1"
}
-function falsy(key: string) {
- const value = process.env[key]?.toLowerCase()
- return value === "false" || value === "0"
-}
-
function number(key: string) {
const value = process.env[key]
if (!value) return undefined
@@ -19,15 +14,12 @@ function number(key: string) {
const OPENCODE_EXPERIMENTAL = truthy("OPENCODE_EXPERIMENTAL")
const OPENCODE_DISABLE_CLAUDE_CODE = truthy("OPENCODE_DISABLE_CLAUDE_CODE")
-const OPENCODE_DISABLE_CLAUDE_CODE_SKILLS =
- OPENCODE_DISABLE_CLAUDE_CODE || truthy("OPENCODE_DISABLE_CLAUDE_CODE_SKILLS")
const copy = process.env["OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"]
export const Flag = {
OTEL_EXPORTER_OTLP_ENDPOINT: process.env["OTEL_EXPORTER_OTLP_ENDPOINT"],
OTEL_EXPORTER_OTLP_HEADERS: process.env["OTEL_EXPORTER_OTLP_HEADERS"],
- OPENCODE_AUTO_SHARE: truthy("OPENCODE_AUTO_SHARE"),
OPENCODE_AUTO_HEAP_SNAPSHOT: truthy("OPENCODE_AUTO_HEAP_SNAPSHOT"),
OPENCODE_GIT_BASH_PATH: process.env["OPENCODE_GIT_BASH_PATH"],
OPENCODE_CONFIG: process.env["OPENCODE_CONFIG"],
@@ -40,13 +32,11 @@ export const Flag = {
OPENCODE_PERMISSION: process.env["OPENCODE_PERMISSION"],
OPENCODE_DISABLE_DEFAULT_PLUGINS: truthy("OPENCODE_DISABLE_DEFAULT_PLUGINS"),
OPENCODE_DISABLE_LSP_DOWNLOAD: truthy("OPENCODE_DISABLE_LSP_DOWNLOAD"),
- OPENCODE_ENABLE_EXPERIMENTAL_MODELS: truthy("OPENCODE_ENABLE_EXPERIMENTAL_MODELS"),
OPENCODE_DISABLE_AUTOCOMPACT: truthy("OPENCODE_DISABLE_AUTOCOMPACT"),
OPENCODE_DISABLE_MODELS_FETCH: truthy("OPENCODE_DISABLE_MODELS_FETCH"),
OPENCODE_DISABLE_MOUSE: truthy("OPENCODE_DISABLE_MOUSE"),
OPENCODE_DISABLE_CLAUDE_CODE,
OPENCODE_DISABLE_CLAUDE_CODE_PROMPT: OPENCODE_DISABLE_CLAUDE_CODE || truthy("OPENCODE_DISABLE_CLAUDE_CODE_PROMPT"),
- OPENCODE_DISABLE_CLAUDE_CODE_SKILLS,
OPENCODE_DISABLE_EXTERNAL_SKILLS: truthy("OPENCODE_DISABLE_EXTERNAL_SKILLS"),
OPENCODE_FAKE_VCS: process.env["OPENCODE_FAKE_VCS"],
OPENCODE_SERVER_PASSWORD: process.env["OPENCODE_SERVER_PASSWORD"],
@@ -61,24 +51,17 @@ export const Flag = {
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: Config.boolean("OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe(
Config.withDefault(false),
),
- OPENCODE_EXPERIMENTAL_ICON_DISCOVERY: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_ICON_DISCOVERY"),
OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT:
copy === undefined ? process.platform === "win32" : truthy("OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"),
OPENCODE_ENABLE_EXA: truthy("OPENCODE_ENABLE_EXA") || OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_EXA"),
- OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS: number("OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS"),
OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX: number("OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX"),
- OPENCODE_EXPERIMENTAL_OXFMT: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_OXFMT"),
- OPENCODE_EXPERIMENTAL_LSP_TY: truthy("OPENCODE_EXPERIMENTAL_LSP_TY"),
OPENCODE_EXPERIMENTAL_LSP_TOOL: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_LSP_TOOL"),
OPENCODE_EXPERIMENTAL_PLAN_MODE: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_PLAN_MODE"),
OPENCODE_EXPERIMENTAL_SCOUT: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_SCOUT"),
- OPENCODE_EXPERIMENTAL_MARKDOWN: !falsy("OPENCODE_EXPERIMENTAL_MARKDOWN"),
OPENCODE_ENABLE_PARALLEL: truthy("OPENCODE_ENABLE_PARALLEL") || truthy("OPENCODE_EXPERIMENTAL_PARALLEL"),
OPENCODE_MODELS_URL: process.env["OPENCODE_MODELS_URL"],
OPENCODE_MODELS_PATH: process.env["OPENCODE_MODELS_PATH"],
- OPENCODE_DISABLE_EMBEDDED_WEB_UI: truthy("OPENCODE_DISABLE_EMBEDDED_WEB_UI"),
OPENCODE_DB: process.env["OPENCODE_DB"],
- OPENCODE_DISABLE_CHANNEL_DB: truthy("OPENCODE_DISABLE_CHANNEL_DB"),
OPENCODE_SKIP_MIGRATIONS: truthy("OPENCODE_SKIP_MIGRATIONS"),
OPENCODE_STRICT_CONFIG_DEPS: truthy("OPENCODE_STRICT_CONFIG_DEPS"),
diff --git a/packages/core/src/location-layer.ts b/packages/core/src/location-layer.ts
new file mode 100644
index 0000000000..84dfb3dfae
--- /dev/null
+++ b/packages/core/src/location-layer.ts
@@ -0,0 +1,12 @@
+import { Layer, LayerMap } from "effect"
+import { Location } from "./location"
+import { Catalog } from "./catalog"
+import { PluginBoot } from "./plugin/boot"
+
+export class LocationServiceMap extends LayerMap.Service()("@opencode/example/LocationServiceMap", {
+ lookup: (ref: Location.Ref) => {
+ const location = Layer.succeed(Location.Service, Location.Service.of(ref))
+ return Layer.mergeAll(Catalog.defaultLayer, PluginBoot.defaultLayer).pipe(Layer.provide(location))
+ },
+ idleTimeToLive: "5 minutes",
+}) {}
diff --git a/packages/core/src/location.ts b/packages/core/src/location.ts
new file mode 100644
index 0000000000..00ff9cd3ea
--- /dev/null
+++ b/packages/core/src/location.ts
@@ -0,0 +1,11 @@
+import { Context, Schema } from "effect"
+
+export * as Location from "./location"
+
+export const Ref = Schema.Struct({
+ directory: Schema.String,
+ workspaceID: Schema.optional(Schema.String),
+}).annotate({ identifier: "Location.Ref" })
+export type Ref = typeof Ref.Type
+
+export class Service extends Context.Service()("@opencode/Location") {}
diff --git a/packages/core/src/models-snapshot.d.ts b/packages/core/src/models-snapshot.d.ts
new file mode 100644
index 0000000000..839eba6b7d
--- /dev/null
+++ b/packages/core/src/models-snapshot.d.ts
@@ -0,0 +1,2 @@
+// Auto-generated by build.ts - do not edit
+export declare const snapshot: Record
diff --git a/packages/core/src/models-snapshot.js b/packages/core/src/models-snapshot.js
new file mode 100644
index 0000000000..c582a75bdf
--- /dev/null
+++ b/packages/core/src/models-snapshot.js
@@ -0,0 +1,71726 @@
+// @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 },
+ },
+ "grok-4.20-multi-agent-beta-0309": {
+ id: "grok-4.20-multi-agent-beta-0309",
+ name: "grok-4.20-multi-agent-beta-0309",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-16",
+ last_updated: "2026-03-16",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 6 },
+ limit: { context: 2000000, output: 30000 },
+ },
+ "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-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-16",
+ last_updated: "2025-10-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 5 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "claude-opus-4-5-20251101": {
+ id: "claude-opus-4-5-20251101",
+ name: "claude-opus-4-5-20251101",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-03-31",
+ release_date: "2025-11-25",
+ last_updated: "2025-11-25",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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 },
+ },
+ "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-02",
+ last_updated: "2026-04-02",
+ modalities: { input: ["text", "image", "video", "audio", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.72, output: 3.2 },
+ limit: { context: 200000, output: 131072 },
+ },
+ "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",
+ 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.286, output: 1.142 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "claude-3-5-haiku-20241022": {
+ id: "claude-3-5-haiku-20241022",
+ name: "claude-3-5-haiku-20241022",
+ 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 },
+ limit: { context: 200000, output: 8192 },
+ },
+ "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 },
+ },
+ "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-12",
+ last_updated: "2026-02-12",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 2.6 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "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 },
+ },
+ "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-31",
+ release_date: "2026-02-18",
+ last_updated: "2026-03-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15 },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "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 },
+ },
+ "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-20",
+ last_updated: "2026-01-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.0715, output: 0.429 },
+ limit: { context: 200000, output: 131072 },
+ },
+ "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 },
+ },
+ "grok-4.20-beta-0309-non-reasoning": {
+ id: "grok-4.20-beta-0309-non-reasoning",
+ name: "grok-4.20-beta-0309-non-reasoning",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-16",
+ last_updated: "2026-03-16",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 6 },
+ limit: { context: 2000000, output: 30000 },
+ },
+ "claude-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "claude-opus-4-7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ 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 },
+ },
+ "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-08",
+ last_updated: "2025-08-08",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 2 },
+ limit: { context: 400000, input: 272000, 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 },
+ },
+ "MiniMax-M2.7": {
+ id: "MiniMax-M2.7",
+ name: "MiniMax-M2.7",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-19",
+ last_updated: "2026-03-19",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.3, output: 1.2 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "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",
+ family: "claude-sonnet",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-07-31",
+ release_date: "2025-09-30",
+ last_updated: "2025-09-30",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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-3-5-haiku-latest": {
+ id: "claude-3-5-haiku-latest",
+ name: "claude-3-5-haiku-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 },
+ limit: { context: 200000, output: 8192 },
+ },
+ "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",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-08-31",
+ release_date: "2025-12-12",
+ last_updated: "2025-12-12",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.75, output: 14 },
+ limit: { context: 400000, input: 272000, 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-19",
+ last_updated: "2026-03-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.75, output: 4.5 },
+ limit: { context: 400000, input: 272000, 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 },
+ },
+ "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-04-10",
+ last_updated: "2026-04-10",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.86, output: 3.5 },
+ limit: { context: 200000, output: 131072 },
+ },
+ "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 },
+ },
+ "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-19",
+ last_updated: "2026-03-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.2, output: 1.25 },
+ limit: { context: 400000, input: 272000, output: 128000 },
+ },
+ "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",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2025-07-29",
+ last_updated: "2025-07-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.286, output: 1.142 },
+ limit: { context: 131072, output: 98304 },
+ },
+ "gpt-5.4-mini-2026-03-17": {
+ id: "gpt-5.4-mini-2026-03-17",
+ name: "gpt-5.4-mini-2026-03-17",
+ family: "gpt-mini",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-08-31",
+ release_date: "2026-03-19",
+ last_updated: "2026-03-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.75, output: 4.5 },
+ 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: 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",
+ family: "gpt-codex",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-08-31",
+ release_date: "2025-12-12",
+ last_updated: "2025-12-12",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ 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 },
+ },
+ "gemini-3.1-flash-image-preview": {
+ id: "gemini-3.1-flash-image-preview",
+ name: "gemini-3.1-flash-image-preview",
+ attachment: true,
+ reasoning: false,
+ tool_call: false,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-02-27",
+ last_updated: "2026-02-27",
+ modalities: { input: ["text", "image", "pdf"], output: ["text", "image"] },
+ open_weights: false,
+ cost: { input: 0.5, output: 60 },
+ limit: { context: 131072, output: 32768 },
+ },
+ "MiniMax-M2.7-highspeed": {
+ id: "MiniMax-M2.7-highspeed",
+ name: "MiniMax-M2.7-highspeed",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-19",
+ last_updated: "2026-03-19",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.6, output: 4.8 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "glm-4.5-x": {
+ id: "glm-4.5-x",
+ name: "glm-4.5-x",
+ family: "glm",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2025-07-29",
+ last_updated: "2025-07-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.143, output: 2.29 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "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",
+ 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"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.25, output: 10 },
+ limit: { context: 400000, input: 272000, 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 },
+ },
+ "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-29",
+ last_updated: "2025-07-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1143, output: 0.286 },
+ limit: { context: 131072, output: 98304 },
+ },
+ "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, cache_read: 0, cache_write: 0, context_over_200k: { input: 60, output: 270 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ },
+ "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.72, output: 3.2 },
+ limit: { context: 200000, output: 131072 },
+ },
+ "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 },
+ },
+ "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-25",
+ last_updated: "2025-11-25",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "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-12",
+ last_updated: "2025-08-12",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.29, output: 0.86 },
+ 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.286, output: 1.142 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "claude-opus-4-6-thinking": {
+ id: "claude-opus-4-6-thinking",
+ name: "claude-opus-4-6-thinking",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-02-06",
+ last_updated: "2026-03-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "claude-sonnet-4-6-thinking": {
+ id: "claude-sonnet-4-6-thinking",
+ name: "claude-sonnet-4-6-thinking",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-08",
+ release_date: "2026-02-18",
+ last_updated: "2026-03-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15 },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "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.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",
+ 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 },
+ 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", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 2.5,
+ output: 15,
+ cache_read: 0.25,
+ cache_write: 0,
+ context_over_200k: { input: 5, output: 22.5 },
+ },
+ 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-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"], 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",
+ family: "claude-haiku",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-02-28",
+ release_date: "2025-10-16",
+ last_updated: "2025-10-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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 },
+ },
+ "gpt-5.4-nano-2026-03-17": {
+ id: "gpt-5.4-nano-2026-03-17",
+ name: "gpt-5.4-nano-2026-03-17",
+ family: "gpt-nano",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-08-31",
+ release_date: "2026-03-19",
+ last_updated: "2026-03-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.2, output: 1.25 },
+ limit: { context: 400000, input: 272000, output: 128000 },
+ },
+ "claude-sonnet-4-20250514": {
+ id: "claude-sonnet-4-20250514",
+ name: "claude-sonnet-4-20250514",
+ 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 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "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 },
+ },
+ "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-06",
+ last_updated: "2026-03-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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,
+ 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 },
+ limit: { context: 1047576, 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",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2024-09-30",
+ release_date: "2025-10-08",
+ last_updated: "2025-10-08",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ 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-05-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2.5, output: 10 },
+ 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-30",
+ last_updated: "2025-09-30",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15 },
+ 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-08",
+ last_updated: "2025-08-08",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.25, output: 10 },
+ limit: { context: 400000, input: 272000, output: 128000 },
+ },
+ "grok-4.20-beta-0309-reasoning": {
+ id: "grok-4.20-beta-0309-reasoning",
+ name: "grok-4.20-beta-0309-reasoning",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-16",
+ last_updated: "2026-03-16",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 6 },
+ limit: { context: 2000000, output: 30000 },
+ },
+ "claude-opus-4-20250514": {
+ id: "claude-opus-4-20250514",
+ name: "claude-opus-4-20250514",
+ 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 },
+ limit: { context: 200000, output: 32000 },
+ },
+ "glm-for-coding": {
+ id: "glm-for-coding",
+ name: "glm-for-coding",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2025-09-30",
+ last_updated: "2025-09-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.086, output: 0.343 },
+ limit: { context: 200000, output: 131072 },
+ },
+ "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", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "glm-4.5-airx": {
+ id: "glm-4.5-airx",
+ name: "glm-4.5-airx",
+ family: "glm",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2025-07-29",
+ last_updated: "2025-07-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.572, output: 1.714 },
+ 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,
+ 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 },
+ limit: { context: 1047576, 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,
+ 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 },
+ limit: { context: 1047576, 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.5-122b-a10b": {
+ id: "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-23",
+ last_updated: "2026-02-23",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.4, output: 3.2 },
+ limit: { context: 262144, 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 },
+ },
+ "qwen3.6-27b": {
+ id: "qwen3.6-27b",
+ name: "Qwen3.6 27B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 3.6 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "qwen3.5-27b": {
+ id: "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-23",
+ last_updated: "2026-02-23",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 2.4 },
+ limit: { context: 262144, 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: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-02-15",
+ last_updated: "2026-02-15",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 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 },
+ },
+ "qwen3.6-35b-a3b": {
+ id: "qwen3.6-35b-a3b",
+ name: "Qwen3.6 35B-A3B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.248, output: 1.485 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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 },
+ },
+ "qwen3.6-max-preview": {
+ id: "qwen3.6-max-preview",
+ name: "Qwen3.6 Max Preview",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.3, output: 7.8, cache_read: 0.13, cache_write: 1.625 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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 },
+ },
+ "qwen3.5-35b-a3b": {
+ id: "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-23",
+ last_updated: "2026-02-23",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.25, output: 2 },
+ limit: { context: 262144, output: 65536 },
+ },
+ },
+ },
+ 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 },
+ },
+ "qwen-3.6-plus": {
+ id: "qwen-3.6-plus",
+ name: "Qwen 3.6 Plus",
+ family: "qwen3.6",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ structured_output: false,
+ release_date: "2026-04-02",
+ last_updated: "2026-04-02",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.45, output: 2.7 },
+ limit: { context: 991800, output: 65536 },
+ },
+ "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 },
+ },
+ "qwen3.6-max-preview": {
+ id: "qwen3.6-max-preview",
+ name: "Qwen3.6 Max Preview",
+ family: "qwen3.6",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ structured_output: false,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.3, output: 7.8 },
+ limit: { context: 245800, 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 },
+ },
+ "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 },
+ },
+ "alibaba/qwen3.6-flash": {
+ id: "alibaba/qwen3.6-flash",
+ name: "Qwen3.6 Flash",
+ family: "qwen3.6",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ structured_output: false,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.19, output: 1.16 },
+ limit: { context: 991800, output: 65536 },
+ },
+ "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.6-35B-A3B:thinking": {
+ id: "qwen/Qwen3.6-35B-A3B:thinking",
+ name: "Qwen3.6 35B A3B Thinking",
+ family: "qwen3.6",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ structured_output: false,
+ release_date: "2026-04-19",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.29, output: 1.74 },
+ limit: { context: 262144, output: 16384 },
+ },
+ "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 },
+ },
+ "qwen/Qwen3.6-35B-A3B": {
+ id: "qwen/Qwen3.6-35B-A3B",
+ name: "Qwen3.6 35B A3B",
+ family: "qwen3.6",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ structured_output: false,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.29, output: 1.74 },
+ limit: { context: 262144, output: 16384 },
+ },
+ "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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: false,
+ release_date: "2026-04-16",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.53, output: 2.73 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "moonshotai/kimi-k2.6:thinking": {
+ id: "moonshotai/kimi-k2.6:thinking",
+ name: "Kimi K2.6 Thinking",
+ family: "kimi-thinking",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: false,
+ release_date: "2026-04-16",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.53, output: 2.73 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "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,
+ 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: 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,
+ 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: 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-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 },
+ 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-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 },
+ 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.5": {
+ id: "openai/gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5 },
+ limit: { context: 1050000, input: 922000, 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.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-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 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "anthropic/claude-opus-4-7": {
+ id: "anthropic/claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5 },
+ 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,
+ 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-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 },
+ 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/Qwen3.6-35B-A3B": {
+ id: "Qwen/Qwen3.6-35B-A3B",
+ name: "Qwen/Qwen3.6-35B-A3B",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.23, output: 1.86 },
+ 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.6": {
+ id: "Pro/moonshotai/Kimi-K2.6",
+ name: "Pro/moonshotai/Kimi-K2.6",
+ family: "kimi",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-01-27",
+ last_updated: "2026-01-27",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.45, output: 2.25 },
+ 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.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "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.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ },
+ },
+ 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-r1": {
+ id: "deepseek/deepseek-r1",
+ name: "DeepSeek: R1",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: 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: 0.7, output: 2.5 },
+ limit: { context: 64000, output: 16000 },
+ },
+ "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/owl-alpha": {
+ id: "openrouter/owl-alpha",
+ name: "Owl Alpha",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 1048756, output: 262144 },
+ status: "alpha",
+ },
+ "openrouter/pareto-code": {
+ id: "openrouter/pareto-code",
+ name: "Pareto Code Router",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ limit: { context: 200000, output: 200000 },
+ },
+ "openrouter/elephant-alpha": {
+ id: "openrouter/elephant-alpha",
+ name: "Elephant (free)",
+ family: "elephant",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-13",
+ last_updated: "2026-04-13",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, output: 32768 },
+ },
+ "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-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": {
+ 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 },
+ },
+ "tencent/hy3-preview": {
+ id: "tencent/hy3-preview",
+ name: "Hy3 preview",
+ family: "Hy",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.066, output: 0.26, cache_read: 0.029, cache_write: 0.029 },
+ limit: { context: 256000, output: 64000 },
+ },
+ "poolside/laguna-m.1:free": {
+ id: "poolside/laguna-m.1:free",
+ name: "Laguna M.1",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-28",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "poolside/laguna-xs.2:free": {
+ id: "poolside/laguna-xs.2:free",
+ name: "Laguna XS.2",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-28",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
+ 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-omni-30b-a3b-reasoning:free": {
+ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
+ name: "Nemotron 3 Nano Omni (free)",
+ family: "nemotron",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-28",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "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-edit-2": {
+ id: "inception/mercury-edit-2",
+ name: "Mercury Edit 2",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-30",
+ last_updated: "2026-03-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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 },
+ },
+ "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: 0.75, output: 4.5, cache_read: 0.075 },
+ 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: 0.2, output: 1.25, cache_read: 0.02 },
+ 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-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-coder-plus": {
+ id: "qwen/qwen3-coder-plus",
+ name: "Qwen3 Coder Plus",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2025-09-23",
+ last_updated: "2025-09-23",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.65, output: 3.25, cache_read: 0.13, cache_write: 0.8125 },
+ limit: { context: 1000000, output: 65536 },
+ },
+ "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/qwen-plus": {
+ id: "qwen/qwen-plus",
+ name: "Qwen: Qwen-Plus",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ structured_output: false,
+ 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.26, output: 0.78, cache_read: 0.052, cache_write: 0.325 },
+ limit: { context: 1000000, output: 32768 },
+ },
+ "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, cache_read: 0.0325, cache_write: 0.40625 },
+ 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, cache_read: 0.156, cache_write: 0.975 },
+ 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/qwen-3.6-27b": {
+ id: "qwen/qwen-3.6-27b",
+ name: "Qwen3.6 27B",
+ family: "qwen",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.195, output: 1.56 },
+ limit: { context: 262144, output: 81920 },
+ },
+ "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-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, cache_read: 0.039, cache_write: 0.24375 },
+ 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/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/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-flash",
+ attachment: true,
+ reasoning: true,
+ tool_call: false,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-02-26",
+ last_updated: "2026-02-26",
+ modalities: { input: ["text", "image"], output: ["text", "image"] },
+ open_weights: false,
+ cost: { input: 0.5, output: 3 },
+ limit: { context: 65536, 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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_details" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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-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-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-opus-4.7": {
+ id: "anthropic/claude-opus-4.7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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-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,
+ knowledge: "2025-08-31",
+ 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 },
+ },
+ "deepseek/deepseek-v4-flash": {
+ id: "deepseek/deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ "deepseek/deepseek-v4-pro": {
+ id: "deepseek/deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ "x-ai/grok-4.3": {
+ id: "x-ai/grok-4.3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-05-01",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.25,
+ output: 2.5,
+ cache_read: 0.2,
+ context_over_200k: { input: 2.5, output: 5, cache_read: 0.4 },
+ },
+ limit: { context: 1000000, output: 1000000 },
+ },
+ "openai/gpt-5.5": {
+ id: "openai/gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, 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.5-pro": {
+ id: "openai/gpt-5.5-pro",
+ name: "GPT-5.5 Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180, context_over_200k: { input: 60, output: 270 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ },
+ "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.125,
+ context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
+ },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ },
+ "xiaomi/mimo-v2.5-pro": {
+ id: "xiaomi/mimo-v2.5-pro",
+ name: "Xiaomi: MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-omni": {
+ id: "xiaomi/mimo-v2-omni",
+ name: "Xiaomi: MiMo-V2-Omni",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_details" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.4, output: 2, cache_read: 0.08 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "xiaomi/mimo-v2.5": {
+ id: "xiaomi/mimo-v2.5",
+ name: "Xiaomi: MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_details" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: {
+ input: 0.4,
+ output: 2,
+ cache_read: 0.08,
+ context_over_200k: { input: 0.8, output: 4, cache_read: 0.16 },
+ },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-pro": {
+ id: "xiaomi/mimo-v2-pro",
+ name: "Xiaomi: MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_details" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-flash": {
+ id: "xiaomi/mimo-v2-flash",
+ name: "Xiaomi: MiMo-V2-Flash",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_details" },
+ 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: 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-k2p6": {
+ id: "accounts/fireworks/models/kimi-k2p6",
+ name: "Kimi K2.6",
+ family: "kimi-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262000, output: 262000 },
+ },
+ "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/minimax-m2p7": {
+ id: "accounts/fireworks/models/minimax-m2p7",
+ name: "MiniMax-M2.7",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-12",
+ last_updated: "2026-04-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-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",
+ 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 },
+ },
+ "accounts/fireworks/models/deepseek-v4-pro": {
+ id: "accounts/fireworks/models/deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.15 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ },
+ },
+ "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: {
+ k2p6: {
+ id: "k2p6",
+ name: "Kimi K2.6",
+ family: "kimi-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04",
+ last_updated: "2026-04",
+ 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 },
+ },
+ 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-k2.5",
+ 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 },
+ },
+ "mimo-v2.5-pro": {
+ id: "mimo-v2.5-pro",
+ name: "MiMo V2.5 Pro",
+ family: "mimo-v2.5-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, 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-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: 32768 },
+ },
+ "mimo-v2-omni": {
+ id: "mimo-v2-omni",
+ name: "MiMo V2 Omni",
+ family: "mimo-v2-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: 128000 },
+ status: "deprecated",
+ },
+ "mimo-v2.5": {
+ id: "mimo-v2.5",
+ name: "MiMo V2.5",
+ family: "mimo-v2.5",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: {
+ input: 0.4,
+ output: 2,
+ cache_read: 0.08,
+ context_over_200k: { input: 0.8, output: 4, cache_read: 0.16 },
+ },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "qwen3.6-plus": {
+ id: "qwen3.6-plus",
+ name: "Qwen3.6 Plus",
+ family: "qwen3.6",
+ attachment: true,
+ 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.5, output: 3, cache_read: 0.05, cache_write: 0.625 },
+ limit: { context: 262144, output: 65536 },
+ provider: { npm: "@ai-sdk/anthropic" },
+ },
+ "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: 202752, output: 32768 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.0028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-10",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.0145 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "minimax-m2.5": {
+ id: "minimax-m2.5",
+ name: "MiniMax M2.5",
+ family: "minimax-m2.5",
+ 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.03 },
+ limit: { context: 204800, output: 65536 },
+ },
+ "mimo-v2-pro": {
+ id: "mimo-v2-pro",
+ name: "MiMo V2 Pro",
+ family: "mimo-v2-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: 128000 },
+ status: "deprecated",
+ },
+ "qwen3.5-plus": {
+ id: "qwen3.5-plus",
+ name: "Qwen3.5 Plus",
+ family: "qwen3.5",
+ attachment: true,
+ 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.2, output: 1.2, cache_read: 0.02, cache_write: 0.25 },
+ limit: { context: 262144, output: 65536 },
+ provider: { npm: "@ai-sdk/anthropic" },
+ },
+ },
+ },
+ "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 },
+ },
+ "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-04-14",
+ last_updated: "2026-04-14",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.87, output: 3.48, cache_read: 0.17 },
+ limit: { context: 202752, output: 128000 },
+ },
+ "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 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Moonshot Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: false,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.929, output: 3.858 },
+ limit: { context: 262144, 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 },
+ },
+ "qwen3.6-max-preview": {
+ id: "qwen3.6-max-preview",
+ name: "Qwen3.6 Max Preview",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.32, output: 7.9, cache_read: 0.132 },
+ limit: { context: 245800, output: 65536 },
+ },
+ "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 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ },
+ },
+ firepass: {
+ id: "firepass",
+ env: ["FIREPASS_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://api.fireworks.ai/inference/v1/",
+ name: "Fireworks (Firepass)",
+ doc: "https://docs.fireworks.ai/firepass",
+ models: {
+ "accounts/fireworks/routers/kimi-k2p6-turbo": {
+ id: "accounts/fireworks/routers/kimi-k2p6-turbo",
+ name: "Kimi K2.6 Turbo",
+ family: "kimi-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0 },
+ limit: { context: 262000, output: 262000 },
+ },
+ },
+ },
+ "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,
+ knowledge: "2025-05-31",
+ 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.6": {
+ id: "moonshotai/Kimi-K2.6",
+ name: "Kimi-K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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.7": {
+ id: "MiniMaxAI/MiniMax-M2.7",
+ name: "MiniMax-M2.7",
+ family: "minimax",
+ 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 },
+ },
+ "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 },
+ },
+ "deepseek-ai/DeepSeek-V4-Pro": {
+ id: "deepseek-ai/DeepSeek-V4-Pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ },
+ },
+ 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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: false,
+ knowledge: "2025-01-01",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262140, output: 262140 },
+ },
+ "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-05-31",
+ 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-opus-4.7": {
+ id: "anthropic/claude-opus-4.7",
+ name: "Claude Opus 4.7",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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-08-31",
+ 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" },
+ },
+ "deepseek/deepseek-v4-flash": {
+ id: "deepseek/deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "deepseek/deepseek-v4-pro": {
+ id: "deepseek/deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "tencent/hy3-preview": {
+ id: "tencent/hy3-preview",
+ name: "Hy3 preview",
+ family: "Hy",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.172, output: 0.572, cache_read: 0.058, cache_write: 0 },
+ limit: { context: 256000, output: 64000 },
+ },
+ "openai/gpt-5.5": {
+ id: "openai/gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ experimental: {
+ modes: {
+ fast: {
+ cost: { input: 12.5, output: 75, cache_read: 1.25 },
+ provider: { body: { service_tier: "priority" } },
+ },
+ },
+ },
+ },
+ "openai/gpt-5.5-pro": {
+ id: "openai/gpt-5.5-pro",
+ name: "GPT-5.5 Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180, context_over_200k: { input: 60, output: 270 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ },
+ "xiaomi/mimo-v2.5-pro": {
+ id: "xiaomi/mimo-v2.5-pro",
+ name: "MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-omni": {
+ id: "xiaomi/mimo-v2-omni",
+ name: "MiMo V2 Omni",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.4, output: 2, cache_read: 0.08 },
+ limit: { context: 265000, output: 265000 },
+ },
+ "xiaomi/mimo-v2.5": {
+ id: "xiaomi/mimo-v2.5",
+ name: "MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: {
+ input: 0.4,
+ output: 2,
+ cache_read: 0.08,
+ context_over_200k: { input: 0.8, output: 4, cache_read: 0.16 },
+ },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-pro": {
+ id: "xiaomi/mimo-v2-pro",
+ name: "MiMo V2 Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1000000, output: 256000 },
+ },
+ "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-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: 262144, output: 65536 },
+ },
+ },
+ },
+ 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-r1-distill-qwen-32b": {
+ id: "deepseek/deepseek-r1-distill-qwen-32b",
+ name: "DeepSeek R1 Distill Qwen 32B",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-01-20",
+ last_updated: "2025-01-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 0.3 },
+ limit: { context: 64000, 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-distill-qwen-14b": {
+ id: "deepseek/deepseek-r1-distill-qwen-14b",
+ name: "DeepSeek R1 Distill Qwen 14B",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-01-20",
+ last_updated: "2025-01-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.15, output: 0.15 },
+ limit: { context: 32768, output: 16384 },
+ },
+ "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 },
+ },
+ "inclusionai/ling-2.6-1t": {
+ id: "inclusionai/ling-2.6-1t",
+ name: "Ling-2.6-1T",
+ family: "ling",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, 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.2-3b-instruct": {
+ id: "meta-llama/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 },
+ },
+ "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.6-27b": {
+ id: "qwen/qwen3.6-27b",
+ name: "Qwen3.6-27B",
+ family: "qwen3.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-04-02",
+ last_updated: "2026-04-02",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.6, output: 3.6 },
+ 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-12b-it": {
+ id: "google/gemma-3-12b-it",
+ name: "Gemma 3 12B",
+ 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.05, output: 0.1 },
+ limit: { context: 131072, 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,
+ 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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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 },
+ },
+ "deepseek/deepseek-v4-flash": {
+ id: "deepseek/deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ "deepseek/deepseek-v4-pro": {
+ id: "deepseek/deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.69, output: 3.38, cache_read: 0.13 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ },
+ },
+ "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-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: 8192, output: 16384 },
+ },
+ "mimo-v2.5-pro": {
+ id: "mimo-v2.5-pro",
+ name: "MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 0, output: 0, cache_read: 0 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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: false,
+ cost: { input: 0, output: 0, cache_read: 0 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "mimo-v2.5": {
+ id: "mimo-v2.5",
+ name: "MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 0, output: 0, cache_read: 0 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "mimo-v2-pro": {
+ id: "mimo-v2-pro",
+ name: "MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ 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: false,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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, output: 0, cache_read: 0 },
+ limit: { context: 262144, output: 65536 },
+ },
+ },
+ },
+ 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 },
+ },
+ "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: false,
+ cost: { input: 1.4, output: 4.4, cache_read: 0.26, cache_write: 0 },
+ limit: { context: 200000, output: 131072 },
+ },
+ },
+ },
+ 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.6-TEE": {
+ id: "moonshotai/Kimi-K2.6-TEE",
+ name: "Kimi K2.6 TEE",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-12",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.44, output: 2 },
+ 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: {
+ "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 },
+ },
+ "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: 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,
+ release_date: "2026-02-11",
+ last_updated: "2026-02-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.75, output: 2.4 },
+ limit: { context: 200000, output: 128000 },
+ },
+ "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.25, output: 3.89 },
+ limit: { context: 200000, 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.22, output: 0.88 },
+ limit: { context: 200000, output: 32000 },
+ },
+ },
+ },
+ 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" },
+ },
+ "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 },
+ },
+ "gpt-5.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ provider: { npm: "@ai-sdk/openai-compatible" },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1000000, output: 384000 },
+ provider: { npm: "@ai-sdk/openai-compatible" },
+ },
+ },
+ },
+ deepinfra: {
+ id: "deepinfra",
+ env: ["DEEPINFRA_API_KEY"],
+ npm: "@ai-sdk/deepinfra",
+ name: "Deep Infra",
+ doc: "https://deepinfra.com/models",
+ models: {
+ "Qwen/Qwen3.5-397B-A17B": {
+ id: "Qwen/Qwen3.5-397B-A17B",
+ name: "Qwen 3.5 397B A17B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-02-01",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.54, output: 3.4 },
+ limit: { context: 262144, output: 81920 },
+ },
+ "Qwen/Qwen3.5-35B-A3B": {
+ id: "Qwen/Qwen3.5-35B-A3B",
+ name: "Qwen 3.5 35B A3B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-02-01",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 0.95 },
+ limit: { context: 262144, output: 81920 },
+ },
+ "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 },
+ },
+ "Qwen/Qwen3.6-35B-A3B": {
+ id: "Qwen/Qwen3.6-35B-A3B",
+ name: "Qwen3.6 35B A3B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-01",
+ last_updated: "2026-04-01",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 1 },
+ limit: { context: 262144, output: 81920 },
+ },
+ "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.6": {
+ id: "moonshotai/Kimi-K2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2024-04",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.75, output: 3.5, cache_read: 0.15 },
+ limit: { context: 262144, output: 16384 },
+ },
+ "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 },
+ },
+ "deepseek-ai/DeepSeek-V4-Flash": {
+ id: "deepseek-ai/DeepSeek-V4-Flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "deepseek-ai/DeepSeek-V4-Pro": {
+ id: "deepseek-ai/DeepSeek-V4-Pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 65536, output: 65536 },
+ },
+ "google/gemma-4-26B-A4B-it": {
+ id: "google/gemma-4-26B-A4B-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,
+ cost: { input: 0.07, output: 0.34 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "google/gemma-4-31B-it": {
+ id: "google/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,
+ cost: { input: 0.13, output: 0.38 },
+ limit: { context: 256000, output: 8192 },
+ },
+ },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "mimo-v2-flash": {
+ id: "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-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: 256000 },
+ },
+ "xiaomi/mimo-v2-flash": {
+ id: "xiaomi/mimo-v2-flash",
+ name: "Xiaomi/Mimo-V2-Flash",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-12-01",
+ release_date: "2025-12-16",
+ last_updated: "2026-02-04",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.3, cache_read: 0.01 },
+ limit: { context: 256000, output: 256000 },
+ },
+ },
+ },
+ 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: {
+ "rekaai/reka-edge": {
+ id: "rekaai/reka-edge",
+ name: "Reka Edge",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-20",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 16384, output: 16384 },
+ },
+ "rekaai/reka-flash-3": {
+ id: "rekaai/reka-flash-3",
+ name: "Reka Flash 3",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2025-03-12",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.2 },
+ limit: { context: 65536, output: 65536 },
+ },
+ "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/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.1-8b": {
+ id: "ibm-granite/granite-4.1-8b",
+ name: "IBM: Granite 4.1 8B",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-30",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.05, output: 0.1, cache_read: 0.05 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "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-v4-flash": {
+ id: "deepseek/deepseek-v4-flash",
+ name: "DeepSeek: DeepSeek V4 Flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.0028 },
+ limit: { context: 1048576, output: 384000 },
+ },
+ "deepseek/deepseek-v4-pro": {
+ id: "deepseek/deepseek-v4-pro",
+ name: "DeepSeek: DeepSeek V4 Pro",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.435, output: 0.87, cache_read: 0.003625 },
+ limit: { context: 1048576, output: 384000 },
+ },
+ "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/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/owl-alpha": {
+ id: "openrouter/owl-alpha",
+ name: "Owl Alpha",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 1048756, output: 262144 },
+ status: "alpha",
+ },
+ "openrouter/pareto-code": {
+ id: "openrouter/pareto-code",
+ name: "Pareto Code Router",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2026-04-21",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 200000, output: 65536 },
+ },
+ "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 },
+ },
+ "inclusionai/ling-2.6-1t:free": {
+ id: "inclusionai/ling-2.6-1t:free",
+ name: "inclusionAI: Ling-2.6-1T (free)",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-23",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, output: 32768 },
+ },
+ "inclusionai/ling-2.6-flash": {
+ id: "inclusionai/ling-2.6-flash",
+ name: "inclusionAI: Ling-2.6 Flash",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-21",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.08, output: 0.24, cache_read: 0.016 },
+ limit: { context: 262144, 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/trinity-large-thinking": {
+ id: "arcee-ai/trinity-large-thinking",
+ name: "Arcee AI: Trinity Large Thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-01",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.22, output: 0.85 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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/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 },
+ },
+ "arcee-ai/trinity-large-preview": {
+ id: "arcee-ai/trinity-large-preview",
+ name: "Arcee AI: Trinity Large Preview",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-01-28",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.15, output: 0.45 },
+ limit: { context: 131000, 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 },
+ },
+ "~google/gemini-pro-latest": {
+ id: "~google/gemini-pro-latest",
+ name: "Google: Gemini Pro Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 12, cache_read: 0.2, cache_write: 0.375 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "~google/gemini-flash-latest": {
+ id: "~google/gemini-flash-latest",
+ name: "Google: Gemini Flash Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.5, output: 3, cache_read: 0.05, cache_write: 0.08333333333333334 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ "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: "2025-08-26",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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/mistral-medium-3-5": {
+ id: "mistralai/mistral-medium-3-5",
+ name: "Mistral: Mistral Medium 3.5",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-30",
+ last_updated: "2026-05-07",
+ modalities: { input: ["image", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.5, output: 7.5 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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/mistral-small-2603": {
+ id: "mistralai/mistral-small-2603",
+ name: "Mistral: Mistral Small 4",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-16",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.15, output: 0.6, cache_read: 0.015 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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/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 },
+ },
+ "~anthropic/claude-haiku-latest": {
+ id: "~anthropic/claude-haiku-latest",
+ name: "Anthropic: Claude Haiku Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ 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-latest": {
+ id: "~anthropic/claude-sonnet-latest",
+ name: "Anthropic: Claude Sonnet Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ 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: 128000 },
+ },
+ "~anthropic/claude-opus-latest": {
+ id: "~anthropic/claude-opus-latest",
+ name: "Anthropic: Claude Opus Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-16",
+ last_updated: "2026-05-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: 1000000, output: 128000 },
+ },
+ "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.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 },
+ },
+ "x-ai/grok-4.20": {
+ id: "x-ai/grok-4.20",
+ name: "xAI: Grok 4.20",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-31",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "pdf", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 6, cache_read: 0.2 },
+ limit: { context: 2000000, output: 2000000 },
+ },
+ "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.3": {
+ id: "x-ai/grok-4.3",
+ name: "xAI: Grok 4.3",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-05-01",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.25, output: 2.5, cache_read: 0.2 },
+ limit: { context: 1000000, output: 4096 },
+ },
+ "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-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-4.20-multi-agent": {
+ id: "x-ai/grok-4.20-multi-agent",
+ name: "xAI: Grok 4.20 Multi-Agent",
+ attachment: true,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-31",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "pdf", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 6, cache_read: 0.2 },
+ limit: { context: 2000000, output: 2000000 },
+ },
+ "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/hy3-preview:free": {
+ id: "tencent/hy3-preview:free",
+ name: "Tencent: Hy3 Preview (free)",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-22",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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-mini-instruct": {
+ id: "microsoft/phi-4-mini-instruct",
+ name: "Microsoft: Phi 4 Mini Instruct",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-10-17",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.08, output: 0.35, cache_read: 0.08 },
+ limit: { context: 128000, output: 128000 },
+ },
+ "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 },
+ },
+ "poolside/laguna-m.1:free": {
+ id: "poolside/laguna-m.1:free",
+ name: "Poolside: Laguna M.1 (free)",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "poolside/laguna-xs.2:free": {
+ id: "poolside/laguna-xs.2:free",
+ name: "Poolside: Laguna XS.2 (free)",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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-super-120b-a12b": {
+ id: "nvidia/nemotron-3-super-120b-a12b",
+ name: "NVIDIA: Nemotron 3 Super",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-11",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.5, cache_read: 0.1 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free": {
+ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
+ name: "NVIDIA: Nemotron 3 Nano Omni (free)",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "audio", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "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-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 },
+ },
+ "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-chat-latest": {
+ id: "openai/gpt-chat-latest",
+ name: "OpenAI: GPT Chat Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ release_date: "2026-05-05",
+ last_updated: "2026-05-07",
+ modalities: { input: ["image", "pdf", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5 },
+ limit: { context: 400000, output: 128000 },
+ },
+ "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.5": {
+ id: "openai/gpt-5.5",
+ name: "OpenAI: GPT-5.5",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-24",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5 },
+ limit: { context: 1050000, output: 128000 },
+ },
+ "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.4-mini": {
+ id: "openai/gpt-5.4-mini",
+ name: "OpenAI: GPT-5.4 Mini",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-03-17",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "pdf", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
+ limit: { context: 400000, output: 128000 },
+ },
+ "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.4-nano": {
+ id: "openai/gpt-5.4-nano",
+ name: "OpenAI: GPT-5.4 Nano",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-03-17",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "pdf", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.2, output: 1.25, cache_read: 0.02 },
+ limit: { context: 400000, output: 128000 },
+ },
+ "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-5.4-image-2": {
+ id: "openai/gpt-5.4-image-2",
+ name: "OpenAI: GPT-5.4 Image 2",
+ attachment: true,
+ reasoning: true,
+ tool_call: false,
+ temperature: false,
+ release_date: "2026-04-21",
+ last_updated: "2026-05-01",
+ modalities: { input: ["image", "text", "pdf"], output: ["image", "text"] },
+ open_weights: false,
+ cost: { input: 8, output: 15, cache_read: 2 },
+ limit: { context: 272000, output: 128000 },
+ },
+ "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-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-5.5-pro": {
+ id: "openai/gpt-5.5-pro",
+ name: "OpenAI: GPT-5.5 Pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-24",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180 },
+ limit: { context: 1050000, output: 128000 },
+ },
+ "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-5v-turbo": {
+ id: "z-ai/glm-5v-turbo",
+ name: "Z.ai: GLM 5V Turbo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-01",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.2, output: 4, cache_read: 0.24 },
+ limit: { context: 202752, output: 131072 },
+ },
+ "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-5-turbo": {
+ id: "z-ai/glm-5-turbo",
+ name: "Z.ai: GLM 5 Turbo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-15",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.2, output: 4, cache_read: 0.24 },
+ limit: { context: 202752, output: 131072 },
+ },
+ "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/qianfan-ocr-fast:free": {
+ id: "baidu/qianfan-ocr-fast:free",
+ name: "Baidu: Qianfan-OCR-Fast (free)",
+ attachment: true,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-05-01",
+ modalities: { input: ["image", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 65536, output: 28672 },
+ },
+ "baidu/cobuddy:free": {
+ id: "baidu/cobuddy:free",
+ name: "Baidu: CoBuddy (free)",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-05-06",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 131072, output: 65536 },
+ },
+ "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 },
+ },
+ "~openai/gpt-latest": {
+ id: "~openai/gpt-latest",
+ name: "OpenAI: GPT Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5 },
+ limit: { context: 1050000, output: 128000 },
+ },
+ "~openai/gpt-mini-latest": {
+ id: "~openai/gpt-mini-latest",
+ name: "OpenAI: GPT Mini Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
+ limit: { context: 400000, output: 128000 },
+ },
+ "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/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.6-27b": {
+ id: "qwen/qwen3.6-27b",
+ name: "Qwen: Qwen3.6 27B",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.325, output: 3.25 },
+ limit: { context: 256000, 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.6-35b-a3b": {
+ id: "qwen/qwen3.6-35b-a3b",
+ name: "Qwen: Qwen3.6 35B A3B",
+ attachment: true,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.1612, output: 0.96525, cache_read: 0.1612 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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/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.6-plus": {
+ id: "qwen/qwen3.6-plus",
+ name: "Qwen: Qwen3.6 Plus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2025-08-26",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.325, output: 1.95, cache_read: 0.0325, cache_write: 0.40625 },
+ 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/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.5-plus-20260420": {
+ id: "qwen/qwen3.5-plus-20260420",
+ name: "Qwen: Qwen3.5 Plus 2026-04-20",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.4, output: 2.4 },
+ limit: { context: 1000000, output: 65536 },
+ },
+ "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/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/qwen3.6-max-preview": {
+ id: "qwen/qwen3.6-max-preview",
+ name: "Qwen: Qwen3.6 Max Preview",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.04, output: 6.24, cache_write: 1.3 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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 },
+ },
+ "qwen/qwen3.6-flash": {
+ id: "qwen/qwen3.6-flash",
+ name: "Qwen: Qwen3.6 Flash",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 1.5, cache_write: 0.3125 },
+ 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-v2": {
+ id: "kwaipilot/kat-coder-pro-v2",
+ name: "Kwaipilot: KAT-Coder-Pro V2",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-27",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
+ limit: { context: 256000, output: 80000 },
+ },
+ "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/lyria-3-clip-preview": {
+ id: "google/lyria-3-clip-preview",
+ name: "Google: Lyria 3 Clip Preview",
+ attachment: true,
+ reasoning: false,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-30",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text"], output: ["audio", "text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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/lyria-3-pro-preview": {
+ id: "google/lyria-3-pro-preview",
+ name: "Google: Lyria 3 Pro Preview",
+ attachment: true,
+ reasoning: false,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-30",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text"], output: ["audio", "text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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-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/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/gemma-4-31b-it": {
+ id: "google/gemma-4-31b-it",
+ name: "Google: Gemma 4 31B",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-02",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.4 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "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/gemma-4-26b-a4b-it": {
+ id: "google/gemma-4-26b-a4b-it",
+ name: "Google: Gemma 4 26B A4B",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-03",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.12, output: 0.4 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "MoonshotAI: Kimi K2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_details" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "~moonshotai/kimi-latest": {
+ id: "~moonshotai/kimi-latest",
+ name: "MoonshotAI: Kimi Latest",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-27",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.74, output: 3.49, cache_read: 0.14 },
+ limit: { context: 262142, output: 262142 },
+ },
+ "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-opus-4.6-fast": {
+ id: "anthropic/claude-opus-4.6-fast",
+ name: "Anthropic: Claude Opus 4.6 (Fast)",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-05-31",
+ release_date: "2026-04-07",
+ last_updated: "2026-04-11",
+ modalities: { input: ["image", "text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 150, cache_read: 3, cache_write: 37.5 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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,
+ knowledge: "2025-05-31",
+ 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-opus-4.7": {
+ id: "anthropic/claude-opus-4.7",
+ name: "Anthropic: Claude Opus 4.7",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-16",
+ last_updated: "2026-05-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: 1000000, output: 128000 },
+ },
+ "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,
+ knowledge: "2025-08-31",
+ 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 },
+ },
+ "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 },
+ },
+ "xiaomi/mimo-v2.5-pro": {
+ id: "xiaomi/mimo-v2.5-pro",
+ name: "Xiaomi: MiMo V2.5 Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-omni": {
+ id: "xiaomi/mimo-v2-omni",
+ name: "Xiaomi: MiMo-V2-Omni",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text", "image", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.4, output: 2, cache_read: 0.08 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "xiaomi/mimo-v2.5": {
+ id: "xiaomi/mimo-v2.5",
+ name: "Xiaomi: MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: {
+ input: 0.4,
+ output: 2,
+ cache_read: 0.08,
+ context_over_200k: { input: 0.8, output: 4, cache_read: 0.16 },
+ },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-pro": {
+ id: "xiaomi/mimo-v2-pro",
+ name: "Xiaomi: MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "xiaomi/mimo-v2-flash": {
+ id: "xiaomi/mimo-v2-flash",
+ name: "Xiaomi: MiMo-V2-Flash",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-12-01",
+ release_date: "2025-12-16",
+ last_updated: "2026-02-04",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.09, output: 0.29, cache_read: 0.045 },
+ limit: { context: 262144, output: 65536 },
+ },
+ },
+ },
+ "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/moonshotai/kimi-k2.6": {
+ id: "workers-ai/@cf/moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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-08-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-7": {
+ id: "anthropic/claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ 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" },
+ },
+ "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-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,
+ 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 },
+ },
+ "openai/gpt-5.5": {
+ id: "openai/gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ },
+ },
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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"], 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.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2025-08-31",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 400000, input: 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: 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 },
+ status: "deprecated",
+ },
+ "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 },
+ },
+ "claude-opus-4.7": {
+ id: "claude-opus-4.7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0 },
+ limit: { context: 144000, input: 128000, output: 64000 },
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ 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,
+ 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 },
+ 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-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 },
+ status: "deprecated",
+ },
+ "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,
+ knowledge: "2025-08-31",
+ 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 },
+ status: "deprecated",
+ },
+ },
+ },
+ 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-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: 8192, output: 16384 },
+ },
+ "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, output: 0, cache_read: 0 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "mimo-v2-pro": {
+ id: "mimo-v2-pro",
+ name: "MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ 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: false,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "mimo-v2.5": {
+ id: "mimo-v2.5",
+ name: "MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 0, output: 0, cache_read: 0 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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: false,
+ cost: { input: 0, output: 0, cache_read: 0 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "mimo-v2.5-pro": {
+ id: "mimo-v2.5-pro",
+ name: "MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 0, output: 0, cache_read: 0 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ },
+ },
+ 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: {
+ "minimax-m2.7": {
+ id: "minimax-m2.7",
+ name: "MiniMax M2.7",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "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-08-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",
+ },
+ "claude-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ provider: { npm: "@ai-sdk/anthropic" },
+ },
+ "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 },
+ 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" },
+ },
+ "ring-2.6-1t-free": {
+ id: "ring-2.6-1t-free",
+ name: "Ring 2.6 1T Free",
+ family: "ring-1t-free",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2025-06",
+ release_date: "2026-05-08",
+ last_updated: "2026-05-08",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262000, output: 66000 },
+ },
+ "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,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2025-10-17",
+ last_updated: "2025-10-17",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 200000, 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: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
+ limit: { context: 200000, output: 32000 },
+ provider: { npm: "@ai-sdk/anthropic" },
+ },
+ "qwen3.6-plus": {
+ id: "qwen3.6-plus",
+ name: "Qwen3.6 Plus",
+ family: "qwen3.6",
+ attachment: true,
+ 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.5, output: 3, cache_read: 0.05, cache_write: 0.625 },
+ limit: { context: 262144, output: 65536 },
+ 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 },
+ status: "deprecated",
+ 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",
+ },
+ "ling-2.6-flash-free": {
+ id: "ling-2.6-flash-free",
+ name: "Ling 2.6 Flash Free",
+ family: "ling-flash-free",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-06",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262100, output: 32800 },
+ 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" },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-10",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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" },
+ },
+ "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" },
+ },
+ "hy3-preview-free": {
+ id: "hy3-preview-free",
+ name: "Hy3 preview Free",
+ family: "hy3-free",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-06",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0 },
+ limit: { context: 256000, output: 64000 },
+ status: "deprecated",
+ },
+ "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" },
+ },
+ "qwen3.5-plus": {
+ id: "qwen3.5-plus",
+ name: "Qwen3.5 Plus",
+ family: "qwen3.5",
+ attachment: true,
+ 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.2, output: 1.2, cache_read: 0.02, cache_write: 0.25 },
+ limit: { context: 262144, output: 65536 },
+ provider: { npm: "@ai-sdk/anthropic" },
+ },
+ "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 },
+ },
+ "gpt-5.5-pro": {
+ id: "gpt-5.5-pro",
+ name: "GPT-5.5 Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: false,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180, cache_read: 30 },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ provider: { npm: "@ai-sdk/openai" },
+ },
+ "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",
+ },
+ "gpt-5.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, 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,
+ context_over_200k: { input: 5, output: 22.5, cache_read: 0.5 },
+ },
+ limit: { context: 1050000, input: 922000, 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-05-31",
+ 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 },
+ provider: { npm: "@ai-sdk/anthropic" },
+ },
+ },
+ },
+ 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 },
+ },
+ "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.5-397B-A17B": {
+ id: "Qwen/Qwen3.5-397B-A17B",
+ name: "Qwen3.5-397B-A17B",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-07",
+ release_date: "2025-07-15",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 3.6, cache_read: 0.06, cache_write: 0.75 },
+ limit: { context: 262144, input: 250000, 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-235B-A22B-Thinking-2507-fast": {
+ id: "Qwen/Qwen3-235B-A22B-Thinking-2507-fast",
+ name: "Qwen3-235B-A22B-Thinking-2507-fast",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-07",
+ release_date: "2025-07-25",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.5, output: 2, cache_read: 0.05, cache_write: 0.625 },
+ limit: { context: 8000, input: 7000, output: 8192 },
+ },
+ "Qwen/Qwen3.5-397B-A17B-fast": {
+ id: "Qwen/Qwen3.5-397B-A17B-fast",
+ name: "Qwen3.5-397B-A17B-fast",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-07",
+ release_date: "2025-07-15",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 3.6, cache_read: 0.06, cache_write: 0.75 },
+ limit: { context: 8000, input: 7000, output: 8192 },
+ },
+ "Qwen/Qwen3-Next-80B-A3B-Thinking-fast": {
+ id: "Qwen/Qwen3-Next-80B-A3B-Thinking-fast",
+ name: "Qwen3-Next-80B-A3B-Thinking-fast",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-07",
+ release_date: "2025-07-25",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.15, output: 1.2, cache_read: 0.015, cache_write: 0.1875 },
+ limit: { context: 8000, input: 7000, 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 },
+ },
+ "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-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 },
+ },
+ "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": {
+ 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-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 },
+ },
+ "nvidia/Nemotron-3-Nano-Omni": {
+ id: "nvidia/Nemotron-3-Nano-Omni",
+ name: "Nemotron-3-Nano-Omni",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2025-01-20",
+ last_updated: "2026-05-07",
+ 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: 65536, input: 60000, output: 8192 },
+ },
+ "deepseek-ai/DeepSeek-V3.2-fast": {
+ id: "deepseek-ai/DeepSeek-V3.2-fast",
+ name: "DeepSeek-V3.2-fast",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2025-01-27",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.4, output: 2, cache_read: 0.04, cache_write: 0.5 },
+ limit: { context: 8000, input: 7000, output: 8192 },
+ },
+ "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-120b-fast": {
+ id: "openai/gpt-oss-120b-fast",
+ name: "gpt-oss-120b-fast",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-06",
+ release_date: "2025-06-10",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.5, cache_read: 0.01, cache_write: 0.125 },
+ limit: { context: 8000, input: 7000, output: 8192 },
+ },
+ "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-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.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.5": {
+ id: "MiniMaxAI/MiniMax-M2.5",
+ name: "MiniMax-M2.5",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2025-01-20",
+ last_updated: "2026-05-07",
+ 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: 196608, input: 190000, output: 8192 },
+ },
+ "MiniMaxAI/MiniMax-M2.5-fast": {
+ id: "MiniMaxAI/MiniMax-M2.5-fast",
+ name: "MiniMax-M2.5-fast",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2025-01-20",
+ last_updated: "2026-05-07",
+ 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: 8000, input: 7000, output: 8192 },
+ },
+ "deepseek-ai/DeepSeek-V4-Pro": {
+ id: "deepseek-ai/DeepSeek-V4-Pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.75, output: 3.5, cache_read: 0.15 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ },
+ },
+ 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: true,
+ release_date: "2026-01-27",
+ last_updated: "2026-01-27",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.6, output: 3, cache_read: 0.1 },
+ limit: { context: 128000, 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 },
+ status: "deprecated",
+ },
+ "novita/glm-5": {
+ id: "novita/glm-5",
+ name: "GLM-5",
+ attachment: true,
+ reasoning: true,
+ tool_call: 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: 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/kimi-k2.6": {
+ id: "novita/kimi-k2.6",
+ name: "Kimi-K2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-04-20",
+ last_updated: "2026-05-02",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.96, output: 4.04, cache_read: 0.16 },
+ limit: { context: 262144, input: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "empiriolabs/deepseek-v4-pro-el": {
+ id: "empiriolabs/deepseek-v4-pro-el",
+ name: "DeepSeek-V4-Pro-EL",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-05-02",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.67, output: 3.33 },
+ limit: { context: 1000000, input: 1000000, output: 384000 },
+ },
+ "empiriolabs/deepseek-v4-flash-el": {
+ id: "empiriolabs/deepseek-v4-flash-el",
+ name: "DeepSeek-V4-Flash-EL",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-05-02",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28 },
+ limit: { context: 1000000, input: 1000000, output: 384000 },
+ },
+ "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,
+ cost: { input: 0.35, output: 0.75 },
+ limit: { context: 128000, 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,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 128000, 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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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-image-2": {
+ id: "openai/gpt-image-2",
+ name: "GPT-Image-2",
+ attachment: true,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["image"] },
+ open_weights: false,
+ cost: { input: 5.0505, output: 32.3232, cache_read: 1.2626 },
+ limit: { context: 0, output: 0 },
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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 },
+ status: "deprecated",
+ },
+ "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-opus-4.7": {
+ id: "anthropic/claude-opus-4.7",
+ name: "Claude-Opus-4.7",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-15",
+ last_updated: "2026-04-15",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 4.3, output: 21, cache_read: 0.43, cache_write: 5.4 },
+ limit: { context: 1048576, 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 },
+ status: "deprecated",
+ },
+ "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 },
+ },
+ "openai/gpt-5.5": {
+ id: "openai/gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-08",
+ last_updated: "2026-04-08",
+ modalities: { input: ["text", "image"], output: ["text", "image"] },
+ open_weights: false,
+ cost: { input: 4.5455, output: 27.2727, cache_read: 0.4545 },
+ limit: { context: 400000, output: 128000 },
+ },
+ "openai/gpt-5.5-pro": {
+ id: "openai/gpt-5.5-pro",
+ name: "GPT-5.5-Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: false,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-08",
+ last_updated: "2026-04-08",
+ modalities: { input: ["text", "image"], output: ["text", "image"] },
+ open_weights: false,
+ cost: { input: 27.2727, output: 163.6364 },
+ limit: { context: 400000, output: 128000 },
+ },
+ },
+ },
+ 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 },
+ },
+ "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: 196608, output: 196608 },
+ },
+ "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: 262144 },
+ },
+ "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: 65536 },
+ },
+ "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 },
+ },
+ "kimi-k2.6:cloud": {
+ id: "kimi-k2.6:cloud",
+ name: "kimi-k2.6:cloud",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "deepseek-v4-flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 1048576, output: 1048576 },
+ },
+ "glm-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 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "deepseek-v4-pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 1048576, output: 1048576 },
+ },
+ "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-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.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-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-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 },
+ },
+ },
+ },
+ "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: {
+ "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 },
+ },
+ "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 },
+ },
+ "au.anthropic.claude-opus-4-6-v1": {
+ id: "au.anthropic.claude-opus-4-6-v1",
+ name: "AU Anthropic 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-02-05",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 16.5, output: 82.5, cache_read: 1.65, cache_write: 20.625 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "global.anthropic.claude-opus-4-7": {
+ id: "global.anthropic.claude-opus-4-7",
+ name: "Claude Opus 4.7 (Global)",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "us.anthropic.claude-opus-4-7": {
+ id: "us.anthropic.claude-opus-4-7",
+ name: "Claude Opus 4.7 (US)",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "anthropic.claude-opus-4-7": {
+ id: "anthropic.claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "eu.anthropic.claude-opus-4-7": {
+ id: "eu.anthropic.claude-opus-4-7",
+ name: "Claude Opus 4.7 (EU)",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "au.anthropic.claude-sonnet-4-6": {
+ id: "au.anthropic.claude-sonnet-4-6",
+ name: "AU Anthropic Claude Sonnet 4.6",
+ family: "claude-sonnet",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-08",
+ release_date: "2026-02-17",
+ last_updated: "2026-02-17",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3.3, output: 16.5, cache_read: 0.33, cache_write: 4.125 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "us.deepseek.r1-v1:0": {
+ id: "us.deepseek.r1-v1:0",
+ name: "DeepSeek-R1 (US)",
+ 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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "us.meta.llama4-maverick-17b-instruct-v1:0": {
+ id: "us.meta.llama4-maverick-17b-instruct-v1:0",
+ name: "Llama 4 Maverick 17B Instruct (US)",
+ 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 },
+ },
+ "au.anthropic.claude-haiku-4-5-20251001-v1:0": {
+ id: "au.anthropic.claude-haiku-4-5-20251001-v1:0",
+ name: "Claude Haiku 4.5 (AU)",
+ 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 },
+ },
+ "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": {
+ id: "jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
+ name: "Claude Sonnet 4.5 (JP)",
+ 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-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-31",
+ 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 },
+ },
+ "jp.anthropic.claude-sonnet-4-6": {
+ id: "jp.anthropic.claude-sonnet-4-6",
+ name: "Claude Sonnet 4.6 (JP)",
+ family: "claude-sonnet",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-08-31",
+ release_date: "2026-02-17",
+ last_updated: "2026-03-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "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-31",
+ 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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "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 },
+ },
+ "au.anthropic.claude-sonnet-4-5-20250929-v1:0": {
+ id: "au.anthropic.claude-sonnet-4-5-20250929-v1:0",
+ name: "Claude Sonnet 4.5 (AU)",
+ 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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "us.meta.llama4-scout-17b-instruct-v1:0": {
+ id: "us.meta.llama4-scout-17b-instruct-v1:0",
+ name: "Llama 4 Scout 17B Instruct (US)",
+ 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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "jp.anthropic.claude-opus-4-7": {
+ id: "jp.anthropic.claude-opus-4-7",
+ name: "Claude Opus 4.7 (JP)",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ },
+ },
+ "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.6": {
+ id: "moonshotai/Kimi-K2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "deepseek-ai/DeepSeek-V4-Pro": {
+ id: "deepseek-ai/DeepSeek-V4-Pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.15 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ },
+ },
+ frogbot: {
+ id: "frogbot",
+ env: ["FROGBOT_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://app.frogbot.ai/api/v1",
+ name: "FrogBot",
+ doc: "https://docs.frogbot.ai",
+ models: {
+ "grok-4-1-fast-reasoning": {
+ id: "grok-4-1-fast-reasoning",
+ name: "Grok 4.1 Fast (Reasoning)",
+ 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 },
+ },
+ "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-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: 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 },
+ },
+ "claude-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 200000, output: 128000 },
+ },
+ "zai-glm-5-1": {
+ id: "zai-glm-5-1",
+ name: "Z.AI GLM-5.1",
+ 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 },
+ },
+ "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: "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.2, output: 1.25, cache_read: 0.02 },
+ 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: 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 },
+ },
+ "gpt-5-5": {
+ id: "gpt-5-5",
+ name: "GPT-5.5",
+ 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 },
+ },
+ "grok-4-3": {
+ id: "grok-4-3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2024-11",
+ release_date: "2026-04-30",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.25, output: 2.5, cache_read: 0.2 },
+ limit: { context: 1000000, 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"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.75, output: 4.5, cache_read: 0.075 },
+ limit: { context: 400000, 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-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 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek v4 Pro",
+ family: "deepseek",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2026-01",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.14 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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-7": {
+ id: "minimax-m2-7",
+ name: "MiniMax-M2.7",
+ family: "minimax",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-09",
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
+ limit: { context: 192000, output: 8192 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "kimi-k2-6": {
+ id: "kimi-k2-6",
+ name: "Kimi-K2.6",
+ 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.95, output: 4, cache_read: 0.16 },
+ limit: { context: 256000, 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,
+ 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 },
+ },
+ },
+ },
+ "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-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.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 },
+ },
+ "grok-4-20-multi-agent": {
+ id: "grok-4-20-multi-agent",
+ name: "Grok 4.20 Multi-Agent",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: false,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-03-12",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.42,
+ output: 2.83,
+ cache_read: 0.23,
+ context_over_200k: { input: 2.83, output: 5.67, cache_read: 0.45 },
+ },
+ limit: { context: 2000000, output: 128000 },
+ },
+ "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 },
+ },
+ "z-ai-glm-5v-turbo": {
+ id: "z-ai-glm-5v-turbo",
+ name: "GLM 5V Turbo",
+ family: "glmv",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-01",
+ last_updated: "2026-04-12",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.5, output: 5, cache_read: 0.3 },
+ limit: { context: 200000, output: 32768 },
+ },
+ "gemma-4-uncensored": {
+ id: "gemma-4-uncensored",
+ name: "Gemma 4 Uncensored",
+ family: "gemma",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-13",
+ last_updated: "2026-04-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1625, output: 0.5 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "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,
+ knowledge: "2025-08-31",
+ 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 },
+ },
+ "grok-4-20": {
+ id: "grok-4-20",
+ name: "Grok 4.20",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-03-12",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.42,
+ output: 2.83,
+ cache_read: 0.23,
+ context_over_200k: { input: 2.83, output: 5.67, cache_read: 0.45 },
+ },
+ limit: { context: 2000000, output: 128000 },
+ },
+ "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-12",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1625, output: 0.5 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "claude-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ release_date: "2026-04-16",
+ last_updated: "2026-04-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 },
+ },
+ "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-16",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ 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 },
+ },
+ "venice-uncensored-1-2": {
+ id: "venice-uncensored-1-2",
+ name: "Venice Uncensored 1.2",
+ family: "venice",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-01",
+ last_updated: "2026-04-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 0.9 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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 },
+ },
+ "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-04-12",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ 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 },
+ },
+ "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-04-16",
+ 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-55-pro": {
+ id: "openai-gpt-55-pro",
+ name: "GPT-5.5 Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-25",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 37.5, output: 225 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "grok-4-3": {
+ id: "grok-4-3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-18",
+ last_updated: "2026-05-04",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.42,
+ output: 2.83,
+ cache_read: 0.23,
+ context_over_200k: { input: 2.83, output: 5.67, cache_read: 0.45 },
+ },
+ limit: { context: 1000000, output: 32000 },
+ },
+ "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: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-07",
+ release_date: "2025-11-06",
+ last_updated: "2026-05-06",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.07, output: 0.3 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "claude-opus-4-5": {
+ id: "claude-opus-4-5",
+ name: "Claude Opus 4.5",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-12-06",
+ last_updated: "2026-04-12",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 6, output: 30, cache_read: 0.6, cache_write: 7.5 },
+ limit: { context: 198000, output: 32768 },
+ },
+ "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-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.15 },
+ limit: { context: 256000, output: 32768 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.17, output: 0.35, cache_read: 0.028 },
+ limit: { context: 1000000, 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 },
+ },
+ "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 },
+ },
+ "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-04-12",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.34, output: 1.19, cache_read: 0.04 },
+ limit: { context: 198000, output: 32768 },
+ },
+ "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 },
+ },
+ "openai-gpt-55": {
+ id: "openai-gpt-55",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-23",
+ last_updated: "2026-04-25",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 6.25,
+ output: 37.5,
+ cache_read: 0.625,
+ context_over_200k: { input: 12.5, output: 56.25, cache_read: 1.25 },
+ },
+ limit: { context: 1000000, output: 131072 },
+ },
+ "qwen3-6-27b": {
+ id: "qwen3-6-27b",
+ name: "Qwen 3.6 27B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.325, output: 3.25 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "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,
+ knowledge: "2025-05-31",
+ 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-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.73, output: 3.796, cache_read: 0.33 },
+ limit: { context: 1000000, output: 32768 },
+ },
+ "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 },
+ },
+ "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-12",
+ 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, cache_read: 0.0625, cache_write: 0.78 },
+ },
+ limit: { context: 1000000, output: 65536 },
+ },
+ "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-04-12",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 2, cache_read: 0.25 },
+ limit: { context: 128000, output: 32768 },
+ },
+ "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,
+ release_date: "2025-01-15",
+ last_updated: "2026-04-12",
+ 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: 64000 },
+ },
+ "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-04-30",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.56, output: 3.5, cache_read: 0.22 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "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-6": {
+ id: "kimi-k2-6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.85, output: 4.655, cache_read: 0.22 },
+ 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,
+ knowledge: "2025-05-31",
+ 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 },
+ },
+ "z-ai-glm-5-turbo": {
+ id: "z-ai-glm-5-turbo",
+ name: "GLM 5 Turbo",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-03-15",
+ last_updated: "2026-04-12",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.2, output: 4, cache_read: 0.24 },
+ limit: { context: 200000, output: 32768 },
+ },
+ "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-12",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.175, output: 0.5 },
+ limit: { context: 256000, output: 8192 },
+ },
+ },
+ },
+ aihubmix: {
+ id: "aihubmix",
+ env: ["AIHUBMIX_API_KEY"],
+ npm: "@aihubmix/ai-sdk-provider",
+ name: "AIHubMix",
+ doc: "https://docs.aihubmix.com",
+ models: {
+ "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.2958, output: 1.1832, cache_read: 0.05916 },
+ limit: { context: 200000, output: 128000 },
+ },
+ "coding-glm-5.1-free": {
+ id: "coding-glm-5.1-free",
+ name: "Coding GLM 5.1 (free)",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-11",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0, cache_read: 0 },
+ limit: { context: 204800, output: 128000 },
+ },
+ "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", "audio", "video", "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 },
+ },
+ "kimi-k2.5": {
+ id: "kimi-k2.5",
+ name: "Kimi K2.5",
+ family: "kimi-k2.5",
+ 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.105 },
+ limit: { context: 256000, output: 0 },
+ },
+ "glm-5v-turbo": {
+ id: "glm-5v-turbo",
+ name: "GLM 5 Vision Turbo",
+ family: "glm",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-05-09",
+ last_updated: "2026-05-09",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.7042, output: 3.09848, cache_read: 0.169008 },
+ limit: { context: 200000, output: 128000 },
+ },
+ "grok-4.3": {
+ id: "grok-4.3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-05-01",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.25,
+ output: 2.5,
+ cache_read: 0.2,
+ context_over_200k: { input: 2.5, output: 5, cache_read: 0.4 },
+ },
+ limit: { context: 1000000, output: 1000000 },
+ },
+ "coding-minimax-m2.7-highspeed": {
+ id: "coding-minimax-m2.7-highspeed",
+ name: "Coding MiniMax M2.7 Highspeed",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 0.2 },
+ limit: { context: 204800, output: 13100 },
+ },
+ "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-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: 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", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 12, cache_read: 0.2 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "coding-glm-5.1": {
+ id: "coding-glm-5.1",
+ name: "Coding-GLM-5.1",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-11",
+ last_updated: "2026-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.06, output: 0.22 },
+ limit: { context: 200000, 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,
+ 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 },
+ },
+ "gpt-5.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5 },
+ limit: { context: 1050000, output: 128000 },
+ },
+ "claude-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "deepseek-v4-flash-think": {
+ id: "deepseek-v4-flash-think",
+ name: "DeepSeek V4 Flash Think",
+ family: "deepseek",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.154, output: 0.308, cache_read: 0.0308 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "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 },
+ },
+ "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.125 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ },
+ "qwen3.6-plus": {
+ id: "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-05-09",
+ last_updated: "2026-05-09",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.282, output: 1.692, cache_read: 0.0282, cache_write: 0.3525 },
+ limit: { context: 991000, output: 64000 },
+ },
+ "gpt-5.4-mini": {
+ id: "gpt-5.4-mini",
+ name: "GPT-5.4-Mini",
+ family: "gpt-mini",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: 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.75, output: 4.5, cache_read: 0.075 },
+ limit: { context: 400000, output: 128000 },
+ },
+ "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.845, output: 3.38, cache_read: 0.183112 },
+ limit: { context: 200000, output: 128000 },
+ },
+ "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.275 },
+ limit: { context: 200000, output: 100000 },
+ },
+ "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,
+ 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: 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.499, cache_read: 0.03 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ },
+ "gemini-3.1-flash-lite": {
+ id: "gemini-3.1-flash-lite",
+ name: "Gemini 3.1 Flash Lite",
+ 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", "audio", "video", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 1.5, cache_read: 0.25 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-05-31",
+ release_date: "2026-02-05",
+ last_updated: "2026-03-13",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 200000, output: 32000 },
+ },
+ "coding-minimax-m2.7-free": {
+ id: "coding-minimax-m2.7-free",
+ name: "Coding-MiniMax-M2.7-Free",
+ 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 },
+ limit: { context: 204800, output: 13100 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.154, output: 0.308, cache_read: 0.0308 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 3.9995, cache_read: 0.160835 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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,
+ release_date: "2026-03-11",
+ last_updated: "2026-03-11",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2.5, output: 15, cache_read: 0.25 },
+ limit: { context: 400000, 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-05-31",
+ 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 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.478, output: 0.956, cache_read: 0.004302 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "claude-opus-4-7-think": {
+ id: "claude-opus-4-7-think",
+ name: "Claude Opus 4.7 Thinking",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 200000, output: 32000 },
+ },
+ "coding-minimax-m2.7": {
+ id: "coding-minimax-m2.7",
+ name: "Coding MiniMax M2.7",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 0.2 },
+ limit: { context: 204800, output: 13100 },
+ },
+ "qwen3.6-max-preview": {
+ id: "qwen3.6-max-preview",
+ name: "Qwen3.6 Max Preview",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-05-09",
+ last_updated: "2026-05-09",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.268, output: 7.608, cache_read: 0.1268, cache_write: 1.585 },
+ limit: { context: 240000, 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, 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,
+ 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 },
+ },
+ "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-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: 200000, output: 64000 },
+ },
+ "qwen3.6-flash": {
+ id: "qwen3.6-flash",
+ name: "Qwen3.6 Flash",
+ 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.169, output: 1.014, cache_read: 0.0169, cache_write: 0.21125 },
+ limit: { context: 991000, 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 },
+ },
+ },
+ },
+ 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.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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-k2.5",
+ 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",
+ },
+ },
+ "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",
+ },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4 },
+ limit: { context: 262144, output: 262144 },
+ provider: {
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models",
+ shape: "completions",
+ },
+ },
+ "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,
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ 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-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "gpt-4-turbo": {
+ id: "gpt-4-turbo",
+ name: "GPT-4 Turbo",
+ family: "gpt",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2023-12",
+ release_date: "2023-11-06",
+ last_updated: "2024-04-09",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 10, output: 30 },
+ limit: { context: 128000, output: 4096 },
+ },
+ "gpt-5.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ },
+ },
+ },
+ "abliteration-ai": {
+ id: "abliteration-ai",
+ env: ["ABLIT_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://api.abliteration.ai/v1",
+ name: "abliteration.ai",
+ doc: "https://docs.abliteration.ai/models",
+ models: {
+ "abliterated-model": {
+ id: "abliterated-model",
+ name: "Abliterated Model",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: false,
+ temperature: true,
+ release_date: "2026-01-06",
+ last_updated: "2026-01-06",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 3, output: 3 },
+ limit: { context: 150000, input: 150000, output: 8192 },
+ },
+ },
+ },
+ "wafer.ai": {
+ id: "wafer.ai",
+ env: ["WAFER_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://pass.wafer.ai/v1",
+ name: "Wafer",
+ doc: "https://docs.wafer.ai/wafer-pass",
+ models: {
+ "Qwen3.5-397B-A17B": {
+ id: "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, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "GLM-5.1": {
+ id: "GLM-5.1",
+ name: "GLM-5.1",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ 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: 0, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 202752, 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 },
+ },
+ "DeepSeek-V4-Pro": {
+ id: "DeepSeek-V4-Pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ },
+ },
+ 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,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2026-01",
+ release_date: "2026-03-05",
+ last_updated: "2026-03-05",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 1.2 },
+ limit: { context: 196000, input: 180000, output: 16000 },
+ },
+ },
+ },
+ "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-4.3": {
+ id: "grok-4.3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-05-01",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.25,
+ output: 2.5,
+ cache_read: 0.2,
+ context_over_200k: { input: 2.5, output: 5, cache_read: 0.4 },
+ },
+ limit: { context: 1000000, output: 30000 },
+ },
+ "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-31",
+ 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,
+ 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-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-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-31",
+ 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,
+ context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
+ },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "claude-opus-4-7@default": {
+ id: "claude-opus-4-7@default",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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.1": {
+ id: "hf: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-04-12",
+ 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-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 },
+ },
+ "hf:moonshotai/Kimi-K2.6": {
+ id: "hf:moonshotai/Kimi-K2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.95 },
+ limit: { context: 262144, output: 65536 },
+ },
+ },
+ },
+ 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/nemotron-3-nano-omni-30b-a3b-reasoning": {
+ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
+ name: "Nemotron 3 Nano Omni",
+ family: "nemotron",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-28",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 256000, output: 65536 },
+ },
+ "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.7": {
+ id: "minimaxai/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-04-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ 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,
+ 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 },
+ },
+ "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-03-27",
+ last_updated: "2026-03-27",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "mistralai/mistral-medium-3.5-128b": {
+ id: "mistralai/mistral-medium-3.5-128b",
+ name: "Mistral Medium 3.5 128B",
+ family: "mistral-medium",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-29",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "deepseek-ai/deepseek-v4-flash": {
+ id: "deepseek-ai/deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ "deepseek-ai/deepseek-v4-pro": {
+ id: "deepseek-ai/deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ },
+ },
+ 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-2": {
+ id: "mercury-edit-2",
+ name: "Mercury Edit 2",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-30",
+ last_updated: "2026-03-30",
+ 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 },
+ },
+ },
+ },
+ 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.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ experimental: {
+ modes: {
+ fast: {
+ cost: { input: 12.5, output: 75, cache_read: 1.25 },
+ provider: { body: { service_tier: "priority" } },
+ },
+ },
+ },
+ },
+ "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 },
+ },
+ "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-5.5-pro": {
+ id: "gpt-5.5-pro",
+ name: "GPT-5.5 Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180, context_over_200k: { input: 60, output: 270 } },
+ limit: { context: 1050000, input: 922000, 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", "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-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-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": {
+ 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-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-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,
+ knowledge: "2025-08-31",
+ 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-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-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 },
+ },
+ "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.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-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-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 },
+ },
+ "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.31,
+ cache_write: 2.375,
+ context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
+ },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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-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 },
+ },
+ },
+ },
+ digitalocean: {
+ id: "digitalocean",
+ env: ["DIGITALOCEAN_ACCESS_TOKEN"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://inference.do-ai.run/v1",
+ name: "DigitalOcean",
+ doc: "https://docs.digitalocean.com/products/gradient-ai-platform/details/models/",
+ models: {
+ "openai-gpt-4o-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.075 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "multi-qa-mpnet-base-dot-v1": {
+ id: "multi-qa-mpnet-base-dot-v1",
+ name: "Multi-QA-mpnet-base-dot-v1",
+ family: "text-embedding",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2021-08-30",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.009, output: 0 },
+ limit: { context: 512, output: 768 },
+ },
+ "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-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.5, output: 2.7 },
+ limit: { context: 262144, output: 32768 },
+ },
+ "nemotron-3-nano-omni": {
+ id: "nemotron-3-nano-omni",
+ name: "Nemotron Nano 3 Omni",
+ family: "nemotron",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-28",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.5, output: 0.9 },
+ limit: { context: 65536, output: 65536 },
+ },
+ "llama3-8b-instruct": {
+ id: "llama3-8b-instruct",
+ name: "Llama 3.1 Instruct (8B)",
+ 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.198, output: 0.198 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "anthropic-claude-opus-4.7": {
+ id: "anthropic-claude-opus-4.7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ 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.3, cache_write: 3.75 },
+ },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "wan2-2-t2v-a14b": {
+ id: "wan2-2-t2v-a14b",
+ name: "Wan2.2-T2V-A14B",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2025-07-28",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["video"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 0 },
+ limit: { context: 100, output: 1 },
+ },
+ "qwen-2.5-14b-instruct": {
+ id: "qwen-2.5-14b-instruct",
+ name: "Qwen 2.5 14B Instruct",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-09",
+ release_date: "2024-09-19",
+ last_updated: "2024-09-19",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 131072, output: 131072 },
+ },
+ "openai-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: 1000000, output: 128000 },
+ },
+ "qwen3.5-397b-a17b": {
+ id: "qwen3.5-397b-a17b",
+ name: "Qwen 3.5 397B A17B",
+ family: "qwen3.5",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-02-15",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.55, output: 3.5 },
+ limit: { context: 262144, output: 81920 },
+ },
+ "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 },
+ },
+ "e5-large-v2": {
+ id: "e5-large-v2",
+ name: "E5 Large v2",
+ family: "text-embedding",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2023-05-19",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.02, output: 0 },
+ limit: { context: 512, output: 1024 },
+ },
+ "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,
+ 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 },
+ },
+ "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-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3.2 },
+ limit: { context: 202752, output: 128000 },
+ },
+ "openai-gpt-5.4-nano": {
+ id: "openai-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, output: 128000 },
+ },
+ "mistral-7b-instruct-v0.3": {
+ id: "mistral-7b-instruct-v0.3",
+ name: "Mistral 7B Instruct v0.3",
+ family: "mistral",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2024-05-22",
+ last_updated: "2024-05-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 32768, output: 32768 },
+ },
+ "llama3.3-70b-instruct": {
+ id: "llama3.3-70b-instruct",
+ name: "Llama 3.3 Instruct 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.65, output: 0.65 },
+ limit: { context: 128000, output: 128000 },
+ },
+ "mistral-3-14B": {
+ id: "mistral-3-14B",
+ name: "Ministral 3 14B Instruct",
+ family: "ministral",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-12-15",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 0.2 },
+ limit: { context: 262144, output: 128000 },
+ },
+ "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,
+ 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.99, output: 0.99 },
+ limit: { context: 131072, output: 32768 },
+ },
+ "alibaba-qwen3-32b": {
+ id: "alibaba-qwen3-32b",
+ name: "Qwen3-32B",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-04-30",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.25, output: 0.55 },
+ limit: { context: 131000, output: 40960 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "anthropic-claude-3-opus": {
+ id: "anthropic-claude-3-opus",
+ name: "Claude 3 Opus",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2023-08",
+ release_date: "2024-02-29",
+ last_updated: "2024-02-29",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
+ limit: { context: 200000, output: 4096 },
+ status: "deprecated",
+ },
+ "stable-diffusion-3.5-large": {
+ id: "stable-diffusion-3.5-large",
+ name: "Stable Diffusion 3.5 Large",
+ family: "stable-diffusion",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2024-10-22",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["image"] },
+ open_weights: true,
+ cost: { input: 0.08, output: 0 },
+ limit: { context: 256, output: 1 },
+ },
+ "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, output: 128000 },
+ },
+ "llama-4-maverick": {
+ id: "llama-4-maverick",
+ 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-05",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.25, output: 0.87 },
+ limit: { context: 1000000, output: 16384 },
+ },
+ "anthropic-claude-4.5-sonnet": {
+ id: "anthropic-claude-4.5-sonnet",
+ 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,
+ context_over_200k: { input: 6, output: 22.5, cache_read: 0.3, cache_write: 3.75 },
+ },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "qwen3-embedding-0.6b": {
+ id: "qwen3-embedding-0.6b",
+ name: "Qwen3 Embedding 0.6B",
+ family: "text-embedding",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2025-06-03",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.04, output: 0 },
+ limit: { context: 8000, output: 1024 },
+ status: "beta",
+ },
+ "anthropic-claude-4.5-haiku": {
+ id: "anthropic-claude-4.5-haiku",
+ 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: 1, output: 5, cache_read: 1, cache_write: 1.25 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "gte-large-en-v1.5": {
+ id: "gte-large-en-v1.5",
+ name: "GTE Large (v1.5)",
+ family: "text-embedding",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2024-03-27",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.09, output: 0 },
+ limit: { context: 8192, output: 1024 },
+ },
+ "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 },
+ },
+ "anthropic-claude-3.5-haiku": {
+ id: "anthropic-claude-3.5-haiku",
+ name: "Claude 3.5 Haiku",
+ family: "claude-haiku",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-07",
+ release_date: "2024-11-05",
+ last_updated: "2024-11-05",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
+ limit: { context: 200000, output: 8192 },
+ status: "deprecated",
+ },
+ "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 },
+ },
+ "deepseek-3.2": {
+ id: "deepseek-3.2",
+ name: "DeepSeek V3.2",
+ family: "deepseek",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2025-12-02",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.5, output: 1.6 },
+ limit: { context: 128000, output: 64000 },
+ },
+ "nemotron-3-nano-30b": {
+ id: "nemotron-3-nano-30b",
+ name: "Nemotron 3 Nano 30B A3B",
+ family: "nemotron",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2025-04-14",
+ last_updated: "2025-04-14",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "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,
+ knowledge: "2024-06",
+ release_date: "2025-08-05",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.05, output: 0.45 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "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: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.45, output: 1.7 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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-oss-120b": {
+ id: "openai-gpt-oss-120b",
+ name: "gpt-oss-120b",
+ family: "gpt-oss",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2024-06",
+ release_date: "2025-08-05",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.7 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "gemma-4-31B-it": {
+ id: "gemma-4-31B-it",
+ name: "Gemma 4 31B",
+ family: "gemma",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-22",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.18, output: 0.5 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "nemotron-nano-12b-v2-vl": {
+ id: "nemotron-nano-12b-v2-vl",
+ name: "Nemotron Nano 12B v2 VL",
+ family: "nemotron",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-10",
+ release_date: "2025-12-01",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.2, output: 0.6 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "anthropic-claude-4.1-opus": {
+ id: "anthropic-claude-4.1-opus",
+ 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 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "openai-gpt-image-2": {
+ id: "openai-gpt-image-2",
+ name: "GPT Image 2",
+ family: "gpt-image",
+ attachment: true,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2025-04-24",
+ last_updated: "2025-04-24",
+ modalities: { input: ["text", "image"], output: ["image"] },
+ open_weights: false,
+ limit: { context: 0, output: 0 },
+ },
+ "anthropic-claude-4.6-sonnet": {
+ id: "anthropic-claude-4.6-sonnet",
+ name: "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-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,
+ context_over_200k: { input: 6, output: 22.5, cache_read: 0.3, cache_write: 3.75 },
+ },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "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, output: 128000 },
+ },
+ "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: 1, cache_write: 1.25 },
+ limit: { context: 200000, output: 64000 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48 },
+ limit: { context: 1048576, output: 393216 },
+ },
+ "ministral-3-8b-instruct-2512": {
+ id: "ministral-3-8b-instruct-2512",
+ name: "Ministral 3 8B",
+ family: "ministral",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2025-12-15",
+ last_updated: "2025-12-15",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 262144, output: 262144 },
+ },
+ "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-08",
+ release_date: "2026-02-12",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 1.2 },
+ limit: { context: 204800, output: 128000 },
+ status: "beta",
+ },
+ "openai-gpt-image-1": {
+ id: "openai-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,
+ cost: { input: 5, output: 40, cache_read: 1.25 },
+ limit: { context: 0, output: 0 },
+ },
+ "openai-gpt-5.5": {
+ id: "openai-gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "nvidia-nemotron-3-super-120b": {
+ id: "nvidia-nemotron-3-super-120b",
+ name: "Nemotron-3-Super-120B",
+ family: "nemotron",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2026-02",
+ release_date: "2026-03-11",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 0.65 },
+ limit: { context: 256000, output: 32768 },
+ status: "beta",
+ },
+ "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,
+ 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, output: 128000 },
+ },
+ "all-mini-lm-l6-v2": {
+ id: "all-mini-lm-l6-v2",
+ name: "All-MiniLM-L6-v2",
+ family: "text-embedding",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2021-08-30",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.009, output: 0 },
+ limit: { context: 256, output: 384 },
+ },
+ "bge-m3": {
+ id: "bge-m3",
+ name: "BGE M3",
+ family: "bge",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2024-01-30",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.02, output: 0 },
+ limit: { context: 8192, output: 1024 },
+ },
+ "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: 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-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-31",
+ 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,
+ context_over_200k: { input: 10, output: 37.5, cache_read: 0.5, cache_write: 6.25 },
+ },
+ limit: { context: 1000000, 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-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: 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, output: 128000 },
+ },
+ "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, output: 128000 },
+ },
+ "arcee-trinity-large-thinking": {
+ id: "arcee-trinity-large-thinking",
+ name: "Trinity Large Thinking",
+ family: "trinity",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-02",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.25, output: 0.9, cache_read: 0.06 },
+ limit: { context: 256000, output: 128000 },
+ status: "beta",
+ },
+ "mistral-nemo-instruct-2407": {
+ id: "mistral-nemo-instruct-2407",
+ name: "Mistral Nemo Instruct",
+ family: "mistral",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2024-07-18",
+ last_updated: "2024-07-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 0.3 },
+ limit: { context: 128000, output: 16384 },
+ status: "deprecated",
+ },
+ "deepseek-v3": {
+ id: "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: "2025-03-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ limit: { context: 163840, output: 131072 },
+ },
+ "bge-reranker-v2-m3": {
+ id: "bge-reranker-v2-m3",
+ name: "BGE Reranker v2 M3",
+ family: "bge",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2024-03-12",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.01, output: 0 },
+ limit: { context: 8192, output: 1 },
+ },
+ "anthropic-claude-3.7-sonnet": {
+ id: "anthropic-claude-3.7-sonnet",
+ name: "Claude 3.7 Sonnet",
+ family: "claude-sonnet",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-11",
+ release_date: "2025-02-24",
+ last_updated: "2025-02-24",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
+ limit: { context: 200000, output: 64000 },
+ status: "deprecated",
+ },
+ "qwen3-tts-voicedesign": {
+ id: "qwen3-tts-voicedesign",
+ name: "Qwen3 TTS VoiceDesign",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["audio"] },
+ open_weights: true,
+ limit: { context: 32768, output: 1 },
+ },
+ "openai-gpt-image-1.5": {
+ id: "openai-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: ["image"] },
+ open_weights: false,
+ cost: { input: 5, output: 10, cache_read: 1 },
+ limit: { context: 0, output: 0 },
+ },
+ "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, output: 128000 },
+ },
+ "anthropic-claude-3.5-sonnet": {
+ id: "anthropic-claude-3.5-sonnet",
+ name: "Claude 3.5 Sonnet",
+ family: "claude-sonnet",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-04",
+ release_date: "2024-06-20",
+ last_updated: "2024-10-22",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
+ limit: { context: 200000, output: 8192 },
+ status: "deprecated",
+ },
+ "fal-ai/fast-sdxl": {
+ id: "fal-ai/fast-sdxl",
+ name: "Fast SDXL",
+ family: "stable-diffusion",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2023-07-26",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["image"] },
+ open_weights: true,
+ limit: { context: 0, output: 0 },
+ },
+ "fal-ai/flux/schnell": {
+ id: "fal-ai/flux/schnell",
+ name: "FLUX.1 [schnell]",
+ family: "flux",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2024-08-01",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["image"] },
+ open_weights: true,
+ limit: { context: 0, output: 0 },
+ },
+ "fal-ai/elevenlabs/tts/multilingual-v2": {
+ id: "fal-ai/elevenlabs/tts/multilingual-v2",
+ name: "ElevenLabs Multilingual TTS v2",
+ family: "elevenlabs",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2023-08-22",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["audio"] },
+ open_weights: false,
+ limit: { context: 0, output: 0 },
+ },
+ "fal-ai/stable-audio-25/text-to-audio": {
+ id: "fal-ai/stable-audio-25/text-to-audio",
+ name: "Stable Audio 2.5 (Text-to-Audio)",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2025-10-08",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text"], output: ["audio"] },
+ open_weights: false,
+ limit: { context: 0, output: 0 },
+ },
+ },
+ },
+ 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 },
+ },
+ "mistral-medium-2604": {
+ id: "mistral-medium-2604",
+ name: "Mistral Medium 3.5",
+ family: "mistral-medium",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-29",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.5, output: 7.5 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "mistral-medium-latest": {
+ id: "mistral-medium-latest",
+ name: "Mistral Medium (latest)",
+ family: "mistral-medium",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-29",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.5, output: 7.5 },
+ 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: {
+ "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 },
+ },
+ "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 },
+ },
+ "qwen3.5-9b": {
+ id: "qwen3.5-9b",
+ name: "Qwen3.5-9B",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-02-15",
+ last_updated: "2026-02-15",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.15 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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, cache_read: 0.26 },
+ 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, cache_read: 0.5 },
+ 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, cache_read: 0.06 },
+ 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: {
+ "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: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.47, output: 1.4 },
+ limit: { context: 202752, output: 196072 },
+ },
+ "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 },
+ },
+ "qwen3-235b-a22b-instruct-2507": {
+ id: "qwen3-235b-a22b-instruct-2507",
+ name: "Qwen3 235B A22B Instruct 2507",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ 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.062, output: 0.408 },
+ limit: { context: 131000, output: 131000 },
+ },
+ "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 },
+ },
+ "claude-opus4-7": {
+ id: "claude-opus4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5.6, output: 27.99, cache_read: 0.56, cache_write: 6.99 },
+ limit: { context: 1000000, 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,
+ 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 },
+ },
+ "codestral-2508": {
+ id: "codestral-2508",
+ name: "Codestral 2508",
+ family: "mistral",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-03",
+ 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, cache_read: 0.03 },
+ limit: { context: 256000, output: 256000 },
+ },
+ "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 },
+ },
+ "nemotron-3-super-120b-a12b": {
+ id: "nemotron-3-super-120b-a12b",
+ name: "Nemotron 3 Super 120B A12B",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-12",
+ release_date: "2026-03-11",
+ last_updated: "2026-03-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.266, output: 0.799 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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-31",
+ 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-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-04-14",
+ last_updated: "2026-04-14",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.31, output: 4.1, cache_read: 0.24 },
+ limit: { context: 204800, output: 131072 },
+ },
+ "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 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.81, output: 3.54, cache_read: 0.2 },
+ limit: { context: 256000, output: 256000 },
+ },
+ "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-31",
+ 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 },
+ },
+ "mixtral-8x7B-instruct-v0.1": {
+ id: "mixtral-8x7B-instruct-v0.1",
+ name: "Mixtral 8x7B Instruct v0.1",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ knowledge: "2023-09",
+ release_date: "2023-12-11",
+ last_updated: "2023-12-11",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.438, output: 0.68 },
+ limit: { context: 32000, output: 32000 },
+ },
+ "hermes-4-70b": {
+ id: "hermes-4-70b",
+ name: "Hermes 4 70B",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2023-12",
+ release_date: "2025-08-26",
+ last_updated: "2025-08-26",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.116, output: 0.358 },
+ limit: { context: 128000, output: 128000 },
+ },
+ "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 },
+ },
+ "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.266, output: 0.444 },
+ limit: { context: 163840, output: 163840 },
+ },
+ "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 },
+ },
+ "qwen-2.5-72b-instruct": {
+ id: "qwen-2.5-72b-instruct",
+ name: "Qwen2.5 72B Instruct",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2024-06",
+ release_date: "2024-09-19",
+ last_updated: "2024-09-19",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.062, output: 0.231 },
+ limit: { context: 33000, output: 33000 },
+ },
+ "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: 0.585, output: 2.307 },
+ limit: { context: 164000, output: 164000 },
+ },
+ "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 },
+ },
+ "qwen3.5-122b-a10b": {
+ id: "qwen3.5-122b-a10b",
+ name: "Qwen3.5 122B A10B",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2026-01",
+ release_date: "2026-02-24",
+ last_updated: "2026-02-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.444, output: 3.106 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "llama-3.3-70b-instruct": {
+ id: "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.089, output: 0.275 },
+ limit: { context: 131000, output: 131000 },
+ },
+ "mistral-large-2512": {
+ id: "mistral-large-2512",
+ name: "Mistral Large 3 2512",
+ family: "mistral-large",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-12",
+ release_date: "2025-12-01",
+ last_updated: "2025-12-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.5, output: 1.5, cache_read: 0.05 },
+ limit: { context: 256000, output: 256000 },
+ },
+ "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: "2026-01",
+ release_date: "2026-02-16",
+ last_updated: "2026-02-16",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.6, output: 3.6 },
+ limit: { context: 250000, output: 250000 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.133, output: 0.266, cache_read: 0.028 },
+ limit: { context: 1048576, output: 384000 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.553, output: 3.106, cache_read: 0.145 },
+ limit: { context: 1048576, output: 384000 },
+ },
+ "qwen3-coder-30b-a3b-instruct": {
+ id: "qwen3-coder-30b-a3b-instruct",
+ name: "Qwen3 Coder 30B A3B Instruct",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ 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.053, output: 0.222 },
+ limit: { context: 262000, output: 262000 },
+ },
+ },
+ },
+ 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.6": {
+ id: "moonshotai/Kimi-K2.6",
+ name: "moonshotai/Kimi-K2.6",
+ family: "kimi",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-01-27",
+ last_updated: "2026-01-27",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.45, output: 2.25 },
+ 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.6-27b": {
+ id: "alibaba/qwen3.6-27b",
+ name: "Qwen 3.6 27B",
+ family: "qwen3.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-22",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.6, output: 3.5999999999999996 },
+ limit: { context: 256000, output: 256000 },
+ },
+ "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/qwen-3.6-max-preview": {
+ id: "alibaba/qwen-3.6-max-preview",
+ name: "Qwen 3.6 Max Preview",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.3, output: 7.8, cache_read: 0.26, cache_write: 1.625 },
+ limit: { context: 240000, output: 64000 },
+ },
+ "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-vl-235b-a22b-instruct": {
+ id: "alibaba/qwen3-vl-235b-a22b-instruct",
+ name: "Qwen3 VL 235B A22B Instruct",
+ family: "qwen",
+ attachment: true,
+ reasoning: false,
+ tool_call: false,
+ temperature: true,
+ release_date: "2025-09-24",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.39999999999999997, output: 1.5999999999999999 },
+ limit: { context: 131072, output: 129024 },
+ },
+ "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-v4-flash": {
+ id: "deepseek/deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-23",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "deepseek/deepseek-v4-pro": {
+ id: "deepseek/deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-23",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "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-5.1": {
+ id: "zai/glm-5.1",
+ name: "GLM 5.1",
+ family: "glm",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-07",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.4, output: 4.4, cache_read: 0.26 },
+ limit: { context: 202752, output: 202752 },
+ },
+ "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.3": {
+ id: "xai/grok-4.3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-30",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.25, output: 2.5, cache_read: 0.19999999999999998 },
+ limit: { context: 1000000, output: 1000000 },
+ },
+ "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-edit-2": {
+ id: "inception/mercury-edit-2",
+ name: "Mercury Edit 2",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-30",
+ last_updated: "2026-03-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 0.75, cache_read: 0.025 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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,
+ release_date: "2025-02-26",
+ last_updated: "2026-05-01",
+ 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.5": {
+ id: "openai/gpt-5.5",
+ name: "GPT 5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5 },
+ limit: { context: 1000000, input: 872000, output: 128000 },
+ },
+ "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-5.5-pro": {
+ id: "openai/gpt-5.5-pro",
+ name: "GPT 5.5 Pro",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180 },
+ limit: { context: 1000000, input: 872000, output: 128000 },
+ },
+ "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.1-flash-lite": {
+ id: "google/gemini-3.1-flash-lite",
+ name: "Gemini 3.1 Flash Lite",
+ family: "gemini",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-05-07",
+ last_updated: "2026-05-08",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 1.5, cache_read: 0.03 },
+ limit: { context: 1000000, output: 65000 },
+ },
+ "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.03, 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.125,
+ context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
+ },
+ 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.6": {
+ id: "moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262000, output: 262000 },
+ },
+ "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",
+ },
+ "interfaze/interfaze-beta": {
+ id: "interfaze/interfaze-beta",
+ name: "Interfaze Beta",
+ attachment: false,
+ reasoning: true,
+ tool_call: false,
+ temperature: true,
+ release_date: "2025-10-07",
+ last_updated: "2026-04-29",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.5, output: 3.5 },
+ limit: { context: 1000000, output: 32000 },
+ },
+ "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-31",
+ 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.7": {
+ id: "anthropic/claude-opus-4.7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ 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-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: 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.5-pro": {
+ id: "xiaomi/mimo-v2.5-pro",
+ name: "MiMo V2.5 Pro",
+ family: "mimo-v2.5-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-22",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 3, cache_read: 0.19999999999999998 },
+ limit: { context: 1050000, output: 131000 },
+ },
+ "xiaomi/mimo-v2.5": {
+ id: "xiaomi/mimo-v2.5",
+ name: "MiMo M2.5",
+ family: "mimo-v2.5",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-22",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.39999999999999997, output: 2, cache_read: 0.08 },
+ limit: { context: 1050000, output: 131100 },
+ },
+ "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: {
+ "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 },
+ },
+ "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-08",
+ last_updated: "2025-07-08",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.8, output: 2.4 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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",
+ },
+ "hermes-2-pro-llama-3-8b": {
+ id: "hermes-2-pro-llama-3-8b",
+ name: "Hermes 2 Pro Llama 3 8B",
+ family: "hermes",
+ 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 },
+ },
+ "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: false,
+ cost: { input: 0.5, output: 1 },
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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: true,
+ cost: { input: 0.07, output: 0.3, cache_read: 0.01 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "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: true,
+ cost: { input: 0.25, output: 2, cache_read: 0.05 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "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: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-09-15",
+ last_updated: "2025-09-15",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.8, output: 2.4 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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-02",
+ last_updated: "2025-10-02",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2025-03-15",
+ last_updated: "2025-03-15",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 0.3 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: false,
+ temperature: true,
+ release_date: "2025-08-19",
+ last_updated: "2025-08-19",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ 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 },
+ },
+ "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 },
+ },
+ "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",
+ },
+ "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: false,
+ cost: { input: 1.6, output: 6.4 },
+ limit: { context: 32768, output: 8192 },
+ },
+ "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: true,
+ cost: { input: 0, output: 0 },
+ limit: { context: 128000, output: 16000 },
+ status: "beta",
+ },
+ "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-08",
+ last_updated: "2025-07-08",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "minimax-text-01": {
+ id: "minimax-text-01",
+ name: "MiniMax Text 01",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ 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: true,
+ 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.1 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: 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.17, output: 0.66 },
+ limit: { context: 8192, output: 2048 },
+ },
+ "qwen3-4b-fp8": {
+ id: "qwen3-4b-fp8",
+ name: "Qwen3 4B FP8",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ 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.03, output: 0.05 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: 8192 },
+ },
+ "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 },
+ },
+ "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-09",
+ last_updated: "2025-10-09",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.05, output: 0.4, cache_read: 0.01 },
+ limit: { context: 1000000, output: 32000 },
+ },
+ "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: true,
+ cost: { input: 0.25, output: 2, cache_read: 0.05 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "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-08",
+ last_updated: "2025-07-08",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.8, output: 2.4 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: true,
+ cost: { input: 0.25, output: 2, cache_read: 0.05 },
+ limit: { context: 256000, output: 8192 },
+ },
+ "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",
+ },
+ "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-08",
+ last_updated: "2025-07-08",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 131072, 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 },
+ },
+ "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: 8192 },
+ },
+ "qwen-plus-latest": {
+ id: "qwen-plus-latest",
+ name: "Qwen Plus 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: false,
+ cost: { input: 0.3, output: 0.9 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: 8192 },
+ },
+ "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: 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.24, output: 0.97 },
+ limit: { context: 8192, output: 2048 },
+ },
+ "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-30b-a3b-fp8": {
+ id: "qwen3-30b-a3b-fp8",
+ name: "Qwen3 30B A3B FP8",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ 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.1 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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 },
+ },
+ "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: false,
+ cost: { input: 3, output: 15, cache_read: 0.6 },
+ limit: { context: 256000, output: 32800 },
+ },
+ "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 },
+ },
+ "qwen3-coder-next": {
+ id: "qwen3-coder-next",
+ name: "Qwen3 Coder Next",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ 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: 0.8, output: 4 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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 },
+ },
+ "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: true,
+ temperature: true,
+ release_date: "2025-10-02",
+ last_updated: "2025-10-02",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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: true,
+ 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.5, output: 2.5 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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 },
+ },
+ "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: true,
+ 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 },
+ },
+ "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-15",
+ last_updated: "2025-09-15",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.8, output: 2.4 },
+ limit: { context: 131072, output: 8192 },
+ },
+ "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 },
+ },
+ "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.05, output: 0.05 },
+ limit: { context: 131072, 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 },
+ },
+ "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: 8192 },
+ },
+ "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: 8192 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "grok-4-20-beta-0309-non-reasoning": {
+ id: "grok-4-20-beta-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "kimi-k2.5": {
+ id: "kimi-k2.5",
+ name: "Kimi K2.5",
+ family: "kimi-k2.5",
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "mimo-v2.5-pro": {
+ id: "mimo-v2.5-pro",
+ name: "MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-31",
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-15",
+ last_updated: "2026-02-15",
+ modalities: { input: ["text", "image", "video", "audio"], 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: 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "gpt-5.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, output: 128000 },
+ experimental: {
+ modes: {
+ fast: {
+ cost: { input: 12.5, output: 75, cache_read: 1.25 },
+ provider: { body: { service_tier: "priority" } },
+ },
+ },
+ },
+ },
+ "qwen3.6-35b-a3b": {
+ id: "qwen3.6-35b-a3b",
+ name: "Qwen3.6 35B-A3B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-17",
+ last_updated: "2026-04-17",
+ modalities: { input: ["text", "image", "video", "audio"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.248, output: 1.485 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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 },
+ },
+ "claude-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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 },
+ },
+ "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: false,
+ cost: { input: 0.4, output: 2, cache_read: 0.08 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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.125,
+ context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
+ },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "mimo-v2.5": {
+ id: "mimo-v2.5",
+ name: "MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: {
+ input: 0.4,
+ output: 2,
+ cache_read: 0.08,
+ context_over_200k: { input: 0.8, output: 4, cache_read: 0.16 },
+ },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "grok-4-20-beta-0309-reasoning": {
+ id: "grok-4-20-beta-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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.03, input_audio: 1 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "gemini-3.1-flash-lite": {
+ id: "gemini-3.1-flash-lite",
+ name: "Gemini 3.1 Flash Lite",
+ family: "gemini-flash-lite",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-05-07",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text", "image", "video", "audio", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ 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 },
+ },
+ "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 },
+ },
+ "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: 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-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 },
+ },
+ "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 },
+ },
+ 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 },
+ },
+ "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 },
+ },
+ "grok-4-3": {
+ id: "grok-4-3",
+ name: "Grok 4.3",
+ family: "grok",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-05-01",
+ last_updated: "2026-05-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: {
+ input: 1.25,
+ output: 2.5,
+ cache_read: 0.2,
+ context_over_200k: { input: 2.5, output: 5, cache_read: 0.4 },
+ },
+ limit: { context: 1000000, output: 30000 },
+ },
+ "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 },
+ },
+ "deepseek-v4-flash": {
+ id: "deepseek-v4-flash",
+ name: "DeepSeek V4 Flash",
+ family: "deepseek-flash",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.28, cache_read: 0.028 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "deepseek-v4-pro": {
+ id: "deepseek-v4-pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek-thinking",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-05",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.74, output: 3.48, cache_read: 0.145 },
+ limit: { context: 1000000, output: 384000 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "mimo-v2-pro": {
+ id: "mimo-v2-pro",
+ name: "MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ 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: false,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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: 262144, output: 65536 },
+ },
+ "qwen3.6-max-preview": {
+ id: "qwen3.6-max-preview",
+ name: "Qwen3.6 Max Preview",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ knowledge: "2025-04",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1.3, output: 7.8, cache_read: 0.13, cache_write: 1.625 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "gpt-5.5-pro": {
+ id: "gpt-5.5-pro",
+ name: "GPT-5.5 Pro",
+ family: "gpt-pro",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-23",
+ last_updated: "2026-04-23",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 30, output: 180, context_over_200k: { input: 60, output: 270 } },
+ limit: { context: 1050000, input: 922000, 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", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 2, output: 8, cache_read: 0.5 },
+ limit: { context: 1047576, output: 32768 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ },
+ },
+ "google-vertex": {
+ id: "google-vertex",
+ env: ["GOOGLE_VERTEX_PROJECT", "GOOGLE_VERTEX_LOCATION", "GOOGLE_APPLICATION_CREDENTIALS"],
+ npm: "@ai-sdk/google-vertex",
+ name: "Vertex",
+ doc: "https://cloud.google.com/vertex-ai/generative-ai/docs/models",
+ models: {
+ "gemini-2.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-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-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-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-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 },
+ },
+ "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",
+ },
+ },
+ "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 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "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-31",
+ 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,
+ context_over_200k: { input: 6, output: 22.5, cache_read: 0.6, cache_write: 7.5 },
+ },
+ limit: { context: 200000, output: 64000 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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-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.125,
+ context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
+ },
+ 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 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "gemini-3.1-flash-lite": {
+ id: "gemini-3.1-flash-lite",
+ name: "Gemini 3.1 Flash Lite",
+ family: "gemini-flash-lite",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-05-07",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text", "image", "video", "audio", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "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-31",
+ 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,
+ context_over_200k: { input: 10, output: 37.5, cache_read: 1, cache_write: 12.5 },
+ },
+ limit: { context: 1000000, output: 128000 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ "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 },
+ },
+ "claude-opus-4-7@default": {
+ id: "claude-opus-4-7@default",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ 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 },
+ provider: { npm: "@ai-sdk/google-vertex/anthropic" },
+ },
+ },
+ },
+ "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 },
+ },
+ "@cf/moonshotai/kimi-k2.6": {
+ id: "@cf/moonshotai/kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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.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 },
+ },
+ "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",
+ },
+ },
+ "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 },
+ },
+ "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",
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "kimi-k2.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4 },
+ limit: { context: 262144, output: 262144 },
+ provider: {
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models",
+ shape: "completions",
+ },
+ },
+ "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 },
+ },
+ "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-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: 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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,
+ knowledge: "2025-08-31",
+ 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 },
+ provider: {
+ npm: "@ai-sdk/anthropic",
+ api: "https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1",
+ },
+ },
+ "gpt-5.5": {
+ id: "gpt-5.5",
+ name: "GPT-5.5",
+ family: "gpt",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-12-01",
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 30, cache_read: 0.5, context_over_200k: { input: 10, output: 45, cache_read: 1 } },
+ limit: { context: 1050000, input: 922000, 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-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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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.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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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-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 },
+ },
+ "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-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 },
+ },
+ "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 },
+ },
+ },
+ },
+ 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 },
+ },
+ "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 },
+ },
+ "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 },
+ },
+ "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/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,
+ 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.125,
+ context_over_200k: { input: 2.5, output: 15, cache_read: 0.25 },
+ },
+ 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.03, 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 },
+ },
+ "gemini-3.1-flash-lite": {
+ id: "gemini-3.1-flash-lite",
+ name: "Gemini 3.1 Flash Lite",
+ family: "gemini-flash-lite",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-05-07",
+ last_updated: "2026-05-07",
+ modalities: { input: ["text", "image", "video", "audio", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.25, output: 1.5, cache_read: 0.025, cache_write: 1 },
+ limit: { context: 1048576, output: 65536 },
+ },
+ "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 },
+ },
+ "gemma-4-26b-a4b-it": {
+ id: "gemma-4-26b-a4b-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-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 },
+ },
+ "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-k2.5",
+ 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.6": {
+ id: "kimi-k2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4, cache_read: 0.16 },
+ 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.77, output: 2.75 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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.33, output: 0.33 },
+ limit: { context: 32000, output: 8192 },
+ },
+ "mistralai/Mistral-Medium-3.5-128B": {
+ id: "mistralai/Mistral-Medium-3.5-128B",
+ name: "Mistral Medium 3.5 128B",
+ family: "mistral-medium",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2026-04",
+ release_date: "2026-04-29",
+ last_updated: "2026-04-29",
+ modalities: { input: ["image", "text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.65, output: 5.5 },
+ limit: { context: 262144, 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: 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.99, output: 0.99 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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.44, output: 0.99 },
+ limit: { context: 128000, output: 8192 },
+ },
+ "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,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-12",
+ release_date: "2026-04-02",
+ last_updated: "2026-04-02",
+ modalities: { input: ["audio", "image", "text", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.275, output: 0.55 },
+ limit: { context: 128000, output: 8192 },
+ },
+ },
+ },
+ "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 },
+ },
+ },
+ },
+ neuralwatt: {
+ id: "neuralwatt",
+ env: ["NEURALWATT_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://api.neuralwatt.com/v1",
+ name: "Neuralwatt",
+ doc: "https://portal.neuralwatt.com/docs",
+ models: {
+ "glm-5-fast": {
+ id: "glm-5-fast",
+ name: "GLM 5 Fast",
+ family: "glm",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-07",
+ last_updated: "2026-04-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.1, output: 3.6 },
+ limit: { context: 200000, output: 200000 },
+ },
+ "kimi-k2.6-fast": {
+ id: "kimi-k2.6-fast",
+ name: "Kimi K2.6 Fast",
+ family: "kimi",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.69, output: 3.22 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "qwen3.5-397b-fast": {
+ id: "qwen3.5-397b-fast",
+ name: "Qwen3.5 397B Fast",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-02-01",
+ last_updated: "2026-02-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.69, output: 4.14 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "glm-5.1-fast": {
+ id: "glm-5.1-fast",
+ name: "GLM 5.1 Fast",
+ family: "glm",
+ attachment: false,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-07",
+ last_updated: "2026-04-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.1, output: 3.6 },
+ limit: { context: 200000, output: 200000 },
+ },
+ "qwen3.6-35b-fast": {
+ id: "qwen3.6-35b-fast",
+ name: "Qwen3.6 35B Fast",
+ family: "qwen3.6",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-01",
+ last_updated: "2026-04-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.05, output: 0.1 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "kimi-k2.5-fast": {
+ id: "kimi-k2.5-fast",
+ name: "Kimi K2.5 Fast",
+ family: "kimi",
+ attachment: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-01-27",
+ last_updated: "2026-01-27",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.52, output: 2.59 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "Qwen/Qwen3.5-397B-A17B-FP8": {
+ id: "Qwen/Qwen3.5-397B-A17B-FP8",
+ name: "Qwen3.5 397B A17B FP8",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-02-01",
+ last_updated: "2026-02-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.69, output: 4.14 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "Qwen/Qwen3.6-35B-A3B": {
+ id: "Qwen/Qwen3.6-35B-A3B",
+ name: "Qwen3.6 35B A3B",
+ family: "qwen3.6",
+ 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: true,
+ cost: { input: 0.05, output: 0.1 },
+ limit: { context: 131072, output: 131072 },
+ },
+ "zai-org/GLM-5.1-FP8": {
+ id: "zai-org/GLM-5.1-FP8",
+ name: "GLM 5.1 FP8",
+ family: "glm",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-07",
+ last_updated: "2026-04-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.1, output: 3.6 },
+ limit: { context: 200000, output: 200000 },
+ },
+ "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: true,
+ reasoning: false,
+ tool_call: true,
+ temperature: true,
+ release_date: "2025-12-09",
+ last_updated: "2025-12-09",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.12, output: 0.35 },
+ limit: { context: 262144, output: 262144 },
+ },
+ "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.16 },
+ limit: { context: 16384, output: 16384 },
+ },
+ "moonshotai/Kimi-K2.6": {
+ id: "moonshotai/Kimi-K2.6",
+ name: "Kimi K2.6",
+ family: "kimi",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.69, output: 3.22 },
+ 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" },
+ temperature: true,
+ release_date: "2026-01-27",
+ last_updated: "2026-01-27",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.52, output: 2.59 },
+ 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.35, output: 1.38 },
+ limit: { context: 196608, output: 196608 },
+ },
+ },
+ },
+ 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.6-Plus": {
+ id: "Qwen/Qwen3.6-Plus",
+ name: "Qwen3.6 Plus",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-30",
+ last_updated: "2026-04-30",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.5, output: 3 },
+ limit: { context: 1000000, output: 500000 },
+ },
+ "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 },
+ },
+ "deepseek-ai/DeepSeek-V4-Pro": {
+ id: "deepseek-ai/DeepSeek-V4-Pro",
+ name: "DeepSeek V4 Pro",
+ family: "deepseek",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-04-24",
+ last_updated: "2026-04-24",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 2.1, output: 4.4, cache_read: 0.2 },
+ limit: { context: 512000, output: 384000 },
+ },
+ "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.6": {
+ id: "moonshotai/Kimi-K2.6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1.2, output: 4.5, cache_read: 0.2 },
+ limit: { context: 262144, output: 131000 },
+ },
+ "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 },
+ },
+ "MiniMaxAI/MiniMax-M2.7": {
+ id: "MiniMaxAI/MiniMax-M2.7",
+ name: "MiniMax-M2.7",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: true,
+ temperature: true,
+ release_date: "2026-03-18",
+ last_updated: "2026-03-18",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 1.2, cache_read: 0.06 },
+ limit: { context: 202752, 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 },
+ },
+ },
+ },
+ "tencent-tokenhub": {
+ id: "tencent-tokenhub",
+ env: ["TENCENT_TOKENHUB_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://tokenhub.tencentmaas.com/v1",
+ name: "Tencent TokenHub",
+ doc: "https://cloud.tencent.com/document/product/1823/130050",
+ models: {
+ "hy3-preview": {
+ id: "hy3-preview",
+ name: "Hy3 preview",
+ family: "Hy",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-04-20",
+ last_updated: "2026-04-20",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 256000, 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-31",
+ 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-opus-4-7": {
+ id: "claude-opus-4-7",
+ name: "Claude Opus 4.7",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
+ limit: { context: 1000000, output: 128000 },
+ },
+ "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-31",
+ 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 },
+ },
+ },
+ },
+ "hpc-ai": {
+ id: "hpc-ai",
+ env: ["HPC_AI_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://api.hpc-ai.com/inference/v1",
+ name: "HPC-AI",
+ doc: "https://www.hpc-ai.com/doc/docs/quickstart/",
+ models: {
+ "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-08",
+ last_updated: "2026-04-08",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.66, output: 2, cache_read: 0.12 },
+ limit: { context: 202000, output: 202000 },
+ },
+ "minimax/minimax-m2.5": {
+ id: "minimax/minimax-m2.5",
+ name: "MiniMax M2.5",
+ family: "minimax-m2.5",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ structured_output: false,
+ temperature: true,
+ release_date: "2026-02-12",
+ last_updated: "2026-03-25",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.14, output: 0.56, cache_read: 0.014 },
+ limit: { context: 1000000, 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: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: false,
+ knowledge: "2025-01-01",
+ release_date: "2026-01-01",
+ last_updated: "2026-03-25",
+ modalities: { input: ["text", "image", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.21, output: 1, cache_read: 0.03 },
+ limit: { context: 262144, output: 262144 },
+ },
+ },
+ },
+ 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-7": {
+ id: "duo-chat-opus-4-7",
+ name: "Agentic Chat (Claude Opus 4.7)",
+ family: "claude-opus",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: false,
+ knowledge: "2026-01-31",
+ release_date: "2026-04-16",
+ last_updated: "2026-04-16",
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0, output: 0, cache_read: 0, cache_write: 0 },
+ limit: { context: 1000000, output: 64000 },
+ },
+ "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-05-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.5-pro": {
+ id: "mimo-v2.5-pro",
+ name: "MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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: false,
+ cost: { input: 0.4, output: 2, cache_read: 0.08 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "mimo-v2.5": {
+ id: "mimo-v2.5",
+ name: "MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: {
+ input: 0.4,
+ output: 2,
+ cache_read: 0.08,
+ context_over_200k: { input: 0.8, output: 4, cache_read: 0.16 },
+ },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "mimo-v2-pro": {
+ id: "mimo-v2-pro",
+ name: "MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ 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: false,
+ cost: { input: 1, output: 3, cache_read: 0.2, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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: 262144, output: 65536 },
+ },
+ },
+ },
+ 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 },
+ },
+ "moonshotai/chat-completion/models/Kimi-K2_6": {
+ id: "moonshotai/chat-completion/models/Kimi-K2_6",
+ name: "Kimi K2.6",
+ family: "kimi-k2.6",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ structured_output: true,
+ temperature: true,
+ knowledge: "2025-01",
+ release_date: "2026-04-21",
+ last_updated: "2026-04-21",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.95, output: 4 },
+ limit: { context: 262144, output: 262144 },
+ },
+ },
+ },
+ "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 },
+ },
+ },
+ },
+ "regolo-ai": {
+ id: "regolo-ai",
+ env: ["REGOLO_API_KEY"],
+ npm: "@ai-sdk/openai-compatible",
+ api: "https://api.regolo.ai/v1",
+ name: "Regolo AI",
+ doc: "https://docs.regolo.ai/",
+ models: {
+ "mistral-small3.2": {
+ id: "mistral-small3.2",
+ name: "Mistral Small 3.2",
+ family: "mistral-small",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2025-01-31",
+ last_updated: "2025-01-31",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.5, output: 2.2 },
+ limit: { context: 120000, output: 120000 },
+ },
+ "qwen3-embedding-8b": {
+ id: "qwen3-embedding-8b",
+ name: "Qwen3-Embedding-8B",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2026-02-01",
+ last_updated: "2026-02-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.1, output: 0.1 },
+ limit: { context: 32768, output: 8192 },
+ },
+ "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,
+ release_date: "2025-04-28",
+ last_updated: "2025-04-28",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.6, output: 2.7 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "qwen3-reranker-4b": {
+ id: "qwen3-reranker-4b",
+ name: "Qwen3-Reranker-4B",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: false,
+ release_date: "2026-02-01",
+ last_updated: "2026-02-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.12, output: 0.12 },
+ limit: { context: 32768, output: 8192 },
+ },
+ "mistral-small-4-119b": {
+ id: "mistral-small-4-119b",
+ name: "Mistral Small 4 119B",
+ family: "mistral-small",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-15",
+ last_updated: "2026-03-15",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.75, output: 3 },
+ limit: { context: 256000, output: 16384 },
+ },
+ "qwen3.5-122b": {
+ id: "qwen3.5-122b",
+ name: "Qwen3.5-122B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-02-01",
+ last_updated: "2026-02-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.9, output: 3.6 },
+ limit: { context: 262144, output: 16384 },
+ },
+ "qwen-image": {
+ id: "qwen-image",
+ name: "Qwen-Image",
+ family: "qwen",
+ attachment: false,
+ reasoning: false,
+ tool_call: false,
+ temperature: true,
+ release_date: "2026-03-01",
+ last_updated: "2026-03-01",
+ modalities: { input: ["text"], output: ["image"] },
+ open_weights: false,
+ cost: { input: 0.5, output: 2 },
+ limit: { context: 8192, output: 4096 },
+ },
+ "qwen3-coder-next": {
+ id: "qwen3-coder-next",
+ name: "Qwen3-Coder-Next",
+ family: "qwen",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-01",
+ last_updated: "2026-03-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.3, output: 1.2 },
+ limit: { context: 262144, output: 16384 },
+ },
+ "minimax-m2.5": {
+ id: "minimax-m2.5",
+ name: "MiniMax 2.5",
+ family: "minimax",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-10",
+ last_updated: "2026-03-10",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.8, output: 3.5 },
+ limit: { context: 190000, output: 64000 },
+ },
+ "gpt-oss-20b": {
+ id: "gpt-oss-20b",
+ name: "GPT-OSS-20B",
+ family: "gpt-oss",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-03-01",
+ last_updated: "2026-03-01",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.4, output: 1.8 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "qwen3.5-9b": {
+ id: "qwen3.5-9b",
+ name: "Qwen3.5-9B",
+ family: "qwen",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ temperature: true,
+ release_date: "2026-02-01",
+ last_updated: "2026-02-01",
+ modalities: { input: ["text", "image"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0.15, output: 0.6 },
+ 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,
+ temperature: true,
+ release_date: "2025-08-05",
+ last_updated: "2025-08-05",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 1, output: 4.2 },
+ limit: { context: 128000, output: 16384 },
+ },
+ "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,
+ release_date: "2025-04-07",
+ last_updated: "2025-04-07",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: false,
+ cost: { input: 0.05, output: 0.25 },
+ limit: { context: 120000, output: 120000 },
+ },
+ },
+ },
+ "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-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: 8192, output: 16384 },
+ },
+ "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, output: 0, cache_read: 0 },
+ limit: { context: 262144, output: 65536 },
+ },
+ "mimo-v2-pro": {
+ id: "mimo-v2-pro",
+ name: "MiMo-V2-Pro",
+ family: "mimo",
+ attachment: false,
+ 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: false,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 2, output: 6, cache_read: 0.4 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "mimo-v2.5": {
+ id: "mimo-v2.5",
+ name: "MiMo-V2.5",
+ family: "mimo",
+ attachment: true,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text", "image", "audio", "video"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 0, output: 0, cache_read: 0 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ "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: false,
+ cost: { input: 0, output: 0, cache_read: 0 },
+ limit: { context: 262144, output: 131072 },
+ },
+ "mimo-v2.5-pro": {
+ id: "mimo-v2.5-pro",
+ name: "MiMo-V2.5-Pro",
+ family: "mimo",
+ attachment: false,
+ reasoning: true,
+ tool_call: true,
+ interleaved: { field: "reasoning_content" },
+ temperature: true,
+ knowledge: "2024-12",
+ release_date: "2026-04-22",
+ last_updated: "2026-04-22",
+ modalities: { input: ["text"], output: ["text"] },
+ open_weights: true,
+ cost: { input: 0, output: 0, cache_read: 0, context_over_200k: { input: 0, output: 0, cache_read: 0 } },
+ limit: { context: 1048576, output: 131072 },
+ },
+ },
+ },
+ 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/models.ts b/packages/core/src/models.ts
similarity index 89%
rename from packages/opencode/src/provider/models.ts
rename to packages/core/src/models.ts
index 8d88e0fced..4ee17b8e25 100644
--- a/packages/opencode/src/provider/models.ts
+++ b/packages/core/src/models.ts
@@ -1,15 +1,17 @@
-import { Global } from "@opencode-ai/core/global"
import path from "path"
import { Context, Duration, Effect, Layer, Option, Schedule, Schema } from "effect"
import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http"
-import { Installation } from "../installation"
-import { Flag } from "@opencode-ai/core/flag/flag"
-import { Flock } from "@opencode-ai/core/util/flock"
-import { Hash } from "@opencode-ai/core/util/hash"
-import { AppFileSystem } from "@opencode-ai/core/filesystem"
-import { withTransientReadRetry } from "@/util/effect-http-client"
-import { CatalogModelStatus } from "./model-status"
-import { RuntimeFlags } from "@/effect/runtime-flags"
+import { Global } from "./global"
+import { Flag } from "./flag/flag"
+import { Flock } from "./util/flock"
+import { Hash } from "./util/hash"
+import { AppFileSystem } from "./filesystem"
+import { InstallationChannel, InstallationVersion } from "./installation/version"
+
+export const CatalogModelStatus = Schema.Literals(["alpha", "beta", "deprecated"])
+export type CatalogModelStatus = typeof CatalogModelStatus.Type
+
+const USER_AGENT = `opencode/${InstallationChannel}/${InstallationVersion}/${Flag.OPENCODE_CLIENT}`
const CostTier = Schema.Struct({
input: Schema.Finite,
@@ -110,14 +112,21 @@ export interface Interface {
export class Service extends Context.Service()("@opencode/ModelsDev") {}
-type Requirements = AppFileSystem.Service | HttpClient.HttpClient | RuntimeFlags.Service
+type Requirements = AppFileSystem.Service | HttpClient.HttpClient
export const layer: Layer.Layer = Layer.effect(
Service,
Effect.gen(function* () {
const fs = yield* AppFileSystem.Service
- const http = HttpClient.filterStatusOk(withTransientReadRetry(yield* HttpClient.HttpClient))
- const flags = yield* RuntimeFlags.Service
+ const http = HttpClient.filterStatusOk(
+ (yield* HttpClient.HttpClient).pipe(
+ HttpClient.retryTransient({
+ retryOn: "errors-and-responses",
+ times: 2,
+ schedule: Schedule.exponential(200).pipe(Schedule.jittered),
+ }),
+ ),
+ )
const source = Flag.OPENCODE_MODELS_URL || "https://models.dev"
const filepath = path.join(
@@ -136,7 +145,7 @@ export const layer: Layer.Layer = Layer.effect(
const fetchApi = Effect.fn("ModelsDev.fetchApi")(function* () {
return yield* HttpClientRequest.get(`${source}/api.json`).pipe(
- HttpClientRequest.setHeader("User-Agent", Installation.userAgent(flags.client)),
+ HttpClientRequest.setHeader("User-Agent", USER_AGENT),
http.execute,
Effect.flatMap((res) => res.text),
Effect.timeout("10 seconds"),
@@ -212,7 +221,6 @@ export const layer: Layer.Layer = Layer.effect(
export const defaultLayer: Layer.Layer = layer.pipe(
Layer.provide(FetchHttpClient.layer),
Layer.provide(AppFileSystem.defaultLayer),
- Layer.provide(RuntimeFlags.defaultLayer),
)
export * as ModelsDev from "./models"
diff --git a/packages/core/src/plugin/boot.ts b/packages/core/src/plugin/boot.ts
new file mode 100644
index 0000000000..74560ac85b
--- /dev/null
+++ b/packages/core/src/plugin/boot.ts
@@ -0,0 +1,71 @@
+export * as PluginBoot from "./boot"
+
+import { Context, Deferred, Effect, Layer } from "effect"
+import { AuthV2 } from "../auth"
+import { Catalog } from "../catalog"
+import { Npm } from "../npm"
+import { PluginV2 } from "../plugin"
+import { AuthPlugin } from "./auth"
+import { EnvPlugin } from "./env"
+import { ModelsDevPlugin } from "./models-dev"
+import { ProviderPlugins } from "./provider"
+
+type Plugin = {
+ id: PluginV2.ID
+ effect: Effect.Effect
+}
+
+export interface Interface {
+ readonly wait: () => Effect.Effect
+}
+
+export class Service extends Context.Service()("@opencode/v2/PluginBoot") {}
+
+export const layer: Layer.Layer =
+ Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const plugin = yield* PluginV2.Service
+ const auth = yield* AuthV2.Service
+ const npm = yield* Npm.Service
+ const done = yield* Deferred.make()
+
+ const add = Effect.fn("PluginBoot.add")(function* (input: Plugin) {
+ yield* plugin.add({
+ id: input.id,
+ effect: input.effect.pipe(
+ Effect.provideService(Catalog.Service, catalog),
+ Effect.provideService(AuthV2.Service, auth),
+ Effect.provideService(Npm.Service, npm),
+ ),
+ })
+ })
+
+ const boot = Effect.gen(function* () {
+ yield* add(EnvPlugin)
+ yield* add(AuthPlugin)
+ for (const item of ProviderPlugins) {
+ yield* add(item)
+ }
+ yield* add(ModelsDevPlugin)
+ }).pipe(Effect.withSpan("PluginBoot.boot"))
+
+ yield* boot.pipe(
+ Effect.exit,
+ Effect.flatMap((exit) => Deferred.done(done, exit)),
+ Effect.forkScoped,
+ )
+
+ return Service.of({
+ wait: () => Deferred.await(done),
+ })
+ }),
+ )
+
+export const defaultLayer = layer.pipe(
+ Layer.provide(Catalog.defaultLayer),
+ Layer.provide(PluginV2.defaultLayer),
+ Layer.provide(Layer.orDie(AuthV2.defaultLayer)),
+ Layer.provide(Npm.defaultLayer),
+)
diff --git a/packages/core/src/plugin/layer-map.example.ts b/packages/core/src/plugin/layer-map.example.ts
new file mode 100644
index 0000000000..63e33d3f0c
--- /dev/null
+++ b/packages/core/src/plugin/layer-map.example.ts
@@ -0,0 +1,94 @@
+export * as LayerMapExample from "./layer-map.example"
+
+import { Context, Effect, Layer, LayerMap } from "effect"
+import { Npm } from "../npm"
+
+/**
+ * Tutorial: split global services from context-specific services.
+ *
+ * Use this pattern when part of the app should be constructed once at the app edge,
+ * while another part should be cached per request/project/workspace key.
+ *
+ * In this example:
+ * - Npm.Service is the global service. It is not keyed by request context and should
+ * be provided once by the application runtime.
+ * - ConfigService is context-specific. It is built from a RequestContext key and is
+ * cached by LayerMap for that key.
+ * - ConfigServiceMap.layer owns the cache. Provide it once globally, then each
+ * request can provide ConfigServiceMap.get(context) to select the right instance.
+ *
+ * Lifetime model:
+ * - ConfigServiceMap.layer has the app/global lifetime and depends on Npm.Service.
+ * - ConfigServiceMap.get(context) has the request/context lifetime and provides
+ * ConfigService for exactly that context key.
+ * - The cached ConfigService entry stays alive while something is using it. Once idle,
+ * it remains cached for idleTimeToLive, then its scope is finalized.
+ * - invalidate(context) removes the cache entry for future lookups. Active users keep
+ * running on the old instance; the next lookup can create a fresh instance.
+ *
+ * Key model:
+ * - Keys can be strings, structs, classes, arrays, etc.
+ * - Prefer primitive or immutable keys. Effect uses Hash / Equal semantics for cache
+ * lookup, so mutating an object after it has been used as a key is a bug.
+ */
+
+export type RequestContext = {
+ readonly directory: string
+ readonly workspace: string
+}
+
+export class RequestContextRef extends Context.Service()(
+ "@opencode/example/RequestContextRef",
+) {}
+
+export interface ConfigServiceShape {
+ readonly directory: string
+ readonly workspace: string
+ readonly nextUse: () => Effect.Effect
+ readonly which: Npm.Interface["which"]
+}
+
+export class ConfigService extends Context.Service()(
+ "@opencode/example/ConfigService",
+) {}
+
+const configServiceLayer = Layer.effect(
+ ConfigService,
+ Effect.gen(function* () {
+ const context = yield* RequestContextRef
+ const npm = yield* Npm.Service
+
+ let useCount = 0
+
+ return ConfigService.of({
+ directory: context.directory,
+ workspace: context.workspace,
+ nextUse: () => Effect.succeed(++useCount),
+ which: npm.which,
+ })
+ }),
+)
+
+export class ConfigServiceMap extends LayerMap.Service()("@opencode/example/ConfigServiceMap", {
+ lookup: (context: RequestContext) =>
+ configServiceLayer.pipe(Layer.provide(Layer.succeed(RequestContextRef, RequestContextRef.of(context)))),
+ idleTimeToLive: "5 minutes",
+}) {}
+
+export const appLayer = ConfigServiceMap.layer
+
+export const readConfig = Effect.fn("LayerMapExample.readConfig")(function* () {
+ const config = yield* ConfigService
+
+ return {
+ directory: config.directory,
+ workspace: config.workspace,
+ useCount: yield* config.nextUse(),
+ }
+})
+
+export const handleRequest = Effect.fn("LayerMapExample.handleRequest")(function* (context: RequestContext) {
+ return yield* readConfig().pipe(Effect.provide(ConfigServiceMap.get(context)))
+})
+
+export const invalidateContext = (context: RequestContext) => ConfigServiceMap.invalidate(context)
diff --git a/packages/opencode/src/v2/plugin/models-dev.ts b/packages/core/src/plugin/models-dev.ts
similarity index 92%
rename from packages/opencode/src/v2/plugin/models-dev.ts
rename to packages/core/src/plugin/models-dev.ts
index 7c0e902c79..e67c2e75a9 100644
--- a/packages/opencode/src/v2/plugin/models-dev.ts
+++ b/packages/core/src/plugin/models-dev.ts
@@ -1,9 +1,9 @@
import { DateTime, Effect } from "effect"
-import { Catalog } from "@opencode-ai/core/catalog"
-import { ModelV2 } from "@opencode-ai/core/model"
-import { ProviderV2 } from "@opencode-ai/core/provider"
-import { ModelsDev } from "@/provider/models"
-import { PluginV2 } from "@opencode-ai/core/plugin"
+import { Catalog } from "../catalog"
+import { ModelV2 } from "../model"
+import { ModelsDev } from "../models"
+import { PluginV2 } from "../plugin"
+import { ProviderV2 } from "../provider"
function released(date: string) {
const time = Date.parse(date)
diff --git a/packages/core/src/plugin/provider/nvidia.ts b/packages/core/src/plugin/provider/nvidia.ts
index b227e5cef3..49ef6af0f6 100644
--- a/packages/core/src/plugin/provider/nvidia.ts
+++ b/packages/core/src/plugin/provider/nvidia.ts
@@ -10,6 +10,7 @@ export const NvidiaPlugin = PluginV2.define({
if (evt.provider.id !== ProviderV2.ID.make("nvidia")) return
evt.provider.options.headers["HTTP-Referer"] = "https://opencode.ai/"
evt.provider.options.headers["X-Title"] = "opencode"
+ evt.provider.options.headers["X-BILLING-INVOKE-ORIGIN"] ??= "OpenCode"
}),
}
}),
diff --git a/packages/core/src/process.ts b/packages/core/src/process.ts
index 76ea9cf3f0..f076ea4e42 100644
--- a/packages/core/src/process.ts
+++ b/packages/core/src/process.ts
@@ -31,7 +31,8 @@ export interface RunResult {
readonly exitCode: number
readonly stdout: Buffer
readonly stderr: Buffer
- readonly truncated: boolean
+ readonly stdoutTruncated: boolean
+ readonly stderrTruncated: boolean
}
export type Interface = ChildProcessSpawner["Service"] & {
@@ -147,7 +148,8 @@ export const layer = Layer.effect(
exitCode,
stdout: stdout.buffer,
stderr: stderr.buffer,
- truncated: stdout.truncated,
+ stdoutTruncated: stdout.truncated,
+ stderrTruncated: stderr.truncated,
} satisfies RunResult
}),
)
diff --git a/packages/opencode/src/v2/session-event.ts b/packages/core/src/session-event.ts
similarity index 71%
rename from packages/opencode/src/v2/session-event.ts
rename to packages/core/src/session-event.ts
index 1fd0f909d5..a98d9cc051 100644
--- a/packages/opencode/src/v2/session-event.ts
+++ b/packages/core/src/session-event.ts
@@ -1,12 +1,13 @@
-import { SessionID } from "@/session/schema"
-import { NonNegativeInt } from "@opencode-ai/core/schema"
-import { EventV2 } from "./event"
-import { FileAttachment, Prompt } from "@opencode-ai/core/session-prompt"
import { Schema } from "effect"
+import { EventV2 } from "./event"
+import { ModelV2 } from "./model"
+import { NonNegativeInt } from "./schema"
+import { Session } from "./session"
+import { FileAttachment, Prompt } from "./session-prompt"
+import { ToolOutput } from "./tool-output"
+import { V2Schema } from "./v2-schema"
+
export { FileAttachment }
-import { ToolOutput } from "@opencode-ai/core/tool-output"
-import { V2Schema } from "@opencode-ai/core/v2-schema"
-import { ModelV2 } from "@opencode-ai/core/model"
export const Source = Schema.Struct({
start: NonNegativeInt,
@@ -15,92 +16,94 @@ export const Source = Schema.Struct({
}).annotate({
identifier: "session.next.event.source",
})
-export type Source = Schema.Schema.Type
+export type Source = typeof Source.Type
const Base = {
timestamp: V2Schema.DateTimeUtcFromMillis,
- sessionID: SessionID,
+ sessionID: Session.ID,
}
+const options = {
+ aggregate: "sessionID",
+ version: 1,
+} as const
+
export const UnknownError = Schema.Struct({
type: Schema.Literal("unknown"),
message: Schema.String,
}).annotate({
identifier: "Session.Error.Unknown",
})
-export type UnknownError = Schema.Schema.Type
+export type UnknownError = typeof UnknownError.Type
export const AgentSwitched = EventV2.define({
type: "session.next.agent.switched",
- aggregate: "sessionID",
- version: 1,
+ ...options,
schema: {
...Base,
agent: Schema.String,
},
})
-export type AgentSwitched = Schema.Schema.Type
+export type AgentSwitched = typeof AgentSwitched.Type
export const ModelSwitched = EventV2.define({
type: "session.next.model.switched",
- aggregate: "sessionID",
- version: 1,
+ ...options,
schema: {
...Base,
model: ModelV2.Ref,
},
})
-export type ModelSwitched = Schema.Schema.Type
+export type ModelSwitched = typeof ModelSwitched.Type
export const Prompted = EventV2.define({
type: "session.next.prompted",
- aggregate: "sessionID",
- version: 1,
+ ...options,
schema: {
...Base,
prompt: Prompt,
},
})
-export type Prompted = Schema.Schema.Type
+export type Prompted = typeof Prompted.Type
export const Synthetic = EventV2.define({
type: "session.next.synthetic",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
text: Schema.String,
},
})
-export type Synthetic = Schema.Schema.Type
+export type Synthetic = typeof Synthetic.Type
export namespace Shell {
export const Started = EventV2.define({
type: "session.next.shell.started",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
command: Schema.String,
},
})
- export type Started = Schema.Schema.Type
+ export type Started = typeof Started.Type
export const Ended = EventV2.define({
type: "session.next.shell.ended",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
output: Schema.String,
},
})
- export type Ended = Schema.Schema.Type
+ export type Ended = typeof Ended.Type
}
export namespace Step {
export const Started = EventV2.define({
type: "session.next.step.started",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
agent: Schema.String,
@@ -108,11 +111,11 @@ export namespace Step {
snapshot: Schema.String.pipe(Schema.optional),
},
})
- export type Started = Schema.Schema.Type
+ export type Started = typeof Started.Type
export const Ended = EventV2.define({
type: "session.next.step.ended",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
finish: Schema.String,
@@ -129,123 +132,123 @@ export namespace Step {
snapshot: Schema.String.pipe(Schema.optional),
},
})
- export type Ended = Schema.Schema.Type
+ export type Ended = typeof Ended.Type
export const Failed = EventV2.define({
type: "session.next.step.failed",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
error: UnknownError,
},
})
- export type Failed = Schema.Schema.Type
+ export type Failed = typeof Failed.Type
}
export namespace Text {
export const Started = EventV2.define({
type: "session.next.text.started",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
},
})
- export type Started = Schema.Schema.Type
+ export type Started = typeof Started.Type
export const Delta = EventV2.define({
type: "session.next.text.delta",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
delta: Schema.String,
},
})
- export type Delta = Schema.Schema.Type
+ export type Delta = typeof Delta.Type
export const Ended = EventV2.define({
type: "session.next.text.ended",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
text: Schema.String,
},
})
- export type Ended = Schema.Schema.Type
+ export type Ended = typeof Ended.Type
}
export namespace Reasoning {
export const Started = EventV2.define({
type: "session.next.reasoning.started",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
reasoningID: Schema.String,
},
})
- export type Started = Schema.Schema.Type
+ export type Started = typeof Started.Type
export const Delta = EventV2.define({
type: "session.next.reasoning.delta",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
reasoningID: Schema.String,
delta: Schema.String,
},
})
- export type Delta = Schema.Schema.Type
+ export type Delta = typeof Delta.Type
export const Ended = EventV2.define({
type: "session.next.reasoning.ended",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
reasoningID: Schema.String,
text: Schema.String,
},
})
- export type Ended = Schema.Schema.Type
+ export type Ended = typeof Ended.Type
}
export namespace Tool {
export namespace Input {
export const Started = EventV2.define({
type: "session.next.tool.input.started",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
name: Schema.String,
},
})
- export type Started = Schema.Schema.Type
+ export type Started = typeof Started.Type
export const Delta = EventV2.define({
type: "session.next.tool.input.delta",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
delta: Schema.String,
},
})
- export type Delta = Schema.Schema.Type
+ export type Delta = typeof Delta.Type
export const Ended = EventV2.define({
type: "session.next.tool.input.ended",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
text: Schema.String,
},
})
- export type Ended = Schema.Schema.Type
+ export type Ended = typeof Ended.Type
}
export const Called = EventV2.define({
type: "session.next.tool.called",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
@@ -257,11 +260,11 @@ export namespace Tool {
}),
},
})
- export type Called = Schema.Schema.Type
+ export type Called = typeof Called.Type
export const Progress = EventV2.define({
type: "session.next.tool.progress",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
@@ -269,11 +272,11 @@ export namespace Tool {
content: Schema.Array(ToolOutput.Content),
},
})
- export type Progress = Schema.Schema.Type
+ export type Progress = typeof Progress.Type
export const Success = EventV2.define({
type: "session.next.tool.success",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
@@ -285,11 +288,11 @@ export namespace Tool {
}),
},
})
- export type Success = Schema.Schema.Type
+ export type Success = typeof Success.Type
export const Failed = EventV2.define({
type: "session.next.tool.failed",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
callID: Schema.String,
@@ -300,7 +303,7 @@ export namespace Tool {
}),
},
})
- export type Failed = Schema.Schema.Type
+ export type Failed = typeof Failed.Type
}
export const RetryError = Schema.Struct({
@@ -313,49 +316,50 @@ export const RetryError = Schema.Struct({
}).annotate({
identifier: "session.next.retry_error",
})
-export type RetryError = Schema.Schema.Type
+export type RetryError = typeof RetryError.Type
export const Retried = EventV2.define({
type: "session.next.retried",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
attempt: Schema.Finite,
error: RetryError,
},
})
-export type Retried = Schema.Schema.Type
+export type Retried = typeof Retried.Type
export namespace Compaction {
export const Started = EventV2.define({
type: "session.next.compaction.started",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
reason: Schema.Union([Schema.Literal("auto"), Schema.Literal("manual")]),
},
})
- export type Started = Schema.Schema.Type
+ export type Started = typeof Started.Type
export const Delta = EventV2.define({
type: "session.next.compaction.delta",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
text: Schema.String,
},
})
+ export type Delta = typeof Delta.Type
export const Ended = EventV2.define({
type: "session.next.compaction.ended",
- aggregate: "sessionID",
+ ...options,
schema: {
...Base,
text: Schema.String,
include: Schema.String.pipe(Schema.optional),
},
})
- export type Ended = Schema.Schema.Type
+ export type Ended = typeof Ended.Type
}
export const All = Schema.Union(
@@ -392,16 +396,7 @@ export const All = Schema.Union(
},
).pipe(Schema.toTaggedUnion("type"))
-// user
-// assistant
-// assistant
-// assistant
-// user
-// compaction marker
-// -> text
-// assistant
-
-export type Event = Schema.Schema.Type
+export type Event = typeof All.Type
export type Type = Event["type"]
export * as SessionEvent from "./session-event"
diff --git a/packages/opencode/src/v2/session-message-updater.ts b/packages/core/src/session-message-updater.ts
similarity index 100%
rename from packages/opencode/src/v2/session-message-updater.ts
rename to packages/core/src/session-message-updater.ts
diff --git a/packages/opencode/src/v2/session-message.ts b/packages/core/src/session-message.ts
similarity index 87%
rename from packages/opencode/src/v2/session-message.ts
rename to packages/core/src/session-message.ts
index fa7c299ae5..73b6dd7da2 100644
--- a/packages/opencode/src/v2/session-message.ts
+++ b/packages/core/src/session-message.ts
@@ -1,10 +1,10 @@
import { Schema } from "effect"
-import { Prompt } from "@opencode-ai/core/session-prompt"
+import { Prompt } from "./session-prompt"
import { SessionEvent } from "./session-event"
import { EventV2 } from "./event"
-import { ToolOutput } from "@opencode-ai/core/tool-output"
-import { V2Schema } from "@opencode-ai/core/v2-schema"
-import { ModelV2 } from "@opencode-ai/core/model"
+import { ToolOutput } from "./tool-output"
+import { V2Schema } from "./v2-schema"
+import { ModelV2 } from "./model"
export const ID = EventV2.ID
export type ID = Schema.Schema.Type
@@ -20,7 +20,7 @@ const Base = {
export class AgentSwitched extends Schema.Class("Session.Message.AgentSwitched")({
...Base,
type: Schema.Literal("agent-switched"),
- agent: SessionEvent.AgentSwitched.fields.data.fields.agent,
+ agent: SessionEvent.AgentSwitched.data.fields.agent,
}) {}
export class ModelSwitched extends Schema.Class("Session.Message.ModelSwitched")({
@@ -43,16 +43,16 @@ export class User extends Schema.Class("Session.Message.User")({
export class Synthetic extends Schema.Class("Session.Message.Synthetic")({
...Base,
- sessionID: SessionEvent.Synthetic.fields.data.fields.sessionID,
- text: SessionEvent.Synthetic.fields.data.fields.text,
+ sessionID: SessionEvent.Synthetic.data.fields.sessionID,
+ text: SessionEvent.Synthetic.data.fields.text,
type: Schema.Literal("synthetic"),
}) {}
export class Shell extends Schema.Class("Session.Message.Shell")({
...Base,
type: Schema.Literal("shell"),
- callID: SessionEvent.Shell.Started.fields.data.fields.callID,
- command: SessionEvent.Shell.Started.fields.data.fields.command,
+ callID: SessionEvent.Shell.Started.data.fields.callID,
+ command: SessionEvent.Shell.Started.data.fields.command,
output: Schema.String,
time: Schema.Struct({
created: V2Schema.DateTimeUtcFromMillis,
@@ -130,7 +130,7 @@ export class Assistant extends Schema.Class("Session.Message.Assistan
...Base,
type: Schema.Literal("assistant"),
agent: Schema.String,
- model: SessionEvent.Step.Started.fields.data.fields.model,
+ model: SessionEvent.Step.Started.data.fields.model,
content: AssistantContent.pipe(Schema.Array),
snapshot: Schema.Struct({
start: Schema.String.pipe(Schema.optional),
@@ -147,7 +147,7 @@ export class Assistant extends Schema.Class("Session.Message.Assistan
write: Schema.Finite,
}),
}).pipe(Schema.optional),
- error: SessionEvent.Step.Failed.fields.data.fields.error.pipe(Schema.optional),
+ error: SessionEvent.Step.Failed.data.fields.error.pipe(Schema.optional),
time: Schema.Struct({
created: V2Schema.DateTimeUtcFromMillis,
completed: V2Schema.DateTimeUtcFromMillis.pipe(Schema.optional),
@@ -156,7 +156,7 @@ export class Assistant extends Schema.Class("Session.Message.Assistan
export class Compaction extends Schema.Class("Session.Message.Compaction")({
type: Schema.Literal("compaction"),
- reason: SessionEvent.Compaction.Started.fields.data.fields.reason,
+ reason: SessionEvent.Compaction.Started.data.fields.reason,
summary: Schema.String,
include: Schema.String.pipe(Schema.optional),
...Base,
diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts
new file mode 100644
index 0000000000..756531e328
--- /dev/null
+++ b/packages/core/src/session.ts
@@ -0,0 +1,13 @@
+export * as Session from "./session"
+
+import { Schema } from "effect"
+import { withStatics } from "./schema"
+import { Identifier } from "./util/identifier"
+
+export const ID = Schema.String.check(Schema.isStartsWith("ses")).pipe(
+ Schema.brand("SessionID"),
+ withStatics((schema) => ({
+ descending: (id?: string) => schema.make(id ?? "ses_" + Identifier.descending()),
+ })),
+)
+export type ID = typeof ID.Type
diff --git a/packages/core/test/v2/catalog.test.ts b/packages/core/test/catalog.test.ts
similarity index 82%
rename from packages/core/test/v2/catalog.test.ts
rename to packages/core/test/catalog.test.ts
index cba3405bce..594f42d1c8 100644
--- a/packages/core/test/v2/catalog.test.ts
+++ b/packages/core/test/catalog.test.ts
@@ -1,12 +1,21 @@
import { describe, expect } from "bun:test"
-import { DateTime, Effect, Layer, Option } from "effect"
+import { DateTime, Effect, Fiber, Layer, Option, Stream } from "effect"
import { Catalog } from "@opencode-ai/core/catalog"
+import { EventV2 } from "@opencode-ai/core/event"
+import { Location } from "@opencode-ai/core/location"
import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { ProviderV2 } from "@opencode-ai/core/provider"
-import { testEffect } from "../lib/effect"
+import { testEffect } from "./lib/effect"
-const it = testEffect(Catalog.layer.pipe(Layer.provideMerge(PluginV2.defaultLayer)))
+const locationLayer = Layer.succeed(Location.Service, Location.Service.of({ directory: "test" }))
+const it = testEffect(
+ Catalog.layer.pipe(
+ Layer.provideMerge(EventV2.defaultLayer),
+ Layer.provideMerge(PluginV2.defaultLayer),
+ Layer.provideMerge(locationLayer),
+ ),
+)
describe("CatalogV2", () => {
it.effect("normalizes provider baseURL into endpoint url", () =>
@@ -67,6 +76,31 @@ describe("CatalogV2", () => {
}),
)
+ it.effect("publishes model updated events", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const events = yield* EventV2.Service
+ const providerID = ProviderV2.ID.make("test")
+ const modelID = ModelV2.ID.make("model")
+ const fiber = yield* events
+ .subscribe(Catalog.Event.ModelUpdated)
+ .pipe(Stream.take(1), Stream.runCollect, Effect.forkScoped)
+
+ yield* Effect.yieldNow
+ yield* catalog.provider.update(providerID, () => {})
+ yield* catalog.model.update(providerID, modelID, (model) => {
+ model.name = "Updated Model"
+ })
+ const event = Array.from(yield* Fiber.join(fiber))[0]
+
+ expect(event?.type).toBe("catalog.model.updated")
+ expect(event?.data.model.providerID).toBe(providerID)
+ expect(event?.data.model.id).toBe(modelID)
+ expect(event?.data.model.name).toBe("Updated Model")
+ expect(event?.location).toEqual({ directory: "test" })
+ }),
+ )
+
it.effect("resolves unknown model endpoint from provider endpoint", () =>
Effect.gen(function* () {
const catalog = yield* Catalog.Service
diff --git a/packages/core/test/event.test.ts b/packages/core/test/event.test.ts
new file mode 100644
index 0000000000..b67b2897a1
--- /dev/null
+++ b/packages/core/test/event.test.ts
@@ -0,0 +1,132 @@
+import { describe, expect } from "bun:test"
+import { Effect, Fiber, Layer, Schema, Stream } from "effect"
+import { EventV2 } from "@opencode-ai/core/event"
+import { Location } from "@opencode-ai/core/location"
+import { testEffect } from "./lib/effect"
+
+const locationLayer = Layer.succeed(
+ Location.Service,
+ Location.Service.of({ directory: "project", workspaceID: "workspace" }),
+)
+const it = testEffect(EventV2.layer.pipe(Layer.provideMerge(locationLayer)))
+const itWithoutLocation = testEffect(EventV2.layer)
+
+const Message = EventV2.define({
+ type: "test.message",
+ schema: {
+ text: Schema.String,
+ },
+})
+
+const GlobalMessage = EventV2.define({
+ type: "test.global",
+ schema: {
+ text: Schema.String,
+ },
+})
+
+const VersionedMessage = EventV2.define({
+ type: "test.versioned",
+ version: 2,
+ schema: {
+ text: Schema.String,
+ },
+})
+
+describe("EventV2", () => {
+ it.effect("publishes events with the current location", () =>
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const fiber = yield* events.subscribe(Message).pipe(Stream.take(1), Stream.runCollect, Effect.forkScoped)
+ yield* Effect.yieldNow
+ const event = yield* events.publish(Message, { text: "hello" })
+ const received = Array.from(yield* Fiber.join(fiber))
+
+ expect(received).toEqual([event])
+ expect(event.type).toBe("test.message")
+ expect(event).not.toHaveProperty("version")
+ expect(event.data).toEqual({ text: "hello" })
+ expect(event.location).toEqual({ directory: "project", workspaceID: "workspace" })
+ }),
+ )
+
+ itWithoutLocation.effect("omits location when no location is available", () =>
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const event = yield* events.publish(GlobalMessage, { text: "hello" })
+
+ expect(event).not.toHaveProperty("location")
+ expect(event.type).toBe("test.global")
+ }),
+ )
+
+ it.effect("publishes definition version", () =>
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const event = yield* events.publish(VersionedMessage, { text: "hello" })
+
+ expect(event.type).toBe("test.versioned")
+ expect(event.version).toBe(2)
+ }),
+ )
+
+ it.effect("stores definitions in the exported registry", () =>
+ Effect.sync(() => {
+ expect(EventV2.registry.get(Message.type)).toBe(Message)
+ }),
+ )
+
+ it.effect("publishes to typed and wildcard subscriptions", () =>
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const typed = yield* events.subscribe(Message).pipe(Stream.take(1), Stream.runCollect, Effect.forkScoped)
+ const wildcard = yield* events.all().pipe(Stream.take(1), Stream.runCollect, Effect.forkScoped)
+ yield* Effect.yieldNow
+ const event = yield* events.publish(Message, { text: "hello" })
+
+ expect(Array.from(yield* Fiber.join(typed))).toEqual([event])
+ expect(Array.from(yield* Fiber.join(wildcard))).toEqual([event])
+ }),
+ )
+
+ it.effect("runs sync handlers inline", () =>
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const received = new Array()
+ const unsubscribe = yield* events.sync((event) =>
+ Effect.sync(() => {
+ received.push(event)
+ }),
+ )
+
+ const event = yield* events.publish(Message, { text: "hello" })
+ yield* unsubscribe
+ yield* events.publish(Message, { text: "after unsubscribe" })
+
+ expect(received).toEqual([event])
+ }),
+ )
+
+ it.effect("runs sync handlers before publishing to streams", () =>
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const received = new Array()
+ const fiber = yield* events.all().pipe(
+ Stream.take(1),
+ Stream.runForEach(() => Effect.sync(() => received.push("stream"))),
+ Effect.forkScoped,
+ )
+ yield* events.sync((event) =>
+ Effect.sync(() => {
+ received.push(event.type)
+ }),
+ )
+
+ yield* Effect.yieldNow
+ yield* events.publish(Message, { text: "hello" })
+ yield* Fiber.join(fiber)
+
+ expect(received).toEqual([Message.type, "stream"])
+ }),
+ )
+})
diff --git a/packages/opencode/test/provider/models.test.ts b/packages/core/test/models.test.ts
similarity index 94%
rename from packages/opencode/test/provider/models.test.ts
rename to packages/core/test/models.test.ts
index c0dbd5caae..0ade327a53 100644
--- a/packages/opencode/test/provider/models.test.ts
+++ b/packages/core/test/models.test.ts
@@ -4,11 +4,10 @@ import { HttpClient, HttpClientResponse } from "effect/unstable/http"
import { AppFileSystem } from "@opencode-ai/core/filesystem"
import { Flag } from "@opencode-ai/core/flag/flag"
import { Global } from "@opencode-ai/core/global"
-import { ModelsDev } from "../../src/provider/models"
-import { it } from "../lib/effect"
+import { ModelsDev } from "@opencode-ai/core/models"
+import { it } from "./lib/effect"
import { rm, writeFile, utimes, mkdir } from "fs/promises"
import path from "path"
-import { RuntimeFlags } from "@/effect/runtime-flags"
// test/preload.ts pins OPENCODE_MODELS_PATH to a fixture so other tests can
// resolve providers without network. These tests need to drive the on-disk
@@ -93,7 +92,6 @@ const buildLayer = (state: Ref.Ref) =>
Layer.fresh(ModelsDev.layer).pipe(
Layer.provide(Layer.succeed(HttpClient.HttpClient, makeMockClient(state))),
Layer.provide(AppFileSystem.defaultLayer),
- Layer.provide(RuntimeFlags.layer({ client: "test-client" })),
)
const writeCache = (data: object, mtimeMs?: number) =>
@@ -138,14 +136,14 @@ describe("ModelsDev Service", () => {
}),
)
- it.live("get() returns {} when disk empty and fetch disabled", () =>
+ it.live("get() returns bundled snapshot when disk empty and fetch disabled", () =>
Effect.gen(function* () {
const state = yield* Ref.make(initialState)
const result = yield* provided(
state,
ModelsDev.Service.use((s) => s.get()),
)
- expect(result).toEqual({})
+ expect(Object.keys(result).length).toBeGreaterThan(0)
const final = yield* Ref.get(state)
expect(final.calls).toEqual([])
}),
@@ -207,7 +205,7 @@ describe("ModelsDev Service", () => {
const final = yield* Ref.get(state)
expect(final.calls.length).toBe(1)
expect(final.calls[0].url).toContain("/api.json")
- expect(final.calls[0].userAgent).toContain("/test-client")
+ expect(final.calls[0].userAgent).toContain("/cli")
}),
)
@@ -257,7 +255,7 @@ describe("ModelsDev Service", () => {
}),
)
expect(result).toEqual(fixture)
- // withTransientReadRetry retries 5xx, so calls may be > 1.
+ // retryTransient retries 5xx, so calls may be > 1.
const final = yield* Ref.get(state)
expect(final.calls.length).toBeGreaterThanOrEqual(1)
}),
diff --git a/packages/core/test/v2/plugin/fixtures/provider-factory.ts b/packages/core/test/plugin/fixtures/provider-factory.ts
similarity index 100%
rename from packages/core/test/v2/plugin/fixtures/provider-factory.ts
rename to packages/core/test/plugin/fixtures/provider-factory.ts
diff --git a/packages/core/test/v2/plugin/provider-alibaba.test.ts b/packages/core/test/plugin/provider-alibaba.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-alibaba.test.ts
rename to packages/core/test/plugin/provider-alibaba.test.ts
diff --git a/packages/core/test/v2/plugin/provider-amazon-bedrock.test.ts b/packages/core/test/plugin/provider-amazon-bedrock.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-amazon-bedrock.test.ts
rename to packages/core/test/plugin/provider-amazon-bedrock.test.ts
diff --git a/packages/core/test/v2/plugin/provider-anthropic.test.ts b/packages/core/test/plugin/provider-anthropic.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-anthropic.test.ts
rename to packages/core/test/plugin/provider-anthropic.test.ts
diff --git a/packages/core/test/v2/plugin/provider-azure-cognitive-services.test.ts b/packages/core/test/plugin/provider-azure-cognitive-services.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-azure-cognitive-services.test.ts
rename to packages/core/test/plugin/provider-azure-cognitive-services.test.ts
diff --git a/packages/core/test/v2/plugin/provider-azure.test.ts b/packages/core/test/plugin/provider-azure.test.ts
similarity index 99%
rename from packages/core/test/v2/plugin/provider-azure.test.ts
rename to packages/core/test/plugin/provider-azure.test.ts
index 12d8363e73..5121b1eec0 100644
--- a/packages/core/test/v2/plugin/provider-azure.test.ts
+++ b/packages/core/test/plugin/provider-azure.test.ts
@@ -4,7 +4,7 @@ import { AuthV2 } from "@opencode-ai/core/auth"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { AuthPlugin } from "@opencode-ai/core/plugin/auth"
import { AzurePlugin } from "@opencode-ai/core/plugin/provider/azure"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { fakeSelectorSdk, it, model, npmLayer, provider, withEnv } from "./provider-helper"
const itWithAuth = testEffect(Layer.mergeAll(PluginV2.defaultLayer, AuthV2.defaultLayer, npmLayer))
diff --git a/packages/core/test/v2/plugin/provider-cerebras.test.ts b/packages/core/test/plugin/provider-cerebras.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-cerebras.test.ts
rename to packages/core/test/plugin/provider-cerebras.test.ts
diff --git a/packages/core/test/v2/plugin/provider-cloudflare-ai-gateway.test.ts b/packages/core/test/plugin/provider-cloudflare-ai-gateway.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-cloudflare-ai-gateway.test.ts
rename to packages/core/test/plugin/provider-cloudflare-ai-gateway.test.ts
diff --git a/packages/core/test/v2/plugin/provider-cloudflare-workers-ai.test.ts b/packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts
similarity index 99%
rename from packages/core/test/v2/plugin/provider-cloudflare-workers-ai.test.ts
rename to packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts
index 3aed2a17b8..10aba171c3 100644
--- a/packages/core/test/v2/plugin/provider-cloudflare-workers-ai.test.ts
+++ b/packages/core/test/plugin/provider-cloudflare-workers-ai.test.ts
@@ -5,7 +5,7 @@ import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { AuthPlugin } from "@opencode-ai/core/plugin/auth"
import { CloudflareWorkersAIPlugin } from "@opencode-ai/core/plugin/provider/cloudflare-workers-ai"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { fakeSelectorSdk, it, model, npmLayer, provider, withEnv } from "./provider-helper"
const itWithAuth = testEffect(Layer.mergeAll(PluginV2.defaultLayer, AuthV2.defaultLayer, npmLayer))
diff --git a/packages/core/test/v2/plugin/provider-cohere.test.ts b/packages/core/test/plugin/provider-cohere.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-cohere.test.ts
rename to packages/core/test/plugin/provider-cohere.test.ts
diff --git a/packages/core/test/v2/plugin/provider-deepinfra.test.ts b/packages/core/test/plugin/provider-deepinfra.test.ts
similarity index 98%
rename from packages/core/test/v2/plugin/provider-deepinfra.test.ts
rename to packages/core/test/plugin/provider-deepinfra.test.ts
index 1195b8c184..9a9cb861ea 100644
--- a/packages/core/test/v2/plugin/provider-deepinfra.test.ts
+++ b/packages/core/test/plugin/provider-deepinfra.test.ts
@@ -3,7 +3,7 @@ import { Effect, Layer } from "effect"
import { AISDK } from "@opencode-ai/core/aisdk"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { DeepInfraPlugin } from "@opencode-ai/core/plugin/provider/deepinfra"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { it, model } from "./provider-helper"
const itAISDK = testEffect(Layer.provideMerge(AISDK.layer, PluginV2.defaultLayer))
diff --git a/packages/core/test/v2/plugin/provider-dynamic.test.ts b/packages/core/test/plugin/provider-dynamic.test.ts
similarity index 99%
rename from packages/core/test/v2/plugin/provider-dynamic.test.ts
rename to packages/core/test/plugin/provider-dynamic.test.ts
index cca331b110..c15568eebd 100644
--- a/packages/core/test/v2/plugin/provider-dynamic.test.ts
+++ b/packages/core/test/plugin/provider-dynamic.test.ts
@@ -9,7 +9,7 @@ import { AISDK } from "@opencode-ai/core/aisdk"
import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { DynamicProviderPlugin } from "@opencode-ai/core/plugin/provider/dynamic"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { fixtureProvider, it, model, npmLayer } from "./provider-helper"
const fixtureProviderPath = fileURLToPath(fixtureProvider)
diff --git a/packages/core/test/v2/plugin/provider-gateway.test.ts b/packages/core/test/plugin/provider-gateway.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-gateway.test.ts
rename to packages/core/test/plugin/provider-gateway.test.ts
diff --git a/packages/core/test/plugin/provider-github-copilot.test.ts b/packages/core/test/plugin/provider-github-copilot.test.ts
index c825f7b8ec..e2bd899ff3 100644
--- a/packages/core/test/plugin/provider-github-copilot.test.ts
+++ b/packages/core/test/plugin/provider-github-copilot.test.ts
@@ -3,7 +3,7 @@ import { Effect } from "effect"
import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { GithubCopilotPlugin } from "@opencode-ai/core/plugin/provider/github-copilot"
-import { fakeSelectorSdk, it, model } from "../v2/plugin/provider-helper"
+import { fakeSelectorSdk, it, model } from "./provider-helper"
describe("GithubCopilotPlugin", () => {
it.effect("creates the bundled Copilot SDK for the GitHub Copilot package", () =>
diff --git a/packages/core/test/v2/plugin/provider-gitlab.test.ts b/packages/core/test/plugin/provider-gitlab.test.ts
similarity index 99%
rename from packages/core/test/v2/plugin/provider-gitlab.test.ts
rename to packages/core/test/plugin/provider-gitlab.test.ts
index 0b71310e0f..56a22649a9 100644
--- a/packages/core/test/v2/plugin/provider-gitlab.test.ts
+++ b/packages/core/test/plugin/provider-gitlab.test.ts
@@ -4,7 +4,7 @@ import { AuthV2 } from "@opencode-ai/core/auth"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { AuthPlugin } from "@opencode-ai/core/plugin/auth"
import { GitLabPlugin } from "@opencode-ai/core/plugin/provider/gitlab"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { it, model, npmLayer, provider, withEnv } from "./provider-helper"
const gitlabSDKOptions: Record[] = []
diff --git a/packages/core/test/v2/plugin/provider-google-vertex-anthropic.test.ts b/packages/core/test/plugin/provider-google-vertex-anthropic.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-google-vertex-anthropic.test.ts
rename to packages/core/test/plugin/provider-google-vertex-anthropic.test.ts
diff --git a/packages/core/test/v2/plugin/provider-google-vertex.test.ts b/packages/core/test/plugin/provider-google-vertex.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-google-vertex.test.ts
rename to packages/core/test/plugin/provider-google-vertex.test.ts
diff --git a/packages/core/test/v2/plugin/provider-google.test.ts b/packages/core/test/plugin/provider-google.test.ts
similarity index 98%
rename from packages/core/test/v2/plugin/provider-google.test.ts
rename to packages/core/test/plugin/provider-google.test.ts
index ee33b980b8..fdb7bf75ee 100644
--- a/packages/core/test/v2/plugin/provider-google.test.ts
+++ b/packages/core/test/plugin/provider-google.test.ts
@@ -4,7 +4,7 @@ import { AISDK } from "@opencode-ai/core/aisdk"
import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { GooglePlugin } from "@opencode-ai/core/plugin/provider/google"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { it, model } from "./provider-helper"
const itWithAISDK = testEffect(AISDK.layer.pipe(Layer.provideMerge(PluginV2.defaultLayer)))
diff --git a/packages/core/test/v2/plugin/provider-groq.test.ts b/packages/core/test/plugin/provider-groq.test.ts
similarity index 98%
rename from packages/core/test/v2/plugin/provider-groq.test.ts
rename to packages/core/test/plugin/provider-groq.test.ts
index 14c10b6513..579d70da59 100644
--- a/packages/core/test/v2/plugin/provider-groq.test.ts
+++ b/packages/core/test/plugin/provider-groq.test.ts
@@ -6,7 +6,7 @@ import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { GroqPlugin } from "@opencode-ai/core/plugin/provider/groq"
import { it, model } from "./provider-helper"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
const aisdkIt = testEffect(AISDK.layer.pipe(Layer.provideMerge(PluginV2.defaultLayer)))
diff --git a/packages/core/test/v2/plugin/provider-helper.ts b/packages/core/test/plugin/provider-helper.ts
similarity index 98%
rename from packages/core/test/v2/plugin/provider-helper.ts
rename to packages/core/test/plugin/provider-helper.ts
index 84a3044bfb..0d67075ac8 100644
--- a/packages/core/test/v2/plugin/provider-helper.ts
+++ b/packages/core/test/plugin/provider-helper.ts
@@ -5,7 +5,7 @@ import { Effect, Layer, Option } from "effect"
import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { ProviderV2 } from "@opencode-ai/core/provider"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
export const fixtureProvider = new URL("./fixtures/provider-factory.ts", import.meta.url).href
diff --git a/packages/core/test/v2/plugin/provider-kilo.test.ts b/packages/core/test/plugin/provider-kilo.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-kilo.test.ts
rename to packages/core/test/plugin/provider-kilo.test.ts
diff --git a/packages/core/test/v2/plugin/provider-llmgateway.test.ts b/packages/core/test/plugin/provider-llmgateway.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-llmgateway.test.ts
rename to packages/core/test/plugin/provider-llmgateway.test.ts
diff --git a/packages/core/test/v2/plugin/provider-mistral.test.ts b/packages/core/test/plugin/provider-mistral.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-mistral.test.ts
rename to packages/core/test/plugin/provider-mistral.test.ts
diff --git a/packages/core/test/plugin/provider-nvidia.test.ts b/packages/core/test/plugin/provider-nvidia.test.ts
new file mode 100644
index 0000000000..26e7db0bfb
--- /dev/null
+++ b/packages/core/test/plugin/provider-nvidia.test.ts
@@ -0,0 +1,93 @@
+import { describe, expect } from "bun:test"
+import { Effect } from "effect"
+import { PluginV2 } from "@opencode-ai/core/plugin"
+import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
+import { NvidiaPlugin } from "@opencode-ai/core/plugin/provider/nvidia"
+import { expectPluginRegistered, it, provider } from "./provider-helper"
+
+describe("NvidiaPlugin", () => {
+ it.effect("is registered so legacy referer headers can be applied", () =>
+ Effect.sync(() =>
+ expectPluginRegistered(
+ ProviderPlugins.map((item) => item.id),
+ "nvidia",
+ ),
+ ),
+ )
+
+ it.effect("applies NVIDIA tracking headers only to nvidia", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(NvidiaPlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("nvidia", {
+ options: { headers: { Existing: "value" }, body: {}, aisdk: { provider: {}, request: {} } },
+ }),
+ cancel: false,
+ },
+ )
+ const ignored = yield* plugin.trigger("provider.update", {}, { provider: provider("openrouter"), cancel: false })
+ expect(result.provider.options.headers).toEqual({
+ Existing: "value",
+ "HTTP-Referer": "https://opencode.ai/",
+ "X-Title": "opencode",
+ "X-BILLING-INVOKE-ORIGIN": "OpenCode",
+ })
+ expect(ignored.provider.options.headers).toEqual({})
+ }),
+ )
+
+ it.effect("adds billing origin for custom NVIDIA endpoints", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(NvidiaPlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("nvidia", {
+ endpoint: { type: "aisdk", package: "test-provider", url: "http://localhost:8000/v1" },
+ options: { headers: {}, body: {}, aisdk: { provider: {}, request: {} } },
+ }),
+ cancel: false,
+ },
+ )
+
+ expect(result.provider.options.headers).toEqual({
+ "HTTP-Referer": "https://opencode.ai/",
+ "X-Title": "opencode",
+ "X-BILLING-INVOKE-ORIGIN": "OpenCode",
+ })
+ }),
+ )
+
+ it.effect("preserves an explicit NVIDIA billing origin header", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(NvidiaPlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("nvidia", {
+ options: {
+ headers: { "X-BILLING-INVOKE-ORIGIN": "CustomOrigin" },
+ body: {},
+ aisdk: { provider: { baseURL: "https://integrate.api.nvidia.com/v1" }, request: {} },
+ },
+ }),
+ cancel: false,
+ },
+ )
+
+ expect(result.provider.options.headers).toEqual({
+ "HTTP-Referer": "https://opencode.ai/",
+ "X-Title": "opencode",
+ "X-BILLING-INVOKE-ORIGIN": "CustomOrigin",
+ })
+ }),
+ )
+})
diff --git a/packages/core/test/v2/plugin/provider-openai-compatible.test.ts b/packages/core/test/plugin/provider-openai-compatible.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-openai-compatible.test.ts
rename to packages/core/test/plugin/provider-openai-compatible.test.ts
diff --git a/packages/core/test/v2/plugin/provider-openai.test.ts b/packages/core/test/plugin/provider-openai.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-openai.test.ts
rename to packages/core/test/plugin/provider-openai.test.ts
diff --git a/packages/core/test/v2/plugin/provider-opencode.test.ts b/packages/core/test/plugin/provider-opencode.test.ts
similarity index 96%
rename from packages/core/test/v2/plugin/provider-opencode.test.ts
rename to packages/core/test/plugin/provider-opencode.test.ts
index f080776d40..ed82686a21 100644
--- a/packages/core/test/v2/plugin/provider-opencode.test.ts
+++ b/packages/core/test/plugin/provider-opencode.test.ts
@@ -1,6 +1,7 @@
import { describe, expect } from "bun:test"
-import { DateTime, Effect, Option } from "effect"
+import { DateTime, Effect, Layer, Option } from "effect"
import { Catalog } from "@opencode-ai/core/catalog"
+import { Location } from "@opencode-ai/core/location"
import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { OpencodePlugin } from "@opencode-ai/core/plugin/provider/opencode"
@@ -8,6 +9,7 @@ import { ProviderV2 } from "@opencode-ai/core/provider"
import { it, model, provider, withEnv } from "./provider-helper"
const cost = (input: number, output = 0) => [{ input, output, cache: { read: 0, write: 0 } }]
+const locationLayer = Layer.succeed(Location.Service, Location.Service.of({ directory: "test" }))
describe("OpencodePlugin", () => {
it.effect("uses a public key and cancels paid models without credentials", () =>
@@ -190,6 +192,6 @@ describe("OpencodePlugin", () => {
const selected = yield* catalog.model.small(providerID)
expect(Option.getOrUndefined(selected)?.id).toBe(ModelV2.ID.make("gpt-5-nano"))
- }).pipe(Effect.provide(Catalog.defaultLayer)),
+ }).pipe(Effect.provide(Catalog.defaultLayer.pipe(Layer.provide(locationLayer)))),
)
})
diff --git a/packages/core/test/v2/plugin/provider-openrouter.test.ts b/packages/core/test/plugin/provider-openrouter.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-openrouter.test.ts
rename to packages/core/test/plugin/provider-openrouter.test.ts
diff --git a/packages/core/test/v2/plugin/provider-perplexity.test.ts b/packages/core/test/plugin/provider-perplexity.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-perplexity.test.ts
rename to packages/core/test/plugin/provider-perplexity.test.ts
diff --git a/packages/core/test/v2/plugin/provider-sap-ai-core.test.ts b/packages/core/test/plugin/provider-sap-ai-core.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-sap-ai-core.test.ts
rename to packages/core/test/plugin/provider-sap-ai-core.test.ts
diff --git a/packages/core/test/v2/plugin/provider-togetherai.test.ts b/packages/core/test/plugin/provider-togetherai.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-togetherai.test.ts
rename to packages/core/test/plugin/provider-togetherai.test.ts
diff --git a/packages/core/test/v2/plugin/provider-venice.test.ts b/packages/core/test/plugin/provider-venice.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-venice.test.ts
rename to packages/core/test/plugin/provider-venice.test.ts
diff --git a/packages/core/test/v2/plugin/provider-vercel.test.ts b/packages/core/test/plugin/provider-vercel.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-vercel.test.ts
rename to packages/core/test/plugin/provider-vercel.test.ts
diff --git a/packages/core/test/v2/plugin/provider-xai.test.ts b/packages/core/test/plugin/provider-xai.test.ts
similarity index 98%
rename from packages/core/test/v2/plugin/provider-xai.test.ts
rename to packages/core/test/plugin/provider-xai.test.ts
index bb2828ff4d..63af32dae7 100644
--- a/packages/core/test/v2/plugin/provider-xai.test.ts
+++ b/packages/core/test/plugin/provider-xai.test.ts
@@ -4,7 +4,7 @@ import { ModelV2 } from "@opencode-ai/core/model"
import { PluginV2 } from "@opencode-ai/core/plugin"
import { XAIPlugin } from "@opencode-ai/core/plugin/provider/xai"
import { ProviderV2 } from "@opencode-ai/core/provider"
-import { testEffect } from "../../lib/effect"
+import { testEffect } from "../lib/effect"
import { fakeSelectorSdk } from "./provider-helper"
const it = testEffect(PluginV2.defaultLayer)
diff --git a/packages/core/test/v2/plugin/provider-zenmux.test.ts b/packages/core/test/plugin/provider-zenmux.test.ts
similarity index 100%
rename from packages/core/test/v2/plugin/provider-zenmux.test.ts
rename to packages/core/test/plugin/provider-zenmux.test.ts
diff --git a/packages/core/test/process/process.test.ts b/packages/core/test/process/process.test.ts
index 5cc73e6169..f6a52b7a68 100644
--- a/packages/core/test/process/process.test.ts
+++ b/packages/core/test/process/process.test.ts
@@ -20,7 +20,8 @@ describe("AppProcess", () => {
const result = yield* svc.run(cmd("-e", "process.stdout.write('hi\\n')"))
expect(result.exitCode).toBe(0)
expect(result.stdout.toString("utf8")).toBe("hi\n")
- expect(result.truncated).toBe(false)
+ expect(result.stdoutTruncated).toBe(false)
+ expect(result.stderrTruncated).toBe(false)
}),
)
@@ -84,17 +85,31 @@ describe("AppProcess", () => {
)
it.effect(
- "truncates output when maxOutputBytes is set",
+ "truncates stdout when maxOutputBytes is set",
Effect.gen(function* () {
const svc = yield* AppProcess.Service
const result = yield* svc.run(cmd("-e", "process.stdout.write('0123456789')"), { maxOutputBytes: 5 })
expect(result.exitCode).toBe(0)
- expect(result.truncated).toBe(true)
+ expect(result.stdoutTruncated).toBe(true)
+ expect(result.stderrTruncated).toBe(false)
expect(result.stdout.length).toBe(5)
expect(result.stdout.toString("utf8")).toBe("01234")
}),
)
+ it.effect(
+ "truncates stderr when maxErrorBytes is set",
+ Effect.gen(function* () {
+ const svc = yield* AppProcess.Service
+ const result = yield* svc.run(cmd("-e", "process.stderr.write('0123456789')"), { maxErrorBytes: 5 })
+ expect(result.exitCode).toBe(0)
+ expect(result.stdoutTruncated).toBe(false)
+ expect(result.stderrTruncated).toBe(true)
+ expect(result.stderr.length).toBe(5)
+ expect(result.stderr.toString("utf8")).toBe("01234")
+ }),
+ )
+
it.effect(
"result includes command description",
Effect.gen(function* () {
diff --git a/packages/core/test/v2/plugin/provider-nvidia.test.ts b/packages/core/test/v2/plugin/provider-nvidia.test.ts
deleted file mode 100644
index 0e06356cd5..0000000000
--- a/packages/core/test/v2/plugin/provider-nvidia.test.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { describe, expect } from "bun:test"
-import { Effect } from "effect"
-import { PluginV2 } from "@opencode-ai/core/plugin"
-import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
-import { NvidiaPlugin } from "@opencode-ai/core/plugin/provider/nvidia"
-import { expectPluginRegistered, it, provider } from "./provider-helper"
-
-describe("NvidiaPlugin", () => {
- it.effect("is registered so legacy referer headers can be applied", () =>
- Effect.sync(() =>
- expectPluginRegistered(
- ProviderPlugins.map((item) => item.id),
- "nvidia",
- ),
- ),
- )
-
- it.effect("applies legacy referer headers only to nvidia", () =>
- Effect.gen(function* () {
- const plugin = yield* PluginV2.Service
- yield* plugin.add(NvidiaPlugin)
- const result = yield* plugin.trigger(
- "provider.update",
- {},
- {
- provider: provider("nvidia", {
- options: { headers: { Existing: "value" }, body: {}, aisdk: { provider: {}, request: {} } },
- }),
- cancel: false,
- },
- )
- const ignored = yield* plugin.trigger("provider.update", {}, { provider: provider("openrouter"), cancel: false })
- expect(result.provider.options.headers).toEqual({
- Existing: "value",
- "HTTP-Referer": "https://opencode.ai/",
- "X-Title": "opencode",
- })
- expect(ignored.provider.options.headers).toEqual({})
- }),
- )
-})
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
index 0dfcd4544b..87788a8345 100644
--- a/packages/desktop/package.json
+++ b/packages/desktop/package.json
@@ -1,7 +1,7 @@
{
"name": "@opencode-ai/desktop",
"private": true,
- "version": "1.14.48",
+ "version": "1.14.51",
"type": "module",
"license": "MIT",
"homepage": "https://opencode.ai",
diff --git a/packages/desktop/src/main/apps.ts b/packages/desktop/src/main/apps.ts
index bf25417b83..f9c0a603e6 100644
--- a/packages/desktop/src/main/apps.ts
+++ b/packages/desktop/src/main/apps.ts
@@ -58,7 +58,7 @@ async function checkMacosApp(appName: string) {
async function resolveWindowsAppPath(appName: string): Promise {
let output: string
try {
- output = execFilePromise("where", [appName]).toString()
+ output = await execFilePromise("where", [appName]).then((r) => r.stdout.toString())
} catch {
return null
}
diff --git a/packages/desktop/src/main/env.d.ts b/packages/desktop/src/main/env.d.ts
index eee21e48cb..1d03be5055 100644
--- a/packages/desktop/src/main/env.d.ts
+++ b/packages/desktop/src/main/env.d.ts
@@ -19,7 +19,7 @@ declare module "virtual:opencode-server" {
export const init: typeof import("../../../opencode/dist/types/src/node").Log.init
}
export namespace Database {
- export const Path: typeof import("../../../opencode/dist/types/src/node").Database.Path
+ export const getPath: typeof import("../../../opencode/dist/types/src/node").Database.getPath
export const Client: typeof import("../../../opencode/dist/types/src/node").Database.Client
}
export namespace JsonMigration {
diff --git a/packages/desktop/src/main/windows.ts b/packages/desktop/src/main/windows.ts
index 41abfc784d..3150a5237b 100644
--- a/packages/desktop/src/main/windows.ts
+++ b/packages/desktop/src/main/windows.ts
@@ -84,6 +84,7 @@ export function createMainWindow() {
width: state.width,
height: state.height,
show: false,
+ autoHideMenuBar: true,
title: "OpenCode",
icon: iconPath(),
backgroundColor,
@@ -142,6 +143,7 @@ export function createLoadingWindow() {
resizable: false,
center: true,
show: true,
+ autoHideMenuBar: true,
icon: iconPath(),
backgroundColor,
...(process.platform === "darwin" ? { titleBarStyle: "hidden" as const } : {}),
diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json
index 88e5406cbf..6ff718ee2d 100644
--- a/packages/enterprise/package.json
+++ b/packages/enterprise/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/enterprise",
- "version": "1.14.48",
+ "version": "1.14.51",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/extensions/zed/extension.toml b/packages/extensions/zed/extension.toml
index 9b77cf8b9f..2fdd111f86 100644
--- a/packages/extensions/zed/extension.toml
+++ b/packages/extensions/zed/extension.toml
@@ -1,7 +1,7 @@
id = "opencode"
name = "OpenCode"
description = "The open source coding agent."
-version = "1.14.48"
+version = "1.14.51"
schema_version = 1
authors = ["Anomaly"]
repository = "https://github.com/anomalyco/opencode"
@@ -11,26 +11,26 @@ name = "OpenCode"
icon = "./icons/opencode.svg"
[agent_servers.opencode.targets.darwin-aarch64]
-archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.48/opencode-darwin-arm64.zip"
+archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.51/opencode-darwin-arm64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.darwin-x86_64]
-archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.48/opencode-darwin-x64.zip"
+archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.51/opencode-darwin-x64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.linux-aarch64]
-archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.48/opencode-linux-arm64.tar.gz"
+archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.51/opencode-linux-arm64.tar.gz"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.linux-x86_64]
-archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.48/opencode-linux-x64.tar.gz"
+archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.51/opencode-linux-x64.tar.gz"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.windows-x86_64]
-archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.48/opencode-windows-x64.zip"
+archive = "https://github.com/anomalyco/opencode/releases/download/v1.14.51/opencode-windows-x64.zip"
cmd = "./opencode.exe"
args = ["acp"]
diff --git a/packages/function/package.json b/packages/function/package.json
index b644ca7df5..930ac534cf 100644
--- a/packages/function/package.json
+++ b/packages/function/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/function",
- "version": "1.14.48",
+ "version": "1.14.51",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
diff --git a/packages/http-recorder/README.md b/packages/http-recorder/README.md
index 5920c9670a..f527dd0cca 100644
--- a/packages/http-recorder/README.md
+++ b/packages/http-recorder/README.md
@@ -166,11 +166,11 @@ import { Effect } from "effect"
const audit = Effect.gen(function* () {
const cassettes = yield* HttpRecorder.Cassette.Service
- const entries = yield* cassettes.list()
- const issues = yield* Effect.forEach(entries, (entry) =>
+ const names = yield* cassettes.list()
+ const issues = yield* Effect.forEach(names, (name) =>
cassettes
- .read(entry.name)
- .pipe(Effect.map((interactions) => ({ name: entry.name, findings: HttpRecorder.secretFindings(interactions) }))),
+ .read(name)
+ .pipe(Effect.map((interactions) => ({ name, findings: HttpRecorder.secretFindings(interactions) }))),
)
return issues.filter((i) => i.findings.length > 0)
})
@@ -196,14 +196,13 @@ type RecordReplayOptions = {
## Layout
-| File | Purpose |
-| -------------- | -------------------------------------------------------------------------------- |
-| `effect.ts` | `cassetteLayer` / `recordingLayer` — the `HttpClient` adapter. |
-| `websocket.ts` | `makeWebSocketExecutor` — WebSocket record/replay. |
-| `cassette.ts` | `Cassette.Service` — reads/writes cassette files, accumulates state. |
-| `recorder.ts` | Shared transport plumbing: `UnsafeCassetteError`, `appendOrFail`, `ReplayState`. |
-| `redactor.ts` | Composable `Redactor` — headers, url, body redaction. |
-| `redaction.ts` | Lower-level header/URL primitives + secret pattern detection. |
-| `schema.ts` | Effect Schema definitions for the cassette JSON format. |
-| `storage.ts` | Path resolution, JSON encode/decode, sync existence check. |
-| `matching.ts` | Request matcher, canonicalization, sequential cursor, mismatch diagnostics. |
+| File | Purpose |
+| -------------- | --------------------------------------------------------------------------- |
+| `effect.ts` | `cassetteLayer` / `recordingLayer` — the `HttpClient` adapter. |
+| `websocket.ts` | `makeWebSocketExecutor` — WebSocket record/replay. |
+| `cassette.ts` | `Cassette.Service` — `fileSystem` / `memory` adapters, error types. |
+| `recorder.ts` | Shared transport plumbing: `resolveAutoMode`, `ReplayState`. |
+| `redactor.ts` | Composable `Redactor` — headers, url, body redaction. |
+| `redaction.ts` | Lower-level header/URL primitives + secret pattern detection. |
+| `schema.ts` | Effect Schema definitions for the cassette JSON format. |
+| `matching.ts` | Request matcher, canonicalization, sequential cursor, mismatch diagnostics. |
diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json
index 18ea8b1759..ef5ae3ad30 100644
--- a/packages/http-recorder/package.json
+++ b/packages/http-recorder/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.14.48",
+ "version": "1.14.51",
"name": "@opencode-ai/http-recorder",
"type": "module",
"license": "MIT",
diff --git a/packages/http-recorder/src/cassette.ts b/packages/http-recorder/src/cassette.ts
index 3897f0222c..331f3d4b60 100644
--- a/packages/http-recorder/src/cassette.ts
+++ b/packages/http-recorder/src/cassette.ts
@@ -1,7 +1,7 @@
import { Context, Effect, FileSystem, Layer, Schema } from "effect"
import * as fs from "node:fs"
import * as path from "node:path"
-import { secretFindings, type SecretFinding } from "./redaction"
+import { secretFindings, SecretFindingSchema, type SecretFinding } from "./redaction"
import { decodeCassette, encodeCassette, type Cassette, type CassetteMetadata, type Interaction } from "./schema"
const DEFAULT_RECORDINGS_DIR = path.resolve(process.cwd(), "test", "fixtures", "recordings")
@@ -14,13 +14,24 @@ export class CassetteNotFoundError extends Schema.TaggedErrorClass
+export class UnsafeCassetteError extends Schema.TaggedErrorClass()("UnsafeCassetteError", {
+ cassetteName: Schema.String,
+ findings: Schema.Array(SecretFindingSchema),
+}) {
+ override get message() {
+ return `Refusing to write cassette "${this.cassetteName}" because it contains possible secrets: ${this.findings
+ .map((finding) => `${finding.path} (${finding.reason})`)
+ .join(", ")}`
+ }
}
export interface Interface {
readonly read: (name: string) => Effect.Effect, CassetteNotFoundError>
- readonly append: (name: string, interaction: Interaction, metadata?: CassetteMetadata) => Effect.Effect
+ readonly append: (
+ name: string,
+ interaction: Interaction,
+ metadata?: CassetteMetadata,
+ ) => Effect.Effect
readonly exists: (name: string) => Effect.Effect
readonly list: () => Effect.Effect>
}
@@ -44,6 +55,9 @@ const formatCassette = (cassette: Cassette) => `${JSON.stringify(encodeCassette(
const parseCassette = (raw: string) => decodeCassette(JSON.parse(raw))
+const failIfUnsafe = (name: string, findings: ReadonlyArray) =>
+ findings.length === 0 ? Effect.void : Effect.fail(new UnsafeCassetteError({ cassetteName: name, findings }))
+
export const fileSystem = (
options: { readonly directory?: string } = {},
): Layer.Layer =>
@@ -92,11 +106,9 @@ export const fileSystem = (
entry.findings.push(...secretFindings(interaction))
const cassette = buildCassette(name, entry.interactions, metadata)
const findings = [...entry.findings, ...secretFindings(cassette.metadata ?? {})]
- if (findings.length === 0) {
- yield* ensureDirectory(name)
- yield* fs.writeFileString(cassettePath(name), formatCassette(cassette)).pipe(Effect.orDie)
- }
- return { findings }
+ yield* failIfUnsafe(name, findings)
+ yield* ensureDirectory(name)
+ yield* fs.writeFileString(cassettePath(name), formatCassette(cassette)).pipe(Effect.orDie)
}),
exists: (name) =>
fs.access(cassettePath(name)).pipe(
@@ -133,17 +145,17 @@ export const memory = (initial: Record> = {})
stored.has(name)
? Effect.succeed(stored.get(name) ?? [])
: Effect.fail(new CassetteNotFoundError({ cassetteName: name })),
- append: (name, interaction, metadata) =>
- Effect.sync(() => {
- const existing = stored.get(name)
- if (existing) existing.push(interaction)
- else stored.set(name, [interaction])
- const findings = accumulatedFindings.get(name)
- if (findings) findings.push(...secretFindings(interaction))
- else accumulatedFindings.set(name, [...secretFindings(interaction)])
- if (metadata) accumulatedFindings.get(name)!.push(...secretFindings({ name, ...metadata }))
- return { findings: accumulatedFindings.get(name) ?? [] }
- }),
+ append: (name, interaction, metadata) => {
+ const existing = stored.get(name)
+ if (existing) existing.push(interaction)
+ else stored.set(name, [interaction])
+ const existingFindings = accumulatedFindings.get(name)
+ const findings = existingFindings ?? []
+ if (!existingFindings) accumulatedFindings.set(name, findings)
+ findings.push(...secretFindings(interaction))
+ if (metadata) findings.push(...secretFindings({ name, ...metadata }))
+ return failIfUnsafe(name, findings)
+ },
exists: (name) => Effect.sync(() => stored.has(name)),
list: () => Effect.sync(() => Array.from(stored.keys()).toSorted()),
})
diff --git a/packages/http-recorder/src/effect.ts b/packages/http-recorder/src/effect.ts
index 61193a013c..e9cb60cc2e 100644
--- a/packages/http-recorder/src/effect.ts
+++ b/packages/http-recorder/src/effect.ts
@@ -12,7 +12,7 @@ import {
} from "effect/unstable/http"
import * as CassetteService from "./cassette"
import { defaultMatcher, selectSequential, type RequestMatcher } from "./matching"
-import { appendOrFail, makeReplayState, resolveAutoMode } from "./recorder"
+import { makeReplayState, resolveAutoMode } from "./recorder"
import { defaults, type Redactor } from "./redactor"
import { redactUrl } from "./redaction"
import { httpInteractions, type CassetteMetadata, type HttpInteraction, type ResponseSnapshot } from "./schema"
@@ -100,9 +100,11 @@ export const recordingLayer = (
...captured,
}),
}
- yield* appendOrFail(cassetteService, name, interaction, options.metadata).pipe(
- Effect.catchTag("UnsafeCassetteError", (error) => Effect.fail(transportError(request, error.message))),
- )
+ yield* cassetteService
+ .append(name, interaction, options.metadata)
+ .pipe(
+ Effect.catchTag("UnsafeCassetteError", (error) => Effect.fail(transportError(request, error.message))),
+ )
return HttpClientResponse.fromWeb(
request,
new Response(decodeResponseBody(interaction.response), interaction.response),
diff --git a/packages/http-recorder/src/index.ts b/packages/http-recorder/src/index.ts
index 4b47e4513d..d05098996e 100644
--- a/packages/http-recorder/src/index.ts
+++ b/packages/http-recorder/src/index.ts
@@ -7,10 +7,9 @@ export type {
WebSocketFrame,
WebSocketInteraction,
} from "./schema"
-export { CassetteNotFoundError, hasCassetteSync } from "./cassette"
+export { CassetteNotFoundError, hasCassetteSync, UnsafeCassetteError } from "./cassette"
export { defaultMatcher, type RequestMatcher } from "./matching"
export { redactHeaders, redactUrl, secretFindings, type SecretFinding } from "./redaction"
-export { UnsafeCassetteError } from "./recorder"
export { cassetteLayer, recordingLayer, type RecordReplayMode, type RecordReplayOptions } from "./effect"
export {
makeWebSocketExecutor,
diff --git a/packages/http-recorder/src/matching.ts b/packages/http-recorder/src/matching.ts
index ab647ab37a..1dced17d07 100644
--- a/packages/http-recorder/src/matching.ts
+++ b/packages/http-recorder/src/matching.ts
@@ -36,7 +36,7 @@ export const canonicalSnapshot = (snapshot: RequestSnapshot): string =>
export const defaultMatcher: RequestMatcher = (incoming, recorded) =>
canonicalSnapshot(incoming) === canonicalSnapshot(recorded)
-const safeText = (value: unknown) => {
+export const safeText = (value: unknown) => {
if (value === undefined) return "undefined"
if (secretFindings(value).length > 0) return JSON.stringify(REDACTED)
const text = JSON.stringify(value)
diff --git a/packages/http-recorder/src/recorder.ts b/packages/http-recorder/src/recorder.ts
index 460b427c2a..0a13282c2d 100644
--- a/packages/http-recorder/src/recorder.ts
+++ b/packages/http-recorder/src/recorder.ts
@@ -1,47 +1,22 @@
-import { Effect, Ref, Schema, Scope } from "effect"
+import { Effect, Ref, Scope } from "effect"
import type * as CassetteService from "./cassette"
import type { CassetteNotFoundError } from "./cassette"
-import { SecretFindingSchema } from "./redaction"
-import type { CassetteMetadata, Interaction } from "./schema"
-
-export class UnsafeCassetteError extends Schema.TaggedErrorClass()("UnsafeCassetteError", {
- cassetteName: Schema.String,
- findings: Schema.Array(SecretFindingSchema),
-}) {
- override get message() {
- return `Refusing to write cassette "${this.cassetteName}" because it contains possible secrets: ${this.findings
- .map((finding) => `${finding.path} (${finding.reason})`)
- .join(", ")}`
- }
-}
-
-export type ResolvedMode = "record" | "replay" | "passthrough"
+import type { Interaction } from "./schema"
const isCI = () => {
const value = process.env.CI
return value !== undefined && value !== "" && value !== "false" && value !== "0"
}
-export const resolveAutoMode = (cassette: CassetteService.Interface, name: string): Effect.Effect =>
+export const resolveAutoMode = (
+ cassette: CassetteService.Interface,
+ name: string,
+): Effect.Effect<"record" | "replay" | "passthrough"> =>
Effect.gen(function* () {
if (isCI()) return "replay"
return (yield* cassette.exists(name)) ? "replay" : "record"
})
-export const appendOrFail = (
- cassette: CassetteService.Interface,
- name: string,
- interaction: Interaction,
- metadata: CassetteMetadata | undefined,
-): Effect.Effect =>
- cassette
- .append(name, interaction, metadata)
- .pipe(
- Effect.flatMap(({ findings }) =>
- findings.length === 0 ? Effect.void : Effect.fail(new UnsafeCassetteError({ cassetteName: name, findings })),
- ),
- )
-
export interface ReplayState {
readonly load: Effect.Effect, CassetteNotFoundError>
readonly cursor: Effect.Effect
diff --git a/packages/http-recorder/src/redaction.ts b/packages/http-recorder/src/redaction.ts
index b6aa8b3b87..9d89fff2f5 100644
--- a/packages/http-recorder/src/redaction.ts
+++ b/packages/http-recorder/src/redaction.ts
@@ -1,3 +1,5 @@
+import { Schema } from "effect"
+
export const REDACTED = "[REDACTED]"
const DEFAULT_REDACT_HEADERS = [
@@ -95,8 +97,6 @@ export const redactHeaders = (
)
}
-import { Schema } from "effect"
-
export const SecretFindingSchema = Schema.Struct({
path: Schema.String,
reason: Schema.String,
diff --git a/packages/http-recorder/src/websocket.ts b/packages/http-recorder/src/websocket.ts
index f7529b4888..2cccc6749c 100644
--- a/packages/http-recorder/src/websocket.ts
+++ b/packages/http-recorder/src/websocket.ts
@@ -1,9 +1,10 @@
import { Effect, Option, Ref, Scope, Stream } from "effect"
import type { Headers } from "effect/unstable/http"
import * as CassetteService from "./cassette"
-import { canonicalizeJson, decodeJson } from "./matching"
-import { appendOrFail, makeReplayState, resolveAutoMode } from "./recorder"
+import { canonicalizeJson, decodeJson, safeText } from "./matching"
+import { makeReplayState, resolveAutoMode } from "./recorder"
import type { RecordReplayMode } from "./effect"
+import { redactUrl } from "./redaction"
import { defaults, type Redactor } from "./redactor"
import { webSocketInteractions, type CassetteMetadata, type WebSocketFrame } from "./schema"
@@ -53,7 +54,7 @@ const decodeFrameText = (frame: WebSocketFrame) =>
const assertEqual = (message: string, actual: unknown, expected: unknown) =>
Effect.sync(() => {
if (JSON.stringify(actual) === JSON.stringify(expected)) return
- throw new Error(`${message}: expected ${JSON.stringify(expected)}, received ${JSON.stringify(actual)}`)
+ throw new Error(`${message}: expected ${safeText(expected)}, received ${safeText(actual)}`)
})
const jsonOrText = (value: string) => Option.match(decodeJson(value), { onNone: () => value, onSome: canonicalizeJson })
@@ -61,7 +62,7 @@ const jsonOrText = (value: string) => Option.match(decodeJson(value), { onNone:
const compareClientMessage = (actual: string, expected: WebSocketFrame | undefined, index: number, asJson: boolean) => {
if (!expected)
return Effect.sync(() => {
- throw new Error(`Unexpected WebSocket client frame ${index + 1}: ${actual}`)
+ throw new Error(`Unexpected WebSocket client frame ${index + 1}: ${safeText(actual)}`)
})
const expectedText = decodeFrameText(expected)
if (!asJson) return assertEqual(`WebSocket client frame ${index + 1}`, actual, expectedText)
@@ -98,12 +99,13 @@ export const makeWebSocketExecutor = (
const closeOnce = Effect.gen(function* () {
if (yield* Ref.getAndSet(closed, true)) return
yield* connection.close
- yield* appendOrFail(
- options.cassette,
- options.name,
- { transport: "websocket", open: openSnapshot(request), client, server },
- options.metadata,
- ).pipe(Effect.orDie)
+ yield* options.cassette
+ .append(
+ options.name,
+ { transport: "websocket", open: openSnapshot(request), client, server },
+ options.metadata,
+ )
+ .pipe(Effect.orDie)
})
return {
sendText: (message) =>
@@ -111,10 +113,7 @@ export const makeWebSocketExecutor = (
.sendText(message)
.pipe(Effect.tap(() => Effect.sync(() => client.push(encodeFrame(message))))),
messages: connection.messages.pipe(
- Stream.map((message) => {
- server.push(encodeFrame(message))
- return message
- }),
+ Stream.tap((message) => Effect.sync(() => server.push(encodeFrame(message)))),
),
close: closeOnce,
}
@@ -130,20 +129,22 @@ export const makeWebSocketExecutor = (
const interactions = yield* replay.load.pipe(Effect.orDie)
const index = yield* replay.cursor
const interaction = interactions[index]
- if (!interaction) return yield* Effect.die(new Error(`No recorded WebSocket interaction for ${request.url}`))
+ if (!interaction)
+ return yield* Effect.die(new Error(`No recorded WebSocket interaction for ${redactUrl(request.url)}`))
yield* replay.advance
yield* assertEqual(`WebSocket open frame ${index + 1}`, openSnapshot(request), interaction.open)
const messageIndex = yield* Ref.make(0)
return {
sendText: (message) =>
Effect.gen(function* () {
- const current = yield* Ref.getAndUpdate(messageIndex, (value) => value + 1)
+ const current = yield* Ref.get(messageIndex)
yield* compareClientMessage(
message,
interaction.client[current],
current,
options.compareClientMessagesAsJson === true,
)
+ yield* Ref.update(messageIndex, (value) => value + 1)
}),
messages: Stream.fromIterable(interaction.server).pipe(Stream.map(decodeFrameMessage)),
close: Effect.gen(function* () {
diff --git a/packages/http-recorder/test/record-replay.test.ts b/packages/http-recorder/test/record-replay.test.ts
index 503f87ac50..72512868ee 100644
--- a/packages/http-recorder/test/record-replay.test.ts
+++ b/packages/http-recorder/test/record-replay.test.ts
@@ -323,4 +323,118 @@ describe("http-recorder", () => {
}),
)
})
+
+ test("auto mode records to disk when the cassette is missing", async () => {
+ const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-auto-record-"))
+ using server = Bun.serve({
+ port: 0,
+ fetch: () => new Response('{"reply":"recorded"}', { headers: { "content-type": "application/json" } }),
+ })
+ const url = `http://127.0.0.1:${server.port}/echo`
+ // CI=true forces replay; clear it so we exercise the local-dev auto-record path.
+ const previous = process.env.CI
+ delete process.env.CI
+ try {
+ const result = await runWith("auto-record", { directory, mode: "auto" }, post(url, { step: 1 }))
+ expect(result).toBe('{"reply":"recorded"}')
+ expect(fs.existsSync(path.join(directory, "auto-record.json"))).toBe(true)
+ } finally {
+ if (previous !== undefined) process.env.CI = previous
+ }
+ })
+
+ test("passthrough mode bypasses the recorder entirely", async () => {
+ using server = Bun.serve({ port: 0, fetch: () => new Response("from-upstream") })
+ const url = `http://127.0.0.1:${server.port}/path`
+ const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-passthrough-"))
+
+ const result = await runWith("passthrough-noop", { directory, mode: "passthrough" }, post(url, {}))
+ expect(result).toBe("from-upstream")
+ expect(fs.existsSync(path.join(directory, "passthrough-noop.json"))).toBe(false)
+ })
+
+ test("UnsafeCassetteError fails the request when a recording would write a known secret", async () => {
+ using server = Bun.serve({ port: 0, fetch: () => new Response("Bearer abcdefghijklmnopqrstuvwxyz1234") })
+ const url = `http://127.0.0.1:${server.port}/leaky`
+ const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-unsafe-"))
+
+ const exit = await Effect.runPromise(
+ Effect.exit(
+ post(url, { ok: true }).pipe(
+ Effect.provide(HttpRecorder.cassetteLayer("unsafe-record", { directory, mode: "record" })),
+ ),
+ ),
+ )
+ expect(Exit.isFailure(exit)).toBe(true)
+ expect(failureText(exit)).toContain("contains possible secrets")
+ expect(fs.existsSync(path.join(directory, "unsafe-record.json"))).toBe(false)
+ })
+
+ test("Cassette.list enumerates recorded cassette names", async () => {
+ const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-list-"))
+ await seedCassetteDirectory(directory, "alpha/one", [
+ {
+ transport: "http",
+ request: { method: "GET", url: "https://x.test/a", headers: {}, body: "" },
+ response: { status: 200, headers: {}, body: "a" },
+ },
+ ])
+ await seedCassetteDirectory(directory, "beta", [
+ {
+ transport: "http",
+ request: { method: "GET", url: "https://x.test/b", headers: {}, body: "" },
+ response: { status: 200, headers: {}, body: "b" },
+ },
+ ])
+
+ const names = await Effect.runPromise(
+ Effect.gen(function* () {
+ const cassette = yield* HttpRecorder.Cassette.Service
+ return yield* cassette.list()
+ }).pipe(Effect.provide(HttpRecorder.Cassette.fileSystem({ directory })), Effect.provide(NodeFileSystem.layer)),
+ )
+ expect(names).toEqual(["alpha/one", "beta"])
+ })
+
+ test("WebSocket replay decodes binary frames recorded as base64", async () => {
+ const binaryServer = new Uint8Array([1, 2, 3, 4])
+ await Effect.runPromise(
+ Effect.scoped(
+ Effect.gen(function* () {
+ const cassette = yield* HttpRecorder.Cassette.Service
+ const executor = yield* HttpRecorder.makeWebSocketExecutor({
+ name: "ws/binary",
+ cassette,
+ live: { open: () => Effect.die(new Error("unexpected live WebSocket open")) },
+ })
+ const connection = yield* executor.open({
+ url: "wss://example.test/binary",
+ headers: Headers.fromInput({}),
+ })
+ const messages: Array = []
+ yield* connection.messages.pipe(Stream.runForEach((m) => Effect.sync(() => messages.push(m))))
+ yield* connection.close
+
+ expect(messages).toHaveLength(1)
+ expect(messages[0]).toBeInstanceOf(Uint8Array)
+ expect(Array.from(messages[0] as Uint8Array)).toEqual([1, 2, 3, 4])
+ }).pipe(
+ Effect.provide(
+ HttpRecorder.Cassette.memory({
+ "ws/binary": [
+ {
+ transport: "websocket",
+ open: { url: "wss://example.test/binary", headers: {} },
+ client: [],
+ server: [
+ { kind: "binary", body: Buffer.from(binaryServer).toString("base64"), bodyEncoding: "base64" },
+ ],
+ },
+ ],
+ }),
+ ),
+ ),
+ ),
+ )
+ })
})
diff --git a/packages/llm/package.json b/packages/llm/package.json
index 4070681cf7..a51bedfd0a 100644
--- a/packages/llm/package.json
+++ b/packages/llm/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.14.48",
+ "version": "1.14.51",
"name": "@opencode-ai/llm",
"type": "module",
"license": "MIT",
diff --git a/packages/llm/src/schema/errors.ts b/packages/llm/src/schema/errors.ts
index 9bcc8e1694..39bf5b6252 100644
--- a/packages/llm/src/schema/errors.ts
+++ b/packages/llm/src/schema/errors.ts
@@ -198,5 +198,6 @@ export class LLMError extends Schema.TaggedErrorClass()("LLM.Error", {
*/
export class ToolFailure extends Schema.TaggedErrorClass()("LLM.ToolFailure", {
message: Schema.String,
+ error: Schema.optional(Schema.Defect),
metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),
}) {}
diff --git a/packages/llm/src/schema/events.ts b/packages/llm/src/schema/events.ts
index 6a088dc873..63c9b7b7df 100644
--- a/packages/llm/src/schema/events.ts
+++ b/packages/llm/src/schema/events.ts
@@ -171,6 +171,7 @@ export const ToolError = Schema.Struct({
id: ToolCallID,
name: Schema.String,
message: Schema.String,
+ error: Schema.optional(Schema.Defect),
providerMetadata: Schema.optional(ProviderMetadata),
}).annotate({ identifier: "LLM.Event.ToolError" })
export type ToolError = Schema.Schema.Type
diff --git a/packages/llm/src/tool-runtime.ts b/packages/llm/src/tool-runtime.ts
index d83dcc67ad..ef527faa21 100644
--- a/packages/llm/src/tool-runtime.ts
+++ b/packages/llm/src/tool-runtime.ts
@@ -112,17 +112,29 @@ export const stream = (options: StreamOptions): Stream.Strea
const dispatched = yield* Effect.forEach(
state.toolCalls,
- (call) => dispatch(tools, call).pipe(Effect.map((result) => [call, result] as const)),
+ (call) =>
+ dispatch(tools, call).pipe(Effect.map((result) => [call, result.result, result.error] as const)),
{ concurrency },
)
- const resultStream = Stream.fromIterable(dispatched.flatMap(([call, result]) => emitEvents(call, result)))
+ const resultStream = Stream.fromIterable(
+ dispatched.flatMap(([call, result, error]) => emitEvents(call, result, error)),
+ )
if (!options.stopWhen) return resultStream.pipe(Stream.concat(finishStream))
if (options.stopWhen({ step, request })) return resultStream.pipe(Stream.concat(finishStream))
return resultStream.pipe(
Stream.concat(
- loop(followUpRequest(request, state, dispatched), step + 1, totalUsage, totalProviderMetadata),
+ loop(
+ followUpRequest(
+ request,
+ state,
+ dispatched.map(([call, result]) => [call, result] as const),
+ ),
+ step + 1,
+ totalUsage,
+ totalProviderMetadata,
+ ),
),
)
}),
@@ -215,7 +227,7 @@ const addUsage = (left: Usage | undefined, right: Usage | undefined) => {
| "reasoningTokens"
| "totalTokens"
const sum = (key: UsageKey) =>
- left[key] === undefined && right[key] === undefined ? undefined : Number(left[key] ?? 0) + Number(right[key] ?? 0)
+ left[key] === undefined && right[key] === undefined ? undefined : (left[key] ?? 0) + (right[key] ?? 0)
return new Usage({
inputTokens: sum("inputTokens"),
@@ -264,16 +276,20 @@ const appendStreamingText = (
state.assistantContent.push({ type, text, providerMetadata })
}
-const dispatch = (tools: Tools, call: ToolCallPart): Effect.Effect => {
+const dispatch = (tools: Tools, call: ToolCallPart): Effect.Effect<{ result: ToolResultValue; error?: unknown }> => {
const tool = tools[call.name]
- if (!tool) return Effect.succeed({ type: "error" as const, value: `Unknown tool: ${call.name}` })
+ if (!tool) return Effect.succeed({ result: { type: "error" as const, value: `Unknown tool: ${call.name}` } })
if (!tool.execute)
- return Effect.succeed({ type: "error" as const, value: `Tool has no execute handler: ${call.name}` })
+ return Effect.succeed({ result: { type: "error" as const, value: `Tool has no execute handler: ${call.name}` } })
return decodeAndExecute(tool, call).pipe(
Effect.catchTag("LLM.ToolFailure", (failure) =>
- Effect.succeed({ type: "error" as const, value: failure.message } satisfies ToolResultValue),
+ Effect.succeed({
+ result: { type: "error" as const, value: failure.message } satisfies ToolResultValue,
+ error: failure.error,
+ }),
),
+ Effect.map((result) => ("result" in result ? result : { result })),
)
}
@@ -294,10 +310,10 @@ const decodeAndExecute = (tool: AnyTool, call: ToolCallPart): Effect.Effect ({ type: "json", value: encoded })),
)
-const emitEvents = (call: ToolCallPart, result: ToolResultValue): ReadonlyArray =>
+const emitEvents = (call: ToolCallPart, result: ToolResultValue, error: unknown): ReadonlyArray =>
result.type === "error"
? [
- LLMEvent.toolError({ id: call.id, name: call.name, message: String(result.value) }),
+ LLMEvent.toolError({ id: call.id, name: call.name, message: String(result.value), error }),
LLMEvent.toolResult({ id: call.id, name: call.name, result }),
]
: [LLMEvent.toolResult({ id: call.id, name: call.name, result })]
diff --git a/packages/llm/test/tool-runtime.test.ts b/packages/llm/test/tool-runtime.test.ts
index 573021c4c2..81389a466b 100644
--- a/packages/llm/test/tool-runtime.test.ts
+++ b/packages/llm/test/tool-runtime.test.ts
@@ -25,6 +25,7 @@ const baseRequest = LLM.request({
model,
prompt: "Use the tool.",
})
+const weatherFailureCause = new Error("weather lookup denied")
const get_weather = tool({
description: "Get current weather for a city.",
@@ -32,7 +33,8 @@ const get_weather = tool({
success: Schema.Struct({ temperature: Schema.Number, condition: Schema.String }),
execute: ({ city }) =>
Effect.gen(function* () {
- if (city === "FAIL") return yield* new ToolFailure({ message: `Weather lookup failed for ${city}` })
+ if (city === "FAIL")
+ return yield* new ToolFailure({ message: `Weather lookup failed for ${city}`, error: weatherFailureCause })
return { temperature: 22, condition: "sunny" }
}),
})
@@ -85,23 +87,27 @@ describe("LLMClient tools", () => {
tools: { get_weather },
}).pipe(Stream.runCollect, Effect.provide(layer))
- const second = bodies[1] as {
- readonly messages?: ReadonlyArray>
- readonly tools?: ReadonlyArray
- readonly tool_choice?: unknown
- readonly max_tokens?: unknown
- }
+ const second = bodies[1]
+ if (!second || typeof second !== "object") throw new Error("Expected second request body")
+ const messages = Reflect.get(second, "messages")
+ const tools = Reflect.get(second, "tools")
- expect(second.max_tokens).toBe(50)
- expect(second.tool_choice).toBe("auto")
- expect(second.tools).toHaveLength(1)
- expect(second.messages?.map((message) => message.role)).toEqual(["user", "assistant", "tool"])
- expect(second.messages?.[1]).toMatchObject({
+ expect(Reflect.get(second, "max_tokens")).toBe(50)
+ expect(Reflect.get(second, "tool_choice")).toBe("auto")
+ expect(tools).toHaveLength(1)
+ expect(
+ Array.isArray(messages)
+ ? messages.map((message) =>
+ message && typeof message === "object" ? Reflect.get(message, "role") : undefined,
+ )
+ : undefined,
+ ).toEqual(["user", "assistant", "tool"])
+ expect(Array.isArray(messages) ? messages[1] : undefined).toMatchObject({
role: "assistant",
content: null,
tool_calls: [{ id: "call_1", type: "function", function: { name: "get_weather" } }],
})
- expect(second.messages?.[2]).toMatchObject({
+ expect(Array.isArray(messages) ? messages[2] : undefined).toMatchObject({
role: "tool",
tool_call_id: "call_1",
content: '{"temperature":22,"condition":"sunny"}',
@@ -327,6 +333,7 @@ describe("LLMClient tools", () => {
const toolError = events.find(LLMEvent.is.toolError)
expect(toolError).toMatchObject({ type: "tool-error", id: "call_1", name: "get_weather" })
expect(toolError?.message).toBe("Weather lookup failed for FAIL")
+ expect(toolError?.error).toBe(weatherFailureCause)
}),
)
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index f3cea500c0..2412911ef9 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.14.48",
+ "version": "1.14.51",
"name": "opencode",
"type": "module",
"license": "MIT",
@@ -32,11 +32,6 @@
"bun": "./src/pty/pty.bun.ts",
"node": "./src/pty/pty.node.ts",
"default": "./src/pty/pty.bun.ts"
- },
- "#httpapi-server": {
- "bun": "./src/server/httpapi-server.node.ts",
- "node": "./src/server/httpapi-server.node.ts",
- "default": "./src/server/httpapi-server.node.ts"
}
},
"devDependencies": {
diff --git a/packages/opencode/script/generate.ts b/packages/opencode/script/generate.ts
index 52d0cef8da..bd9e7c0648 100644
--- a/packages/opencode/script/generate.ts
+++ b/packages/opencode/script/generate.ts
@@ -13,11 +13,11 @@ const modelsData = process.env.MODELS_DEV_API_JSON
? await Bun.file(process.env.MODELS_DEV_API_JSON).text()
: await fetch(`${modelsUrl}/api.json`).then((x) => x.text())
await Bun.write(
- path.join(dir, "src/provider/models-snapshot.js"),
+ path.join(dir, "../core/src/models-snapshot.js"),
`// @ts-nocheck\n// Auto-generated by build.ts - do not edit\nexport const snapshot = ${modelsData}\n`,
)
await Bun.write(
- path.join(dir, "src/provider/models-snapshot.d.ts"),
+ path.join(dir, "../core/src/models-snapshot.d.ts"),
`// Auto-generated by build.ts - do not edit\nexport declare const snapshot: Record\n`,
)
console.log("Generated models-snapshot.js")
diff --git a/packages/opencode/specs/effect/error-boundaries-plan.md b/packages/opencode/specs/effect/error-boundaries-plan.md
new file mode 100644
index 0000000000..763bf5ea5e
--- /dev/null
+++ b/packages/opencode/specs/effect/error-boundaries-plan.md
@@ -0,0 +1,235 @@
+# Error Boundaries Plan
+
+Plan for removing `NamedError` as connective tissue while keeping public
+wire contracts stable.
+
+## Desired Shape
+
+```text
+Domain/service error
+ Schema.TaggedErrorClass
+ - catchable with catchTag / catchTags
+ - appears in service method error type
+ - no HTTP status
+ - no toObject()
+
+HTTP public error
+ Schema.ErrorClass / TaggedErrorClass with httpApiStatus
+ - endpoint-declared public contract
+ - owns legacy { name, data } only when that is the SDK wire shape
+
+CLI/user rendering
+ FormatError and small format helpers
+ - converts domain errors to text
+ - preserves useful structured fields
+
+Session/model-visible error
+ first-class session/message error schema or helper
+ - owns { name, data } event/message shape
+ - not a service error class
+```
+
+The important rule: a service error should not also be the HTTP body, CLI
+formatter, and session event body. Each seam adapts the error into the
+shape it owns.
+
+## Concrete Example: Provider Model Not Found
+
+Before:
+
+```ts
+export const ModelNotFoundError = NamedError.create("ProviderModelNotFoundError", {
+ providerID: ProviderID,
+ modelID: ModelID,
+ suggestions: Schema.optional(Schema.Array(Schema.String)),
+})
+```
+
+Problems:
+
+- Throwing it inside `Effect.fn` made it behave like a defect unless a
+ compatibility bridge caught it.
+- HTTP middleware knew that this one domain error should be a `400`.
+- Callers read `.data.*`, which couples them to the legacy `{ name, data }`
+ wire shape.
+
+After:
+
+```ts
+export class ModelNotFoundError extends Schema.TaggedErrorClass()("ProviderModelNotFoundError", {
+ providerID: ProviderID,
+ modelID: ModelID,
+ suggestions: Schema.optional(Schema.Array(Schema.String)),
+ cause: Schema.optional(Schema.Defect),
+}) {}
+
+export interface Interface {
+ readonly getModel: (providerID: ProviderID, modelID: ModelID) => Effect.Effect
+}
+```
+
+Boundary adapters:
+
+```text
+CLI
+└─ FormatError sees _tag ProviderModelNotFoundError -> nice text
+
+Session prompt
+└─ catch ModelNotFoundError -> publish Session.Event.Error as message/session wire shape
+
+HTTP route
+└─ catch ModelNotFoundError -> declared BadRequest public API error when the endpoint needs it
+
+HTTP middleware
+└─ no Provider.ModelNotFoundError knowledge
+```
+
+## Refining Known Promise Failures
+
+Use `EffectPromise.refineRejection(...)` when a Promise boundary can reject
+with many unknown values, but only one or two rejection classes are expected
+domain failures. Unknown rejections stay defects; the helper maps only known
+rejection shapes to typed errors.
+
+```ts
+const language =
+ yield *
+ EffectPromise.refineRejection(
+ async () => loadFromProvider(),
+ (cause) => (cause instanceof NoSuchModelError ? new ModelNotFoundError({ providerID, modelID, cause }) : undefined),
+ )
+```
+
+Use this when the Promise can genuinely reject and most rejection values are
+still defects for the current module. Use `Effect.tryPromise({ try, catch })`
+when every rejection should become the same expected error type. Use
+`Effect.promise(...)` only when rejection means a defect and you do not need
+to refine known rejection classes.
+
+## Helper Modules We Probably Want
+
+Add helpers only when repeated call sites prove the seam is real.
+
+### HTTP API Errors
+
+Likely location: `src/server/routes/instance/httpapi/errors.ts`.
+
+Purpose:
+
+- construct public HTTP error bodies
+- preserve legacy `{ name, data }` where needed
+- attach `httpApiStatus`
+
+Good helpers:
+
+```ts
+notFound(message)
+badRequest(message)
+unknown()
+```
+
+Avoid:
+
+```ts
+mapAnyDomainError(error)
+```
+
+That recreates the giant middleware mapper problem.
+
+### Session / Message Error Wire Helpers
+
+Likely location: near `src/session/message-error.ts` or a new narrow
+module such as `src/session/event-error.ts`.
+
+Purpose:
+
+- construct the `{ name, data }` shape used by `Session.Event.Error` and
+ assistant message errors
+- replace `new NamedError.Unknown(...).toObject()` call sites
+- keep model-visible error bodies separate from service/domain errors
+
+Good helpers:
+
+```ts
+unknown(message)
+agentNotFound(agent, available)
+commandNotFound(command, available)
+modelNotFound(error: Provider.ModelNotFoundError)
+```
+
+### CLI Formatters
+
+Likely location: `src/cli/error.ts` until repetition demands domain-local
+format helpers.
+
+Purpose:
+
+- produce human-readable terminal messages from typed errors
+- support old `{ name, data }` shapes only while compatibility is needed
+
+## Migration Queue
+
+### Remove Domain Knowledge From HTTP Middleware
+
+- [x] Storage not found no longer maps through defect fallback.
+- [x] Worktree expected errors moved to typed errors.
+- [x] Provider auth expected errors moved to typed errors.
+- [x] Provider model not found no longer needs an HTTP middleware status
+ special case.
+- [ ] Convert `Session.BusyError` and map it at route boundaries.
+- [ ] Delete the broad `NamedError` middleware branch once no route relies
+ on defect-wrapped legacy domain errors.
+- [ ] Keep one final unknown-defect fallback that logs `Cause.pretty(cause)`
+ and returns a safe `500` body.
+
+### Remaining `NamedError.create(...)` Service Errors
+
+These should become `Schema.TaggedErrorClass` when touched:
+
+- [ ] `src/provider/provider.ts` — `ProviderInitError`.
+- [ ] `src/storage/db.ts` — database `NotFoundError`.
+- [ ] `src/mcp/index.ts` — `MCPFailed`.
+- [ ] `src/skill/index.ts` — `SkillInvalidError`,
+ `SkillNameMismatchError`.
+- [ ] `src/lsp/client.ts` — `LSPInitializeError`.
+- [ ] `src/ide/index.ts` — install errors.
+- [ ] `src/config/error.ts`, `src/config/config.ts`,
+ `src/config/markdown.ts` — config errors. These already render well
+ in the CLI, so migrate carefully and preserve diagnostics.
+
+### Session / Message Wire Errors
+
+These are not ordinary service errors. They mostly build `{ name, data }`
+objects for model-visible/session-visible output.
+
+- [ ] Add a first-class session/message error wire helper.
+- [ ] Replace `new NamedError.Unknown(...).toObject()` in
+ `src/session/prompt.ts`.
+- [ ] Replace `new NamedError.Unknown(...).toObject()` in config/skill/plugin
+ session event publishing.
+- [ ] Move `src/session/message-error.ts` and `src/session/message-v2.ts`
+ away from `NamedError.create(...)` once the wire helper exists.
+- [ ] Update retry/message tests to assert the wire schema/helper output,
+ not `NamedError` instances.
+
+### CLI Rendering
+
+- [x] Tagged config errors render with useful diagnostics.
+- [x] Provider model not found renders from both old `{ name, data }` and
+ new `_tag` shapes.
+- [ ] Add typed render cases as more `NamedError.create(...)` domains move
+ to `Schema.TaggedErrorClass`.
+- [ ] Eventually remove old-shape compatibility branches when no callers can
+ produce them.
+
+## PR Checklist
+
+For each migrated error:
+
+- [ ] Domain error is `Schema.TaggedErrorClass`.
+- [ ] Service method exposes the typed error in its error channel.
+- [ ] No service error has `toObject()` just for compatibility.
+- [ ] CLI, HTTP, and session/message adapters each own their output shape.
+- [ ] HTTP middleware gets smaller or stays unchanged.
+- [ ] Focused tests cover the domain error and any public rendering/wire
+ shape touched by the PR.
diff --git a/packages/opencode/specs/effect/errors.md b/packages/opencode/specs/effect/errors.md
index 5266ca5101..69298bde5c 100644
--- a/packages/opencode/specs/effect/errors.md
+++ b/packages/opencode/specs/effect/errors.md
@@ -4,6 +4,9 @@ This note expands the `ERR`, `RENDER`, and `HTTP` tracks from
[`todo.md`](./todo.md). It is the current reference for expected failures,
typed service errors, and HTTP error boundaries.
+For the migration architecture and queue, see
+[`error-boundaries-plan.md`](./error-boundaries-plan.md).
+
## Goal
- Expected service failures live on the Effect error channel.
diff --git a/packages/opencode/specs/effect/todo.md b/packages/opencode/specs/effect/todo.md
index 9261811c38..092e80b767 100644
--- a/packages/opencode/specs/effect/todo.md
+++ b/packages/opencode/specs/effect/todo.md
@@ -2,8 +2,9 @@
Short roadmap for Effect cleanup in `packages/opencode`.
-Current patterns and examples live in [`guide.md`](./guide.md). Test
-migration rules live in
+Current patterns and examples live in [`guide.md`](./guide.md). Error
+boundary migration details live in
+[`error-boundaries-plan.md`](./error-boundaries-plan.md). Test migration rules live in
[`test/EFFECT_TEST_MIGRATION.md`](../../test/EFFECT_TEST_MIGRATION.md).
Older deep-dive notes in this directory may still be useful, but treat
this roadmap and the guide as the current entry points.
@@ -93,19 +94,16 @@ shapes and sometimes collapse rich errors into opaque strings.
### Problems
-- Some expected service failures still use `NamedError.create(...)`.
-- Some expected service failures still become `Effect.die(...)`, which
- makes them defects instead of typed, recoverable failures.
-- CLI and HTTP boundaries can render structured errors as generic
- `Error: SomeName` output.
-- HTTP error middleware still guesses status codes from error names like
- `Worktree*` or `ProviderAuthValidationFailed`.
+- Some expected service failures still use `NamedError.create(...)` or
+ collapse to `Effect.die(...)`. The storage/worktree/provider-auth
+ conversions are done; an inventory sweep is needed for the rest.
+- HTTP error middleware still guesses status codes from error names —
+ some entries (e.g. storage `NotFound`, provider auth) can now be
+ removed, but the middleware overall has not shrunk.
- Route handlers and route groups do not consistently declare the public
error body they intend to expose.
- Repeated route error translations do not yet have a clear home: some
should stay inline, some deserve tiny shared mapper helpers.
-- Unknown 500s should log full detail server-side while returning a safe
- public body.
### Target Shape
@@ -125,19 +123,33 @@ shapes and sometimes collapse rich errors into opaque strings.
- Generic HTTP middleware should shrink; it should not accumulate more
name-based domain knowledge.
+### Recently completed
+
+- [x] `RENDER-1` CLI tagged config error rendering (#27256, tests #27257).
+- [x] `ERR-1` [`storage/storage.ts`](../../src/storage/storage.ts) typed
+ `NotFoundError` (#27265) and removal of the server defect fallback
+ (#27287).
+- [x] `ERR-2` [`worktree/index.ts`](../../src/worktree/index.ts) typed
+ errors (#27296).
+- [x] `ERR-3` [`provider/auth.ts`](../../src/provider/auth.ts) typed
+ validation/oauth errors (#27301).
+- [x] `HTTP-1` Unknown-500 details no longer leaked (#27251); follow-up
+ to stop exposing named defects (#27471).
+- [x] Session message reads typed and made effectful (#27269, #27275,
+ #27280, #27291).
+- [x] Session HTTP error contracts tightened (#27308); busy-session
+ mapping centralized (#27375, #27473).
+- [x] Provider init (#27484) and LSP init (#27494) errors typed.
+
### First PR Candidates
-- [ ] `RENDER-1` Fix CLI top-level rendering for typed config errors.
-- [ ] `ERR-1` Convert [`storage/storage.ts`](../../src/storage/storage.ts)
- not-found errors.
-- [ ] `ERR-2` Convert [`worktree/index.ts`](../../src/worktree/index.ts)
- errors and remove matching HTTP name checks where possible.
-- [ ] `ERR-3` Convert [`provider/auth.ts`](../../src/provider/auth.ts)
- validation errors.
-- [ ] `HTTP-1` Remove the unknown-500 stack leak from
- [`middleware/error.ts`](../../src/server/routes/instance/httpapi/middleware/error.ts).
- [ ] `HTTP-2` Audit one route group for explicit error contracts and
decide which mappings stay inline vs. shared helper.
+- [ ] `ERR-4` Sweep remaining `NamedError.create(...)` and
+ `Effect.die(...)` callsites for expected failures — re-run `git
+grep` to build a current inventory.
+- [ ] `RENDER-2` Audit CLI and TUI surfaces for any remaining opaque
+ `Error: Name` rendering of typed errors.
## P1: Tests
@@ -162,26 +174,24 @@ Recently completed:
- [x] Built-in websearch provider selection uses the same runtime flags as
tool visibility.
- [x] Removed global default-plugin disabling from test preload.
+- [x] `RF-1` Scout reads routed through runtime flags (#27318).
+- [x] `RF-2` Plan-mode prompt read routed through runtime flags (#27320).
+- [x] `RF-3` Event-system reads routed through runtime flags (#27323).
+- [x] `RF-4` Workspaces reads routed through runtime flags for session
+ (#27335), sync (#27336), and control-plane (#27337).
+- [x] LLM client (#27368) and installation client (#27369) routed
+ through runtime flags.
+- [x] TUI plugin runtime flags simplified (#27506).
+- [x] Background-subagents flag moved to RuntimeFlags, then removed
+ (`refactor(task): use runtime flag for background subagents`,
+ `refactor(flags): remove background subagents flag`).
-Recommended next PRs:
+Remaining cleanup:
-```text
-RF-1 scout consumers ─┐
- ├─ can run in parallel
-RF-2 plan-mode prompt ┘
- └─ RF-3 event-system cluster, stacked only if RF-2 still touches prompt.ts
-
-RF-4 workspaces cluster: later, after mutable Flag tests are cleaned up
-```
-
-- [ ] `RF-1` Move scout reads in [`agent.ts`](../../src/agent/agent.ts)
- and [`reference.ts`](../../src/reference/reference.ts).
-- [ ] `RF-2` Move plan-mode prompt read in
- [`session/prompt.ts`](../../src/session/prompt.ts).
-- [ ] `RF-3` Move event-system reads in session prompt/processor/
- compaction and TUI debug plugin.
-- [ ] `RF-4` Move workspaces reads in session/sync/control-plane after
- tests stop relying on mutable `Flag` timing.
+- [ ] Sweep lingering `Flag.*` reads — many CLI/TUI/config/observability
+ callsites still import [`flag.ts`](../../../core/src/flag/flag.ts).
+ Decide per-callsite whether to route through RuntimeFlags, accept
+ as legitimate env/config boundary, or migrate to typed `Config`.
- [ ] Delete [`test/fixture/flag.ts`](../../test/fixture/flag.ts) once
tests no longer mutate `Flag`.
- [ ] Delete [`flag.ts`](../../../core/src/flag/flag.ts) once no packages
@@ -223,6 +233,63 @@ Goal:
explicit context where practical.
- Delete `project/instance.ts` only after ambient Instance coupling is gone.
+Important distinction:
+
+- `InstanceState.context`, `InstanceState.directory`, and
+ `InstanceState.workspaceID` are acceptable inside normal Effect service
+ code when `InstanceRef` / `WorkspaceRef` are provided by the runtime.
+- The deletion blockers are the fallback and callback paths that rely on
+ ambient ALS: direct `Instance.*` reads, `InstanceState.bind(...)`,
+ `AppRuntime.runPromise(...)` re-entry from plain JS, and bridge restore
+ code that installs legacy ALS before invoking callbacks.
+
+Current bottom-up inventory from `dev`:
+
+- Direct `Instance.*` value readers:
+ [`tool/repo_overview.ts`](../../src/tool/repo_overview.ts),
+ [`control-plane/adapters/worktree.ts`](../../src/control-plane/adapters/worktree.ts),
+ [`cli/bootstrap.ts`](../../src/cli/bootstrap.ts).
+- `InstanceState.bind(...)` callback boundaries:
+ [`file/watcher.ts`](../../src/file/watcher.ts) native watcher callback,
+ [`storage/db.ts`](../../src/storage/db.ts) transaction/effect callbacks,
+ [`session/llm.ts`](../../src/session/llm.ts) workflow approval callback.
+- `AppRuntime.runPromise(...)` / re-entry from plain JS:
+ [`project/with-instance.ts`](../../src/project/with-instance.ts),
+ [`project/instance-runtime.ts`](../../src/project/instance-runtime.ts),
+ [`control-plane/adapters/worktree.ts`](../../src/control-plane/adapters/worktree.ts),
+ [`cli/effect-cmd.ts`](../../src/cli/effect-cmd.ts), plus global/non-instance
+ callsites such as CLI upgrade and ACP agent defaults.
+- Intentional bridge users to classify, not delete blindly:
+ workspace adapters in [`control-plane/workspace.ts`](../../src/control-plane/workspace.ts),
+ MCP, command execution, plugins, pty lifecycle, bus scope cleanup, task
+ cancellation, and HTTP lifecycle reload/dispose paths.
+- Core fallback layer to shrink last:
+ [`effect/run-service.ts`](../../src/effect/run-service.ts),
+ [`effect/bridge.ts`](../../src/effect/bridge.ts), and
+ [`effect/instance-state.ts`](../../src/effect/instance-state.ts).
+
+Recommended PR order:
+
+- [ ] `INST-1` Remove direct `Instance.*` value readers. Start with
+ `repo_overview`, `worktree` adapter, and `cli/bootstrap`; pass context
+ explicitly or obtain it from an Effect boundary.
+- [ ] `INST-2` Move type-only `InstanceContext` imports from
+ [`project/instance.ts`](../../src/project/instance.ts) to
+ [`project/instance-context.ts`](../../src/project/instance-context.ts).
+- [ ] `INST-3` Audit each `InstanceState.bind(...)` callback from the inside
+ out: list what the callback calls (`Bus.publish`, database effects,
+ permission/session services), then replace ambient capture with explicit
+ `InstanceRef` / `WorkspaceRef` provision or an `EffectBridge` call.
+- [ ] `INST-4` Classify `AppRuntime.runPromise(...)` callsites as global,
+ instance-scoped with explicit refs, or bridge-required. Eliminate the
+ instance-scoped callsites that rely on `run-service.attach()` falling
+ back to `Instance.current`.
+- [ ] `INST-5` After consumers are explicit, remove `Instance.current` fallback
+ from `InstanceState.context` and `run-service.attach()`.
+- [ ] `INST-6` Move any remaining `restore` / `bind` compatibility helpers to
+ the boundary that still needs them, then delete
+ [`project/instance.ts`](../../src/project/instance.ts).
+
## Lower Priority Tracks
- `PROC` / `FS` — continue AppProcess and AppFileSystem migrations as
diff --git a/packages/opencode/specs/effect/tools.md b/packages/opencode/specs/effect/tools.md
index 37a76e9487..b8c851aa3d 100644
--- a/packages/opencode/specs/effect/tools.md
+++ b/packages/opencode/specs/effect/tools.md
@@ -67,11 +67,11 @@ Most exported tools are already on the intended Effect-native shape. The remaini
Current spot cleanups worth tracking:
-- [ ] `read.ts` — still bridges to Node stream / `readline` helpers and Promise-based binary detection
+- [x] `read.ts` — streams through `AppFileSystem.Service.stream` with `Stream.splitLines`; the legacy Node stream / `readline` helper is gone
- [ ] `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 file-search routes
-- [ ] `patch/index.ts` — adjacent to tool migration; still has raw fs usage behind patch application
+- [x] `patch/index.ts` — apply path now returns `Effect` over `AppFileSystem.Service`; the parser and chunk replacer stay pure
Notable items that are already effectively on the target path and do not need separate migration bullets right now:
@@ -85,6 +85,4 @@ Notable items that are already effectively on the target path and do not need se
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/agent/agent.ts b/packages/opencode/src/agent/agent.ts
index 1e4d7e1563..ce6cf30b6d 100644
--- a/packages/opencode/src/agent/agent.ts
+++ b/packages/opencode/src/agent/agent.ts
@@ -62,11 +62,14 @@ export interface Interface {
readonly generate: (input: {
description: string
model?: { providerID: ProviderID; modelID: ModelID }
- }) => Effect.Effect<{
- identifier: string
- whenToUse: string
- systemPrompt: string
- }>
+ }) => Effect.Effect<
+ {
+ identifier: string
+ whenToUse: string
+ systemPrompt: string
+ },
+ Provider.ModelNotFoundError
+ >
}
type State = Omit
diff --git a/packages/opencode/src/bus/bus-event.ts b/packages/opencode/src/bus/bus-event.ts
index 3533706318..5a9e52ef07 100644
--- a/packages/opencode/src/bus/bus-event.ts
+++ b/packages/opencode/src/bus/bus-event.ts
@@ -1,4 +1,5 @@
import { Schema } from "effect"
+import { EventV2 } from "@opencode-ai/core/event"
export type Definition = {
type: Type
@@ -17,16 +18,28 @@ export function define(
}
export function effectPayloads() {
- return registry
- .entries()
- .map(([type, def]) =>
- Schema.Struct({
- id: Schema.String,
- type: Schema.Literal(type),
- properties: def.properties,
- }).annotate({ identifier: `Event.${type}` }),
- )
- .toArray()
+ return [
+ ...registry
+ .entries()
+ .map(([type, def]) =>
+ Schema.Struct({
+ id: Schema.String,
+ type: Schema.Literal(type),
+ properties: def.properties,
+ }).annotate({ identifier: `Event.${type}` }),
+ )
+ .toArray(),
+ ...EventV2.registry
+ .values()
+ .map((definition) =>
+ Schema.Struct({
+ id: Schema.String,
+ type: Schema.Literal(definition.type),
+ properties: definition.data,
+ }).annotate({ identifier: `Event.${definition.type}` }),
+ )
+ .toArray(),
+ ]
}
export * as BusEvent from "./bus-event"
diff --git a/packages/opencode/src/cli/cmd/db.ts b/packages/opencode/src/cli/cmd/db.ts
index 2aa5caf10a..b113455f3b 100644
--- a/packages/opencode/src/cli/cmd/db.ts
+++ b/packages/opencode/src/cli/cmd/db.ts
@@ -28,7 +28,7 @@ const QueryCommand = cmd({
handler: async (args: { query?: string; format: string }) => {
const query = args.query as string | undefined
if (query) {
- const db = new BunDatabase(Database.Path, { readonly: true })
+ const db = new BunDatabase(Database.getPath(), { readonly: true })
try {
const result = db.query(query).all() as Record[]
if (args.format === "json") {
@@ -47,7 +47,7 @@ const QueryCommand = cmd({
db.close()
return
}
- const child = spawn("sqlite3", [Database.Path], {
+ const child = spawn("sqlite3", [Database.getPath()], {
stdio: "inherit",
})
await new Promise((resolve) => child.on("close", resolve))
@@ -58,7 +58,7 @@ const PathCommand = cmd({
command: "path",
describe: "print the database path",
handler: () => {
- console.log(Database.Path)
+ console.log(Database.getPath())
},
})
@@ -66,7 +66,7 @@ const MigrateCommand = cmd({
command: "migrate",
describe: "migrate JSON data to SQLite (merges with existing data)",
handler: async () => {
- const sqlite = new BunDatabase(Database.Path)
+ const sqlite = new BunDatabase(Database.getPath())
const tty = process.stderr.isTTY
const width = 36
const orange = "\x1b[38;5;214m"
diff --git a/packages/opencode/src/cli/cmd/debug/v2.ts b/packages/opencode/src/cli/cmd/debug/v2.ts
index a4e69cc494..836f581367 100644
--- a/packages/opencode/src/cli/cmd/debug/v2.ts
+++ b/packages/opencode/src/cli/cmd/debug/v2.ts
@@ -1,22 +1,23 @@
import { EOL } from "os"
import { Effect, Layer, Option } from "effect"
import { Catalog } from "@opencode-ai/core/catalog"
+import { LocationServiceMap } from "@opencode-ai/core/location-layer"
+import { PluginBoot } from "@opencode-ai/core/plugin/boot"
import { effectCmd } from "../../effect-cmd"
-import { PluginBoot } from "@/v2/plugin-boot"
-const layer = Catalog.defaultLayer.pipe(Layer.provide(PluginBoot.defaultLayer))
+const Runtime = Layer.mergeAll(LocationServiceMap.layer)
export const V2Command = effectCmd({
command: "v2",
describe: "debug v2 catalog and built-in plugins",
instance: false,
- handler: Effect.fn("Cli.debug.v2")(function* () {
- const result = yield* Effect.gen(function* () {
+ handler: Effect.fn("Cli.debug.v2")(
+ function* () {
+ yield* PluginBoot.Service.use((service) => service.wait())
const catalog = yield* Catalog.Service
-
const providers = (yield* catalog.provider.available()).sort((a, b) => a.id.localeCompare(b.id))
const all = (yield* catalog.provider.all()).sort((a, b) => a.id.localeCompare(b.id))
- return {
+ const result = {
providers,
default: catalog.model
.default()
@@ -33,8 +34,13 @@ export const V2Command = effectCmd({
),
),
}
- }).pipe(Effect.provide(layer), Effect.orDie)
-
- process.stdout.write(JSON.stringify(result, null, 2) + EOL)
- }),
+ process.stdout.write(JSON.stringify(result, null, 2) + EOL)
+ },
+ Effect.provide(
+ LocationServiceMap.get({
+ directory: process.cwd(),
+ }),
+ ),
+ Effect.provide(Runtime),
+ ),
})
diff --git a/packages/opencode/src/cli/cmd/github.ts b/packages/opencode/src/cli/cmd/github.ts
index a6754ec2df..e501f0903c 100644
--- a/packages/opencode/src/cli/cmd/github.ts
+++ b/packages/opencode/src/cli/cmd/github.ts
@@ -19,7 +19,7 @@ import type {
import { UI } from "../ui"
import { cmd } from "./cmd"
import { effectCmd } from "../effect-cmd"
-import { ModelsDev } from "@/provider/models"
+import { ModelsDev } from "@opencode-ai/core/models"
import { InstanceRef } from "@/effect/instance-ref"
import { SessionShare } from "@/share/session"
import { Session } from "@/session/session"
diff --git a/packages/opencode/src/cli/cmd/import.ts b/packages/opencode/src/cli/cmd/import.ts
index 419e81379b..2fcf286f46 100644
--- a/packages/opencode/src/cli/cmd/import.ts
+++ b/packages/opencode/src/cli/cmd/import.ts
@@ -7,7 +7,7 @@ import { SessionTable, MessageTable, PartTable } from "../../session/session.sql
import { InstanceRef } from "@/effect/instance-ref"
import { ShareNext } from "@/share/share-next"
import { EOL } from "os"
-import { Filesystem } from "@/util/filesystem"
+import { AppFileSystem } from "@opencode-ai/core/filesystem"
import { Effect, Schema } from "effect"
const decodeMessageInfo = Schema.decodeUnknownSync(MessageV2.Info)
@@ -95,6 +95,7 @@ export const ImportCommand = effectCmd({
const runImport = Effect.fn("Cli.import.body")(function* (file: string, projectID: string) {
const share = yield* ShareNext.Service
+ const fs = yield* AppFileSystem.Service
let exportData: ExportData | undefined
@@ -149,9 +150,9 @@ const runImport = Effect.fn("Cli.import.body")(function* (file: string, projectI
exportData = transformed
} else {
- exportData = yield* Effect.promise(() =>
- Filesystem.readJson>(file).catch(() => undefined),
- )
+ exportData = (yield* fs.readJson(file).pipe(Effect.orElseSucceed(() => undefined))) as
+ | NonNullable
+ | undefined
if (!exportData) {
process.stdout.write(`File not found: ${file}`)
process.stdout.write(EOL)
diff --git a/packages/opencode/src/cli/cmd/models.ts b/packages/opencode/src/cli/cmd/models.ts
index 183b1816d2..08203ba21e 100644
--- a/packages/opencode/src/cli/cmd/models.ts
+++ b/packages/opencode/src/cli/cmd/models.ts
@@ -2,7 +2,7 @@ import { EOL } from "os"
import { Effect } from "effect"
import { Provider } from "@/provider/provider"
import { ProviderID } from "../../provider/schema"
-import { ModelsDev } from "@/provider/models"
+import { ModelsDev } from "@opencode-ai/core/models"
import { effectCmd, fail } from "../effect-cmd"
import { UI } from "../ui"
diff --git a/packages/opencode/src/cli/cmd/providers.ts b/packages/opencode/src/cli/cmd/providers.ts
index 426ea89fc5..25f1bf968c 100644
--- a/packages/opencode/src/cli/cmd/providers.ts
+++ b/packages/opencode/src/cli/cmd/providers.ts
@@ -3,7 +3,7 @@ import { cmd } from "./cmd"
import { CliError, effectCmd, fail } from "../effect-cmd"
import { UI } from "../ui"
import * as Prompt from "../effect/prompt"
-import { ModelsDev } from "@/provider/models"
+import { ModelsDev } from "@opencode-ai/core/models"
import { map, pipe, sortBy, values } from "remeda"
import path from "path"
diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts
index 33dff2ab5d..9487d6d826 100644
--- a/packages/opencode/src/cli/cmd/run.ts
+++ b/packages/opencode/src/cli/cmd/run.ts
@@ -17,13 +17,13 @@ import { pathToFileURL } from "url"
import { Effect } from "effect"
import { UI } from "../ui"
import { effectCmd } from "../effect-cmd"
-import { Flag } from "@opencode-ai/core/flag/flag"
import { ServerAuth } from "@/server/auth"
import { EOL } from "os"
import { Filesystem } from "@/util/filesystem"
import { createOpencodeClient, type OpencodeClient, type ToolPart } from "@opencode-ai/sdk/v2"
import { Agent } from "@/agent/agent"
import { Permission } from "@/permission"
+import { RuntimeFlags } from "@/effect/runtime-flags"
import { FormatError, FormatUnknownError } from "../error"
import { INTERACTIVE_INPUT_ERROR, resolveInteractiveStdin } from "./run/runtime.stdin"
@@ -235,6 +235,7 @@ export const RunCommand = effectCmd({
}),
handler: Effect.fn("Cli.run")(function* (args) {
const agentSvc = yield* Agent.Service
+ const flags = yield* RuntimeFlags.Service
yield* Effect.promise(async () => {
const rawMessage = [...args.message, ...(args["--"] || [])].join(" ")
const thinking = args.interactive ? (args.thinking ?? true) : (args.thinking ?? false)
@@ -446,7 +447,7 @@ export const RunCommand = effectCmd({
async function share(sdk: OpencodeClient, sessionID: string) {
const cfg = await sdk.config.get()
if (!cfg.data) return
- if (cfg.data.share !== "auto" && !Flag.OPENCODE_AUTO_SHARE && !args.share) return
+ if (cfg.data.share !== "auto" && !flags.autoShare && !args.share) return
const res = await sdk.session.share({ sessionID }).catch((error) => {
if (error instanceof Error && error.message.includes("disabled")) {
UI.println(UI.Style.TEXT_DANGER_BOLD + "! " + error.message)
diff --git a/packages/opencode/src/cli/cmd/tui/plugin/runtime.ts b/packages/opencode/src/cli/cmd/tui/plugin/runtime.ts
index 420826ad0c..2a9ebc4ed2 100644
--- a/packages/opencode/src/cli/cmd/tui/plugin/runtime.ts
+++ b/packages/opencode/src/cli/cmd/tui/plugin/runtime.ts
@@ -1067,14 +1067,16 @@ async function load(input: { api: Api; config: TuiConfig.Resolved; dispose?: ()
}
runtime = next
try {
+ const flags = await Effect.runPromise(
+ Effect.gen(function* () {
+ return yield* RuntimeFlags.Service
+ }).pipe(Effect.provide(RuntimeFlags.defaultLayer)),
+ )
const records = Flag.OPENCODE_PURE ? [] : (config.plugin_origins ?? [])
if (Flag.OPENCODE_PURE && config.plugin_origins?.length) {
log.info("skipping external tui plugins in pure mode", { count: config.plugin_origins.length })
}
- const flags = await Effect.runPromise(
- RuntimeFlags.Service.use((flags) => Effect.succeed(flags)).pipe(Effect.provide(RuntimeFlags.defaultLayer)),
- )
for (const item of internalTuiPlugins(flags)) {
log.info("loading internal tui plugin", { id: item.id })
const entry = loadInternalPlugin(item)
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
index b5e8e10283..70b5570ad5 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -1528,14 +1528,14 @@ function TextPart(props: { last: boolean; part: TextPart; message: AssistantMess
return (
-
@@ -2013,7 +2013,9 @@ function Task(props: ToolProps) {
const content = createMemo(() => {
if (!props.input.description) return ""
- let content = [`${Locale.titlecase(props.input.subagent_type ?? "General")} Task — ${props.input.description}`]
+ const description =
+ props.metadata.background === true ? `${props.input.description} (background)` : props.input.description
+ let content = [`${Locale.titlecase(props.input.subagent_type ?? "General")} Task — ${description}`]
if (isRunning() && tools().length > 0) {
// content[0] += ` · ${tools().length} toolcalls`
@@ -2025,7 +2027,11 @@ function Task(props: ToolProps) {
}
if (props.part.state.status === "completed") {
- content.push(`└ ${tools().length} toolcalls · ${Locale.duration(duration())}`)
+ content.push(
+ props.metadata.background === true
+ ? `└ ${tools().length} toolcalls`
+ : `└ ${tools().length} toolcalls · ${Locale.duration(duration())}`,
+ )
}
return content.join("\n")
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx
index e690f6f327..46fc220bdc 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx
@@ -1,5 +1,6 @@
import { createStore } from "solid-js/store"
import { createMemo, createSignal, For, Show } from "solid-js"
+import { useRenderer } from "@opentui/solid"
import type { TextareaRenderable } from "@opentui/core"
import { selectedForeground, tint, useTheme } from "../../context/theme"
import type { QuestionAnswer, QuestionRequest } from "@opencode-ai/sdk/v2"
@@ -12,6 +13,7 @@ import { useBindings } from "../../keymap"
export function QuestionPrompt(props: { request: QuestionRequest }) {
const sdk = useSDK()
const { theme } = useTheme()
+ const renderer = useRenderer()
const tuiConfig = useTuiConfig()
const questions = createMemo(() => props.request.questions)
@@ -302,7 +304,10 @@ export function QuestionPrompt(props: { request: QuestionRequest }) {
}
onMouseOver={() => setTabHover(index())}
onMouseOut={() => setTabHover(null)}
- onMouseUp={() => selectTab(index())}
+ onMouseUp={() => {
+ if (renderer.getSelection()?.getSelectedText()) return
+ selectTab(index())
+ }}
>
setTabHover("confirm")}
onMouseOut={() => setTabHover(null)}
- onMouseUp={() => selectTab(questions().length)}
+ onMouseUp={() => {
+ if (renderer.getSelection()?.getSelectedText()) return
+ selectTab(questions().length)
+ }}
>
Confirm
@@ -351,7 +359,10 @@ export function QuestionPrompt(props: { request: QuestionRequest }) {
moveTo(i())}
onMouseDown={() => moveTo(i())}
- onMouseUp={() => selectOption()}
+ onMouseUp={() => {
+ if (renderer.getSelection()?.getSelectedText()) return
+ selectOption()
+ }}
>
@@ -380,7 +391,10 @@ export function QuestionPrompt(props: { request: QuestionRequest }) {
moveTo(options().length)}
onMouseDown={() => moveTo(options().length)}
- onMouseUp={() => selectOption()}
+ onMouseUp={() => {
+ if (renderer.getSelection()?.getSelectedText()) return
+ selectOption()
+ }}
>
diff --git a/packages/opencode/src/cli/error.ts b/packages/opencode/src/cli/error.ts
index 2bb0cb51fd..c92369b0af 100644
--- a/packages/opencode/src/cli/error.ts
+++ b/packages/opencode/src/cli/error.ts
@@ -1,5 +1,6 @@
import { NamedError } from "@opencode-ai/core/util/error"
import { errorFormat } from "@/util/error"
+import { isRecord } from "@/util/record"
interface ErrorLike {
name?: string
@@ -10,10 +11,6 @@ interface ErrorLike {
type ConfigIssue = { message: string; path: string[] }
-function isRecord(input: unknown): input is Record {
- return typeof input === "object" && input !== null
-}
-
function isTaggedError(error: unknown, tag: string): boolean {
return isRecord(error) && error._tag === tag
}
@@ -61,11 +58,13 @@ export function FormatError(input: unknown) {
}
// ProviderModelNotFoundError: { providerID: string, modelID: string, suggestions?: string[] }
- if (NamedError.hasName(input, "ProviderModelNotFoundError")) {
- const data = (input as ErrorLike).data
- const suggestions = Array.isArray(data?.suggestions) ? data.suggestions.filter((x) => typeof x === "string") : []
+ const providerModelNotFound = configData(input, "ProviderModelNotFoundError")
+ if (providerModelNotFound) {
+ const suggestions = Array.isArray(providerModelNotFound.suggestions)
+ ? providerModelNotFound.suggestions.filter((x) => typeof x === "string")
+ : []
return [
- `Model not found: ${data?.providerID}/${data?.modelID}`,
+ `Model not found: ${providerModelNotFound.providerID}/${providerModelNotFound.modelID}`,
...(suggestions.length ? ["Did you mean: " + suggestions.join(", ")] : []),
`Try: \`opencode models\` to list available models`,
`Or check your config (opencode.json) provider/model names`,
@@ -73,8 +72,9 @@ export function FormatError(input: unknown) {
}
// ProviderInitError: { providerID: string }
- if (NamedError.hasName(input, "ProviderInitError")) {
- return `Failed to initialize provider "${(input as ErrorLike).data?.providerID}". Check credentials and configuration.`
+ const providerInit = configData(input, "ProviderInitError")
+ if (providerInit) {
+ return `Failed to initialize provider "${stringField(providerInit, "providerID")}". Check credentials and configuration.`
}
// ConfigJsonError: { path: string, message?: string }
diff --git a/packages/opencode/src/config/attachment.ts b/packages/opencode/src/config/attachment.ts
index a5fc599738..80e44bc2e4 100644
--- a/packages/opencode/src/config/attachment.ts
+++ b/packages/opencode/src/config/attachment.ts
@@ -14,7 +14,7 @@ export const Image = Schema.Struct({
description: "Maximum image height before resizing or rejecting the attachment (default: 2000)",
}),
max_base64_bytes: Schema.optional(PositiveInt).annotate({
- description: "Maximum base64 payload bytes for an image attachment (default: 4718592)",
+ description: "Maximum base64 payload bytes for an image attachment (default: 5242880)",
}),
}).annotate({ identifier: "ImageAttachmentConfig" })
export type Image = Schema.Schema.Type
diff --git a/packages/opencode/src/control-plane/workspace.ts b/packages/opencode/src/control-plane/workspace.ts
index 4a21e2e65e..5b7f867ca9 100644
--- a/packages/opencode/src/control-plane/workspace.ts
+++ b/packages/opencode/src/control-plane/workspace.ts
@@ -10,9 +10,9 @@ import { GlobalBus } from "@/bus/global"
import { Auth } from "@/auth"
import { SyncEvent } from "@/sync"
import { EventSequenceTable, EventTable } from "@/sync/event.sql"
+import { AppFileSystem } from "@opencode-ai/core/filesystem"
import * as Log from "@opencode-ai/core/util/log"
import { RuntimeFlags } from "@/effect/runtime-flags"
-import { Filesystem } from "@/util/filesystem"
import { ProjectID } from "@/project/schema"
import { Slug } from "@opencode-ai/core/util/slug"
import { WorkspaceTable } from "./workspace.sql"
@@ -176,6 +176,7 @@ export const layer = Layer.effect(
const sync = yield* SyncEvent.Service
const vcs = yield* Vcs.Service
const flags = yield* RuntimeFlags.Service
+ const fs = yield* AppFileSystem.Service
const connections = new Map()
const syncFibers = yield* FiberMap.make()
@@ -501,7 +502,7 @@ export const layer = Layer.effect(
if (!target) return
if (target.type === "local") {
- setStatus(space.id, (yield* Effect.promise(() => Filesystem.exists(target.directory))) ? "connected" : "error")
+ setStatus(space.id, (yield* fs.existsSafe(target.directory)) ? "connected" : "error")
return
}
@@ -1040,6 +1041,7 @@ export const defaultLayer = layer.pipe(
Layer.provide(SessionPrompt.defaultLayer),
Layer.provide(Project.defaultLayer),
Layer.provide(Vcs.defaultLayer),
+ Layer.provide(AppFileSystem.defaultLayer),
Layer.provide(FetchHttpClient.layer),
Layer.provide(RuntimeFlags.defaultLayer),
)
diff --git a/packages/opencode/src/effect/app-runtime.ts b/packages/opencode/src/effect/app-runtime.ts
index b0efab1ae9..0ce876ddc6 100644
--- a/packages/opencode/src/effect/app-runtime.ts
+++ b/packages/opencode/src/effect/app-runtime.ts
@@ -14,7 +14,7 @@ import { FileWatcher } from "@/file/watcher"
import { Storage } from "@/storage/storage"
import { Snapshot } from "@/snapshot"
import { Plugin } from "@/plugin"
-import { ModelsDev } from "@/provider/models"
+import { ModelsDev } from "@opencode-ai/core/models"
import { Provider } from "@/provider/provider"
import { ProviderAuth } from "@/provider/auth"
import { Agent } from "@/agent/agent"
@@ -56,6 +56,8 @@ import { Npm } from "@opencode-ai/core/npm"
import { memoMap } from "@opencode-ai/core/effect/memo-map"
import { DataMigration } from "@/data-migration"
import { BackgroundJob } from "@/background/job"
+import { EventV2Bridge } from "@/event-v2-bridge"
+import { RuntimeFlags } from "@/effect/runtime-flags"
export const AppLayer = Layer.mergeAll(
Npm.defaultLayer,
@@ -83,6 +85,7 @@ export const AppLayer = Layer.mergeAll(
Session.defaultLayer,
SessionStatus.defaultLayer,
BackgroundJob.defaultLayer,
+ RuntimeFlags.defaultLayer,
SessionRunState.defaultLayer,
SessionProcessor.defaultLayer,
SessionCompaction.defaultLayer,
@@ -109,6 +112,7 @@ export const AppLayer = Layer.mergeAll(
ShareNext.defaultLayer,
SessionShare.defaultLayer,
SyncEvent.defaultLayer,
+ EventV2Bridge.defaultLayer,
DataMigration.defaultLayer,
).pipe(Layer.provideMerge(InstanceLayer.layer), Layer.provideMerge(Observability.layer))
diff --git a/packages/opencode/src/effect/promise.ts b/packages/opencode/src/effect/promise.ts
new file mode 100644
index 0000000000..d7918796ad
--- /dev/null
+++ b/packages/opencode/src/effect/promise.ts
@@ -0,0 +1,17 @@
+import { Cause, Effect } from "effect"
+
+export function refineRejection(
+ evaluate: (signal: AbortSignal) => PromiseLike,
+ refine: (cause: unknown) => E | undefined,
+) {
+ return Effect.tryPromise(evaluate).pipe(
+ Effect.catch((error) => {
+ const cause = Cause.isUnknownError(error) ? error.cause : error
+ const refined = refine(cause)
+ if (refined !== undefined) return Effect.fail(refined)
+ return Effect.die(cause)
+ }),
+ )
+}
+
+export * as EffectPromise from "./promise"
diff --git a/packages/opencode/src/effect/runner.ts b/packages/opencode/src/effect/runner.ts
index 5d7e8778d7..f21a61c97e 100644
--- a/packages/opencode/src/effect/runner.ts
+++ b/packages/opencode/src/effect/runner.ts
@@ -4,11 +4,12 @@ export interface Runner {
readonly state: State
readonly busy: boolean
readonly ensureRunning: (work: Effect.Effect) => Effect.Effect
- readonly startShell: (work: Effect.Effect, ready?: Latch.Latch) => Effect.Effect
+ readonly startShell: (work: Effect.Effect, ready?: Latch.Latch) => Effect.Effect
readonly cancel: Effect.Effect
}
export class Cancelled extends Schema.TaggedErrorClass()("RunnerCancelled", {}) {}
+export class Busy extends Schema.TaggedErrorClass()("RunnerBusy", {}) {}
interface RunHandle {
id: number
@@ -41,12 +42,11 @@ export const make = (
onIdle?: Effect.Effect
onBusy?: Effect.Effect
onInterrupt?: Effect.Effect
- busy?: () => never
},
): Runner => {
const ref = SynchronizedRef.makeUnsafe>({ _tag: "Idle" })
const idle = opts?.onIdle ?? Effect.void
- const busy = opts?.onBusy ?? Effect.void
+ const onBusy = opts?.onBusy ?? Effect.void
const onInterrupt = opts?.onInterrupt
let ids = 0
@@ -137,20 +137,15 @@ export const make = (
}),
).pipe(Effect.flatten)
- const startShell = (work: Effect.Effect, ready?: Latch.Latch) =>
+ const startShell = (work: Effect.Effect, ready?: Latch.Latch): Effect.Effect =>
SynchronizedRef.modifyEffect(
ref,
Effect.fnUntraced(function* (st) {
if (st._tag !== "Idle") {
- return [
- Effect.sync(() => {
- if (opts?.busy) opts.busy()
- throw new Error("Runner is busy")
- }),
- st,
- ] as const
+ const reject: Effect.Effect = Effect.fail(new Busy())
+ return [reject, st] as const
}
- yield* busy
+ yield* onBusy
const id = next()
const cancelled = yield* Deferred.make()
const fiber = yield* work.pipe(Effect.ensuring(finishShell(id)), Effect.forkChild)
diff --git a/packages/opencode/src/effect/runtime-flags.ts b/packages/opencode/src/effect/runtime-flags.ts
index 4d184c43b3..f4774d156b 100644
--- a/packages/opencode/src/effect/runtime-flags.ts
+++ b/packages/opencode/src/effect/runtime-flags.ts
@@ -2,13 +2,25 @@ import { Config, ConfigProvider, Context, Effect, Layer } from "effect"
import { ConfigService } from "@/effect/config-service"
const bool = (name: string) => Config.boolean(name).pipe(Config.withDefault(false))
+const positiveInteger = (name: string) =>
+ Config.number(name).pipe(
+ Config.map((value) => (Number.isInteger(value) && value > 0 ? value : undefined)),
+ Config.orElse(() => Config.succeed(undefined)),
+ )
const experimental = bool("OPENCODE_EXPERIMENTAL")
const enabledByExperimental = (name: string) =>
Config.all({ experimental, enabled: bool(name) }).pipe(Config.map((flags) => flags.experimental || flags.enabled))
export class Service extends ConfigService.Service()("@opencode/RuntimeFlags", {
+ autoShare: bool("OPENCODE_AUTO_SHARE"),
pure: bool("OPENCODE_PURE"),
disableDefaultPlugins: bool("OPENCODE_DISABLE_DEFAULT_PLUGINS"),
+ disableChannelDb: bool("OPENCODE_DISABLE_CHANNEL_DB"),
+ disableEmbeddedWebUi: bool("OPENCODE_DISABLE_EMBEDDED_WEB_UI"),
+ disableClaudeCodeSkills: Config.all({
+ broad: bool("OPENCODE_DISABLE_CLAUDE_CODE"),
+ direct: bool("OPENCODE_DISABLE_CLAUDE_CODE_SKILLS"),
+ }).pipe(Config.map((flags) => flags.broad || flags.direct)),
enableExa: Config.all({
experimental,
enabled: bool("OPENCODE_ENABLE_EXA"),
@@ -18,12 +30,18 @@ export class Service extends ConfigService.Service()("@opencode/Runtime
enabled: bool("OPENCODE_ENABLE_PARALLEL"),
legacy: bool("OPENCODE_EXPERIMENTAL_PARALLEL"),
}).pipe(Config.map((flags) => flags.enabled || flags.legacy)),
+ enableExperimentalModels: bool("OPENCODE_ENABLE_EXPERIMENTAL_MODELS"),
enableQuestionTool: bool("OPENCODE_ENABLE_QUESTION_TOOL"),
experimentalScout: enabledByExperimental("OPENCODE_EXPERIMENTAL_SCOUT"),
+ experimentalBackgroundSubagents: enabledByExperimental("OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS"),
+ experimentalLspTy: bool("OPENCODE_EXPERIMENTAL_LSP_TY"),
experimentalLspTool: enabledByExperimental("OPENCODE_EXPERIMENTAL_LSP_TOOL"),
+ experimentalOxfmt: enabledByExperimental("OPENCODE_EXPERIMENTAL_OXFMT"),
experimentalPlanMode: enabledByExperimental("OPENCODE_EXPERIMENTAL_PLAN_MODE"),
experimentalEventSystem: enabledByExperimental("OPENCODE_EXPERIMENTAL_EVENT_SYSTEM"),
experimentalWorkspaces: enabledByExperimental("OPENCODE_EXPERIMENTAL_WORKSPACES"),
+ experimentalIconDiscovery: enabledByExperimental("OPENCODE_EXPERIMENTAL_ICON_DISCOVERY"),
+ bashDefaultTimeoutMs: positiveInteger("OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS"),
client: Config.string("OPENCODE_CLIENT").pipe(Config.withDefault("cli")),
}) {}
diff --git a/packages/opencode/src/event-v2-bridge.ts b/packages/opencode/src/event-v2-bridge.ts
new file mode 100644
index 0000000000..7ea2e9d1bb
--- /dev/null
+++ b/packages/opencode/src/event-v2-bridge.ts
@@ -0,0 +1,99 @@
+// Temporary V2 bridge: core events are the publish path, but the rest of
+// opencode and the HTTP event stream still expect legacy bus/sync payloads.
+// This layer goes away once consumers subscribe to core EventV2 directly.
+import { Bus as ProjectBus } from "@/bus"
+import { GlobalBus } from "@/bus/global"
+import { InstanceRef, WorkspaceRef } from "@/effect/instance-ref"
+import { InstanceStore } from "@/project/instance-store"
+import { SyncEvent } from "@/sync"
+import { EventV2 } from "@opencode-ai/core/event"
+import "@opencode-ai/core/catalog"
+import "@opencode-ai/core/session-event"
+import { Context, Effect, Layer, Option } from "effect"
+
+const syncDefinitions = new WeakMap()
+
+export function toSyncDefinition(
+ definition: D,
+): SyncEvent.Definition {
+ const cached = syncDefinitions.get(definition)
+ if (cached) return cached as SyncEvent.Definition
+ if (definition.version === undefined)
+ throw new Error(`Event.toSyncDefinition: version required for ${definition.type}`)
+ if (!definition.aggregate) throw new Error(`Event.toSyncDefinition: aggregate required for ${definition.type}`)
+ const result = {
+ type: definition.type,
+ version: definition.version,
+ aggregate: definition.aggregate,
+ schema: definition.data,
+ properties: definition.data,
+ }
+ syncDefinitions.set(definition, result)
+ return result
+}
+
+export class Service extends Context.Service()("@opencode/EventV2Bridge") {}
+
+export const layer = Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const events = yield* EventV2.Service
+ const bus = yield* ProjectBus.Service
+ const sync = yield* SyncEvent.Service
+
+ const publishGlobal = (event: EventV2.Payload) =>
+ Effect.sync(() => {
+ GlobalBus.emit("event", {
+ workspace: event.location?.workspaceID,
+ payload: {
+ id: event.id,
+ type: event.type,
+ properties: event.data,
+ },
+ })
+ })
+
+ const provideEventLocation = (event: EventV2.Payload, effect: Effect.Effect) => {
+ return Effect.gen(function* () {
+ const ctx = yield* InstanceRef
+ if (ctx) return yield* effect
+ const store = Option.getOrUndefined(yield* Effect.serviceOption(InstanceStore.Service))
+ if (!event.location?.directory || !store) return yield* publishGlobal(event)
+ return yield* store.load({ directory: event.location.directory }).pipe(
+ Effect.flatMap((ctx) => {
+ const withInstance = effect.pipe(Effect.provideService(InstanceRef, ctx))
+ if (!event.location?.workspaceID) return withInstance
+ return withInstance.pipe(Effect.provideService(WorkspaceRef, event.location.workspaceID))
+ }),
+ )
+ })
+ }
+
+ const unsubscribe = yield* events.sync((event) => {
+ const definition = EventV2.registry.get(event.type)
+ if (!definition) return Effect.void
+ const aggregateID = definition.aggregate
+ ? (event.data as Record)[definition.aggregate]
+ : undefined
+
+ if (definition.version !== undefined && typeof aggregateID === "string") {
+ return provideEventLocation(event, sync.run(toSyncDefinition(definition), event.data))
+ }
+
+ return provideEventLocation(
+ event,
+ bus.publish({ type: definition.type, properties: definition.data }, event.data, { id: event.id }),
+ )
+ })
+ yield* Effect.addFinalizer(() => unsubscribe)
+ return Service.of(events)
+ }),
+)
+
+export const defaultLayer = layer.pipe(
+ Layer.provideMerge(EventV2.defaultLayer),
+ Layer.provide(SyncEvent.defaultLayer),
+ Layer.provide(ProjectBus.defaultLayer),
+)
+
+export * as EventV2Bridge from "./event-v2-bridge"
diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts
index dbc1326017..4c559631f2 100644
--- a/packages/opencode/src/format/formatter.ts
+++ b/packages/opencode/src/format/formatter.ts
@@ -3,9 +3,10 @@ import type { InstanceContext } from "../project/instance"
import { Filesystem } from "@/util/filesystem"
import { Process } from "@/util/process"
import { which } from "../util/which"
-import { Flag } from "@opencode-ai/core/flag/flag"
-export interface Context extends Pick {}
+export interface Context extends Pick {
+ experimentalOxfmt: boolean
+}
export interface Info {
name: string
@@ -90,7 +91,7 @@ export const oxfmt: Info = {
},
extensions: [".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"],
async enabled(context) {
- if (!Flag.OPENCODE_EXPERIMENTAL_OXFMT) return false
+ if (!context.experimentalOxfmt) return false
const items = await Filesystem.findUp("package.json", context.directory, context.worktree)
for (const item of items) {
const json = await Filesystem.readJson<{
diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts
index d8365e0fa7..50abba0ff9 100644
--- a/packages/opencode/src/format/index.ts
+++ b/packages/opencode/src/format/index.ts
@@ -5,6 +5,8 @@ import { InstanceState } from "@/effect/instance-state"
import path from "path"
import { mergeDeep } from "remeda"
import { Config } from "@/config/config"
+import { RuntimeFlags } from "@/effect/runtime-flags"
+import { errorMessage } from "@/util/error"
import * as Log from "@opencode-ai/core/util/log"
import * as Formatter from "./formatter"
@@ -30,6 +32,7 @@ export const layer = Layer.effect(
Effect.gen(function* () {
const config = yield* Config.Service
const appProcess = yield* AppProcess.Service
+ const flags = yield* RuntimeFlags.Service
const state = yield* InstanceState.make(
Effect.fn("Format.state")(function* (ctx) {
@@ -39,7 +42,7 @@ export const layer = Layer.effect(
async function getCommand(item: Formatter.Info) {
let cmd = commands[item.name]
if (cmd === false || cmd === undefined) {
- cmd = await item.enabled(ctx)
+ cmd = await item.enabled({ ...ctx, experimentalOxfmt: flags.experimentalOxfmt })
commands[item.name] = cmd
}
return cmd
@@ -100,7 +103,7 @@ export const layer = Layer.effect(
command: cmd,
...item.environment,
file: filepath,
- cause: error.message,
+ cause: errorMessage(error.cause ?? error),
})
return undefined
}),
@@ -197,6 +200,10 @@ export const layer = Layer.effect(
}),
)
-export const defaultLayer = layer.pipe(Layer.provide(Config.defaultLayer), Layer.provide(AppProcess.defaultLayer))
+export const defaultLayer = layer.pipe(
+ Layer.provide(Config.defaultLayer),
+ Layer.provide(AppProcess.defaultLayer),
+ Layer.provide(RuntimeFlags.defaultLayer),
+)
export * as Format from "."
diff --git a/packages/opencode/src/git/index.ts b/packages/opencode/src/git/index.ts
index 4c88edaea3..5e76b7f731 100644
--- a/packages/opencode/src/git/index.ts
+++ b/packages/opencode/src/git/index.ts
@@ -124,7 +124,7 @@ export const layer = Layer.effect(
text: () => result.stdout.toString("utf8"),
stdout: result.stdout,
stderr: result.stderr,
- truncated: result.truncated,
+ truncated: result.stdoutTruncated || result.stderrTruncated,
} satisfies Result
},
Effect.catch((err) => Effect.succeed(fail(err))),
diff --git a/packages/opencode/src/image/image.ts b/packages/opencode/src/image/image.ts
index 2115e19198..2a3c4fa5c0 100644
--- a/packages/opencode/src/image/image.ts
+++ b/packages/opencode/src/image/image.ts
@@ -1,21 +1,24 @@
import { Config } from "@/config/config"
import type { MessageV2 } from "@/session/message-v2"
import * as Log from "@opencode-ai/core/util/log"
+import photonWasm from "@silvia-odwyer/photon-node/photon_rs_bg.wasm" with { type: "file" }
import { Context, Effect, Layer, Schema } from "effect"
+import path from "node:path"
+import { fileURLToPath } from "node:url"
-const MAX_BASE64_BYTES = 4.5 * 1024 * 1024
+const MAX_BASE64_BYTES = 5 * 1024 * 1024
const MAX_WIDTH = 2000
const MAX_HEIGHT = 2000
const AUTO_RESIZE = true
const JPEG_QUALITIES = [80, 85, 70, 55, 40]
const log = Log.create({ service: "image" })
-export class PhotonUnavailableError extends Schema.TaggedErrorClass()(
- "ImagePhotonUnavailableError",
+export class ResizerUnavailableError extends Schema.TaggedErrorClass()(
+ "ImageResizerUnavailableError",
{},
) {
override get message() {
- return "Photon image processor is unavailable"
+ return "Image resizer is unavailable"
}
}
@@ -46,7 +49,7 @@ export class SizeError extends Schema.TaggedErrorClass()("ImageSizeEr
}
}
-export type Error = PhotonUnavailableError | InvalidDataUrlError | DecodeError | SizeError
+export type Error = ResizerUnavailableError | InvalidDataUrlError | DecodeError | SizeError
export interface Interface {
readonly normalize: (input: MessageV2.FilePart) => Effect.Effect
@@ -59,18 +62,15 @@ export const layer = Layer.effect(
Effect.gen(function* () {
const config = yield* Config.Service
const loadPhoton = yield* Effect.cached(
- Effect.promise(async () => {
- try {
- const photonWasm = (await import("@silvia-odwyer/photon-node/photon_rs_bg.wasm", { with: { type: "file" } }))
- .default
- // Patched photon-node reads this during module init so Bun compiled binaries use the embedded wasm path.
- ;(globalThis as typeof globalThis & { __OPENCODE_PHOTON_WASM_PATH?: string }).__OPENCODE_PHOTON_WASM_PATH =
- photonWasm
- return await import("@silvia-odwyer/photon-node")
- } catch {
- return null
- }
- }),
+ Effect.sync(() => {
+ // Patched photon-node reads this during module init so Bun compiled binaries use the embedded wasm path.
+ ;(globalThis as typeof globalThis & { __OPENCODE_PHOTON_WASM_PATH?: string }).__OPENCODE_PHOTON_WASM_PATH =
+ path.isAbsolute(photonWasm) ? photonWasm : fileURLToPath(new URL(photonWasm, import.meta.url))
+ }).pipe(
+ Effect.andThen(() => Effect.tryPromise(() => import("@silvia-odwyer/photon-node"))),
+ Effect.tapError((error) => Effect.sync(() => log.warn("failed to load photon", { error }))),
+ Effect.mapError(() => new ResizerUnavailableError()),
+ ),
)
const normalize = Effect.fn("Image.normalize")(function* (input: MessageV2.FilePart) {
@@ -85,30 +85,26 @@ export const layer = Layer.effect(
return yield* new InvalidDataUrlError({ url: input.url })
const base64 = input.url.slice(input.url.indexOf(";base64,") + ";base64,".length)
- const photon = yield* loadPhoton
- if (!photon) return yield* new PhotonUnavailableError()
+ const bytes = Buffer.byteLength(base64, "utf8")
- const decoded = yield* Effect.sync(() => {
- try {
- return photon.PhotonImage.new_from_byteslice(Buffer.from(base64, "base64"))
- } catch {
- return undefined
- }
+ const photon = yield* loadPhoton
+
+ const decoded = yield* Effect.try({
+ try: () => photon.PhotonImage.new_from_byteslice(Buffer.from(base64, "base64")),
+ catch: (error) => {
+ log.warn("failed to decode image", { error })
+ return new DecodeError()
+ },
})
- if (!decoded) return yield* new DecodeError()
try {
const originalWidth = decoded.get_width()
const originalHeight = decoded.get_height()
- if (
- originalWidth <= info.maxWidth &&
- originalHeight <= info.maxHeight &&
- Buffer.byteLength(base64, "utf8") <= info.maxBase64Bytes
- )
+ if (originalWidth <= info.maxWidth && originalHeight <= info.maxHeight && bytes <= info.maxBase64Bytes)
return input
if (!info.autoResize)
return yield* new SizeError({
- bytes: Buffer.byteLength(base64, "utf8"),
+ bytes,
max: info.maxBase64Bytes,
width: originalWidth,
height: originalHeight,
@@ -159,7 +155,7 @@ export const layer = Layer.effect(
}
return yield* new SizeError({
- bytes: Buffer.byteLength(base64, "utf8"),
+ bytes,
max: info.maxBase64Bytes,
width: originalWidth,
height: originalHeight,
diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts
index 00fbabe351..9b0e06c4af 100644
--- a/packages/opencode/src/installation/index.ts
+++ b/packages/opencode/src/installation/index.ts
@@ -1,6 +1,7 @@
import { Effect, Layer, Schema, Context, Stream } from "effect"
import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
import { withTransientReadRetry } from "@/util/effect-http-client"
+import { errorMessage } from "@/util/error"
import { ChildProcess } from "effect/unstable/process"
import { AppProcess } from "@opencode-ai/core/process"
import path from "path"
@@ -124,7 +125,7 @@ export const layer: Layer.Layer Effect.succeed({ code: 1, stdout: "", stderr: "" })),
+ Effect.catch((err) => Effect.succeed({ code: 1, stdout: "", stderr: errorMessage(err) })),
)
const getBrewFormula = Effect.fnUntraced(function* () {
diff --git a/packages/opencode/src/lsp/client.ts b/packages/opencode/src/lsp/client.ts
index ac9706fc36..30577a8f11 100644
--- a/packages/opencode/src/lsp/client.ts
+++ b/packages/opencode/src/lsp/client.ts
@@ -9,7 +9,6 @@ import { Process } from "@/util/process"
import { LANGUAGE_EXTENSIONS } from "./language"
import { Schema } from "effect"
import type * as LSPServer from "./server"
-import { NamedError } from "@opencode-ai/core/util/error"
import { withTimeout } from "../util/timeout"
import { Filesystem } from "@/util/filesystem"
@@ -31,9 +30,10 @@ export type Info = NonNullable>>
export type Diagnostic = VSCodeDiagnostic
-export const InitializeError = NamedError.create("LSPInitializeError", {
+export class InitializeError extends Schema.TaggedErrorClass()("LSPInitializeError", {
serverID: Schema.String,
-})
+ cause: Schema.optional(Schema.Defect),
+}) {}
export const Event = {
Diagnostics: BusEvent.define(
@@ -275,12 +275,7 @@ export async function create(input: { serverID: string; server: LSPServer.Handle
INITIALIZE_TIMEOUT_MS,
).catch((err) => {
logger.error("initialize error", { error: err })
- throw new InitializeError(
- { serverID: input.serverID },
- {
- cause: err,
- },
- )
+ throw new InitializeError({ serverID: input.serverID, cause: err })
})
const syncKind = getSyncKind(initialized.capabilities)
diff --git a/packages/opencode/src/lsp/lsp.ts b/packages/opencode/src/lsp/lsp.ts
index 0249721c44..d74bbae933 100644
--- a/packages/opencode/src/lsp/lsp.ts
+++ b/packages/opencode/src/lsp/lsp.ts
@@ -6,13 +6,13 @@ import path from "path"
import { pathToFileURL, fileURLToPath } from "url"
import * as LSPServer from "./server"
import { Config } from "@/config/config"
-import { Flag } from "@opencode-ai/core/flag/flag"
import { Process } from "@/util/process"
import { spawn as lspspawn } from "./launch"
import { Effect, Layer, Context, Schema } from "effect"
import { InstanceState } from "@/effect/instance-state"
import { containsPath } from "@/project/instance-context"
import { NonNegativeInt } from "@opencode-ai/core/schema"
+import { RuntimeFlags } from "@/effect/runtime-flags"
const log = Log.create({ service: "lsp" })
@@ -98,8 +98,8 @@ const kinds = [
SymbolKind.Enum,
]
-const filterExperimentalServers = (servers: Record) => {
- if (Flag.OPENCODE_EXPERIMENTAL_LSP_TY) {
+const filterExperimentalServers = (servers: Record, flags: RuntimeFlags.Info) => {
+ if (flags.experimentalLspTy) {
if (servers["pyright"]) {
log.info("LSP server pyright is disabled because OPENCODE_EXPERIMENTAL_LSP_TY is enabled")
delete servers["pyright"]
@@ -143,6 +143,7 @@ export const layer = Layer.effect(
Service,
Effect.gen(function* () {
const config = yield* Config.Service
+ const flags = yield* RuntimeFlags.Service
const state = yield* InstanceState.make(
Effect.fn("LSP.state")(function* (ctx) {
@@ -157,7 +158,7 @@ export const layer = Layer.effect(
servers[server.id] = server
}
- filterExperimentalServers(servers)
+ filterExperimentalServers(servers, flags)
if (cfg.lsp !== true) {
for (const [name, item] of Object.entries(cfg.lsp)) {
@@ -217,7 +218,7 @@ export const layer = Layer.effect(
async function schedule(server: LSPServer.Info, root: string, key: string) {
const handle = await server
- .spawn(root, ctx)
+ .spawn(root, ctx, flags)
.then((value) => {
if (!value) s.broken.add(key)
return value
@@ -498,7 +499,7 @@ export const layer = Layer.effect(
}),
)
-export const defaultLayer = layer.pipe(Layer.provide(Config.defaultLayer))
+export const defaultLayer = layer.pipe(Layer.provide(Config.defaultLayer), Layer.provide(RuntimeFlags.defaultLayer))
export * as Diagnostic from "./diagnostic"
diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts
index b8861d1f81..454fbc1dbd 100644
--- a/packages/opencode/src/lsp/server.ts
+++ b/packages/opencode/src/lsp/server.ts
@@ -14,6 +14,7 @@ import { which } from "../util/which"
import { Module } from "@opencode-ai/core/util/module"
import { spawn } from "./launch"
import { Npm } from "@opencode-ai/core/npm"
+import type { RuntimeFlags } from "@/effect/runtime-flags"
const log = Log.create({ service: "lsp.server" })
const pathExists = async (p: string) =>
@@ -60,7 +61,7 @@ export interface Info {
extensions: string[]
global?: boolean
root: RootFunction
- spawn(root: string, ctx: InstanceContext): Promise
+ spawn(root: string, ctx: InstanceContext, flags: RuntimeFlags.Info): Promise
}
export const Deno: Info = {
@@ -431,8 +432,8 @@ export const Ty: Info = {
"Pipfile",
"pyrightconfig.json",
]),
- async spawn(root) {
- if (!Flag.OPENCODE_EXPERIMENTAL_LSP_TY) {
+ async spawn(root, _ctx, flags) {
+ if (!flags.experimentalLspTy) {
return undefined
}
diff --git a/packages/opencode/src/patch/index.ts b/packages/opencode/src/patch/index.ts
index 3dfa6f2d06..42b26fe963 100644
--- a/packages/opencode/src/patch/index.ts
+++ b/packages/opencode/src/patch/index.ts
@@ -1,7 +1,6 @@
-import { Schema } from "effect"
+import { Effect, Schema } from "effect"
import * as path from "path"
-import * as fs from "fs/promises"
-import { readFileSync } from "fs"
+import { AppFileSystem } from "@opencode-ai/core/filesystem"
import * as Log from "@opencode-ai/core/util/log"
import * as Bom from "../util/bom"
@@ -308,14 +307,12 @@ interface ApplyPatchFileUpdate {
bom: boolean
}
-export function deriveNewContentsFromChunks(filePath: string, chunks: UpdateFileChunk[]): ApplyPatchFileUpdate {
- // Read original file content
- let originalContent: ReturnType
- try {
- originalContent = Bom.split(readFileSync(filePath, "utf-8"))
- } catch (error) {
- throw new Error(`Failed to read file ${filePath}: ${error}`, { cause: error })
- }
+export function deriveNewContentsFromChunks(
+ filePath: string,
+ chunks: UpdateFileChunk[],
+ originalText: string,
+): ApplyPatchFileUpdate {
+ const originalContent = Bom.split(originalText)
let originalLines = originalContent.text.split("\n")
@@ -423,11 +420,11 @@ function applyReplacements(lines: string[], replacements: Array<[number, number,
// Normalize Unicode punctuation to ASCII equivalents (like Rust's normalize_unicode)
function normalizeUnicode(str: string): string {
return str
- .replace(/[\u2018\u2019\u201A\u201B]/g, "'") // single quotes
- .replace(/[\u201C\u201D\u201E\u201F]/g, '"') // double quotes
- .replace(/[\u2010\u2011\u2012\u2013\u2014\u2015]/g, "-") // dashes
- .replace(/\u2026/g, "...") // ellipsis
- .replace(/\u00A0/g, " ") // non-breaking space
+ .replace(/[‘’‚‛]/g, "'") // single quotes
+ .replace(/[“”„‟]/g, '"') // double quotes
+ .replace(/[‐‑‒–—―]/g, "-") // dashes
+ .replace(/…/g, "...") // ellipsis
+ .replace(/ /g, " ") // non-breaking space
}
type Comparator = (a: string, b: string) => boolean
@@ -517,77 +514,71 @@ function generateUnifiedDiff(oldContent: string, newContent: string): string {
}
// Apply hunks to filesystem
-export async function applyHunksToFiles(hunks: Hunk[]): Promise {
+export const applyHunksToFiles = Effect.fn("Patch.applyHunksToFiles")(function* (hunks: Hunk[]) {
if (hunks.length === 0) {
- throw new Error("No files were modified.")
+ return yield* Effect.fail(new Error("No files were modified."))
}
+ const fs = yield* AppFileSystem.Service
+
const added: string[] = []
const modified: string[] = []
const deleted: string[] = []
for (const hunk of hunks) {
switch (hunk.type) {
- case "add":
- // Create parent directories
- const addDir = path.dirname(hunk.path)
- if (addDir !== "." && addDir !== "/") {
- await fs.mkdir(addDir, { recursive: true })
- }
-
- await fs.writeFile(hunk.path, hunk.contents, "utf-8")
+ case "add": {
+ yield* fs.writeWithDirs(hunk.path, hunk.contents)
added.push(hunk.path)
log.info(`Added file: ${hunk.path}`)
break
+ }
- case "delete":
- await fs.unlink(hunk.path)
+ case "delete": {
+ yield* fs.remove(hunk.path)
deleted.push(hunk.path)
log.info(`Deleted file: ${hunk.path}`)
break
+ }
- case "update":
- const fileUpdate = deriveNewContentsFromChunks(hunk.path, hunk.chunks)
+ case "update": {
+ const originalText = yield* fs.readFileString(hunk.path)
+ const fileUpdate = deriveNewContentsFromChunks(hunk.path, hunk.chunks, originalText)
if (hunk.move_path) {
- // Handle file move
- const moveDir = path.dirname(hunk.move_path)
- if (moveDir !== "." && moveDir !== "/") {
- await fs.mkdir(moveDir, { recursive: true })
- }
-
- await fs.writeFile(hunk.move_path, Bom.join(fileUpdate.content, fileUpdate.bom), "utf-8")
- await fs.unlink(hunk.path)
+ yield* fs.writeWithDirs(hunk.move_path, Bom.join(fileUpdate.content, fileUpdate.bom))
+ yield* fs.remove(hunk.path)
modified.push(hunk.move_path)
log.info(`Moved file: ${hunk.path} -> ${hunk.move_path}`)
} else {
- // Regular update
- await fs.writeFile(hunk.path, Bom.join(fileUpdate.content, fileUpdate.bom), "utf-8")
+ yield* fs.writeWithDirs(hunk.path, Bom.join(fileUpdate.content, fileUpdate.bom))
modified.push(hunk.path)
log.info(`Updated file: ${hunk.path}`)
}
break
+ }
}
}
- return { added, modified, deleted }
-}
+ return { added, modified, deleted } satisfies AffectedPaths
+})
// Main patch application function
-export async function applyPatch(patchText: string): Promise {
+export const applyPatch = Effect.fn("Patch.applyPatch")(function* (patchText: string) {
const { hunks } = parsePatch(patchText)
- return applyHunksToFiles(hunks)
-}
+ return yield* applyHunksToFiles(hunks)
+})
-// Async version of maybeParseApplyPatchVerified
-export async function maybeParseApplyPatchVerified(
- argv: string[],
- cwd: string,
-): Promise<
+type MaybeApplyPatchVerifiedResult =
| { type: MaybeApplyPatchVerified.Body; action: ApplyPatchAction }
| { type: MaybeApplyPatchVerified.CorrectnessError; error: Error }
| { type: MaybeApplyPatchVerified.NotApplyPatch }
-> {
+
+// Effectful verified-parse: needs AppFileSystem.Service to read existing files
+export const maybeParseApplyPatchVerified = Effect.fn("Patch.maybeParseApplyPatchVerified")(function* (
+ argv: string[],
+ cwd: string,
+) {
// Detect implicit patch invocation (raw patch without apply_patch command)
if (argv.length === 1) {
try {
@@ -595,7 +586,7 @@ export async function maybeParseApplyPatchVerified(
return {
type: MaybeApplyPatchVerified.CorrectnessError,
error: new Error(ApplyPatchError.ImplicitInvocation),
- }
+ } satisfies MaybeApplyPatchVerifiedResult
} catch {
// Not a patch, continue
}
@@ -604,8 +595,9 @@ export async function maybeParseApplyPatchVerified(
const result = maybeParseApplyPatch(argv)
switch (result.type) {
- case MaybeApplyPatch.Body:
- const { args } = result
+ case MaybeApplyPatch.Body: {
+ const fs = yield* AppFileSystem.Service
+ const args = result.args
const effectiveCwd = args.workdir ? path.resolve(cwd, args.workdir) : cwd
const changes = new Map()
@@ -623,27 +615,39 @@ export async function maybeParseApplyPatchVerified(
})
break
- case "delete":
- // For delete, we need to read the current content
+ case "delete": {
const deletePath = path.resolve(effectiveCwd, hunk.path)
- try {
- const content = await fs.readFile(deletePath, "utf-8")
- changes.set(resolvedPath, {
- type: "delete",
- content,
- })
- } catch {
+ const content = yield* fs.readFileString(deletePath).pipe(Effect.catch(() => Effect.succeed(undefined)))
+ if (content === undefined) {
return {
type: MaybeApplyPatchVerified.CorrectnessError,
error: new Error(`Failed to read file for deletion: ${deletePath}`),
- }
+ } satisfies MaybeApplyPatchVerifiedResult
}
+ changes.set(resolvedPath, {
+ type: "delete",
+ content,
+ })
break
+ }
- case "update":
+ case "update": {
const updatePath = path.resolve(effectiveCwd, hunk.path)
+ const originalText = yield* fs
+ .readFileString(updatePath)
+ .pipe(
+ Effect.catch((cause) =>
+ Effect.succeed(new Error(`Failed to read file ${updatePath}: ${cause}`, { cause })),
+ ),
+ )
+ if (originalText instanceof Error) {
+ return {
+ type: MaybeApplyPatchVerified.CorrectnessError,
+ error: originalText,
+ } satisfies MaybeApplyPatchVerifiedResult
+ }
try {
- const fileUpdate = deriveNewContentsFromChunks(updatePath, hunk.chunks)
+ const fileUpdate = deriveNewContentsFromChunks(updatePath, hunk.chunks, originalText)
changes.set(resolvedPath, {
type: "update",
unified_diff: fileUpdate.unified_diff,
@@ -654,9 +658,10 @@ export async function maybeParseApplyPatchVerified(
return {
type: MaybeApplyPatchVerified.CorrectnessError,
error: error as Error,
- }
+ } satisfies MaybeApplyPatchVerifiedResult
}
break
+ }
}
}
@@ -667,17 +672,18 @@ export async function maybeParseApplyPatchVerified(
patch: args.patch,
cwd: effectiveCwd,
},
- }
+ } satisfies MaybeApplyPatchVerifiedResult
+ }
case MaybeApplyPatch.PatchParseError:
return {
type: MaybeApplyPatchVerified.CorrectnessError,
error: result.error,
- }
+ } satisfies MaybeApplyPatchVerifiedResult
case MaybeApplyPatch.NotApplyPatch:
- return { type: MaybeApplyPatchVerified.NotApplyPatch }
+ return { type: MaybeApplyPatchVerified.NotApplyPatch } satisfies MaybeApplyPatchVerifiedResult
}
-}
+})
export * as Patch from "."
diff --git a/packages/opencode/src/plugin/digitalocean.ts b/packages/opencode/src/plugin/digitalocean.ts
index fa4adf6331..19d1364875 100644
--- a/packages/opencode/src/plugin/digitalocean.ts
+++ b/packages/opencode/src/plugin/digitalocean.ts
@@ -59,7 +59,7 @@ function buildAuthorizeUrl(state: string): string {
response_type: "token",
client_id: DO_OAUTH_CLIENT_ID,
redirect_uri: redirectUri(),
- scope: "read write",
+ scope: "genai:create genai:read",
state,
})
return `${DO_AUTHORIZE_URL}?${params.toString()}`
diff --git a/packages/opencode/src/project/project.ts b/packages/opencode/src/project/project.ts
index 643685539d..399412cdce 100644
--- a/packages/opencode/src/project/project.ts
+++ b/packages/opencode/src/project/project.ts
@@ -19,6 +19,7 @@ import { AppFileSystem } from "@opencode-ai/core/filesystem"
import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner"
import { NonNegativeInt, optionalOmitUndefined } from "@opencode-ai/core/schema"
import { serviceUse } from "@/effect/service-use"
+import { RuntimeFlags } from "@/effect/runtime-flags"
const log = Log.create({ service: "project" })
@@ -130,7 +131,7 @@ type GitResult = { code: number; text: string; stderr: string }
export const layer: Layer.Layer<
Service,
never,
- AppFileSystem.Service | Path.Path | ChildProcessSpawner.ChildProcessSpawner | Bus.Service
+ AppFileSystem.Service | Path.Path | ChildProcessSpawner.ChildProcessSpawner | Bus.Service | RuntimeFlags.Service
> = Layer.effect(
Service,
Effect.gen(function* () {
@@ -138,6 +139,7 @@ export const layer: Layer.Layer<
const pathSvc = yield* Path.Path
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner
const bus = yield* Bus.Service
+ const flags = yield* RuntimeFlags.Service
const git = Effect.fnUntraced(
function* (args: string[], opts?: { cwd?: string }) {
@@ -282,7 +284,7 @@ export const layer: Layer.Layer<
time: { created: Date.now(), updated: Date.now() },
}
- if (Flag.OPENCODE_EXPERIMENTAL_ICON_DISCOVERY) yield* discover(existing).pipe(Effect.ignore, Effect.forkIn(scope))
+ if (flags.experimentalIconDiscovery) yield* discover(existing).pipe(Effect.ignore, Effect.forkIn(scope))
const result: Info = {
...existing,
@@ -505,6 +507,7 @@ export const defaultLayer = layer.pipe(
Layer.provide(CrossSpawnSpawner.defaultLayer),
Layer.provide(AppFileSystem.defaultLayer),
Layer.provide(NodePath.layer),
+ Layer.provide(RuntimeFlags.defaultLayer),
)
export const use = serviceUse(Service)
diff --git a/packages/opencode/src/provider/model-status.ts b/packages/opencode/src/provider/model-status.ts
index 468b59ce39..7e1ca56e28 100644
--- a/packages/opencode/src/provider/model-status.ts
+++ b/packages/opencode/src/provider/model-status.ts
@@ -1,7 +1,6 @@
import { Schema } from "effect"
-export const CatalogModelStatus = Schema.Literals(["alpha", "beta", "deprecated"])
-export type CatalogModelStatus = typeof CatalogModelStatus.Type
+export { CatalogModelStatus } from "@opencode-ai/core/models"
export const ModelStatus = Schema.Literals(["alpha", "beta", "deprecated", "active"])
export type ModelStatus = typeof ModelStatus.Type
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index 0f757caf19..063e2800d1 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -8,12 +8,10 @@ import { Npm } from "@opencode-ai/core/npm"
import { Hash } from "@opencode-ai/core/util/hash"
import { Plugin } from "../plugin"
import { type LanguageModelV3 } from "@ai-sdk/provider"
-import * as ModelsDev from "./models"
+import * as ModelsDev from "@opencode-ai/core/models"
import { Auth } from "../auth"
import { Env } from "../env"
import { InstallationVersion } from "@opencode-ai/core/installation/version"
-import { Flag } from "@opencode-ai/core/flag/flag"
-import { NamedError } from "@opencode-ai/core/util/error"
import { iife } from "@/util/iife"
import { Global } from "@opencode-ai/core/global"
import path from "path"
@@ -21,12 +19,14 @@ import { pathToFileURL } from "url"
import { Effect, Layer, Context, Schema, Types } from "effect"
import { EffectBridge } from "@/effect/bridge"
import { InstanceState } from "@/effect/instance-state"
+import { EffectPromise } from "@/effect/promise"
import { AppFileSystem } from "@opencode-ai/core/filesystem"
import { isRecord } from "@/util/record"
import { optionalOmitUndefined } from "@opencode-ai/core/schema"
import * as ProviderTransform from "./transform"
import { ModelID, ProviderID } from "./schema"
import { ModelStatus } from "./model-status"
+import { RuntimeFlags } from "@/effect/runtime-flags"
const log = Log.create({ service: "provider" })
@@ -427,13 +427,14 @@ function custom(dep: CustomDep): Record {
},
},
}),
- nvidia: () =>
+ nvidia: (provider) =>
Effect.succeed({
- autoload: false,
+ autoload: provider.source === "config",
options: {
headers: {
"HTTP-Referer": "https://opencode.ai/",
"X-Title": "opencode",
+ "X-BILLING-INVOKE-ORIGIN": "OpenCode",
},
},
}),
@@ -963,11 +964,33 @@ export function defaultModelIDs sort(Object.values(item.models))[0].id)
}
+export class ModelNotFoundError extends Schema.TaggedErrorClass()("ProviderModelNotFoundError", {
+ providerID: ProviderID,
+ modelID: ModelID,
+ suggestions: Schema.optional(Schema.Array(Schema.String)),
+ cause: Schema.optional(Schema.Defect),
+}) {
+ static isInstance(input: unknown): input is ModelNotFoundError {
+ return input instanceof ModelNotFoundError
+ }
+}
+
+export class InitError extends Schema.TaggedErrorClass()("ProviderInitError", {
+ providerID: ProviderID,
+ cause: Schema.optional(Schema.Defect),
+}) {
+ static isInstance(input: unknown): input is InitError {
+ return input instanceof InitError
+ }
+}
+
+export type Error = ModelNotFoundError | InitError
+
export interface Interface {
readonly list: () => Effect.Effect>
readonly getProvider: (providerID: ProviderID) => Effect.Effect
- readonly getModel: (providerID: ProviderID, modelID: ModelID) => Effect.Effect
- readonly getLanguage: (model: Model) => Effect.Effect
+ readonly getModel: (providerID: ProviderID, modelID: ModelID) => Effect.Effect
+ readonly getLanguage: (model: Model) => Effect.Effect
readonly closest: (
providerID: ProviderID,
query: string[],
@@ -1105,18 +1128,18 @@ export function fromModelsDevProvider(provider: ModelsDev.Provider): Info {
}
}
-function suggestionModelIDs(provider: Info | undefined) {
+function suggestionModelIDs(provider: Info | undefined, enableExperimentalModels: boolean) {
if (!provider) return []
return Object.keys(provider.models).filter((id) => {
const model = provider.models[id]
if (model.status === "deprecated") return false
- if (model.status === "alpha" && !Flag.OPENCODE_ENABLE_EXPERIMENTAL_MODELS) return false
+ if (model.status === "alpha" && !enableExperimentalModels) return false
return true
})
}
-function modelSuggestions(provider: Info | undefined, modelID: ModelID) {
- const available = suggestionModelIDs(provider)
+function modelSuggestions(provider: Info | undefined, modelID: ModelID, enableExperimentalModels: boolean) {
+ const available = suggestionModelIDs(provider, enableExperimentalModels)
const fuzzy = fuzzysort.go(modelID, available, { limit: 3, threshold: -10000 }).map((m) => m.target)
if (fuzzy.length) return fuzzy
const query = modelID
@@ -1137,7 +1160,7 @@ function modelSuggestions(provider: Info | undefined, modelID: ModelID) {
.map((item) => item.id)
}
-const layer = Layer.effect(
+export const layer = Layer.effect(
Service,
Effect.gen(function* () {
const fs = yield* AppFileSystem.Service
@@ -1146,6 +1169,7 @@ const layer = Layer.effect(
const env = yield* Env.Service
const plugin = yield* Plugin.Service
const modelsDevSvc = yield* ModelsDev.Service
+ const runtimeFlags = yield* RuntimeFlags.Service
const state = yield* InstanceState.make(() =>
Effect.gen(function* () {
@@ -1438,7 +1462,7 @@ const layer = Layer.effect(
(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 === "alpha" && !runtimeFlags.enableExperimentalModels) delete provider.models[modelID]
if (model.status === "deprecated") delete provider.models[modelID]
if (
(configProvider?.blacklist && configProvider.blacklist.includes(modelID)) ||
@@ -1620,7 +1644,7 @@ const layer = Layer.effect(
s.sdk.set(key, loaded)
return loaded as SDK
} catch (e) {
- throw new InitError({ providerID: model.providerID }, { cause: e })
+ throw new InitError({ providerID: model.providerID, cause: e })
}
}
@@ -1634,18 +1658,20 @@ const layer = Layer.effect(
if (!provider) {
const catalogProvider = s.catalog[providerID]
const suggestions = catalogProvider
- ? modelSuggestions(catalogProvider, modelID)
+ ? modelSuggestions(catalogProvider, modelID, runtimeFlags.enableExperimentalModels)
: fuzzysort
.go(providerID, Object.keys({ ...s.catalog, ...s.providers }), { limit: 3, threshold: -10000 })
.map((m) => m.target)
- throw new ModelNotFoundError({ providerID, modelID, suggestions })
+ return yield* new ModelNotFoundError({ providerID, modelID, suggestions })
}
const info = provider.models[modelID]
if (!info) {
- const current = modelSuggestions(provider, modelID)
- const suggestions = current.length ? current : modelSuggestions(s.catalog[providerID], modelID)
- throw new ModelNotFoundError({ providerID, modelID, suggestions })
+ const current = modelSuggestions(provider, modelID, runtimeFlags.enableExperimentalModels)
+ const suggestions = current.length
+ ? current
+ : modelSuggestions(s.catalog[providerID], modelID, runtimeFlags.enableExperimentalModels)
+ return yield* new ModelNotFoundError({ providerID, modelID, suggestions })
}
return info
})
@@ -1656,11 +1682,10 @@ const layer = Layer.effect(
const key = `${model.providerID}/${model.id}`
if (s.models.has(key)) return s.models.get(key)!
- return yield* Effect.promise(async () => {
- const provider = s.providers[model.providerID]
- const sdk = await resolveSDK(model, s, envs)
-
- try {
+ const provider = s.providers[model.providerID]
+ return yield* EffectPromise.refineRejection(
+ async () => {
+ const sdk = await resolveSDK(model, s, envs)
const language = s.modelLoaders[model.providerID]
? await s.modelLoaders[model.providerID](sdk, model.api.id, {
...provider.options,
@@ -1669,18 +1694,12 @@ const layer = Layer.effect(
: 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
- }
- })
+ },
+ (cause) =>
+ cause instanceof NoSuchModelError
+ ? new ModelNotFoundError({ modelID: model.id, providerID: model.providerID, cause })
+ : undefined,
+ )
})
const closest = Effect.fn("Provider.closest")(function* (providerID: ProviderID, query: string[]) {
@@ -1700,7 +1719,9 @@ const layer = Layer.effect(
if (cfg.small_model) {
const parsed = parseModel(cfg.small_model)
- return yield* getModel(parsed.providerID, parsed.modelID)
+ return yield* getModel(parsed.providerID, parsed.modelID).pipe(
+ Effect.catchTag("ProviderModelNotFoundError", () => Effect.succeed(undefined)),
+ )
}
const s = yield* InstanceState.get(state)
@@ -1728,22 +1749,22 @@ const layer = Layer.effect(
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))
+ if (globalMatch) return provider.models[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))
+ if (regionalMatch) return provider.models[regionalMatch]
}
}
const unprefixed = candidates.find((m) => !crossRegionPrefixes.some((p) => m.startsWith(p)))
- if (unprefixed) return yield* getModel(providerID, ModelID.make(unprefixed))
+ if (unprefixed) return provider.models[unprefixed]
} else {
for (const model of Object.keys(provider.models)) {
- if (model.includes(item)) return yield* getModel(providerID, ModelID.make(model))
+ if (model.includes(item)) return provider.models[model]
}
}
}
@@ -1797,6 +1818,7 @@ export const defaultLayer = Layer.suspend(() =>
Layer.provide(Auth.defaultLayer),
Layer.provide(Plugin.defaultLayer),
Layer.provide(ModelsDev.defaultLayer),
+ Layer.provide(RuntimeFlags.defaultLayer),
),
)
@@ -1818,14 +1840,4 @@ export function parseModel(model: string) {
}
}
-export const ModelNotFoundError = NamedError.create("ProviderModelNotFoundError", {
- providerID: ProviderID,
- modelID: ModelID,
- suggestions: Schema.optional(Schema.Array(Schema.String)),
-})
-
-export const InitError = NamedError.create("ProviderInitError", {
- providerID: ProviderID,
-})
-
export * as Provider from "./provider"
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index 72ec881e7b..56a35d9af1 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -2,7 +2,7 @@ import type { ModelMessage, ToolResultPart } from "ai"
import { mergeDeep, unique } from "remeda"
import type { JSONSchema7 } from "@ai-sdk/provider"
import type * as Provider from "./provider"
-import type * as ModelsDev from "./models"
+import type * as ModelsDev from "@opencode-ai/core/models"
import { iife } from "@/util/iife"
import { Flag } from "@opencode-ai/core/flag/flag"
@@ -617,14 +617,6 @@ function googleThinkingBudgetMax(apiId: string) {
return 24_576
}
-function googleSmallThinkingConfig(apiId: string) {
- const levels = googleThinkingLevelEfforts(apiId)
- if (apiId.toLowerCase().includes("gemini-3")) {
- return { thinkingLevel: levels.includes("minimal") ? "minimal" : levels.includes("low") ? "low" : "high" }
- }
- return { thinkingBudget: googleThinkingBudgetMax(apiId) === 32_768 ? 128 : 0 }
-}
-
export function variants(model: Provider.Model): Record> {
if (!model.capabilities.reasoning) return {}
@@ -1134,19 +1126,15 @@ export function options(input: {
result["enable_thinking"] = true
}
+ if (input.model.api.npm === "@ai-sdk/azure" && input.model.api.id.includes("gpt-5.5")) {
+ result["reasoningSummary"] = "auto"
+ return result
+ }
+
if (input.model.api.id.includes("gpt-5") && !input.model.api.id.includes("gpt-5-chat")) {
if (!input.model.api.id.includes("gpt-5-pro")) {
result["reasoningEffort"] = "medium"
- // Only inject reasoningSummary for providers that support it natively.
- // @ai-sdk/openai-compatible proxies (e.g. LiteLLM) do not understand this
- // parameter and return "Unknown parameter: 'reasoningSummary'".
- if (
- input.model.api.npm === "@ai-sdk/openai" ||
- input.model.api.npm === "@ai-sdk/azure" ||
- input.model.api.npm === "@ai-sdk/github-copilot"
- ) {
- result["reasoningSummary"] = "auto"
- }
+ result["reasoningSummary"] = "auto"
}
// Only set textVerbosity for non-chat gpt-5.x models
@@ -1184,40 +1172,27 @@ export function options(input: {
}
export function smallOptions(model: Provider.Model) {
+ const small = Object.values(model.variants ?? {})[0] ?? {}
if (
model.providerID === "openai" ||
model.api.npm === "@ai-sdk/openai" ||
model.api.npm === "@ai-sdk/github-copilot"
) {
- if (model.api.id.includes("gpt-5")) {
- if (model.api.id.includes("-chat")) {
- if (gpt5Version(model.api.id) === undefined) return { store: false }
- return { store: false, reasoningEffort: "medium" }
- }
- if (model.api.id.includes("search-api")) return { store: false }
- if (model.api.id.includes("5.") || model.api.id.includes("5-mini")) {
- return { store: false, reasoningEffort: "low" }
- }
- return { store: false, reasoningEffort: "minimal" }
- }
- return { store: false }
- }
- if (model.providerID === "google") {
- // gemini-3 uses thinkingLevel, gemini-2.5 uses thinkingBudget
- return { thinkingConfig: googleSmallThinkingConfig(model.api.id) }
+ const base = { store: false }
+ return mergeDeep(base, small)
}
if (model.providerID === "openrouter" || model.providerID === "llmgateway") {
- if (model.api.id.includes("google")) {
+ if (Object.keys(small).length === 0 && model.api.id.includes("google")) {
return { reasoning: { enabled: false } }
}
- return { reasoningEffort: "minimal" }
}
if (model.providerID === "venice") {
+ if (Object.keys(small).length > 0) return small
return { veniceParameters: { disableThinking: true } }
}
- return {}
+ return small
}
// Maps model ID prefix to provider slug used in providerOptions.
diff --git a/packages/opencode/src/server/httpapi-server.node.ts b/packages/opencode/src/server/httpapi-server.node.ts
deleted file mode 100644
index d6c6cbd2fd..0000000000
--- a/packages/opencode/src/server/httpapi-server.node.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { NodeHttpServer } from "@effect/platform-node"
-import { Effect, Layer } from "effect"
-import { createServer } from "node:http"
-import { Service } from "./httpapi-server"
-
-export { Service }
-
-export const name = "node-http-server"
-
-export type Opts = { port: number; hostname: string }
-
-export const layer = (opts: Opts) => {
- const server = createServer()
- const serverRef = { closeStarted: false, forceStop: false }
- const close = server.close.bind(server)
- // Keep shutdown owned by NodeHttpServer, but honor listener.stop(true) by
- // force-closing active HTTP sockets when its finalizer calls server.close().
- server.close = ((callback?: Parameters[0]) => {
- serverRef.closeStarted = true
- const result = close(callback)
- if (serverRef.forceStop) server.closeAllConnections()
- return result
- }) as typeof server.close
- return Layer.mergeAll(
- NodeHttpServer.layer(() => server, { port: opts.port, host: opts.hostname, gracefulShutdownTimeout: "1 second" }),
- Layer.succeed(Service)(
- Service.of({
- closeAll: Effect.sync(() => {
- serverRef.forceStop = true
- if (serverRef.closeStarted) server.closeAllConnections()
- }),
- }),
- ),
- )
-}
diff --git a/packages/opencode/src/server/httpapi-server.ts b/packages/opencode/src/server/httpapi-server.ts
deleted file mode 100644
index 5f3804c107..0000000000
--- a/packages/opencode/src/server/httpapi-server.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Context, Effect } from "effect"
-
-export interface Interface {
- readonly closeAll: Effect.Effect
-}
-
-export class Service extends Context.Service()("@opencode/HttpApiServer") {}
-
-export * as HttpApiServer from "./httpapi-server"
diff --git a/packages/opencode/src/server/projectors.ts b/packages/opencode/src/server/projectors.ts
index 367e3715e5..c5fb2420a0 100644
--- a/packages/opencode/src/server/projectors.ts
+++ b/packages/opencode/src/server/projectors.ts
@@ -24,5 +24,3 @@ export function initProjectors() {
},
})
}
-
-initProjectors()
diff --git a/packages/opencode/src/server/routes/instance/httpapi/api.ts b/packages/opencode/src/server/routes/instance/httpapi/api.ts
index 4c6e46a455..eff336b3c6 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/api.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/api.ts
@@ -4,7 +4,7 @@ import { BusEvent } from "@/bus/bus-event"
import { SyncEvent } from "@/sync"
import { ConfigApi } from "./groups/config"
import { ControlApi } from "./groups/control"
-import { EventApi } from "./event"
+import { EventApi } from "./groups/event"
import { ExperimentalApi } from "./groups/experimental"
import { FileApi } from "./groups/file"
import { GlobalApi } from "./groups/global"
diff --git a/packages/opencode/src/server/routes/instance/httpapi/event.ts b/packages/opencode/src/server/routes/instance/httpapi/event.ts
deleted file mode 100644
index 8113c76f51..0000000000
--- a/packages/opencode/src/server/routes/instance/httpapi/event.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { Bus } from "@/bus"
-import * as Log from "@opencode-ai/core/util/log"
-import { Effect, Schema } from "effect"
-import * as Stream from "effect/Stream"
-import { HttpServerResponse } from "effect/unstable/http"
-import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
-import * as Sse from "effect/unstable/encoding/Sse"
-import { WorkspaceRoutingQuery } from "./middleware/workspace-routing"
-
-const log = Log.create({ service: "server" })
-
-export const EventPaths = {
- event: "/event",
-} as const
-
-export const EventApi = HttpApi.make("event").add(
- HttpApiGroup.make("event")
- .add(
- HttpApiEndpoint.get("subscribe", EventPaths.event, {
- query: WorkspaceRoutingQuery,
- success: Schema.String.pipe(HttpApiSchema.asText({ contentType: "text/event-stream" })),
- }).annotateMerge(
- OpenApi.annotations({
- identifier: "event.subscribe",
- summary: "Subscribe to events",
- description: "Get events",
- }),
- ),
- )
- .annotateMerge(OpenApi.annotations({ title: "event", description: "Instance event stream route." })),
-)
-
-function eventData(data: unknown): Sse.Event {
- return {
- _tag: "Event",
- event: "message",
- id: undefined,
- data: JSON.stringify(data),
- }
-}
-
-function eventResponse(bus: Bus.Interface) {
- const events = bus.subscribeAll().pipe(Stream.takeUntil((event) => event.type === Bus.InstanceDisposed.type))
- const heartbeat = Stream.tick("10 seconds").pipe(
- Stream.drop(1),
- Stream.map(() => ({ id: Bus.createID(), type: "server.heartbeat", properties: {} })),
- )
-
- log.info("event connected")
- return HttpServerResponse.stream(
- Stream.make({ id: Bus.createID(), type: "server.connected", properties: {} }).pipe(
- Stream.concat(events.pipe(Stream.merge(heartbeat, { haltStrategy: "left" }))),
- Stream.map(eventData),
- Stream.pipeThroughChannel(Sse.encode()),
- Stream.encodeText,
- Stream.ensuring(Effect.sync(() => log.info("event disconnected"))),
- ),
- {
- contentType: "text/event-stream",
- headers: {
- "Cache-Control": "no-cache, no-transform",
- "X-Accel-Buffering": "no",
- "X-Content-Type-Options": "nosniff",
- },
- },
- )
-}
-
-export const eventHandlers = HttpApiBuilder.group(EventApi, "event", (handlers) =>
- Effect.gen(function* () {
- const bus = yield* Bus.Service
- return handlers.handleRaw(
- "subscribe",
- Effect.fn("EventHttpApi.subscribe")(function* () {
- return eventResponse(bus)
- }),
- )
- }),
-)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/event.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/event.ts
new file mode 100644
index 0000000000..7ebc229ee5
--- /dev/null
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/event.ts
@@ -0,0 +1,24 @@
+import { Schema } from "effect"
+import { HttpApi, HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"
+import { WorkspaceRoutingQuery } from "../middleware/workspace-routing"
+
+export const EventPaths = {
+ event: "/event",
+} as const
+
+export const EventApi = HttpApi.make("event").add(
+ HttpApiGroup.make("event")
+ .add(
+ HttpApiEndpoint.get("subscribe", EventPaths.event, {
+ query: WorkspaceRoutingQuery,
+ success: Schema.String.pipe(HttpApiSchema.asText({ contentType: "text/event-stream" })),
+ }).annotateMerge(
+ OpenApi.annotations({
+ identifier: "event.subscribe",
+ summary: "Subscribe to events",
+ description: "Get events",
+ }),
+ ),
+ )
+ .annotateMerge(OpenApi.annotations({ title: "event", description: "Instance event stream route." })),
+)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/experimental.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/experimental.ts
index 160bafb1e3..4cda970e87 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/groups/experimental.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/experimental.ts
@@ -166,8 +166,9 @@ export const ExperimentalApi = HttpApi.make("experimental")
}),
),
HttpApiEndpoint.post("worktreeCreate", ExperimentalPaths.worktree, {
+ disableCodecs: true,
query: WorkspaceRoutingQuery,
- payload: Schema.optional(Worktree.CreateInput),
+ payload: Schema.UndefinedOr(Worktree.CreateInput),
success: described(Worktree.Info, "Worktree created"),
error: WorktreeApiError,
}).annotateMerge(
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts
index 75441b4ca4..5b8a44d2cf 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts
@@ -1,6 +1,7 @@
import { Config } from "@/config/config"
import { BusEvent } from "@/bus/bus-event"
import { SyncEvent } from "@/sync"
+import "@/event-v2-bridge"
import "@/server/event"
import { Schema } from "effect"
import { HttpApi, HttpApiEndpoint, HttpApiError, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/location.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/location.ts
new file mode 100644
index 0000000000..f2a9a33557
--- /dev/null
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/location.ts
@@ -0,0 +1,59 @@
+import { Catalog } from "@opencode-ai/core/catalog"
+import { Location } from "@opencode-ai/core/location"
+import { LocationServiceMap } from "@opencode-ai/core/location-layer"
+import { PluginBoot } from "@opencode-ai/core/plugin/boot"
+import { Effect, Layer, Schema } from "effect"
+import { HttpServerRequest } from "effect/unstable/http"
+import { HttpApiMiddleware, OpenApi } from "effect/unstable/httpapi"
+
+export const LocationQuery = Schema.Struct({
+ location: Schema.optional(
+ Schema.Struct({
+ directory: Schema.optional(Schema.String),
+ workspace: Schema.optional(Schema.String),
+ }),
+ ),
+}).annotate({ identifier: "V2LocationQuery" })
+
+export const locationQueryOpenApi = OpenApi.annotations({
+ transform: (operation) => {
+ const parameters = operation.parameters
+ if (!Array.isArray(parameters)) return operation
+ return {
+ ...operation,
+ parameters: parameters.map((parameter) =>
+ parameter?.name === "location" && parameter?.in === "query"
+ ? { ...parameter, style: "deepObject", explode: true }
+ : parameter,
+ ),
+ }
+ },
+})
+
+export class V2LocationMiddleware extends HttpApiMiddleware.Service<
+ V2LocationMiddleware,
+ {
+ provides: Catalog.Service | PluginBoot.Service
+ }
+>()("@opencode/ExperimentalHttpApiV2Location") {}
+
+function ref(request: HttpServerRequest.HttpServerRequest): Location.Ref {
+ const query = new URL(request.url, "http://localhost").searchParams
+ return {
+ directory: query.get("location[directory]") || request.headers["x-opencode-directory"] || process.cwd(),
+ workspaceID: query.get("location[workspace]") || request.headers["x-opencode-workspace"],
+ }
+}
+
+export const layer = Layer.effect(
+ V2LocationMiddleware,
+ Effect.gen(function* () {
+ const locations = yield* LocationServiceMap
+ return V2LocationMiddleware.of((effect) =>
+ Effect.gen(function* () {
+ const request = yield* HttpServerRequest.HttpServerRequest
+ return yield* effect.pipe(Effect.provide(locations.get(ref(request))))
+ }),
+ )
+ }),
+).pipe(Layer.provide(LocationServiceMap.layer))
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/message.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/message.ts
index 060c6c8a83..131a142586 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/message.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/message.ts
@@ -1,5 +1,5 @@
import { SessionID } from "@/session/schema"
-import { SessionMessage } from "@/v2/session-message"
+import { SessionMessage } from "@opencode-ai/core/session-message"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiError, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { Authorization } from "../../middleware/authorization"
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/model.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/model.ts
index 35e7aeb850..d265ac7fc2 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/model.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/model.ts
@@ -2,18 +2,22 @@ import { ModelV2 } from "@opencode-ai/core/model"
import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { Authorization } from "../../middleware/authorization"
+import { LocationQuery, locationQueryOpenApi, V2LocationMiddleware } from "./location"
export const ModelGroup = HttpApiGroup.make("v2.model")
.add(
HttpApiEndpoint.get("models", "/api/model", {
+ query: LocationQuery,
success: Schema.Array(ModelV2.Info),
- }).annotateMerge(
- OpenApi.annotations({
- identifier: "v2.model.list",
- summary: "List v2 models",
- description: "Retrieve available v2 models ordered by release date.",
- }),
- ),
+ })
+ .annotateMerge(locationQueryOpenApi)
+ .annotateMerge(
+ OpenApi.annotations({
+ identifier: "v2.model.list",
+ summary: "List v2 models",
+ description: "Retrieve available v2 models ordered by release date.",
+ }),
+ ),
)
.annotateMerge(
OpenApi.annotations({
@@ -21,4 +25,5 @@ export const ModelGroup = HttpApiGroup.make("v2.model")
description: "Experimental v2 model routes.",
}),
)
+ .middleware(V2LocationMiddleware)
.middleware(Authorization)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/provider.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/provider.ts
index 6d92100886..7a482ce114 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/provider.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/provider.ts
@@ -3,31 +3,39 @@ import { Schema } from "effect"
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
import { ApiNotFoundError } from "../../errors"
import { Authorization } from "../../middleware/authorization"
+import { LocationQuery, locationQueryOpenApi, V2LocationMiddleware } from "./location"
export const ProviderGroup = HttpApiGroup.make("v2.provider")
.add(
HttpApiEndpoint.get("providers", "/api/provider", {
+ query: LocationQuery,
success: Schema.Array(ProviderV2.Info),
- }).annotateMerge(
- OpenApi.annotations({
- identifier: "v2.provider.list",
- summary: "List v2 providers",
- description: "Retrieve active v2 AI providers so clients can show provider availability and configuration.",
- }),
- ),
+ })
+ .annotateMerge(locationQueryOpenApi)
+ .annotateMerge(
+ OpenApi.annotations({
+ identifier: "v2.provider.list",
+ summary: "List v2 providers",
+ description: "Retrieve active v2 AI providers so clients can show provider availability and configuration.",
+ }),
+ ),
)
.add(
HttpApiEndpoint.get("provider", "/api/provider/:providerID", {
params: { providerID: ProviderV2.ID },
+ query: LocationQuery,
success: ProviderV2.Info,
error: ApiNotFoundError,
- }).annotateMerge(
- OpenApi.annotations({
- identifier: "v2.provider.get",
- summary: "Get v2 provider",
- description: "Retrieve a single v2 AI provider so clients can inspect its availability and endpoint settings.",
- }),
- ),
+ })
+ .annotateMerge(locationQueryOpenApi)
+ .annotateMerge(
+ OpenApi.annotations({
+ identifier: "v2.provider.get",
+ summary: "Get v2 provider",
+ description:
+ "Retrieve a single v2 AI provider so clients can inspect its availability and endpoint settings.",
+ }),
+ ),
)
.annotateMerge(
OpenApi.annotations({
@@ -35,4 +43,5 @@ export const ProviderGroup = HttpApiGroup.make("v2.provider")
description: "Experimental v2 provider routes.",
}),
)
+ .middleware(V2LocationMiddleware)
.middleware(Authorization)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/session.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/session.ts
index 3776f5c72a..0313b5c097 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/groups/v2/session.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/groups/v2/session.ts
@@ -1,5 +1,5 @@
import { SessionID } from "@/session/schema"
-import { SessionMessage } from "@/v2/session-message"
+import { SessionMessage } from "@opencode-ai/core/session-message"
import { Prompt } from "@opencode-ai/core/session-prompt"
import { SessionV2 } from "@/v2/session"
import { Schema } from "effect"
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/event.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/event.ts
new file mode 100644
index 0000000000..c0bcbc82c0
--- /dev/null
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/event.ts
@@ -0,0 +1,65 @@
+import { Bus } from "@/bus"
+import * as Log from "@opencode-ai/core/util/log"
+import { Effect } from "effect"
+import * as Stream from "effect/Stream"
+import { HttpServerResponse } from "effect/unstable/http"
+import { HttpApiBuilder } from "effect/unstable/httpapi"
+import * as Sse from "effect/unstable/encoding/Sse"
+import { EventApi } from "../groups/event"
+
+const log = Log.create({ service: "server" })
+
+function eventData(data: unknown): Sse.Event {
+ return {
+ _tag: "Event",
+ event: "message",
+ id: undefined,
+ data: JSON.stringify(data),
+ }
+}
+
+function eventResponse(bus: Bus.Interface) {
+ return Effect.gen(function* () {
+ const context = yield* Effect.context()
+
+ const events = bus.subscribeAll().pipe(
+ Stream.provideContext(context),
+ Stream.takeUntil((event) => event.type === Bus.InstanceDisposed.type),
+ )
+ const heartbeat = Stream.tick("10 seconds").pipe(
+ Stream.drop(1),
+ Stream.map(() => ({ id: Bus.createID(), type: "server.heartbeat", properties: {} })),
+ )
+
+ log.info("event connected")
+ return HttpServerResponse.stream(
+ Stream.make({ id: Bus.createID(), type: "server.connected", properties: {} }).pipe(
+ Stream.concat(events.pipe(Stream.merge(heartbeat, { haltStrategy: "left" }))),
+ Stream.map(eventData),
+ Stream.pipeThroughChannel(Sse.encode()),
+ Stream.encodeText,
+ Stream.ensuring(Effect.sync(() => log.info("event disconnected"))),
+ ),
+ {
+ contentType: "text/event-stream",
+ headers: {
+ "Cache-Control": "no-cache, no-transform",
+ "X-Accel-Buffering": "no",
+ "X-Content-Type-Options": "nosniff",
+ },
+ },
+ )
+ })
+}
+
+export const eventHandlers = HttpApiBuilder.group(EventApi, "event", (handlers) =>
+ Effect.gen(function* () {
+ const bus = yield* Bus.Service
+ return handlers.handleRaw(
+ "subscribe",
+ Effect.fn("EventHttpApi.subscribe")(function* () {
+ return yield* eventResponse(bus)
+ }),
+ )
+ }),
+)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/instance.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/instance.ts
index 50a7fecfa7..4ae318ef21 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/instance.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/instance.ts
@@ -38,7 +38,9 @@ export const instanceHandlers = HttpApiBuilder.group(InstanceHttpApi, "instance"
})
const getVcs = Effect.fn("InstanceHttpApi.vcs")(function* () {
- const [branch, default_branch] = yield* Effect.all([vcs.branch(), vcs.defaultBranch()], { concurrency: 2 })
+ const [branch, default_branch] = yield* Effect.all([vcs.branch(), vcs.defaultBranch()], {
+ concurrency: "unbounded",
+ })
return { branch, default_branch }
})
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts
index 9da31582a3..dba684228b 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts
@@ -1,6 +1,6 @@
import { ProviderAuth } from "@/provider/auth"
import { Config } from "@/config/config"
-import { ModelsDev } from "@/provider/models"
+import { ModelsDev } from "@opencode-ai/core/models"
import { Provider } from "@/provider/provider"
import { ProviderID } from "@/provider/schema"
import { mapValues } from "remeda"
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/session-errors.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/session-errors.ts
index 0fef2e7763..d4ab0eb599 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/session-errors.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/session-errors.ts
@@ -1,7 +1,13 @@
import type { NotFoundError as StorageNotFoundError } from "@/storage/storage"
+import type { Session } from "@/session/session"
import { Effect } from "effect"
+import { HttpApiError } from "effect/unstable/httpapi"
import * as ApiError from "../errors"
export function mapStorageNotFound(self: Effect.Effect) {
return self.pipe(Effect.mapError((error) => ApiError.notFound(error.message)))
}
+
+export function mapBusy(self: Effect.Effect) {
+ return self.pipe(Effect.catchTag("SessionBusyError", () => Effect.fail(new HttpApiError.BadRequest({}))))
+}
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts
index df2b40de56..6509aa2b1f 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts
@@ -36,6 +36,12 @@ import {
} from "../groups/session"
import * as SessionError from "./session-errors"
+const tryParseJson = (text: string) =>
+ Effect.try({
+ try: () => JSON.parse(text) as unknown,
+ catch: () => new HttpApiError.BadRequest({}),
+ })
+
export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session", (handlers) =>
Effect.gen(function* () {
const session = yield* Session.Service
@@ -52,14 +58,6 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
const bus = yield* Bus.Service
const scope = yield* Scope.Scope
- const mapBusy = (effect: Effect.Effect): Effect.Effect =>
- effect.pipe(
- Effect.catchCause((cause): Effect.Effect => {
- if (Cause.squash(cause) instanceof Session.BusyError) return Effect.fail(new HttpApiError.BadRequest({}))
- return Effect.failCause(cause)
- }),
- )
-
const list = Effect.fn("SessionHttpApi.list")(function* (ctx: { query: typeof ListQuery.Type }) {
return yield* session.list({
directory: ctx.query.scope === "project" ? undefined : ctx.query.directory,
@@ -160,10 +158,7 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
const body = yield* Effect.orDie(ctx.request.text)
if (body.trim().length === 0) return yield* create({})
- const json = yield* Effect.try({
- try: () => JSON.parse(body) as unknown,
- catch: () => new HttpApiError.BadRequest({}),
- })
+ const json = yield* tryParseJson(body)
const payload = yield* Schema.decodeUnknownEffect(Session.CreateInput)(json).pipe(
Effect.mapError(() => new HttpApiError.BadRequest({})),
)
@@ -211,10 +206,7 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
const body = yield* Effect.orDie(ctx.request.text)
if (body.trim().length === 0) return yield* fork({ params: ctx.params })
- const json = yield* Effect.try({
- try: () => JSON.parse(body) as unknown,
- catch: () => new HttpApiError.BadRequest({}),
- })
+ const json = yield* tryParseJson(body)
const payload = yield* Schema.decodeUnknownEffect(ForkPayload)(json).pipe(
Effect.mapError(() => new HttpApiError.BadRequest({})),
)
@@ -337,7 +329,7 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
payload: typeof ShellPayload.Type
}) {
yield* requireSession(ctx.params.sessionID)
- return yield* mapBusy(promptSvc.shell({ ...ctx.payload, sessionID: ctx.params.sessionID }))
+ return yield* SessionError.mapBusy(promptSvc.shell({ ...ctx.payload, sessionID: ctx.params.sessionID }))
})
const revert = Effect.fn("SessionHttpApi.revert")(function* (ctx: {
@@ -345,12 +337,12 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
payload: typeof RevertPayload.Type
}) {
yield* requireSession(ctx.params.sessionID)
- return yield* mapBusy(revertSvc.revert({ sessionID: ctx.params.sessionID, ...ctx.payload }))
+ return yield* SessionError.mapBusy(revertSvc.revert({ sessionID: ctx.params.sessionID, ...ctx.payload }))
})
const unrevert = Effect.fn("SessionHttpApi.unrevert")(function* (ctx: { params: { sessionID: SessionID } }) {
yield* requireSession(ctx.params.sessionID)
- return yield* mapBusy(revertSvc.unrevert({ sessionID: ctx.params.sessionID }))
+ return yield* SessionError.mapBusy(revertSvc.unrevert({ sessionID: ctx.params.sessionID }))
})
const permissionRespond = Effect.fn("SessionHttpApi.permissionRespond")(function* (ctx: {
@@ -366,7 +358,7 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
params: { sessionID: SessionID; messageID: MessageID }
}) {
yield* requireSession(ctx.params.sessionID)
- yield* mapBusy(runState.assertNotBusy(ctx.params.sessionID))
+ yield* SessionError.mapBusy(runState.assertNotBusy(ctx.params.sessionID))
yield* session.removeMessage(ctx.params)
return true
})
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/sync.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/sync.ts
index 152d22f98e..ffe8d0baa4 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/sync.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/sync.ts
@@ -11,7 +11,7 @@ import { lte } from "drizzle-orm"
import { not } from "drizzle-orm"
import { or } from "drizzle-orm"
import { Effect, Scope } from "effect"
-import { HttpApiBuilder } from "effect/unstable/httpapi"
+import { HttpApiBuilder, HttpApiError } from "effect/unstable/httpapi"
import { InstanceHttpApi } from "../api"
import { HistoryPayload, ReplayPayload, SessionPayload } from "../groups/sync"
import * as Log from "@opencode-ai/core/util/log"
@@ -59,7 +59,7 @@ export const syncHandlers = HttpApiBuilder.group(InstanceHttpApi, "sync", (handl
const steal = Effect.fn("SyncHttpApi.steal")(function* (ctx: { payload: typeof SessionPayload.Type }) {
const workspaceID = yield* InstanceState.workspaceID
- if (!workspaceID) throw new Error("Cannot steal session without workspace context")
+ if (!workspaceID) return yield* new HttpApiError.BadRequest({})
yield* sync.run(Session.Event.Updated, {
sessionID: ctx.payload.sessionID,
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2.ts
index b277e77016..daa799b7a8 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2.ts
@@ -1,12 +1,12 @@
-import { Catalog } from "@opencode-ai/core/catalog"
import { SessionV2 } from "@/v2/session"
import { Layer } from "effect"
+import { layer as v2LocationLayer } from "../groups/v2/location"
import { messageHandlers } from "./v2/message"
import { modelHandlers } from "./v2/model"
import { providerHandlers } from "./v2/provider"
import { sessionHandlers } from "./v2/session"
export const v2Handlers = Layer.mergeAll(sessionHandlers, messageHandlers, modelHandlers, providerHandlers).pipe(
- Layer.provide(Catalog.defaultLayer),
+ Layer.provide(v2LocationLayer),
Layer.provide(SessionV2.defaultLayer),
)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/message.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/message.ts
index 92e37142b4..fd710ba954 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/message.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/message.ts
@@ -1,4 +1,4 @@
-import { SessionMessage } from "@/v2/session-message"
+import { SessionMessage } from "@opencode-ai/core/session-message"
import { SessionV2 } from "@/v2/session"
import { Effect, Schema } from "effect"
import * as DateTime from "effect/DateTime"
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/model.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/model.ts
index 7eb1b310b3..9ba4c654a9 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/model.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/model.ts
@@ -1,12 +1,19 @@
import { Catalog } from "@opencode-ai/core/catalog"
+import { PluginBoot } from "@opencode-ai/core/plugin/boot"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { InstanceHttpApi } from "../../api"
export const modelHandlers = HttpApiBuilder.group(InstanceHttpApi, "v2.model", (handlers) =>
Effect.gen(function* () {
- const catalog = yield* Catalog.Service
-
- return handlers.handle("models", () => catalog.model.available())
+ return handlers.handle(
+ "models",
+ Effect.fn(function* () {
+ const catalog = yield* Catalog.Service
+ const pluginBoot = yield* PluginBoot.Service
+ yield* pluginBoot.wait()
+ return yield* catalog.model.available()
+ }),
+ )
}),
)
diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/provider.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/provider.ts
index c19213f5bc..a77cb159c8 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/provider.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/v2/provider.ts
@@ -1,4 +1,5 @@
import { Catalog } from "@opencode-ai/core/catalog"
+import { PluginBoot } from "@opencode-ai/core/plugin/boot"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { InstanceHttpApi } from "../../api"
@@ -6,13 +7,22 @@ import { notFound } from "../../errors"
export const providerHandlers = HttpApiBuilder.group(InstanceHttpApi, "v2.provider", (handlers) =>
Effect.gen(function* () {
- const catalog = yield* Catalog.Service
-
return handlers
- .handle("providers", () => catalog.provider.available())
+ .handle(
+ "providers",
+ Effect.fn(function* () {
+ const catalog = yield* Catalog.Service
+ const pluginBoot = yield* PluginBoot.Service
+ yield* pluginBoot.wait()
+ return yield* catalog.provider.available()
+ }),
+ )
.handle(
"provider",
Effect.fn(function* (ctx) {
+ const catalog = yield* Catalog.Service
+ const pluginBoot = yield* PluginBoot.Service
+ yield* pluginBoot.wait()
return yield* catalog.provider
.get(ctx.params.providerID)
.pipe(Effect.catchTag("CatalogV2.ProviderNotFound", () => Effect.fail(notFound("Provider not found"))))
diff --git a/packages/opencode/src/server/routes/instance/httpapi/middleware/error.ts b/packages/opencode/src/server/routes/instance/httpapi/middleware/error.ts
index 5896410370..74c690ad6c 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/middleware/error.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/middleware/error.ts
@@ -1,5 +1,3 @@
-import { Provider } from "@/provider/provider"
-import { iife } from "@/util/iife"
import { NamedError } from "@opencode-ai/core/util/error"
import * as Log from "@opencode-ai/core/util/log"
import { Cause, Effect } from "effect"
@@ -22,16 +20,6 @@ export const errorLayer = HttpRouter.middleware<{ handles: unknown }>()((effect)
const error = defect.defect
log.error("failed", { error, cause: Cause.pretty(cause) })
- if (error instanceof NamedError) {
- return Effect.succeed(
- HttpServerResponse.jsonUnsafe(error.toObject(), {
- status: iife(() => {
- if (error instanceof Provider.ModelNotFoundError) return 400
- return 500
- }),
- }),
- )
- }
return Effect.succeed(
HttpServerResponse.jsonUnsafe(
new NamedError.Unknown({
diff --git a/packages/opencode/src/server/routes/instance/httpapi/server.ts b/packages/opencode/src/server/routes/instance/httpapi/server.ts
index 7ce21dfadb..539ceef35f 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/server.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/server.ts
@@ -1,4 +1,4 @@
-import { Context, Effect, Layer } from "effect"
+import { Config as EffectConfig, Context, Effect, Layer } from "effect"
import { HttpApiBuilder, OpenApi } from "effect/unstable/httpapi"
import {
FetchHttpClient,
@@ -21,6 +21,7 @@ import { File } from "@/file"
import { FileWatcher } from "@/file/watcher"
import { Ripgrep } from "@/file/ripgrep"
import { Format } from "@/format"
+import { RuntimeFlags } from "@/effect/runtime-flags"
import { LSP } from "@/lsp/lsp"
import { MCP } from "@/mcp"
import { Permission } from "@/permission"
@@ -29,7 +30,7 @@ import { InstanceLayer } from "@/project/instance-layer"
import { Plugin } from "@/plugin"
import { Project } from "@/project/project"
import { ProviderAuth } from "@/provider/auth"
-import { ModelsDev } from "@/provider/models"
+import { ModelsDev } from "@opencode-ai/core/models"
import { Provider } from "@/provider/provider"
import { Pty } from "@/pty"
import { PtyTicket } from "@/pty/ticket"
@@ -44,6 +45,7 @@ import { SessionSummary } from "@/session/summary"
import { Todo } from "@/session/todo"
import { SessionShare } from "@/share/session"
import { ShareNext } from "@/share/share-next"
+import { EventV2Bridge } from "@/event-v2-bridge"
import { Skill } from "@/skill"
import { Snapshot } from "@/snapshot"
import { SyncEvent } from "@/sync"
@@ -58,7 +60,8 @@ import { ServerAuth } from "@/server/auth"
import { InstanceHttpApi, RootHttpApi } from "./api"
import { PublicApi } from "./public"
import { authorizationLayer, authorizationRouterMiddleware } from "./middleware/authorization"
-import { EventApi, eventHandlers } from "./event"
+import { EventApi } from "./groups/event"
+import { eventHandlers } from "./handlers/event"
import { configHandlers } from "./handlers/config"
import { controlHandlers } from "./handlers/control"
import { experimentalHandlers } from "./handlers/experimental"
@@ -88,15 +91,6 @@ import { schemaErrorLayer } from "./middleware/schema-error"
export const context = Context.makeUnsafe(new Map())
-const runtime = HttpRouter.middleware()(
- Effect.succeed((effect) =>
- Effect.gen(function* () {
- yield* Effect.annotateCurrentSpan({ "opencode.server.backend": "effect-httpapi" })
- return yield* effect
- }),
- ),
-).layer
-
const cors = (corsOptions?: CorsOptions) =>
HttpRouter.middleware(
HttpMiddleware.cors({
@@ -171,11 +165,23 @@ const uiRoute = HttpRouter.use((router) =>
Effect.gen(function* () {
const fs = yield* AppFileSystem.Service
const client = yield* HttpClient.HttpClient
- yield* router.add("*", "/*", (request) => serveUIEffect(request, { fs, client }))
+ const flags = yield* RuntimeFlags.Service
+ yield* router.add("*", "/*", (request) =>
+ serveUIEffect(request, { fs, client, disableEmbeddedWebUi: flags.disableEmbeddedWebUi }),
+ )
}),
).pipe(Layer.provide(authOnlyRouterLayer))
-export function createRoutes(corsOptions?: CorsOptions) {
+type RouteRequirements =
+ | HttpRouter.HttpRouter
+ | HttpRouter.Request<"Error", unknown>
+ | HttpRouter.Request<"GlobalError", unknown>
+ | HttpRouter.Request<"Requires", unknown>
+ | HttpRouter.Request<"GlobalRequires", never>
+
+export function createRoutes(
+ corsOptions?: CorsOptions,
+): Layer.Layer {
return Layer.mergeAll(rootApiRoutes, eventApiRoutes, instanceRoutes, docRoute, uiRoute).pipe(
Layer.provide([
errorLayer,
@@ -183,7 +189,6 @@ export function createRoutes(corsOptions?: CorsOptions) {
corsVaryFix,
fenceLayer,
cors(corsOptions),
- runtime,
Account.defaultLayer,
Agent.defaultLayer,
Auth.defaultLayer,
@@ -205,6 +210,7 @@ export function createRoutes(corsOptions?: CorsOptions) {
PtyTicket.defaultLayer,
Question.defaultLayer,
Ripgrep.defaultLayer,
+ RuntimeFlags.defaultLayer,
Session.defaultLayer,
SessionCompaction.defaultLayer,
SessionPrompt.defaultLayer,
@@ -216,6 +222,7 @@ export function createRoutes(corsOptions?: CorsOptions) {
ShareNext.defaultLayer,
Snapshot.defaultLayer,
SyncEvent.defaultLayer,
+ EventV2Bridge.defaultLayer,
Skill.defaultLayer,
Todo.defaultLayer,
ToolRegistry.defaultLayer,
@@ -227,28 +234,20 @@ export function createRoutes(corsOptions?: CorsOptions) {
FetchHttpClient.layer,
HttpServer.layerServices,
]),
- Layer.provideMerge(Layer.succeed(CorsConfig)(corsOptions)),
- Layer.provideMerge(InstanceLayer.layer),
- Layer.provideMerge(Observability.layer),
+ Layer.provide(Layer.succeed(CorsConfig)(corsOptions)),
+ Layer.provide(InstanceLayer.layer),
+ Layer.provide(Observability.layer),
)
}
export const routes = createRoutes()
-const defaultWebHandler = lazy(() =>
+export const webHandler = lazy(() =>
HttpRouter.toWebHandler(routes, {
+ disableLogger: true,
memoMap,
middleware: disposeMiddleware,
}),
)
-export function webHandler(corsOptions?: CorsOptions) {
- if (!corsOptions?.cors?.length) return defaultWebHandler()
- return HttpRouter.toWebHandler(createRoutes(corsOptions), {
- // Server-level CORS options are dynamic; don't reuse the default route layer memoized without them.
- memoMap: Layer.makeMemoMapUnsafe(),
- middleware: disposeMiddleware,
- })
-}
-
-export * as ExperimentalHttpApiServer from "./server"
+export * as HttpApiApp from "./server"
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index 67a728b801..b7a46918b2 100644
--- a/packages/opencode/src/server/server.ts
+++ b/packages/opencode/src/server/server.ts
@@ -1,15 +1,17 @@
+import { NodeHttpServer } from "@effect/platform-node"
import * as Log from "@opencode-ai/core/util/log"
import { ConfigProvider, Context, Effect, Exit, Layer, Scope } from "effect"
import { HttpRouter, HttpServer } from "effect/unstable/http"
import { OpenApi } from "effect/unstable/httpapi"
-import * as HttpApiServer from "#httpapi-server"
+import { createServer } from "node:http"
import { MDNS } from "./mdns"
import { initProjectors } from "./projectors"
-import { ExperimentalHttpApiServer } from "./routes/instance/httpapi/server"
+import { HttpApiApp } from "./routes/instance/httpapi/server"
import { disposeMiddleware } from "./routes/instance/httpapi/lifecycle"
import { WebSocketTracker } from "./routes/instance/httpapi/websocket-tracker"
import { PublicApi } from "./routes/instance/httpapi/public"
import type { CorsOptions } from "./cors"
+import { lazy } from "@/util/lazy"
// @ts-ignore This global is needed to prevent ai-sdk from logging warnings to stdout https://github.com/vercel/ai/blob/2dc67e0ef538307f21368db32d5a12345d98831b/packages/ai/src/logger/log-warnings.ts#L85
globalThis.AI_SDK_LOG_WARNINGS = false
@@ -36,19 +38,34 @@ type ListenOptions = CorsOptions & {
mdns?: boolean
mdnsDomain?: string
}
+type ListenerState = {
+ scope: Scope.Scope
+ server: Context.Service.Shape
+ http: ListenerServer
+ websockets: WebSocketTracker.Interface
+}
+type EffectListener = Omit & {
+ stop: (close?: boolean) => Effect.Effect
+}
-const defaultHttpApi = (() => {
- const handler = ExperimentalHttpApiServer.webHandler().handler
+interface ListenerServer {
+ readonly closeAll: Effect.Effect
+}
+
+class ListenerServerService extends Context.Service()(
+ "@opencode/ListenerServer",
+) {}
+
+export const Default = lazy(() => {
+ const handler = HttpApiApp.webHandler().handler
const app: ServerApp = {
- fetch: (request: Request) => handler(request, ExperimentalHttpApiServer.context),
+ fetch: (request: Request) => handler(request, HttpApiApp.context),
request(input, init) {
return app.fetch(input instanceof Request ? input : new Request(new URL(input, "http://localhost"), init))
},
}
return { app }
-})()
-
-export const Default = () => defaultHttpApi
+})
export async function openapi() {
return OpenApi.fromApi(PublicApi)
@@ -57,102 +74,146 @@ export async function openapi() {
export let url: URL
export async function listen(opts: ListenOptions): Promise {
- log.info("server backend", { "opencode.server.runtime": HttpApiServer.name })
-
- const buildLayer = (port: number) =>
- HttpRouter.serve(ExperimentalHttpApiServer.createRoutes(opts), {
- middleware: disposeMiddleware,
- disableLogger: true,
- disableListenLog: true,
- }).pipe(
- Layer.provideMerge(WebSocketTracker.layer),
- Layer.provideMerge(HttpApiServer.layer({ port, hostname: opts.hostname })),
- // Install a fresh `ConfigProvider` per listener so `Config.string(...)`
- // reads reflect the current `process.env`. Effect's default
- // `ConfigProvider` snapshots `process.env` on first read and caches the
- // result on a module-singleton Reference; without overriding it here,
- // every later `Server.listen()` keeps observing that initial snapshot.
- Layer.provide(ConfigProvider.layer(ConfigProvider.fromEnv())),
- )
-
- const start = async (port: number) => {
- const scope = Scope.makeUnsafe()
- try {
- const layer = buildLayer(port) as Layer.Layer<
- HttpServer.HttpServer | WebSocketTracker.Service | HttpApiServer.Service,
- unknown,
- never
- >
- const ctx = await Effect.runPromise(Layer.buildWithMemoMap(layer, Layer.makeMemoMapUnsafe(), scope))
- return { scope, ctx }
- } catch (err) {
- await Effect.runPromise(Scope.close(scope, Exit.void)).catch(() => undefined)
- throw err
- }
- }
-
- // Match the legacy adapter port-resolution behavior: explicit `0` prefers
- // 4096 first, then any free port.
- let resolved: Awaited> | undefined
- if (opts.port === 0) {
- resolved = await start(4096).catch(() => undefined)
- if (!resolved) resolved = await start(0)
- } else {
- resolved = await start(opts.port)
- }
- if (!resolved) throw new Error(`Failed to start server on port ${opts.port}`)
-
- const server = Context.get(resolved.ctx, HttpServer.HttpServer)
- if (server.address._tag !== "TcpAddress") {
- await Effect.runPromise(Scope.close(resolved.scope, Exit.void))
- throw new Error(`Unexpected HttpServer address tag: ${server.address._tag}`)
- }
- const port = server.address.port
-
- const innerUrl = new URL("http://localhost")
- innerUrl.hostname = opts.hostname
- innerUrl.port = String(port)
- url = innerUrl
-
- const mdns =
- opts.mdns && port && opts.hostname !== "127.0.0.1" && opts.hostname !== "localhost" && opts.hostname !== "::1"
- if (mdns) {
- MDNS.publish(port, opts.mdnsDomain)
- } else if (opts.mdns) {
- log.warn("mDNS enabled but hostname is loopback; skipping mDNS publish")
- }
-
- let forceStopPromise: Promise | undefined
- let stopPromise: Promise | undefined
- let mdnsUnpublished = false
- const unpublish = () => {
- if (!mdns || mdnsUnpublished) return
- mdnsUnpublished = true
- MDNS.unpublish()
- }
- const forceStop = () => {
- forceStopPromise ??= Effect.runPromiseExit(
- Effect.gen(function* () {
- yield* Context.get(resolved!.ctx, HttpApiServer.Service).closeAll
- yield* Context.get(resolved!.ctx, WebSocketTracker.Service).closeAll
- }),
- ).then(() => undefined)
- return forceStopPromise
- }
-
+ const listener = await Effect.runPromise(listenEffect(opts))
return {
- hostname: opts.hostname,
- port,
- url: innerUrl,
- stop: (close?: boolean) => {
- unpublish()
- const requested = close ? forceStop() : Promise.resolve()
- stopPromise ??= requested
- .then(() => Effect.runPromiseExit(Scope.close(resolved!.scope, Exit.void)))
- .then(() => undefined)
- return requested.then(() => stopPromise!)
- },
+ hostname: listener.hostname,
+ port: listener.port,
+ url: listener.url,
+ stop: (close?: boolean) => Effect.runPromiseExit(listener.stop(close)).then(() => undefined),
}
}
+const listenEffect: (opts: ListenOptions) => Effect.Effect = Effect.fn("Server.listen")(
+ function* (opts: ListenOptions) {
+ const state = yield* startWithPortFallback(opts)
+ const address = yield* tcpAddress(state)
+ const listenerUrl = makeURL(opts.hostname, address.port)
+ url = listenerUrl
+
+ const unpublishMdns = yield* setupMdns(opts, address.port, state.scope)
+
+ return {
+ hostname: opts.hostname,
+ port: address.port,
+ url: listenerUrl,
+ stop: yield* makeStop(state, unpublishMdns),
+ }
+ },
+)
+
+function listenerLayer(opts: ListenOptions, port: number) {
+ return HttpRouter.serve(HttpApiApp.createRoutes(opts), {
+ middleware: disposeMiddleware,
+ disableLogger: true,
+ disableListenLog: true,
+ }).pipe(
+ Layer.provideMerge(WebSocketTracker.layer),
+ Layer.provideMerge(serverLayer({ port, hostname: opts.hostname })),
+ // Install a fresh `ConfigProvider` per listener so `Config.string(...)`
+ // reads reflect the current `process.env`. Effect's default
+ // `ConfigProvider` snapshots `process.env` on first read and caches the
+ // result on a module-singleton Reference; without overriding it here,
+ // every later `Server.listen()` keeps observing that initial snapshot.
+ Layer.provide(ConfigProvider.layer(ConfigProvider.fromEnv())),
+ )
+}
+
+function startWithPortFallback(opts: ListenOptions) {
+ if (opts.port !== 0) return startListener(opts, opts.port)
+ // Match the legacy listener port-resolution behavior: explicit `0` prefers
+ // 4096 first, then any free port.
+ return startListener(opts, 4096).pipe(Effect.catch(() => startListener(opts, 0)))
+}
+
+function startListener(opts: ListenOptions, port: number) {
+ const scope = Scope.makeUnsafe()
+ return Layer.buildWithMemoMap(listenerLayer(opts, port), Layer.makeMemoMapUnsafe(), scope).pipe(
+ Effect.provide(HttpApiApp.context),
+ Effect.onError(() => Scope.close(scope, Exit.void).pipe(Effect.ignore)),
+ Effect.map(
+ (ctx): ListenerState => ({
+ scope,
+ server: Context.get(ctx, HttpServer.HttpServer),
+ http: Context.get(ctx, ListenerServerService),
+ websockets: Context.get(ctx, WebSocketTracker.Service),
+ }),
+ ),
+ )
+}
+
+function tcpAddress(state: ListenerState) {
+ return Effect.gen(function* () {
+ if (state.server.address._tag === "TcpAddress") return state.server.address
+ yield* Scope.close(state.scope, Exit.void).pipe(Effect.ignore)
+ return yield* Effect.die(new Error(`Unexpected HttpServer address tag: ${state.server.address._tag}`))
+ })
+}
+
+function makeURL(hostname: string, port: number) {
+ const result = new URL("http://localhost")
+ result.hostname = hostname
+ result.port = String(port)
+ return result
+}
+
+function setupMdns(opts: ListenOptions, port: number, scope: Scope.Scope) {
+ return Effect.gen(function* () {
+ const publish =
+ opts.mdns && port && opts.hostname !== "127.0.0.1" && opts.hostname !== "localhost" && opts.hostname !== "::1"
+ if (publish) {
+ const unpublish = yield* Effect.cached(Effect.sync(() => MDNS.unpublish()))
+ yield* Effect.sync(() => MDNS.publish(port, opts.mdnsDomain))
+ yield* Scope.addFinalizer(scope, unpublish)
+ return unpublish
+ }
+ if (opts.mdns) log.warn("mDNS enabled but hostname is loopback; skipping mDNS publish")
+ return Effect.void
+ })
+}
+
+function makeStop(state: ListenerState, unpublishMdns: Effect.Effect) {
+ return Effect.gen(function* () {
+ const forceCloseOnce = yield* Effect.cached(forceClose(state).pipe(Effect.ignore))
+ const closeScopeOnce = yield* Effect.cached(Scope.close(state.scope, Exit.void).pipe(Effect.ignore))
+
+ return (close?: boolean) =>
+ Effect.gen(function* () {
+ yield* unpublishMdns
+ if (close) yield* forceCloseOnce
+ yield* closeScopeOnce
+ })
+ })
+}
+
+function forceClose(state: ListenerState) {
+ return Effect.all([state.http.closeAll, state.websockets.closeAll], { concurrency: "unbounded", discard: true })
+}
+
+function serverLayer(opts: { port: number; hostname: string }) {
+ const server = createServer()
+ const serverRef = { closeStarted: false, forceStop: false }
+ const close = server.close.bind(server)
+ // Keep shutdown owned by NodeHttpServer, but honor listener.stop(true) by
+ // force-closing active HTTP sockets when its finalizer calls server.close().
+ // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion -- Node's overloads don't preserve a monkey-patched method assignment.
+ server.close = ((callback?: Parameters[0]) => {
+ serverRef.closeStarted = true
+ const result = close(callback)
+ if (serverRef.forceStop) server.closeAllConnections()
+ return result
+ }) as typeof server.close
+
+ return Layer.mergeAll(
+ NodeHttpServer.layer(() => server, { port: opts.port, host: opts.hostname, gracefulShutdownTimeout: "1 second" }),
+ Layer.succeed(ListenerServerService)(
+ ListenerServerService.of({
+ closeAll: Effect.sync(() => {
+ serverRef.forceStop = true
+ if (serverRef.closeStarted) server.closeAllConnections()
+ }),
+ }),
+ ),
+ )
+}
+
export * as Server from "./server"
diff --git a/packages/opencode/src/server/shared/ui.ts b/packages/opencode/src/server/shared/ui.ts
index 0e27dcf220..fd4c731880 100644
--- a/packages/opencode/src/server/shared/ui.ts
+++ b/packages/opencode/src/server/shared/ui.ts
@@ -1,14 +1,10 @@
-import { Flag } from "@opencode-ai/core/flag/flag"
import { AppFileSystem } from "@opencode-ai/core/filesystem"
import { Effect, Stream } from "effect"
import { HttpBody, HttpClient, HttpClientRequest, HttpServerRequest, HttpServerResponse } from "effect/unstable/http"
import { createHash } from "node:crypto"
import { ProxyUtil } from "../proxy-util"
-const embeddedUIPromise = Flag.OPENCODE_DISABLE_EMBEDDED_WEB_UI
- ? Promise.resolve(null)
- : // @ts-expect-error - generated file at build time
- import("opencode-web-ui.gen.ts").then((module) => module.default as Record).catch(() => null)
+let embeddedUIPromise: Promise | null> | undefined
export const UI_UPSTREAM = new URL("https://app.opencode.ai")
@@ -45,9 +41,11 @@ export function upstreamURL(path: string) {
return new URL(path, UI_UPSTREAM).toString()
}
-export function embeddedUI() {
- if (Flag.OPENCODE_DISABLE_EMBEDDED_WEB_UI) return Promise.resolve(null)
- return embeddedUIPromise
+export function embeddedUI(disableEmbeddedWebUi: boolean) {
+ if (disableEmbeddedWebUi) return Promise.resolve(null)
+ return (embeddedUIPromise ??=
+ // @ts-expect-error - generated file at build time
+ import("opencode-web-ui.gen.ts").then((module) => module.default as Record).catch(() => null))
}
function notFound() {
@@ -79,10 +77,10 @@ export function serveEmbeddedUIEffect(
export function serveUIEffect(
request: HttpServerRequest.HttpServerRequest,
- services: { fs: AppFileSystem.Interface; client: HttpClient.HttpClient },
+ services: { fs: AppFileSystem.Interface; client: HttpClient.HttpClient; disableEmbeddedWebUi: boolean },
) {
return Effect.gen(function* () {
- const embeddedWebUI = yield* Effect.promise(() => embeddedUI())
+ const embeddedWebUI = yield* Effect.promise(() => embeddedUI(services.disableEmbeddedWebUi))
const path = new URL(request.url, "http://localhost").pathname
if (embeddedWebUI) return yield* serveEmbeddedUIEffect(path, services.fs, embeddedWebUI)
diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts
index 3340e0fbe9..5913735239 100644
--- a/packages/opencode/src/session/compaction.ts
+++ b/packages/opencode/src/session/compaction.ts
@@ -19,8 +19,9 @@ import { isOverflow as overflow, usable } from "./overflow"
import { makeRuntime } from "@/effect/run-service"
import { serviceUse } from "@/effect/service-use"
import { RuntimeFlags } from "@/effect/runtime-flags"
-import { SyncEvent } from "@/sync"
-import { SessionEvent } from "@/v2/session-event"
+import { EventV2 } from "@opencode-ai/core/event"
+import { EventV2Bridge } from "@/event-v2-bridge"
+import { SessionEvent } from "@opencode-ai/core/session-event"
const log = Log.create({ service: "session.compaction" })
@@ -210,19 +211,7 @@ export class Service extends Context.Service()("@opencode/Se
export const use = serviceUse(Service)
-export const layer: Layer.Layer<
- Service,
- never,
- | Bus.Service
- | Config.Service
- | Session.Service
- | Agent.Service
- | Plugin.Service
- | SessionProcessor.Service
- | Provider.Service
- | SyncEvent.Service
- | RuntimeFlags.Service
-> = Layer.effect(
+export const layer = Layer.effect(
Service,
Effect.gen(function* () {
const bus = yield* Bus.Service
@@ -232,7 +221,7 @@ export const layer: Layer.Layer<
const plugin = yield* Plugin.Service
const processors = yield* SessionProcessor.Service
const provider = yield* Provider.Service
- const sync = yield* SyncEvent.Service
+ const events = yield* EventV2Bridge.Service
const flags = yield* RuntimeFlags.Service
const isOverflow = Effect.fn("SessionCompaction.isOverflow")(function* (input: {
@@ -390,8 +379,8 @@ export const layer: Layer.Layer<
const agent = yield* agents.get("compaction")
const model = agent.model
- ? yield* provider.getModel(agent.model.providerID, agent.model.modelID)
- : yield* provider.getModel(userMessage.model.providerID, userMessage.model.modelID)
+ ? yield* provider.getModel(agent.model.providerID, agent.model.modelID).pipe(Effect.orDie)
+ : yield* provider.getModel(userMessage.model.providerID, userMessage.model.modelID).pipe(Effect.orDie)
const cfg = yield* config.get()
const history = compactionPart && messages.at(-1)?.info.id === input.parentID ? messages.slice(0, -1) : messages
const prior = completedCompactions(history)
@@ -519,7 +508,9 @@ export const layer: Layer.Layer<
{
sessionID: input.sessionID,
agent: userMessage.agent,
- model: yield* provider.getModel(userMessage.model.providerID, userMessage.model.modelID),
+ model: yield* provider
+ .getModel(userMessage.model.providerID, userMessage.model.modelID)
+ .pipe(Effect.orDie),
provider: {
source: info.source,
info,
@@ -575,7 +566,7 @@ export const layer: Layer.Layer<
},
)
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Compaction.Ended.Sync, {
+ yield* events.publish(SessionEvent.Compaction.Ended, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(Date.now()),
text: summary ?? "",
@@ -611,7 +602,7 @@ export const layer: Layer.Layer<
overflow: input.overflow,
})
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Compaction.Started.Sync, {
+ yield* events.publish(SessionEvent.Compaction.Started, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(Date.now()),
reason: input.auto ? "auto" : "manual",
@@ -637,8 +628,8 @@ export const defaultLayer = Layer.suspend(() =>
Layer.provide(Plugin.defaultLayer),
Layer.provide(Bus.layer),
Layer.provide(Config.defaultLayer),
- Layer.provide(SyncEvent.defaultLayer),
Layer.provide(RuntimeFlags.defaultLayer),
+ Layer.provide(EventV2Bridge.defaultLayer),
),
)
diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts
index 116254a81e..0489e0a2ff 100644
--- a/packages/opencode/src/session/llm.ts
+++ b/packages/opencode/src/session/llm.ts
@@ -194,23 +194,11 @@ const live: Layer.Layer<
const tools = resolveTools(input)
- // LiteLLM and some Anthropic proxies require the tools parameter to be present
- // when message history contains tool calls, even if no tools are being used.
- // Add a dummy tool that is never called to satisfy this validation.
- // This is enabled for:
- // 1. Providers with "litellm" in their ID or API ID (auto-detected)
- // 2. Providers with explicit "litellmProxy: true" option (opt-in for custom gateways)
- const isLiteLLMProxy =
- item.options?.["litellmProxy"] === true ||
- input.model.providerID.toLowerCase().includes("litellm") ||
- input.model.api.id.toLowerCase().includes("litellm")
-
- // LiteLLM/Bedrock rejects requests where the message history contains tool
- // calls but no tools param is present. When there are no active tools (e.g.
- // during compaction), inject a stub tool to satisfy the validation requirement.
- // The stub description explicitly tells the model not to call it.
+ // GitHub Copilot may require the tools parameter when message history contains
+ // tool calls but no tools are active (e.g. compaction). Inject a stub tool that
+ // is never meant to be invoked. LiteLLM-backed providers are excluded.
if (
- (isLiteLLMProxy || input.model.providerID.includes("github-copilot")) &&
+ input.model.providerID.includes("github-copilot") &&
Object.keys(tools).length === 0 &&
hasToolCalls(input.messages)
) {
@@ -457,7 +445,7 @@ function resolveTools(input: Pick user.id)) user = info
+ if (info.role === "assistant" && (!assistant || info.id > assistant.id)) assistant = info
+ if (info.role === "assistant" && info.finish && (!finished || info.id > finished.id)) finished = info
+ }
+ const tasks = msgs.flatMap((m) =>
+ finished && m.info.id <= finished.id
+ ? []
+ : m.parts.filter((p): p is CompactionPart | SubtaskPart => p.type === "compaction" || p.type === "subtask"),
+ )
+ return { user, assistant, finished, tasks }
+}
+
export function fromError(
e: unknown,
ctx: { providerID: ProviderID; aborted?: boolean },
diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts
index 9765175e9e..aac893075f 100644
--- a/packages/opencode/src/session/processor.ts
+++ b/packages/opencode/src/session/processor.ts
@@ -21,8 +21,9 @@ import { Question } from "@/question"
import { errorMessage } from "@/util/error"
import * as Log from "@opencode-ai/core/util/log"
import { isRecord } from "@/util/record"
-import { SyncEvent } from "@/sync"
-import { SessionEvent } from "@/v2/session-event"
+import { EventV2 } from "@opencode-ai/core/event"
+import { EventV2Bridge } from "@/event-v2-bridge"
+import { SessionEvent } from "@opencode-ai/core/session-event"
import { ModelV2 } from "@opencode-ai/core/model"
import { ProviderV2 } from "@opencode-ai/core/provider"
import * as DateTime from "effect/DateTime"
@@ -84,23 +85,7 @@ type StreamEvent = Event
export class Service extends Context.Service()("@opencode/SessionProcessor") {}
-export const layer: Layer.Layer<
- Service,
- never,
- | Session.Service
- | Config.Service
- | Bus.Service
- | Snapshot.Service
- | Agent.Service
- | LLM.Service
- | Permission.Service
- | Plugin.Service
- | Image.Service
- | SessionSummary.Service
- | SessionStatus.Service
- | SyncEvent.Service
- | RuntimeFlags.Service
-> = Layer.effect(
+export const layer = Layer.effect(
Service,
Effect.gen(function* () {
const session = yield* Session.Service
@@ -115,7 +100,7 @@ export const layer: Layer.Layer<
const scope = yield* Scope.Scope
const status = yield* SessionStatus.Service
const image = yield* Image.Service
- const sync = yield* SyncEvent.Service
+ const events = yield* EventV2Bridge.Service
const flags = yield* RuntimeFlags.Service
const create = Effect.fn("SessionProcessor.create")(function* (input: Input) {
@@ -236,7 +221,7 @@ export const layer: Layer.Layer<
if (value.id in ctx.reasoningMap) return
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Reasoning.Started.Sync, {
+ yield* events.publish(SessionEvent.Reasoning.Started, {
sessionID: ctx.sessionID,
reasoningID: value.id,
timestamp: DateTime.makeUnsafe(Date.now()),
@@ -271,7 +256,7 @@ export const layer: Layer.Layer<
if (!(value.id in ctx.reasoningMap)) return
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Reasoning.Ended.Sync, {
+ yield* events.publish(SessionEvent.Reasoning.Ended, {
sessionID: ctx.sessionID,
reasoningID: value.id,
text: ctx.reasoningMap[value.id].text,
@@ -292,7 +277,7 @@ export const layer: Layer.Layer<
}
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Tool.Input.Started.Sync, {
+ yield* events.publish(SessionEvent.Tool.Input.Started, {
sessionID: ctx.sessionID,
callID: value.id,
name: value.toolName,
@@ -323,7 +308,7 @@ export const layer: Layer.Layer<
case "tool-input-end": {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Tool.Input.Ended.Sync, {
+ yield* events.publish(SessionEvent.Tool.Input.Ended, {
sessionID: ctx.sessionID,
callID: value.id,
text: "",
@@ -340,7 +325,7 @@ export const layer: Layer.Layer<
const toolCall = yield* readToolCall(value.toolCallId)
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Tool.Called.Sync, {
+ yield* events.publish(SessionEvent.Tool.Called, {
sessionID: ctx.sessionID,
callID: value.toolCallId,
tool: value.toolName,
@@ -405,14 +390,16 @@ export const layer: Layer.Layer<
typeof attachment.mime === "string" &&
typeof attachment.url === "string",
)
- // temporarily disabled
- // const normalized = yield* Effect.forEach(toolAttachments, (attachment) =>
- // attachment.mime.startsWith("image/")
- // ? image.normalize(attachment).pipe(Effect.exit)
- // : Effect.succeed(Exit.succeed(attachment)),
- // )
const normalized = yield* Effect.forEach(toolAttachments, (attachment) =>
- Effect.succeed(Exit.succeed(attachment)),
+ attachment.mime.startsWith("image/")
+ ? image.normalize(attachment).pipe(
+ Effect.catchIf(
+ (error) => error instanceof Image.ResizerUnavailableError,
+ () => Effect.succeed(attachment),
+ ),
+ Effect.exit,
+ )
+ : Effect.succeed(Exit.succeed(attachment)),
)
const omitted = normalized.filter(Exit.isFailure).length
const attachments = normalized.filter(Exit.isSuccess).map((item) => item.value)
@@ -426,7 +413,7 @@ export const layer: Layer.Layer<
}
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Tool.Success.Sync, {
+ yield* events.publish(SessionEvent.Tool.Success, {
sessionID: ctx.sessionID,
callID: value.toolCallId,
structured: output.metadata,
@@ -456,7 +443,7 @@ export const layer: Layer.Layer<
const toolCall = yield* readToolCall(value.toolCallId)
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Tool.Failed.Sync, {
+ yield* events.publish(SessionEvent.Tool.Failed, {
sessionID: ctx.sessionID,
callID: value.toolCallId,
error: {
@@ -481,7 +468,7 @@ export const layer: Layer.Layer<
if (!ctx.assistantMessage.summary) {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Step.Started.Sync, {
+ yield* events.publish(SessionEvent.Step.Started, {
sessionID: ctx.sessionID,
agent: input.assistantMessage.agent,
model: {
@@ -513,7 +500,7 @@ export const layer: Layer.Layer<
if (!ctx.assistantMessage.summary) {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Step.Ended.Sync, {
+ yield* events.publish(SessionEvent.Step.Ended, {
sessionID: ctx.sessionID,
finish: value.finishReason,
cost: usage.cost,
@@ -570,7 +557,7 @@ export const layer: Layer.Layer<
if (!ctx.assistantMessage.summary) {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Text.Started.Sync, {
+ yield* events.publish(SessionEvent.Text.Started, {
sessionID: ctx.sessionID,
timestamp: DateTime.makeUnsafe(Date.now()),
})
@@ -617,7 +604,7 @@ export const layer: Layer.Layer<
if (!ctx.assistantMessage.summary) {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Text.Ended.Sync, {
+ yield* events.publish(SessionEvent.Text.Ended, {
sessionID: ctx.sessionID,
text: ctx.currentText.text,
timestamp: DateTime.makeUnsafe(Date.now()),
@@ -713,7 +700,7 @@ export const layer: Layer.Layer<
if (!ctx.assistantMessage.summary) {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Step.Failed.Sync, {
+ yield* events.publish(SessionEvent.Step.Failed, {
sessionID: ctx.sessionID,
error: {
type: "unknown",
@@ -767,7 +754,7 @@ export const layer: Layer.Layer<
set: (info) => {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
const event = flags.experimentalEventSystem
- ? sync.run(SessionEvent.Retried.Sync, {
+ ? events.publish(SessionEvent.Retried, {
sessionID: ctx.sessionID,
attempt: info.attempt,
error: {
@@ -828,8 +815,8 @@ export const defaultLayer = Layer.suspend(() =>
Layer.provide(Image.defaultLayer),
Layer.provide(Bus.layer),
Layer.provide(Config.defaultLayer),
- Layer.provide(SyncEvent.defaultLayer),
Layer.provide(RuntimeFlags.defaultLayer),
+ Layer.provide(EventV2Bridge.defaultLayer),
),
)
diff --git a/packages/opencode/src/session/projectors-next.ts b/packages/opencode/src/session/projectors-next.ts
index 93298170cc..ae5b9c5d2f 100644
--- a/packages/opencode/src/session/projectors-next.ts
+++ b/packages/opencode/src/session/projectors-next.ts
@@ -1,10 +1,11 @@
import { and, desc, eq } from "@/storage/db"
import type { Database } from "@/storage/db"
-import { SessionMessage } from "@/v2/session-message"
-import { SessionMessageUpdater } from "@/v2/session-message-updater"
-import { SessionEvent } from "@/v2/session-event"
+import { SessionMessage } from "@opencode-ai/core/session-message"
+import { SessionMessageUpdater } from "@opencode-ai/core/session-message-updater"
+import { SessionEvent } from "@opencode-ai/core/session-event"
import * as DateTime from "effect/DateTime"
import { SyncEvent } from "@/sync"
+import { EventV2Bridge } from "@/event-v2-bridge"
import { SessionMessageTable, SessionTable } from "./session.sql"
import type { SessionID } from "./schema"
import { Schema } from "effect"
@@ -119,7 +120,7 @@ function update(db: Database.TxOrDb, event: SessionEvent.Event) {
}
export default [
- SyncEvent.project(SessionEvent.AgentSwitched.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.AgentSwitched), (db, data, event) => {
db.update(SessionTable)
.set({
agent: data.agent,
@@ -129,7 +130,7 @@ export default [
.run()
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.agent.switched", data })
}),
- SyncEvent.project(SessionEvent.ModelSwitched.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.ModelSwitched), (db, data, event) => {
db.update(SessionTable)
.set({
model: data.model,
@@ -139,65 +140,65 @@ export default [
.run()
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.model.switched", data })
}),
- SyncEvent.project(SessionEvent.Prompted.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Prompted), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.prompted", data })
}),
- SyncEvent.project(SessionEvent.Synthetic.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Synthetic), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.synthetic", data })
}),
- SyncEvent.project(SessionEvent.Shell.Started.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Shell.Started), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.shell.started", data })
}),
- SyncEvent.project(SessionEvent.Shell.Ended.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Shell.Ended), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.shell.ended", data })
}),
- SyncEvent.project(SessionEvent.Step.Started.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Step.Started), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.step.started", data })
}),
- SyncEvent.project(SessionEvent.Step.Ended.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Step.Ended), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.step.ended", data })
}),
- SyncEvent.project(SessionEvent.Step.Failed.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Step.Failed), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.step.failed", data })
}),
- SyncEvent.project(SessionEvent.Text.Started.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Text.Started), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.text.started", data })
}),
- SyncEvent.project(SessionEvent.Text.Delta.Sync, () => {}),
- SyncEvent.project(SessionEvent.Text.Ended.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Text.Delta), () => {}),
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Text.Ended), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.text.ended", data })
}),
- SyncEvent.project(SessionEvent.Tool.Input.Started.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Tool.Input.Started), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.tool.input.started", data })
}),
- SyncEvent.project(SessionEvent.Tool.Input.Delta.Sync, () => {}),
- SyncEvent.project(SessionEvent.Tool.Input.Ended.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Tool.Input.Delta), () => {}),
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Tool.Input.Ended), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.tool.input.ended", data })
}),
- SyncEvent.project(SessionEvent.Tool.Called.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Tool.Called), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.tool.called", data })
}),
- SyncEvent.project(SessionEvent.Tool.Success.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Tool.Success), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.tool.success", data })
}),
- SyncEvent.project(SessionEvent.Tool.Failed.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Tool.Failed), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.tool.failed", data })
}),
- SyncEvent.project(SessionEvent.Reasoning.Started.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Reasoning.Started), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.reasoning.started", data })
}),
- SyncEvent.project(SessionEvent.Reasoning.Delta.Sync, () => {}),
- SyncEvent.project(SessionEvent.Reasoning.Ended.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Reasoning.Delta), () => {}),
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Reasoning.Ended), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.reasoning.ended", data })
}),
- SyncEvent.project(SessionEvent.Retried.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Retried), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.retried", data })
}),
- SyncEvent.project(SessionEvent.Compaction.Started.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Compaction.Started), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.compaction.started", data })
}),
- SyncEvent.project(SessionEvent.Compaction.Delta.Sync, () => {}),
- SyncEvent.project(SessionEvent.Compaction.Ended.Sync, (db, data, event) => {
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Compaction.Delta), () => {}),
+ SyncEvent.project(EventV2Bridge.toSyncDefinition(SessionEvent.Compaction.Ended), (db, data, event) => {
update(db, { id: SessionMessage.ID.make(event.id), type: "session.next.compaction.ended", data })
}),
]
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts
index bc58fbdf35..ba9a4d6f1a 100644
--- a/packages/opencode/src/session/prompt.ts
+++ b/packages/opencode/src/session/prompt.ts
@@ -42,6 +42,7 @@ import { Shell } from "@/shell/shell"
import { ShellID } from "@/tool/shell/id"
import { AppFileSystem } from "@opencode-ai/core/filesystem"
import { Truncate } from "@/tool/truncate"
+import { Image } from "@/image/image"
import { decodeDataUrl } from "@/util/data-url"
import { Process } from "@/util/process"
import { Cause, Effect, Exit, Latch, Layer, Option, Scope, Context, Schema, Types } from "effect"
@@ -51,8 +52,9 @@ import { TaskTool, type TaskPromptOps } from "@/tool/task"
import { SessionRunState } from "./run-state"
import { EffectBridge } from "@/effect/bridge"
import { RuntimeFlags } from "@/effect/runtime-flags"
-import { SyncEvent } from "@/sync"
-import { SessionEvent } from "@/v2/session-event"
+import { EventV2 } from "@opencode-ai/core/event"
+import { EventV2Bridge } from "@/event-v2-bridge"
+import { SessionEvent } from "@opencode-ai/core/session-event"
import { ModelV2 } from "@opencode-ai/core/model"
import { ProviderV2 } from "@opencode-ai/core/provider"
import { AgentAttachment, FileAttachment, ReferenceAttachment, Source } from "@opencode-ai/core/session-prompt"
@@ -165,10 +167,10 @@ function referenceTextPart(input: {
export interface Interface {
readonly cancel: (sessionID: SessionID) => Effect.Effect
- readonly prompt: (input: PromptInput) => Effect.Effect
+ readonly prompt: (input: PromptInput) => Effect.Effect
readonly loop: (input: LoopInput) => Effect.Effect
- readonly shell: (input: ShellInput) => Effect.Effect
- readonly command: (input: CommandInput) => Effect.Effect
+ readonly shell: (input: ShellInput) => Effect.Effect
+ readonly command: (input: CommandInput) => Effect.Effect
readonly resolvePromptParts: (template: string) => Effect.Effect
}
@@ -193,6 +195,7 @@ export const layer = Layer.effect(
const lsp = yield* LSP.Service
const registry = yield* ToolRegistry.Service
const truncate = yield* Truncate.Service
+ const image = yield* Image.Service
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner
const scope = yield* Scope.Scope
const instruction = yield* Instruction.Service
@@ -202,7 +205,7 @@ export const layer = Layer.effect(
const sys = yield* SystemPrompt.Service
const llm = yield* LLM.Service
const references = yield* Reference.Service
- const sync = yield* SyncEvent.Service
+ const events = yield* EventV2Bridge.Service
const flags = yield* RuntimeFlags.Service
const runner = Effect.fn("SessionPrompt.runner")(function* () {
return yield* EffectBridge.make()
@@ -211,7 +214,8 @@ export const layer = Layer.effect(
return {
cancel: (sessionID: SessionID) => cancel(sessionID),
resolvePromptParts: (template: string) => resolvePromptParts(template),
- prompt: (input: PromptInput) => prompt(input),
+ prompt: (input: PromptInput) => prompt(input).pipe(Effect.catch(Effect.die)),
+ loop: (input: LoopInput) => loop(input),
} satisfies TaskPromptOps
})
@@ -941,7 +945,6 @@ NOTE: At any point in time through this workflow you should feel free to ask the
providerID: model.providerID,
}
yield* sessions.updateMessage(msg)
- const callID = ulid()
const started = Date.now()
const part: MessageV2.ToolPart = {
type: "tool",
@@ -958,10 +961,10 @@ NOTE: At any point in time through this workflow you should feel free to ask the
}
yield* sessions.updatePart(part)
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Shell.Started.Sync, {
+ yield* events.publish(SessionEvent.Shell.Started, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(started),
- callID,
+ callID: part.callID,
command: input.command,
})
}
@@ -981,7 +984,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
}
const completed = Date.now()
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Shell.Ended.Sync, {
+ yield* events.publish(SessionEvent.Shell.Ended, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(completed),
callID: part.callID,
@@ -1057,15 +1060,15 @@ NOTE: At any point in time through this workflow you should feel free to ask the
if (Exit.isSuccess(exit)) return exit.value
const err = Cause.squash(exit.cause)
if (Provider.ModelNotFoundError.isInstance(err)) {
- const hint = err.data.suggestions?.length ? ` Did you mean: ${err.data.suggestions.join(", ")}?` : ""
+ const hint = err.suggestions?.length ? ` Did you mean: ${err.suggestions.join(", ")}?` : ""
yield* bus.publish(Session.Event.Error, {
sessionID,
error: new NamedError.Unknown({
- message: `Model not found: ${err.data.providerID}/${err.data.modelID}.${hint}`,
+ message: `Model not found: ${err.providerID}/${err.modelID}.${hint}`,
}).toObject(),
})
}
- return yield* Effect.failCause(exit.cause)
+ return yield* Effect.die(err)
})
const currentModel = Effect.fnUntraced(function* (sessionID: SessionID) {
@@ -1108,7 +1111,9 @@ NOTE: At any point in time through this workflow you should feel free to ask the
const same = ag.model && model.providerID === ag.model.providerID && model.modelID === ag.model.modelID
const full =
!input.variant && ag.variant && same
- ? yield* provider.getModel(model.providerID, model.modelID).pipe(Effect.catchDefect(() => Effect.void))
+ ? yield* provider
+ .getModel(model.providerID, model.modelID)
+ .pipe(Effect.catchIf(Provider.ModelNotFoundError.isInstance, () => Effect.succeed(undefined)))
: undefined
const variant = input.variant ?? (ag.variant && full?.variants?.[ag.variant] ? ag.variant : undefined)
@@ -1129,7 +1134,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
}
if (current?.agent !== info.agent) {
- yield* sync.run(SessionEvent.AgentSwitched.Sync, {
+ yield* events.publish(SessionEvent.AgentSwitched, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(info.time.created),
agent: info.agent,
@@ -1140,7 +1145,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
current.model.id !== info.model.modelID ||
(current.model.variant === "default" ? undefined : current.model.variant) !== info.model.variant
) {
- yield* sync.run(SessionEvent.ModelSwitched.Sync, {
+ yield* events.publish(SessionEvent.ModelSwitched, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(info.time.created),
model: {
@@ -1476,7 +1481,16 @@ NOTE: At any point in time through this workflow you should feel free to ask the
{ message: info, parts: resolvedParts },
)
- const parts = resolvedParts
+ const parts = yield* Effect.forEach(resolvedParts, (part) =>
+ part.type === "file" && part.mime.startsWith("image/")
+ ? image.normalize(part).pipe(
+ Effect.catchIf(
+ (error) => error instanceof Image.ResizerUnavailableError,
+ () => Effect.succeed(part),
+ ),
+ )
+ : Effect.succeed(part),
+ )
const parsed = decodeMessageInfo(info, { errors: "all", propertyOrder: "original" })
if (Exit.isFailure(parsed)) {
@@ -1572,7 +1586,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
)
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Prompted.Sync, {
+ yield* events.publish(SessionEvent.Prompted, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(info.time.created),
prompt: {
@@ -1586,7 +1600,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
for (const text of nextPrompt.synthetic) {
// TODO(v2): Temporary dual-write while migrating session messages to v2 events.
if (flags.experimentalEventSystem) {
- yield* sync.run(SessionEvent.Synthetic.Sync, {
+ yield* events.publish(SessionEvent.Synthetic, {
sessionID: input.sessionID,
timestamp: DateTime.makeUnsafe(info.time.created),
text,
@@ -1597,26 +1611,26 @@ NOTE: At any point in time through this workflow you should feel free to ask the
return { info, parts }
}, Effect.scoped)
- const prompt: (input: PromptInput) => Effect.Effect = Effect.fn("SessionPrompt.prompt")(
- function* (input: PromptInput) {
- const session = yield* sessions.get(input.sessionID).pipe(Effect.orDie)
- yield* revert.cleanup(session)
- const message = yield* createUserMessage(input)
- yield* sessions.touch(input.sessionID)
+ const prompt: (input: PromptInput) => Effect.Effect = Effect.fn(
+ "SessionPrompt.prompt",
+ )(function* (input: PromptInput) {
+ const session = yield* sessions.get(input.sessionID).pipe(Effect.orDie)
+ yield* revert.cleanup(session)
+ const message = yield* createUserMessage(input)
+ yield* sessions.touch(input.sessionID)
- const permissions: Permission.Ruleset = []
- for (const [t, enabled] of Object.entries(input.tools ?? {})) {
- permissions.push({ permission: t, action: enabled ? "allow" : "deny", pattern: "*" })
- }
- if (permissions.length > 0) {
- session.permission = permissions
- yield* sessions.setPermission({ sessionID: session.id, permission: permissions })
- }
+ const permissions: Permission.Ruleset = []
+ for (const [t, enabled] of Object.entries(input.tools ?? {})) {
+ permissions.push({ permission: t, action: enabled ? "allow" : "deny", pattern: "*" })
+ }
+ if (permissions.length > 0) {
+ session.permission = permissions
+ yield* sessions.setPermission({ sessionID: session.id, permission: permissions })
+ }
- if (input.noReply === true) return message
- return yield* loop({ sessionID: input.sessionID })
- },
- )
+ if (input.noReply === true) return message
+ return yield* loop({ sessionID: input.sessionID })
+ })
const lastAssistant = Effect.fnUntraced(function* (sessionID: SessionID) {
const match = yield* sessions.findMessage(sessionID, (m) => m.info.role !== "user").pipe(Effect.orDie)
@@ -1640,19 +1654,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
let msgs = yield* MessageV2.filterCompactedEffect(sessionID)
- let lastUser: MessageV2.User | undefined
- let lastAssistant: MessageV2.Assistant | undefined
- let lastFinished: MessageV2.Assistant | undefined
- let tasks: (MessageV2.CompactionPart | MessageV2.SubtaskPart)[] = []
- for (let i = msgs.length - 1; i >= 0; i--) {
- const msg = msgs[i]
- if (!lastUser && msg.info.role === "user") lastUser = msg.info
- if (!lastAssistant && msg.info.role === "assistant") lastAssistant = msg.info
- if (!lastFinished && msg.info.role === "assistant" && msg.info.finish) lastFinished = msg.info
- if (lastUser && lastFinished) break
- const task = msg.parts.filter((part) => part.type === "compaction" || part.type === "subtask")
- if (task && !lastFinished) tasks.push(...task)
- }
+ const { user: lastUser, assistant: lastAssistant, finished: lastFinished, tasks } = MessageV2.latest(msgs)
if (!lastUser) throw new Error("No user message found in stream. This should never happen.")
@@ -1742,12 +1744,25 @@ NOTE: At any point in time through this workflow you should feel free to ask the
sessionID,
}
yield* sessions.updateMessage(msg)
- const handle = yield* processor.create({
- assistantMessage: msg,
- sessionID,
- model,
+
+ const finalizeInterruptedAssistant = Effect.gen(function* () {
+ if (msg.time.completed) return
+ msg.error ??= MessageV2.fromError(new DOMException("Aborted", "AbortError"), {
+ providerID: msg.providerID,
+ aborted: true,
+ })
+ msg.time.completed = Date.now()
+ yield* sessions.updateMessage(msg)
})
+ const handle = yield* processor
+ .create({
+ assistantMessage: msg,
+ sessionID,
+ model,
+ })
+ .pipe(Effect.onInterrupt(() => finalizeInterruptedAssistant))
+
const outcome: "break" | "continue" = yield* Effect.gen(function* () {
const lastUserMsg = msgs.findLast((m) => m.info.role === "user")
const bypassAgentCheck = lastUserMsg?.parts.some((p) => p.type === "agent") ?? false
@@ -1846,7 +1861,10 @@ NOTE: At any point in time through this workflow you should feel free to ask the
})
}
return "continue" as const
- }).pipe(Effect.ensuring(instruction.clear(handle.message.id)))
+ }).pipe(
+ Effect.ensuring(instruction.clear(handle.message.id)),
+ Effect.onInterrupt(() => finalizeInterruptedAssistant),
+ )
if (outcome === "break") break
continue
}
@@ -1862,12 +1880,12 @@ NOTE: At any point in time through this workflow you should feel free to ask the
return yield* state.ensureRunning(input.sessionID, lastAssistant(input.sessionID), runLoop(input.sessionID))
})
- const shell: (input: ShellInput) => Effect.Effect