diff --git a/.github/actions/setup-bun/action.yml b/.github/actions/setup-bun/action.yml
index 9859174a2e35..5b44517ec511 100644
--- a/.github/actions/setup-bun/action.yml
+++ b/.github/actions/setup-bun/action.yml
@@ -23,7 +23,7 @@ runs:
fi
- name: Setup Bun
- uses: oven-sh/setup-bun@v2
+ uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version-file: ${{ !steps.bun-url.outputs.url && 'package.json' || '' }}
bun-download-url: ${{ steps.bun-url.outputs.url }}
@@ -33,8 +33,9 @@ runs:
shell: bash
run: echo "dir=$(bun pm cache)" >> "$GITHUB_OUTPUT"
- - name: Cache Bun dependencies
- uses: actions/cache@v4
+ - name: Restore Bun dependencies
+ id: bun-cache
+ uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ steps.cache.outputs.dir }}
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
@@ -56,3 +57,10 @@ runs:
bun install ${{ inputs.install-flags }}
fi
shell: bash
+
+ - name: Save Bun dependencies
+ if: steps.bun-cache.outputs.cache-hit != 'true' && github.event_name != 'pull_request' && github.event_name != 'pull_request_target'
+ uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
+ with:
+ path: ${{ steps.cache.outputs.dir }}
+ key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
diff --git a/.github/actions/setup-git-committer/action.yml b/.github/actions/setup-git-committer/action.yml
index 87d2f5d0d44a..65c974c6ab48 100644
--- a/.github/actions/setup-git-committer/action.yml
+++ b/.github/actions/setup-git-committer/action.yml
@@ -19,7 +19,7 @@ runs:
steps:
- name: Create app token
id: apptoken
- uses: actions/create-github-app-token@v2
+ uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2.2.2
with:
app-id: ${{ inputs.opencode-app-id }}
private-key: ${{ inputs.opencode-app-secret }}
diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml
index a7106667b116..e93d5fbdb260 100644
--- a/.github/workflows/beta.yml
+++ b/.github/workflows/beta.yml
@@ -13,7 +13,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
diff --git a/.github/workflows/close-issues.yml b/.github/workflows/close-issues.yml
index 04b6ae7ac80f..b8a2e3f575d8 100644
--- a/.github/workflows/close-issues.yml
+++ b/.github/workflows/close-issues.yml
@@ -12,9 +12,9 @@ jobs:
contents: read
issues: write
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- - uses: oven-sh/setup-bun@v2
+ - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: latest
diff --git a/.github/workflows/close-prs.yml b/.github/workflows/close-prs.yml
new file mode 100644
index 000000000000..a1e603a88104
--- /dev/null
+++ b/.github/workflows/close-prs.yml
@@ -0,0 +1,50 @@
+name: close-prs
+
+on:
+ schedule:
+ - cron: "0 22 * * *" # Daily at 10:00 PM UTC
+ workflow_dispatch:
+ inputs:
+ dry-run:
+ description: "Log matching PRs without closing them"
+ type: boolean
+ default: true
+ max-close:
+ description: "Maximum matching PRs to close"
+ type: string
+ required: false
+ default: "50"
+
+jobs:
+ close:
+ runs-on: ubuntu-latest
+ timeout-minutes: 240
+ permissions:
+ contents: read
+ issues: write
+ pull-requests: write
+ steps:
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
+
+ - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
+ with:
+ bun-version: latest
+
+ - name: Close old PRs without enough positive reactions
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
+ run: |
+ max_close="${{ inputs['max-close'] }}"
+ if [ -z "$max_close" ]; then
+ max_close="50"
+ fi
+
+ args=("--threshold" "2" "--age-months" "1" "--sleep-ms" "20000" "--max-close" "$max_close")
+
+ if [ "${{ github.event_name }}" = "schedule" ]; then
+ args+=("--execute")
+ elif [ "${{ inputs['dry-run'] }}" = "false" ]; then
+ args+=("--execute")
+ fi
+
+ bun script/github/close-prs.ts "${args[@]}"
diff --git a/.github/workflows/close-stale-prs.yml b/.github/workflows/close-stale-prs.yml
deleted file mode 100644
index e0e571b46911..000000000000
--- a/.github/workflows/close-stale-prs.yml
+++ /dev/null
@@ -1,235 +0,0 @@
-name: close-stale-prs
-
-on:
- workflow_dispatch:
- inputs:
- dryRun:
- description: "Log actions without closing PRs"
- type: boolean
- default: false
- schedule:
- - cron: "0 6 * * *"
-
-permissions:
- contents: read
- issues: write
- pull-requests: write
-
-jobs:
- close-stale-prs:
- runs-on: ubuntu-latest
- timeout-minutes: 15
- steps:
- - name: Close inactive PRs
- uses: actions/github-script@v8
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- script: |
- const DAYS_INACTIVE = 60
- const MAX_RETRIES = 3
-
- // Adaptive delay: fast for small batches, slower for large to respect
- // GitHub's 80 content-generating requests/minute limit
- const SMALL_BATCH_THRESHOLD = 10
- const SMALL_BATCH_DELAY_MS = 1000 // 1s for daily operations (≤10 PRs)
- const LARGE_BATCH_DELAY_MS = 2000 // 2s for backlog (>10 PRs) = ~30 ops/min, well under 80 limit
-
- const startTime = Date.now()
- const cutoff = new Date(Date.now() - DAYS_INACTIVE * 24 * 60 * 60 * 1000)
- const { owner, repo } = context.repo
- const dryRun = context.payload.inputs?.dryRun === "true"
-
- core.info(`Dry run mode: ${dryRun}`)
- core.info(`Cutoff date: ${cutoff.toISOString()}`)
-
- function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms))
- }
-
- async function withRetry(fn, description = 'API call') {
- let lastError
- for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
- try {
- const result = await fn()
- return result
- } catch (error) {
- lastError = error
- const isRateLimited = error.status === 403 &&
- (error.message?.includes('rate limit') || error.message?.includes('secondary'))
-
- if (!isRateLimited) {
- throw error
- }
-
- // Parse retry-after header, default to 60 seconds
- const retryAfter = error.response?.headers?.['retry-after']
- ? parseInt(error.response.headers['retry-after'])
- : 60
-
- // Exponential backoff: retryAfter * 2^attempt
- const backoffMs = retryAfter * 1000 * Math.pow(2, attempt)
-
- core.warning(`${description}: Rate limited (attempt ${attempt + 1}/${MAX_RETRIES}). Waiting ${backoffMs / 1000}s before retry...`)
-
- await sleep(backoffMs)
- }
- }
- core.error(`${description}: Max retries (${MAX_RETRIES}) exceeded`)
- throw lastError
- }
-
- const query = `
- query($owner: String!, $repo: String!, $cursor: String) {
- repository(owner: $owner, name: $repo) {
- pullRequests(first: 100, states: OPEN, after: $cursor) {
- pageInfo {
- hasNextPage
- endCursor
- }
- nodes {
- number
- title
- author {
- login
- }
- createdAt
- commits(last: 1) {
- nodes {
- commit {
- committedDate
- }
- }
- }
- comments(last: 1) {
- nodes {
- createdAt
- }
- }
- reviews(last: 1) {
- nodes {
- createdAt
- }
- }
- }
- }
- }
- }
- `
-
- const allPrs = []
- let cursor = null
- let hasNextPage = true
- let pageCount = 0
-
- while (hasNextPage) {
- pageCount++
- core.info(`Fetching page ${pageCount} of open PRs...`)
-
- const result = await withRetry(
- () => github.graphql(query, { owner, repo, cursor }),
- `GraphQL page ${pageCount}`
- )
-
- allPrs.push(...result.repository.pullRequests.nodes)
- hasNextPage = result.repository.pullRequests.pageInfo.hasNextPage
- cursor = result.repository.pullRequests.pageInfo.endCursor
-
- core.info(`Page ${pageCount}: fetched ${result.repository.pullRequests.nodes.length} PRs (total: ${allPrs.length})`)
-
- // Delay between pagination requests (use small batch delay for reads)
- if (hasNextPage) {
- await sleep(SMALL_BATCH_DELAY_MS)
- }
- }
-
- core.info(`Found ${allPrs.length} open pull requests`)
-
- const stalePrs = allPrs.filter((pr) => {
- const dates = [
- new Date(pr.createdAt),
- pr.commits.nodes[0] ? new Date(pr.commits.nodes[0].commit.committedDate) : null,
- pr.comments.nodes[0] ? new Date(pr.comments.nodes[0].createdAt) : null,
- pr.reviews.nodes[0] ? new Date(pr.reviews.nodes[0].createdAt) : null,
- ].filter((d) => d !== null)
-
- const lastActivity = dates.sort((a, b) => b.getTime() - a.getTime())[0]
-
- if (!lastActivity || lastActivity > cutoff) {
- core.info(`PR #${pr.number} is fresh (last activity: ${lastActivity?.toISOString() || "unknown"})`)
- return false
- }
-
- core.info(`PR #${pr.number} is STALE (last activity: ${lastActivity.toISOString()})`)
- return true
- })
-
- if (!stalePrs.length) {
- core.info("No stale pull requests found.")
- return
- }
-
- core.info(`Found ${stalePrs.length} stale pull requests`)
-
- // ============================================
- // Close stale PRs
- // ============================================
- const requestDelayMs = stalePrs.length > SMALL_BATCH_THRESHOLD
- ? LARGE_BATCH_DELAY_MS
- : SMALL_BATCH_DELAY_MS
-
- core.info(`Using ${requestDelayMs}ms delay between operations (${stalePrs.length > SMALL_BATCH_THRESHOLD ? 'large' : 'small'} batch mode)`)
-
- let closedCount = 0
- let skippedCount = 0
-
- for (const pr of stalePrs) {
- const issue_number = pr.number
- const closeComment = `Closing this pull request because it has had no updates for more than ${DAYS_INACTIVE} days. If you plan to continue working on it, feel free to reopen or open a new PR.`
-
- if (dryRun) {
- core.info(`[dry-run] Would close PR #${issue_number} from ${pr.author?.login || 'unknown'}: ${pr.title}`)
- continue
- }
-
- try {
- // Add comment
- await withRetry(
- () => github.rest.issues.createComment({
- owner,
- repo,
- issue_number,
- body: closeComment,
- }),
- `Comment on PR #${issue_number}`
- )
-
- // Close PR
- await withRetry(
- () => github.rest.pulls.update({
- owner,
- repo,
- pull_number: issue_number,
- state: "closed",
- }),
- `Close PR #${issue_number}`
- )
-
- closedCount++
- core.info(`Closed PR #${issue_number} from ${pr.author?.login || 'unknown'}: ${pr.title}`)
-
- // Delay before processing next PR
- await sleep(requestDelayMs)
- } catch (error) {
- skippedCount++
- core.error(`Failed to close PR #${issue_number}: ${error.message}`)
- }
- }
-
- const elapsed = Math.round((Date.now() - startTime) / 1000)
- core.info(`\n========== Summary ==========`)
- core.info(`Total open PRs found: ${allPrs.length}`)
- core.info(`Stale PRs identified: ${stalePrs.length}`)
- core.info(`PRs closed: ${closedCount}`)
- core.info(`PRs skipped (errors): ${skippedCount}`)
- core.info(`Elapsed time: ${elapsed}s`)
- core.info(`=============================`)
diff --git a/.github/workflows/compliance-close.yml b/.github/workflows/compliance-close.yml
index c3bcf9f686f4..14e68701e57d 100644
--- a/.github/workflows/compliance-close.yml
+++ b/.github/workflows/compliance-close.yml
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Close non-compliant issues and PRs after 2 hours
- uses: actions/github-script@v7
+ uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const { data: items } = await github.rest.issues.listForRepo({
diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml
index c7df066d41c6..15bf0783160e 100644
--- a/.github/workflows/containers.yml
+++ b/.github/workflows/containers.yml
@@ -21,18 +21,18 @@ jobs:
REGISTRY: ghcr.io/${{ github.repository_owner }}
TAG: "24.04"
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: ./.github/actions/setup-bun
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index abd8bafdd675..7b4f53a98ee0 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -13,11 +13,11 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- uses: ./.github/actions/setup-bun
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "24"
diff --git a/.github/workflows/docs-locale-sync.yml b/.github/workflows/docs-locale-sync.yml
index 9689eee6d212..5f921e8bb717 100644
--- a/.github/workflows/docs-locale-sync.yml
+++ b/.github/workflows/docs-locale-sync.yml
@@ -16,7 +16,7 @@ jobs:
contents: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
fetch-depth: 0
diff --git a/.github/workflows/docs-update.yml b/.github/workflows/docs-update.yml
index 900ad2b0c586..4767dec53999 100644
--- a/.github/workflows/docs-update.yml
+++ b/.github/workflows/docs-update.yml
@@ -18,7 +18,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0 # Fetch full history to access commits
@@ -43,7 +43,7 @@ jobs:
- name: Run opencode
if: steps.commits.outputs.has_commits == 'true'
- uses: sst/opencode/github@latest
+ uses: sst/opencode/github@2c14fc5586fe0b88e5c04732d2e846769cc35671 # latest
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
with:
diff --git a/.github/workflows/duplicate-issues.yml b/.github/workflows/duplicate-issues.yml
index 6c1943fe7b8a..4648a2d0c3d3 100644
--- a/.github/workflows/duplicate-issues.yml
+++ b/.github/workflows/duplicate-issues.yml
@@ -13,7 +13,7 @@ jobs:
issues: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
@@ -125,7 +125,7 @@ jobs:
issues: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
diff --git a/.github/workflows/generate.yml b/.github/workflows/generate.yml
index 706ab2989e15..324cfec02001 100644
--- a/.github/workflows/generate.yml
+++ b/.github/workflows/generate.yml
@@ -13,7 +13,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Setup Bun
uses: ./.github/actions/setup-bun
diff --git a/.github/workflows/nix-eval.yml b/.github/workflows/nix-eval.yml
index c76b2c972973..75332695a1ad 100644
--- a/.github/workflows/nix-eval.yml
+++ b/.github/workflows/nix-eval.yml
@@ -20,10 +20,10 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Nix
- uses: nixbuild/nix-quick-install-action@v34
+ uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34
- name: Evaluate flake outputs (all systems)
run: |
diff --git a/.github/workflows/nix-hashes.yml b/.github/workflows/nix-hashes.yml
index 6b5b3929adcb..085f8895c293 100644
--- a/.github/workflows/nix-hashes.yml
+++ b/.github/workflows/nix-hashes.yml
@@ -41,10 +41,10 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Nix
- uses: nixbuild/nix-quick-install-action@v34
+ uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34
- name: Compute node_modules hash
id: hash
@@ -72,7 +72,7 @@ jobs:
echo "Computed hash for ${SYSTEM}: $HASH"
- name: Upload hash
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: hash-${{ matrix.system }}
path: hash.txt
@@ -85,7 +85,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
fetch-depth: 0
@@ -102,7 +102,7 @@ jobs:
git pull --rebase --autostash origin "$GITHUB_REF_NAME"
- name: Download hash artifacts
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
path: hashes
pattern: hash-*
diff --git a/.github/workflows/notify-discord.yml b/.github/workflows/notify-discord.yml
index b1d8053603a9..0b2b1cde051b 100644
--- a/.github/workflows/notify-discord.yml
+++ b/.github/workflows/notify-discord.yml
@@ -9,6 +9,6 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Send nicely-formatted embed to Discord
- uses: SethCohen/github-releases-to-discord@v1
+ uses: SethCohen/github-releases-to-discord@24d166886aee4646d448c8a389ff9e1ebcab3682 # v1.20.0
with:
webhook_url: ${{ secrets.DISCORD_WEBHOOK }}
diff --git a/.github/workflows/opencode.yml b/.github/workflows/opencode.yml
index 76e75fcaefb9..3469c21917f8 100644
--- a/.github/workflows/opencode.yml
+++ b/.github/workflows/opencode.yml
@@ -21,12 +21,12 @@ jobs:
issues: read
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: ./.github/actions/setup-bun
- name: Run opencode
- uses: anomalyco/opencode/github@latest
+ uses: anomalyco/opencode/github@2c14fc5586fe0b88e5c04732d2e846769cc35671 # latest
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENCODE_PERMISSION: '{"bash": "deny"}'
diff --git a/.github/workflows/pr-management.yml b/.github/workflows/pr-management.yml
index 35bd7ae36f2d..b6aa4e589d89 100644
--- a/.github/workflows/pr-management.yml
+++ b/.github/workflows/pr-management.yml
@@ -12,7 +12,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
@@ -78,7 +78,7 @@ jobs:
issues: write
steps:
- name: Add Contributor Label
- uses: actions/github-script@v8
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const isPR = !!context.payload.pull_request;
diff --git a/.github/workflows/pr-standards.yml b/.github/workflows/pr-standards.yml
index 1edbd5d061dc..06838089d354 100644
--- a/.github/workflows/pr-standards.yml
+++ b/.github/workflows/pr-standards.yml
@@ -12,7 +12,7 @@ jobs:
pull-requests: write
steps:
- name: Check PR standards
- uses: actions/github-script@v7
+ uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const pr = context.payload.pull_request;
@@ -159,7 +159,7 @@ jobs:
pull-requests: write
steps:
- name: Check PR template compliance
- uses: actions/github-script@v7
+ uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const pr = context.payload.pull_request;
diff --git a/.github/workflows/publish-github-action.yml b/.github/workflows/publish-github-action.yml
index d2789373a34a..e5ca91b5618a 100644
--- a/.github/workflows/publish-github-action.yml
+++ b/.github/workflows/publish-github-action.yml
@@ -16,7 +16,7 @@ jobs:
publish:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
diff --git a/.github/workflows/publish-vscode.yml b/.github/workflows/publish-vscode.yml
index f49a10578072..00c7e260482e 100644
--- a/.github/workflows/publish-vscode.yml
+++ b/.github/workflows/publish-vscode.yml
@@ -15,7 +15,7 @@ jobs:
publish:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 5f7ee96b90d1..5f8bac973adc 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -35,7 +35,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
if: github.repository == 'anomalyco/opencode'
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
@@ -72,7 +72,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
if: github.repository == 'anomalyco/opencode'
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-tags: true
@@ -95,14 +95,14 @@ jobs:
GH_REPO: ${{ needs.version.outputs.repo }}
GH_TOKEN: ${{ steps.committer.outputs.token }}
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: opencode-cli
path: |
packages/opencode/dist/opencode-darwin*
packages/opencode/dist/opencode-linux*
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: opencode-cli-windows
path: packages/opencode/dist/opencode-windows*
@@ -123,9 +123,9 @@ jobs:
AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE: ${{ secrets.AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE }}
AZURE_TRUSTED_SIGNING_ENDPOINT: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: opencode-cli-windows
path: packages/opencode/dist
@@ -138,13 +138,13 @@ jobs:
opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }}
- name: Azure login
- uses: azure/login@v2
+ uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}
- - uses: azure/artifact-signing-action@v1
+ - uses: azure/artifact-signing-action@b443cf8ea4124818d2ea9f043cba29fc3ec47b16 # v1.2.0
with:
endpoint: ${{ env.AZURE_TRUSTED_SIGNING_ENDPOINT }}
signing-account-name: ${{ env.AZURE_TRUSTED_SIGNING_ACCOUNT_NAME }}
@@ -201,7 +201,7 @@ jobs:
--clobber `
--repo "${{ needs.version.outputs.repo }}"
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: opencode-cli-signed-windows
path: |
@@ -244,14 +244,14 @@ jobs:
- host: "blacksmith-4vcpu-ubuntu-2404"
target: x86_64-unknown-linux-gnu
platform_flag: --linux
- - host: "blacksmith-4vcpu-ubuntu-2404"
+ - host: "blacksmith-4vcpu-ubuntu-2404-arm"
target: aarch64-unknown-linux-gnu
- platform_flag: --linux
+ platform_flag: --linux --arm64
runs-on: ${{ matrix.settings.host }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- - uses: apple-actions/import-codesign-certs@v2
+ - uses: apple-actions/import-codesign-certs@8f3fb608891dd2244cdab3d69cd68c0d37a7fe93 # v2.0.0
if: runner.os == 'macOS'
with:
keychain: build
@@ -268,19 +268,19 @@ jobs:
- name: Azure login
if: runner.os == 'Windows'
- uses: azure/login@v2
+ uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "24"
- name: Cache apt packages
if: contains(matrix.settings.host, 'ubuntu')
- uses: actions/cache@v4
+ uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/apt-cache
key: ${{ runner.os }}-${{ matrix.settings.target }}-apt-electron-${{ hashFiles('.github/workflows/publish.yml') }}
@@ -388,12 +388,12 @@ jobs:
}
}
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: opencode-desktop-${{ matrix.settings.target }}
path: packages/desktop/dist/*
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: needs.version.outputs.release
with:
name: latest-yml-${{ matrix.settings.target }}
@@ -408,44 +408,44 @@ jobs:
if: always() && !failure() && !cancelled()
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- uses: ./.github/actions/setup-bun
- name: Login to GitHub Container Registry
- uses: docker/login-action@v3
+ uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: opencode-cli
path: packages/opencode/dist
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: opencode-cli-windows
path: packages/opencode/dist
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: opencode-cli-signed-windows
path: packages/opencode/dist
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
if: needs.version.outputs.release
with:
pattern: latest-yml-*
@@ -459,7 +459,7 @@ jobs:
opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }}
- name: Cache apt packages (AUR)
- uses: actions/cache@v4
+ uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: /var/cache/apt/archives
key: ${{ runner.os }}-apt-aur-${{ hashFiles('.github/workflows/publish.yml') }}
diff --git a/.github/workflows/release-github-action.yml b/.github/workflows/release-github-action.yml
index 3f5caa55c8dc..4a1d7218bb2c 100644
--- a/.github/workflows/release-github-action.yml
+++ b/.github/workflows/release-github-action.yml
@@ -16,7 +16,7 @@ jobs:
release:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml
index 2bd1f0c4a002..00a4fba8ca13 100644
--- a/.github/workflows/review.yml
+++ b/.github/workflows/review.yml
@@ -25,7 +25,7 @@ jobs:
fi
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
diff --git a/.github/workflows/stats.yml b/.github/workflows/stats.yml
index 824733901d6b..bc97cfcd7188 100644
--- a/.github/workflows/stats.yml
+++ b/.github/workflows/stats.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Setup Bun
uses: ./.github/actions/setup-bun
diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml
index 6d143a8a22f4..1e652104d690 100644
--- a/.github/workflows/storybook.yml
+++ b/.github/workflows/storybook.yml
@@ -29,7 +29,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Setup Bun
uses: ./.github/actions/setup-bun
diff --git a/.github/workflows/sync-zed-extension.yml b/.github/workflows/sync-zed-extension.yml
index f14487cde974..6e4b44083c1a 100644
--- a/.github/workflows/sync-zed-extension.yml
+++ b/.github/workflows/sync-zed-extension.yml
@@ -10,7 +10,7 @@ jobs:
name: Release Zed Extension
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index f226d3483a71..4a65b9927738 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -37,12 +37,12 @@ jobs:
shell: bash
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "24"
@@ -55,7 +55,7 @@ jobs:
git config --global user.name "opencode"
- name: Cache Turbo
- uses: actions/cache@v4
+ uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: node_modules/.cache/turbo
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}-${{ github.sha }}
@@ -75,7 +75,7 @@ jobs:
- name: Publish unit reports
if: always()
- uses: mikepenz/action-junit-report@v6
+ uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
with:
report_paths: packages/*/.artifacts/unit/junit.xml
check_name: "unit results (${{ matrix.settings.name }})"
@@ -85,7 +85,7 @@ jobs:
- name: Upload unit artifacts
if: always()
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: unit-${{ matrix.settings.name }}-${{ github.run_attempt }}
include-hidden-files: true
@@ -111,12 +111,12 @@ jobs:
shell: bash
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "24"
@@ -131,7 +131,7 @@ jobs:
- name: Cache Playwright browsers
id: playwright-cache
- uses: actions/cache@v4
+ uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ github.workspace }}/.playwright-browsers
key: ${{ runner.os }}-${{ runner.arch }}-playwright-${{ steps.playwright-version.outputs.version }}-chromium
@@ -155,7 +155,7 @@ jobs:
- name: Upload Playwright artifacts
if: always()
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: playwright-${{ matrix.settings.name }}-${{ github.run_attempt }}
if-no-files-found: ignore
diff --git a/.github/workflows/triage.yml b/.github/workflows/triage.yml
index 99e7b5b34fe3..27852a12ce4d 100644
--- a/.github/workflows/triage.yml
+++ b/.github/workflows/triage.yml
@@ -12,7 +12,7 @@ jobs:
issues: write
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml
index b247d24b40db..fc9a52797c1d 100644
--- a/.github/workflows/typecheck.yml
+++ b/.github/workflows/typecheck.yml
@@ -12,7 +12,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Setup Bun
uses: ./.github/actions/setup-bun
diff --git a/.opencode/opencode.jsonc b/.opencode/opencode.jsonc
index dab531d337eb..0ae2fbe26bc4 100644
--- a/.opencode/opencode.jsonc
+++ b/.opencode/opencode.jsonc
@@ -1,11 +1,7 @@
{
"$schema": "https://opencode.ai/config.json",
"provider": {},
- "permission": {
- "edit": {
- "packages/opencode/migration/*": "ask",
- },
- },
+ "permission": {},
"mcp": {},
"tools": {
"github-triage": false,
diff --git a/.opencode/skills/improve-codebase-architecture/DEEPENING.md b/.opencode/skills/improve-codebase-architecture/DEEPENING.md
new file mode 100644
index 000000000000..c52fdfd99f35
--- /dev/null
+++ b/.opencode/skills/improve-codebase-architecture/DEEPENING.md
@@ -0,0 +1,37 @@
+# Deepening
+
+How to deepen a cluster of shallow modules safely, given its dependencies. Assumes the vocabulary in [LANGUAGE.md](LANGUAGE.md) — **module**, **interface**, **seam**, **adapter**.
+
+## Dependency categories
+
+When assessing a candidate for deepening, classify its dependencies. The category determines how the deepened module is tested across its seam.
+
+### 1. In-process
+
+Pure computation, in-memory state, no I/O. Always deepenable — merge the modules and test through the new interface directly. No adapter needed.
+
+### 2. Local-substitutable
+
+Dependencies that have local test stand-ins (PGLite for Postgres, in-memory filesystem). Deepenable if the stand-in exists. The deepened module is tested with the stand-in running in the test suite. The seam is internal; no port at the module's external interface.
+
+### 3. Remote but owned (Ports & Adapters)
+
+Your own services across a network boundary (microservices, internal APIs). Define a **port** (interface) at the seam. The deep module owns the logic; the transport is injected as an **adapter**. Tests use an in-memory adapter. Production uses an HTTP/gRPC/queue adapter.
+
+Recommendation shape: _"Define a port at the seam, implement an HTTP adapter for production and an in-memory adapter for testing, so the logic sits in one deep module even though it's deployed across a network."_
+
+### 4. True external (Mock)
+
+Third-party services (Stripe, Twilio, etc.) you don't control. The deepened module takes the external dependency as an injected port; tests provide a mock adapter.
+
+## Seam discipline
+
+- **One adapter means a hypothetical seam. Two adapters means a real one.** Don't introduce a port unless at least two adapters are justified (typically production + test). A single-adapter seam is just indirection.
+- **Internal seams vs external seams.** A deep module can have internal seams (private to its implementation, used by its own tests) as well as the external seam at its interface. Don't expose internal seams through the interface just because tests use them.
+
+## Testing strategy: replace, don't layer
+
+- Old unit tests on shallow modules become waste once tests at the deepened module's interface exist — delete them.
+- Write new tests at the deepened module's interface. The **interface is the test surface**.
+- Tests assert on observable outcomes through the interface, not internal state.
+- Tests should survive internal refactors — they describe behaviour, not implementation. If a test has to change when the implementation changes, it's testing past the interface.
diff --git a/.opencode/skills/improve-codebase-architecture/INTERFACE-DESIGN.md b/.opencode/skills/improve-codebase-architecture/INTERFACE-DESIGN.md
new file mode 100644
index 000000000000..3197723a0d04
--- /dev/null
+++ b/.opencode/skills/improve-codebase-architecture/INTERFACE-DESIGN.md
@@ -0,0 +1,44 @@
+# Interface Design
+
+When the user wants to explore alternative interfaces for a chosen deepening candidate, use this parallel sub-agent pattern. Based on "Design It Twice" (Ousterhout) — your first idea is unlikely to be the best.
+
+Uses the vocabulary in [LANGUAGE.md](LANGUAGE.md) — **module**, **interface**, **seam**, **adapter**, **leverage**.
+
+## Process
+
+### 1. Frame the problem space
+
+Before spawning sub-agents, write a user-facing explanation of the problem space for the chosen candidate:
+
+- The constraints any new interface would need to satisfy
+- The dependencies it would rely on, and which category they fall into (see [DEEPENING.md](DEEPENING.md))
+- A rough illustrative code sketch to ground the constraints — not a proposal, just a way to make the constraints concrete
+
+Show this to the user, then immediately proceed to Step 2. The user reads and thinks while the sub-agents work in parallel.
+
+### 2. Spawn sub-agents
+
+Spawn 3+ sub-agents in parallel using the Agent tool. Each must produce a **radically different** interface for the deepened module.
+
+Prompt each sub-agent with a separate technical brief (file paths, coupling details, dependency category from [DEEPENING.md](DEEPENING.md), what sits behind the seam). The brief is independent of the user-facing problem-space explanation in Step 1. Give each agent a different design constraint:
+
+- Agent 1: "Minimize the interface — aim for 1–3 entry points max. Maximise leverage per entry point."
+- Agent 2: "Maximise flexibility — support many use cases and extension."
+- Agent 3: "Optimise for the most common caller — make the default case trivial."
+- Agent 4 (if applicable): "Design around ports & adapters for cross-seam dependencies."
+
+Include both [LANGUAGE.md](LANGUAGE.md) vocabulary and CONTEXT.md vocabulary in the brief so each sub-agent names things consistently with the architecture language and the project's domain language.
+
+Each sub-agent outputs:
+
+1. Interface (types, methods, params — plus invariants, ordering, error modes)
+2. Usage example showing how callers use it
+3. What the implementation hides behind the seam
+4. Dependency strategy and adapters (see [DEEPENING.md](DEEPENING.md))
+5. Trade-offs — where leverage is high, where it's thin
+
+### 3. Present and compare
+
+Present designs sequentially so the user can absorb each one, then compare them in prose. Contrast by **depth** (leverage at the interface), **locality** (where change concentrates), and **seam placement**.
+
+After comparing, give your own recommendation: which design you think is strongest and why. If elements from different designs would combine well, propose a hybrid. Be opinionated — the user wants a strong read, not a menu.
diff --git a/.opencode/skills/improve-codebase-architecture/LANGUAGE.md b/.opencode/skills/improve-codebase-architecture/LANGUAGE.md
new file mode 100644
index 000000000000..dd9b60fea072
--- /dev/null
+++ b/.opencode/skills/improve-codebase-architecture/LANGUAGE.md
@@ -0,0 +1,53 @@
+# Language
+
+Shared vocabulary for every suggestion this skill makes. Use these terms exactly — don't substitute "component," "service," "API," or "boundary." Consistent language is the whole point.
+
+## Terms
+
+**Module**
+Anything with an interface and an implementation. Deliberately scale-agnostic — applies equally to a function, class, package, or tier-spanning slice.
+_Avoid_: unit, component, service.
+
+**Interface**
+Everything a caller must know to use the module correctly. Includes the type signature, but also invariants, ordering constraints, error modes, required configuration, and performance characteristics.
+_Avoid_: API, signature (too narrow — those refer only to the type-level surface).
+
+**Implementation**
+What's inside a module — its body of code. Distinct from **Adapter**: a thing can be a small adapter with a large implementation (a Postgres repo) or a large adapter with a small implementation (an in-memory fake). Reach for "adapter" when the seam is the topic; "implementation" otherwise.
+
+**Depth**
+Leverage at the interface — the amount of behaviour a caller (or test) can exercise per unit of interface they have to learn. A module is **deep** when a large amount of behaviour sits behind a small interface. A module is **shallow** when the interface is nearly as complex as the implementation.
+
+**Seam** _(from Michael Feathers)_
+A place where you can alter behaviour without editing in that place. The _location_ at which a module's interface lives. Choosing where to put the seam is its own design decision, distinct from what goes behind it.
+_Avoid_: boundary (overloaded with DDD's bounded context).
+
+**Adapter**
+A concrete thing that satisfies an interface at a seam. Describes _role_ (what slot it fills), not substance (what's inside).
+
+**Leverage**
+What callers get from depth. More capability per unit of interface they have to learn. One implementation pays back across N call sites and M tests.
+
+**Locality**
+What maintainers get from depth. Change, bugs, knowledge, and verification concentrate at one place rather than spreading across callers. Fix once, fixed everywhere.
+
+## Principles
+
+- **Depth is a property of the interface, not the implementation.** A deep module can be internally composed of small, mockable, swappable parts — they just aren't part of the interface. A module can have **internal seams** (private to its implementation, used by its own tests) as well as the **external seam** at its interface.
+- **The deletion test.** Imagine deleting the module. If complexity vanishes, the module wasn't hiding anything (it was a pass-through). If complexity reappears across N callers, the module was earning its keep.
+- **The interface is the test surface.** Callers and tests cross the same seam. If you want to test _past_ the interface, the module is probably the wrong shape.
+- **One adapter means a hypothetical seam. Two adapters means a real one.** Don't introduce a seam unless something actually varies across it.
+
+## Relationships
+
+- A **Module** has exactly one **Interface** (the surface it presents to callers and tests).
+- **Depth** is a property of a **Module**, measured against its **Interface**.
+- A **Seam** is where a **Module**'s **Interface** lives.
+- An **Adapter** sits at a **Seam** and satisfies the **Interface**.
+- **Depth** produces **Leverage** for callers and **Locality** for maintainers.
+
+## Rejected framings
+
+- **Depth as ratio of implementation-lines to interface-lines** (Ousterhout): rewards padding the implementation. We use depth-as-leverage instead.
+- **"Interface" as the TypeScript `interface` keyword or a class's public methods**: too narrow — interface here includes every fact a caller must know.
+- **"Boundary"**: overloaded with DDD's bounded context. Say **seam** or **interface**.
diff --git a/.opencode/skills/improve-codebase-architecture/SKILL.md b/.opencode/skills/improve-codebase-architecture/SKILL.md
new file mode 100644
index 000000000000..05984a609682
--- /dev/null
+++ b/.opencode/skills/improve-codebase-architecture/SKILL.md
@@ -0,0 +1,71 @@
+---
+name: improve-codebase-architecture
+description: Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.
+---
+
+# Improve Codebase Architecture
+
+Surface architectural friction and propose **deepening opportunities** — refactors that turn shallow modules into deep ones. The aim is testability and AI-navigability.
+
+## Glossary
+
+Use these terms exactly in every suggestion. Consistent language is the point — don't drift into "component," "service," "API," or "boundary." Full definitions in [LANGUAGE.md](LANGUAGE.md).
+
+- **Module** — anything with an interface and an implementation (function, class, package, slice).
+- **Interface** — everything a caller must know to use the module: types, invariants, error modes, ordering, config. Not just the type signature.
+- **Implementation** — the code inside.
+- **Depth** — leverage at the interface: a lot of behaviour behind a small interface. **Deep** = high leverage. **Shallow** = interface nearly as complex as the implementation.
+- **Seam** — where an interface lives; a place behaviour can be altered without editing in place. (Use this, not "boundary.")
+- **Adapter** — a concrete thing satisfying an interface at a seam.
+- **Leverage** — what callers get from depth.
+- **Locality** — what maintainers get from depth: change, bugs, knowledge concentrated in one place.
+
+Key principles (see [LANGUAGE.md](LANGUAGE.md) for the full list):
+
+- **Deletion test**: imagine deleting the module. If complexity vanishes, it was a pass-through. If complexity reappears across N callers, it was earning its keep.
+- **The interface is the test surface.**
+- **One adapter = hypothetical seam. Two adapters = real seam.**
+
+This skill is _informed_ by the project's domain model. The domain language gives names to good seams; ADRs record decisions the skill should not re-litigate.
+
+## Process
+
+### 1. Explore
+
+Read the project's domain glossary and any ADRs in the area you're touching first.
+
+Then use the Agent tool with `subagent_type=Explore` to walk the codebase. Don't follow rigid heuristics — explore organically and note where you experience friction:
+
+- Where does understanding one concept require bouncing between many small modules?
+- Where are modules **shallow** — interface nearly as complex as the implementation?
+- Where have pure functions been extracted just for testability, but the real bugs hide in how they're called (no **locality**)?
+- Where do tightly-coupled modules leak across their seams?
+- Which parts of the codebase are untested, or hard to test through their current interface?
+
+Apply the **deletion test** to anything you suspect is shallow: would deleting it concentrate complexity, or just move it? A "yes, concentrates" is the signal you want.
+
+### 2. Present candidates
+
+Present a numbered list of deepening opportunities. For each candidate:
+
+- **Files** — which files/modules are involved
+- **Problem** — why the current architecture is causing friction
+- **Solution** — plain English description of what would change
+- **Benefits** — explained in terms of locality and leverage, and also in how tests would improve
+
+**Use CONTEXT.md vocabulary for the domain, and [LANGUAGE.md](LANGUAGE.md) vocabulary for the architecture.** If `CONTEXT.md` defines "Order," talk about "the Order intake module" — not "the FooBarHandler," and not "the Order service."
+
+**ADR conflicts**: if a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant revisiting the ADR. Mark it clearly (e.g. _"contradicts ADR-0007 — but worth reopening because…"_). Don't list every theoretical refactor an ADR forbids.
+
+Do NOT propose interfaces yet. Ask the user: "Which of these would you like to explore?"
+
+### 3. Grilling loop
+
+Once the user picks a candidate, drop into a grilling conversation. Walk the design tree with them — constraints, dependencies, the shape of the deepened module, what sits behind the seam, what tests survive.
+
+Side effects happen inline as decisions crystallize:
+
+- **Naming a deepened module after a concept not in `CONTEXT.md`?** Add the term to `CONTEXT.md` — same discipline as `/grill-with-docs` (see [CONTEXT-FORMAT.md](../grill-with-docs/CONTEXT-FORMAT.md)). Create the file lazily if it doesn't exist.
+- **Sharpening a fuzzy term during the conversation?** Update `CONTEXT.md` right there.
+- **User rejects the candidate with a load-bearing reason?** Offer an ADR, framed as: _"Want me to record this as an ADR so future architecture reviews don't re-suggest it?"_ Only offer when the reason would actually be needed by a future explorer to avoid re-suggesting the same thing — skip ephemeral reasons ("not worth it right now") and self-evident ones. See [ADR-FORMAT.md](../grill-with-docs/ADR-FORMAT.md).
+- **Want to explore alternative interfaces for the deepened module?** See [INTERFACE-DESIGN.md](INTERFACE-DESIGN.md).
diff --git a/AGENTS.md b/AGENTS.md
index 7913ddabd28e..0b1998ec5012 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -73,6 +73,29 @@ function foo() {
}
```
+### Complex Logic
+
+When a function has several validation branches or supporting details, make the main function read as the happy path and move supporting details into small helpers below it.
+
+```ts
+// Good
+export function loadThing(input: unknown) {
+ const config = requireConfig(input)
+ const metadata = readMetadata(input)
+ return createThing({ config, metadata })
+}
+
+function requireConfig(input: unknown) {
+ ...
+}
+```
+
+- Keep helpers close to the code they support, below the main export when that improves readability.
+- Do not over-abstract simple expressions into many single-use helpers; extract only when it names a real concept like `requireConfig` or `readMetadata`.
+- Do not return `Effect` from helpers unless they actually perform effectful work. Synchronous parsing, validation, and option building should stay synchronous.
+- Prefer Effect schema helpers such as `Schema.UnknownFromJsonString` and `Schema.decodeUnknownOption` over manual `JSON.parse` wrapped in `Effect.try` when parsing untrusted JSON strings.
+- Add comments for non-obvious constraints and surprising behavior, not for obvious assignments or control flow.
+
### Schema Definitions (Drizzle)
Use snake_case for field names so column names don't need to be redefined as strings.
diff --git a/bun.lock b/bun.lock
index 4268e5fb7d46..8fa8d02544a5 100644
--- a/bun.lock
+++ b/bun.lock
@@ -29,7 +29,7 @@
},
"packages/app": {
"name": "@opencode-ai/app",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@kobalte/core": "catalog:",
"@opencode-ai/core": "workspace:*",
@@ -65,7 +65,6 @@
"solid-list": "catalog:",
"tailwindcss": "catalog:",
"virtua": "catalog:",
- "zod": "catalog:",
},
"devDependencies": {
"@happy-dom/global-registrator": "20.0.11",
@@ -85,7 +84,7 @@
},
"packages/console/app": {
"name": "@opencode-ai/console-app",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@cloudflare/vite-plugin": "1.15.2",
"@ibm/plex": "6.4.1",
@@ -120,7 +119,7 @@
},
"packages/console/core": {
"name": "@opencode-ai/console-core",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@aws-sdk/client-sts": "3.782.0",
"@jsx-email/render": "1.1.1",
@@ -147,7 +146,7 @@
},
"packages/console/function": {
"name": "@opencode-ai/console-function",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@ai-sdk/anthropic": "3.0.64",
"@ai-sdk/openai": "3.0.48",
@@ -169,7 +168,7 @@
},
"packages/console/mail": {
"name": "@opencode-ai/console-mail",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
@@ -193,26 +192,53 @@
},
"packages/core": {
"name": "@opencode-ai/core",
- "version": "1.14.48",
+ "version": "1.15.0",
"bin": {
"opencode": "./bin/opencode",
},
"dependencies": {
+ "@ai-sdk/alibaba": "1.0.17",
+ "@ai-sdk/amazon-bedrock": "4.0.96",
+ "@ai-sdk/anthropic": "3.0.71",
+ "@ai-sdk/azure": "3.0.49",
+ "@ai-sdk/cerebras": "2.0.41",
+ "@ai-sdk/cohere": "3.0.27",
+ "@ai-sdk/deepinfra": "2.0.41",
+ "@ai-sdk/gateway": "3.0.104",
+ "@ai-sdk/google": "3.0.63",
+ "@ai-sdk/google-vertex": "4.0.112",
+ "@ai-sdk/groq": "3.0.31",
+ "@ai-sdk/mistral": "3.0.27",
+ "@ai-sdk/openai": "3.0.53",
+ "@ai-sdk/openai-compatible": "2.0.41",
+ "@ai-sdk/perplexity": "3.0.26",
+ "@ai-sdk/provider": "3.0.8",
+ "@ai-sdk/provider-utils": "4.0.23",
+ "@ai-sdk/togetherai": "2.0.41",
+ "@ai-sdk/vercel": "2.0.39",
+ "@ai-sdk/xai": "3.0.82",
+ "@aws-sdk/credential-providers": "3.993.0",
"@effect/opentelemetry": "catalog:",
"@effect/platform-node": "catalog:",
"@npmcli/arborist": "9.4.0",
"@npmcli/config": "10.8.1",
+ "@openrouter/ai-sdk-provider": "2.8.1",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/context-async-hooks": "2.6.1",
"@opentelemetry/exporter-trace-otlp-http": "0.214.0",
"@opentelemetry/sdk-trace-base": "2.6.1",
+ "ai-gateway-provider": "3.1.2",
"cross-spawn": "catalog:",
"effect": "catalog:",
+ "gitlab-ai-provider": "6.6.0",
"glob": "13.0.5",
+ "google-auth-library": "10.5.0",
+ "immer": "11.1.4",
"mime-types": "3.0.2",
"minimatch": "10.2.5",
"npm-package-arg": "13.0.2",
"semver": "^7.6.3",
+ "venice-ai-sdk-provider": "2.0.1",
"xdg-basedir": "5.1.0",
"zod": "catalog:",
},
@@ -227,7 +253,7 @@
},
"packages/desktop": {
"name": "@opencode-ai/desktop",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"drizzle-orm": "catalog:",
"effect": "catalog:",
@@ -281,7 +307,7 @@
},
"packages/enterprise": {
"name": "@opencode-ai/enterprise",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@opencode-ai/core": "workspace:*",
"@opencode-ai/ui": "workspace:*",
@@ -311,7 +337,7 @@
},
"packages/function": {
"name": "@opencode-ai/function",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@octokit/auth-app": "8.0.1",
"@octokit/rest": "catalog:",
@@ -327,7 +353,7 @@
},
"packages/http-recorder": {
"name": "@opencode-ai/http-recorder",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@effect/platform-node": "catalog:",
"effect": "catalog:",
@@ -340,7 +366,7 @@
},
"packages/llm": {
"name": "@opencode-ai/llm",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@smithy/eventstream-codec": "4.2.14",
"@smithy/util-utf8": "4.2.2",
@@ -358,7 +384,7 @@
},
"packages/opencode": {
"name": "opencode",
- "version": "1.14.48",
+ "version": "1.15.0",
"bin": {
"opencode": "./bin/opencode",
},
@@ -382,7 +408,6 @@
"@ai-sdk/openai-compatible": "2.0.41",
"@ai-sdk/perplexity": "3.0.26",
"@ai-sdk/provider": "3.0.8",
- "@ai-sdk/provider-utils": "4.0.23",
"@ai-sdk/togetherai": "2.0.41",
"@ai-sdk/vercel": "2.0.39",
"@ai-sdk/xai": "3.0.82",
@@ -399,6 +424,7 @@
"@opencode-ai/plugin": "workspace:*",
"@opencode-ai/script": "workspace:*",
"@opencode-ai/sdk": "workspace:*",
+ "@opencode-ai/ui": "workspace:*",
"@openrouter/ai-sdk-provider": "2.8.1",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/context-async-hooks": "2.6.1",
@@ -420,7 +446,6 @@
"bonjour-service": "1.3.0",
"bun-pty": "0.4.8",
"chokidar": "4.0.3",
- "cli-sound": "1.1.3",
"clipboardy": "4.0.0",
"cross-spawn": "catalog:",
"decimal.js": "10.5.0",
@@ -432,6 +457,7 @@
"glob": "13.0.5",
"google-auth-library": "10.5.0",
"gray-matter": "4.0.3",
+ "htmlparser2": "8.0.2",
"ignore": "7.0.5",
"immer": "11.1.4",
"jsonc-parser": "3.3.1",
@@ -494,7 +520,7 @@
},
"packages/plugin": {
"name": "@opencode-ai/plugin",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@opencode-ai/sdk": "workspace:*",
"effect": "catalog:",
@@ -510,9 +536,9 @@
"typescript": "catalog:",
},
"peerDependencies": {
- "@opentui/core": ">=0.2.6",
- "@opentui/keymap": ">=0.2.6",
- "@opentui/solid": ">=0.2.6",
+ "@opentui/core": ">=0.2.10",
+ "@opentui/keymap": ">=0.2.10",
+ "@opentui/solid": ">=0.2.10",
},
"optionalPeers": [
"@opentui/core",
@@ -532,7 +558,7 @@
},
"packages/sdk/js": {
"name": "@opencode-ai/sdk",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"cross-spawn": "catalog:",
},
@@ -547,7 +573,7 @@
},
"packages/slack": {
"name": "@opencode-ai/slack",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@opencode-ai/sdk": "workspace:*",
"@slack/bolt": "^3.17.1",
@@ -582,7 +608,7 @@
},
"packages/ui": {
"name": "@opencode-ai/ui",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@kobalte/core": "catalog:",
"@opencode-ai/core": "workspace:*",
@@ -631,7 +657,7 @@
},
"packages/web": {
"name": "@opencode-ai/web",
- "version": "1.14.48",
+ "version": "1.15.0",
"dependencies": {
"@astrojs/cloudflare": "12.6.3",
"@astrojs/markdown-remark": "6.3.1",
@@ -679,6 +705,9 @@
"@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch",
},
"overrides": {
+ "@opentui/core": "catalog:",
+ "@opentui/keymap": "catalog:",
+ "@opentui/solid": "catalog:",
"@types/bun": "catalog:",
"@types/node": "catalog:",
},
@@ -692,9 +721,9 @@
"@npmcli/arborist": "9.4.0",
"@octokit/rest": "22.0.0",
"@openauthjs/openauth": "0.0.0-20250322224806",
- "@opentui/core": "0.2.6",
- "@opentui/keymap": "0.2.6",
- "@opentui/solid": "0.2.6",
+ "@opentui/core": "0.2.10",
+ "@opentui/keymap": "0.2.10",
+ "@opentui/solid": "0.2.10",
"@pierre/diffs": "1.1.0-beta.18",
"@playwright/test": "1.59.1",
"@sentry/solid": "10.36.0",
@@ -1073,8 +1102,6 @@
"@develar/schema-utils": ["@develar/schema-utils@2.6.5", "", { "dependencies": { "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig=="],
- "@dimforge/rapier2d-simd-compat": ["@dimforge/rapier2d-simd-compat@0.17.3", "", {}, "sha512-bijvwWz6NHsNj5e5i1vtd3dU2pDhthSaTUZSh14DUGGKJfw8eMnlWZsxwHBxB/a3AXVNDjL9abuHw1k9FGR+jg=="],
-
"@dot/log": ["@dot/log@0.1.5", "", { "dependencies": { "chalk": "^4.1.2", "loglevelnext": "^6.0.0", "p-defer": "^3.0.0" } }, "sha512-ECraEVJWv2f2mWK93lYiefUkphStVlKD6yKDzisuoEmxuLKrxO9iGetHK2DoEAkj7sxjE886n0OUVVCUx0YPNg=="],
"@drizzle-team/brocli": ["@drizzle-team/brocli@0.11.0", "", {}, "sha512-hD3pekGiPg0WPCCGAZmusBBJsDqGUR66Y452YgQsZOnkdQ7ViEPKuyP4huUGEZQefp8g34RRodXYmJ2TbCH+tg=="],
@@ -1291,62 +1318,6 @@
"@isaacs/string-locale-compare": ["@isaacs/string-locale-compare@1.1.0", "", {}, "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="],
- "@jimp/core": ["@jimp/core@1.6.0", "", { "dependencies": { "@jimp/file-ops": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "await-to-js": "^3.0.0", "exif-parser": "^0.1.12", "file-type": "^16.0.0", "mime": "3" } }, "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w=="],
-
- "@jimp/diff": ["@jimp/diff@1.6.0", "", { "dependencies": { "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "pixelmatch": "^5.3.0" } }, "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw=="],
-
- "@jimp/file-ops": ["@jimp/file-ops@1.6.0", "", {}, "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ=="],
-
- "@jimp/js-bmp": ["@jimp/js-bmp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "bmp-ts": "^1.0.9" } }, "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw=="],
-
- "@jimp/js-gif": ["@jimp/js-gif@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "gifwrap": "^0.10.1", "omggif": "^1.0.10" } }, "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g=="],
-
- "@jimp/js-jpeg": ["@jimp/js-jpeg@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "jpeg-js": "^0.4.4" } }, "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA=="],
-
- "@jimp/js-png": ["@jimp/js-png@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "pngjs": "^7.0.0" } }, "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg=="],
-
- "@jimp/js-tiff": ["@jimp/js-tiff@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "utif2": "^4.1.0" } }, "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw=="],
-
- "@jimp/plugin-blit": ["@jimp/plugin-blit@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA=="],
-
- "@jimp/plugin-blur": ["@jimp/plugin-blur@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw=="],
-
- "@jimp/plugin-circle": ["@jimp/plugin-circle@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw=="],
-
- "@jimp/plugin-color": ["@jimp/plugin-color@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "tinycolor2": "^1.6.0", "zod": "^3.23.8" } }, "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA=="],
-
- "@jimp/plugin-contain": ["@jimp/plugin-contain@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ=="],
-
- "@jimp/plugin-cover": ["@jimp/plugin-cover@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA=="],
-
- "@jimp/plugin-crop": ["@jimp/plugin-crop@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang=="],
-
- "@jimp/plugin-displace": ["@jimp/plugin-displace@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q=="],
-
- "@jimp/plugin-dither": ["@jimp/plugin-dither@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0" } }, "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ=="],
-
- "@jimp/plugin-fisheye": ["@jimp/plugin-fisheye@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA=="],
-
- "@jimp/plugin-flip": ["@jimp/plugin-flip@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg=="],
-
- "@jimp/plugin-hash": ["@jimp/plugin-hash@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "any-base": "^1.1.0" } }, "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q=="],
-
- "@jimp/plugin-mask": ["@jimp/plugin-mask@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA=="],
-
- "@jimp/plugin-print": ["@jimp/plugin-print@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/types": "1.6.0", "parse-bmfont-ascii": "^1.0.6", "parse-bmfont-binary": "^1.0.6", "parse-bmfont-xml": "^1.1.6", "simple-xml-to-json": "^1.2.2", "zod": "^3.23.8" } }, "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A=="],
-
- "@jimp/plugin-quantize": ["@jimp/plugin-quantize@1.6.0", "", { "dependencies": { "image-q": "^4.0.0", "zod": "^3.23.8" } }, "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg=="],
-
- "@jimp/plugin-resize": ["@jimp/plugin-resize@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA=="],
-
- "@jimp/plugin-rotate": ["@jimp/plugin-rotate@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw=="],
-
- "@jimp/plugin-threshold": ["@jimp/plugin-threshold@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w=="],
-
- "@jimp/types": ["@jimp/types@1.6.0", "", { "dependencies": { "zod": "^3.23.8" } }, "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg=="],
-
- "@jimp/utils": ["@jimp/utils@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "tinycolor2": "^1.6.0" } }, "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA=="],
-
"@joshwooding/vite-plugin-react-docgen-typescript": ["@joshwooding/vite-plugin-react-docgen-typescript@0.7.0", "", { "dependencies": { "glob": "^13.0.1", "react-docgen-typescript": "^2.2.2" }, "peerDependencies": { "typescript": ">= 4.3.x", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["typescript"] }, "sha512-qvsTEwEFefhdirGOPnu9Wp6ChfIwy2dBCRuETU3uE+4cC+PFoxMSiiEhxk4lOluA34eARHA0OxqsEUYDqRMgeQ=="],
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
@@ -1619,23 +1590,23 @@
"@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="],
- "@opentui/core": ["@opentui/core@0.2.6", "", { "dependencies": { "bun-ffi-structs": "0.2.2", "diff": "9.0.0", "marked": "17.0.1", "string-width": "7.2.0", "strip-ansi": "7.1.2", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@opentui/core-darwin-arm64": "0.2.6", "@opentui/core-darwin-x64": "0.2.6", "@opentui/core-linux-arm64": "0.2.6", "@opentui/core-linux-x64": "0.2.6", "@opentui/core-win32-arm64": "0.2.6", "@opentui/core-win32-x64": "0.2.6" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-dBpMaWVM7wtW2/2TlGPrkPjg6gOL3MVU/5XXk+U1LDJB8L4q4NeYWVdzfAVNcEvgmuuCy/cVqdY2D4ei+e7MMg=="],
+ "@opentui/core": ["@opentui/core@0.2.10", "", { "dependencies": { "bun-ffi-structs": "0.2.2", "diff": "9.0.0", "marked": "17.0.1", "string-width": "7.2.0", "strip-ansi": "7.1.2", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@opentui/core-darwin-arm64": "0.2.10", "@opentui/core-darwin-x64": "0.2.10", "@opentui/core-linux-arm64": "0.2.10", "@opentui/core-linux-x64": "0.2.10", "@opentui/core-win32-arm64": "0.2.10", "@opentui/core-win32-x64": "0.2.10" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-oviCtx0jYjc7F8X2b8+0IkQLg6WH47Nwl6CFeZo5dU0k6OpSbTbi07ZleObaiECAp+S1YLhAtVdgzHU7hBZlaw=="],
- "@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.2.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hR5nsxNj+059utzenTCF0kealUlibON6fLuebFUCGM/5kJnqa+shIh0XbUDFm0+F47vqVUgZufBdUuieQZIbvQ=="],
+ "@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.2.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-+lbDDj42Og+UtTZEwlHhGXichmOlkxSqn0J+Jqjat5/Tt5oZykj1NZjFIQ7ZSz4Miz7EmZwgYKE2CyOmmm9MoQ=="],
- "@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.2.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-pJ/bH4WC/mbBaakM1YdH6TVo67jhy0KPd61bCz97w0I/PJGr8fmNKvhmMt/AwyFgOQi3FYZiEKLMpGdvUcSsrQ=="],
+ "@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.2.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-5iAoA0aqMWWAQ93nh8Bb0ipwt9h+tvEFc88+YO9St43uUJ+XrXcmMj3T8wtl6dSu/SN0UoDWNaUMHUmtykiPtg=="],
- "@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Pnd3kOxig8ii+/IqYheOPEgferylsQA0L6tKBnHQ9jRlCJOcu0Rv65Jepueh212vevdV9DzPURJnhejG06J6g=="],
+ "@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.2.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-EnrkxgH5K76Oi/Br1UHPZblXG5P60snmtySfnxuVaeECNZrbTkV6BV/A0WoBeWshJweGbx1D+eTF+sEEjQCi8w=="],
- "@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-458Mx9tBzEPzfft8cSt5ZaIpEepoxBXBOL6AUVmDTKWaZ3uouraPcEKraGAyvOTDQp2XDI3R8c/2GdaR77FaUQ=="],
+ "@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.2.10", "", { "os": "linux", "cpu": "x64" }, "sha512-fI+r3kCPqIxsWwPVGpKUQy4zHK8y+jkDRCwa3UbaUy48RQ44jMuf2RhVhmi4xmCvSc8UPJBbYsw1tLuh9kmXjg=="],
- "@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.2.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-BDUrdrT1RCcVnQoHJmUut4y811jDBAEtc6GJFB4Gs265Be8SrTjVCus6p2fSQ7j9sZQ1OcjO+5+4NkheSZICDQ=="],
+ "@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.2.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-8F4z2hIRgkVWcr6CMVeJ9N4+1rmURPt2Pq2GBPko8ch6rxHR+a//KD1MfphyuLTHBS1tJ4vfZSWSoiaESImtrA=="],
- "@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.2.6", "", { "os": "win32", "cpu": "x64" }, "sha512-SUYAzRJ9TSoD2Qt8kn6FJz6dbTrFEPVig5mScB4zFGgGQO/Bbod2/Q31vLS/IQrX+FDb67WaErD+kuMCnMPPLA=="],
+ "@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.2.10", "", { "os": "win32", "cpu": "x64" }, "sha512-Ki+qNBlIFW5K2wcG/RHrlPp7yEQKXeiNX3mlje25iwX62Ac5w391HBpOmUjbPoq20McPyDRnhbLfbXQSPtickg=="],
- "@opentui/keymap": ["@opentui/keymap@0.2.6", "", { "dependencies": { "@opentui/core": "0.2.6" }, "peerDependencies": { "@opentui/react": "0.2.6", "@opentui/solid": "0.2.6", "react": ">=19.2.0", "solid-js": "1.9.12" }, "optionalPeers": ["@opentui/react", "@opentui/solid", "react", "solid-js"] }, "sha512-+6OYuedrFCKVo4ryGFNwws++2VOmPcXU3PwpY0mP47gYQY2nvQ+etWIs2Y7r5eMIqUfxVCldkKsrzcEcA4tb/A=="],
+ "@opentui/keymap": ["@opentui/keymap@0.2.10", "", { "dependencies": { "@opentui/core": "0.2.10" }, "peerDependencies": { "@opentui/react": "0.2.10", "@opentui/solid": "0.2.10", "react": ">=19.2.0", "solid-js": "1.9.12" }, "optionalPeers": ["@opentui/react", "@opentui/solid", "react", "solid-js"] }, "sha512-80fU3Lr/98sNIpVYd8PApAeQw8A8D9BemyOGi6jGvTQCl0rxKgvaVBviDRGKxl1INTVjZy9By8UPncc2KJOuWQ=="],
- "@opentui/solid": ["@opentui/solid@0.2.6", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.2.6", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.12", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.12" } }, "sha512-2y225WlOGi/fCaajkxBmLyVW8Cr+OmhowHdvrYcz5w2kBD15sKbJLIYu1G9DxceirT1uIyasGy2TGzRRcVkTDg=="],
+ "@opentui/solid": ["@opentui/solid@0.2.10", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.2.10", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.12", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.12" } }, "sha512-+4/MB90yIQiPwg8Y4wY092yva9BvRTsJeeeEO3e2H7P8k8zxYk4G9bzuhqYLxA9mTVQ+zVDlrmFoPQhT7vpIRw=="],
"@oslojs/asn1": ["@oslojs/asn1@1.0.0", "", { "dependencies": { "@oslojs/binary": "1.0.0" } }, "sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA=="],
@@ -2287,8 +2258,6 @@
"@thisbeyond/solid-dnd": ["@thisbeyond/solid-dnd@0.7.5", "", { "peerDependencies": { "solid-js": "^1.5" } }, "sha512-DfI5ff+yYGpK9M21LhYwIPlbP2msKxN2ARwuu6GF8tT1GgNVDTI8VCQvH4TJFoVApP9d44izmAcTh/iTCH2UUw=="],
- "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="],
-
"@tsconfig/bun": ["@tsconfig/bun@1.0.9", "", {}, "sha512-4M0/Ivfwcpz325z6CwSifOBZYji3DFOEpY6zEUt0+Xi2qRhzwvmqQN9XAHJh3OVvRJuAqVTLU2abdCplvp6mwQ=="],
"@tsconfig/node22": ["@tsconfig/node22@22.0.2", "", {}, "sha512-Kmwj4u8sDRDrMYRoN9FDEcXD8UpBSaPQQ24Gz+Gamqfm7xxn+GBR7ge/Z7pK8OXNGyUzbSwJj+TH6B+DS/epyA=="],
@@ -2553,8 +2522,6 @@
"ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="],
- "any-base": ["any-base@1.1.0", "", {}, "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="],
-
"any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="],
"anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
@@ -2623,8 +2590,6 @@
"avvio": ["avvio@9.2.0", "", { "dependencies": { "@fastify/error": "^4.0.0", "fastq": "^1.17.1" } }, "sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ=="],
- "await-to-js": ["await-to-js@3.0.0", "", {}, "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g=="],
-
"aws-sdk": ["aws-sdk@2.1692.0", "", { "dependencies": { "buffer": "4.9.2", "events": "1.1.1", "ieee754": "1.1.13", "jmespath": "0.16.0", "querystring": "0.2.0", "sax": "1.2.1", "url": "0.10.3", "util": "^0.12.4", "uuid": "8.0.0", "xml2js": "0.6.2" } }, "sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw=="],
"aws-ssl-profiles": ["aws-ssl-profiles@1.1.2", "", {}, "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g=="],
@@ -2689,8 +2654,6 @@
"blob-to-buffer": ["blob-to-buffer@1.2.9", "", {}, "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA=="],
- "bmp-ts": ["bmp-ts@1.0.9", "", {}, "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw=="],
-
"body-parser": ["body-parser@1.20.4", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.14.0", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA=="],
"bonjour-service": ["bonjour-service@1.3.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA=="],
@@ -2733,16 +2696,6 @@
"bun-types": ["bun-types@1.3.12", "", { "dependencies": { "@types/node": "*" } }, "sha512-HqOLj5PoFajAQciOMRiIZGNoKxDJSr6qigAttOX40vJuSp6DN/CxWp9s3C1Xwm4oH7ybueITwiaOcWXoYVoRkA=="],
- "bun-webgpu": ["bun-webgpu@0.1.5", "", { "dependencies": { "@webgpu/types": "^0.1.60" }, "optionalDependencies": { "bun-webgpu-darwin-arm64": "^0.1.5", "bun-webgpu-darwin-x64": "^0.1.5", "bun-webgpu-linux-x64": "^0.1.5", "bun-webgpu-win32-x64": "^0.1.5" } }, "sha512-91/K6S5whZKX7CWAm9AylhyKrLGRz6BUiiPiM/kXadSnD4rffljCD/q9cNFftm5YXhx4MvLqw33yEilxogJvwA=="],
-
- "bun-webgpu-darwin-arm64": ["bun-webgpu-darwin-arm64@0.1.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-lIsDkPzJzPl6yrB5CUOINJFPnTRv6fF/Q8J1mAr43ogSp86WZEg9XZKaT6f3EUJ+9ETogGoMnoj1q0AwHUTbAQ=="],
-
- "bun-webgpu-darwin-x64": ["bun-webgpu-darwin-x64@0.1.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-uEddf5U7GvKIkM/BV18rUKtYHL6d0KeqBjNHwfqDH9QgEo9KVSKvJXS5I/sMefk5V5pIYE+8tQhtrREevhocng=="],
-
- "bun-webgpu-linux-x64": ["bun-webgpu-linux-x64@0.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-Y/f15j9r8ba0xUz+3lATtS74OE+PPzQXO7Do/1eCluJcuOlfa77kMjvBK/ShWnem3Y9xqi59pebTPOGRB+CaJA=="],
-
- "bun-webgpu-win32-x64": ["bun-webgpu-win32-x64@0.1.6", "", { "os": "win32", "cpu": "x64" }, "sha512-MHSFAKqizISb+C5NfDrFe3g0Al5Njnu0j/A+oO2Q+bIWX+fUYjBSowiYE1ZXJx65KuryuB+tiM7Qh6cQbVvkEg=="],
-
"bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="],
"bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
@@ -2813,8 +2766,6 @@
"cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="],
- "cli-sound": ["cli-sound@1.1.3", "", { "dependencies": { "find-exec": "^1.0.3" }, "bin": { "cli-sound": "dist/esm/cli.js" } }, "sha512-dpdF3KS3wjo1fobKG5iU9KyKqzQWAqueymHzZ9epus/dZ40487gAvS6aXFeBul+GiQAQYUTAtUWgQvw6Jftbyg=="],
-
"cli-spinners": ["cli-spinners@3.4.0", "", {}, "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw=="],
"cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="],
@@ -3165,8 +3116,6 @@
"execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="],
- "exif-parser": ["exif-parser@0.1.12", "", {}, "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="],
-
"exit-hook": ["exit-hook@2.2.1", "", {}, "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw=="],
"expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="],
@@ -3229,8 +3178,6 @@
"fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="],
- "file-type": ["file-type@16.5.4", "", { "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", "token-types": "^4.1.1" } }, "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw=="],
-
"filelist": ["filelist@1.0.6", "", { "dependencies": { "minimatch": "^5.0.1" } }, "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA=="],
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
@@ -3239,8 +3186,6 @@
"find-babel-config": ["find-babel-config@2.1.2", "", { "dependencies": { "json5": "^2.2.3" } }, "sha512-ZfZp1rQyp4gyuxqt1ZqjFGVeVBvmpURMqdIWXbPRfB97Bf6BzdK/xSIbylEINzQ0kB5tlDQfn9HkNXXWsqTqLg=="],
- "find-exec": ["find-exec@1.0.3", "", { "dependencies": { "shell-quote": "^1.8.1" } }, "sha512-gnG38zW90mS8hm5smNcrBnakPEt+cGJoiMkJwCU0IYnEb0H2NQk0NIljhNW+48oniCriFek/PH6QXbwsJo/qug=="],
-
"find-my-way": ["find-my-way@9.5.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", "safe-regex2": "^5.0.0" } }, "sha512-VW2RfnmscZO5KgBY5XVyKREMW5nMZcxDy+buTOsL+zIPnBlbKm+00sgzoQzq1EVh4aALZLfKdwv6atBGcjvjrQ=="],
"find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="],
@@ -3323,8 +3268,6 @@
"ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#20bd361", {}, "anomalyco-ghostty-web-20bd361", "sha512-dW0nwaiBBcun9y5WJSvm3HxDLe5o9V0xLCndQvWonRVubU8CS1PHxZpLffyPt1YujPWC13ez03aWxcuKBPYYGQ=="],
- "gifwrap": ["gifwrap@0.10.1", "", { "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" } }, "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw=="],
-
"giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="],
"github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="],
@@ -3477,8 +3420,6 @@
"ignore-walk": ["ignore-walk@8.0.0", "", { "dependencies": { "minimatch": "^10.0.3" } }, "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A=="],
- "image-q": ["image-q@4.0.0", "", { "dependencies": { "@types/node": "16.9.1" } }, "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw=="],
-
"immer": ["immer@11.1.4", "", {}, "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw=="],
"import-local": ["import-local@3.2.0", "", { "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" } }, "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA=="],
@@ -3621,16 +3562,12 @@
"jake": ["jake@10.9.4", "", { "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" } }, "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA=="],
- "jimp": ["jimp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/diff": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-gif": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-blur": "1.6.0", "@jimp/plugin-circle": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-contain": "1.6.0", "@jimp/plugin-cover": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-displace": "1.6.0", "@jimp/plugin-dither": "1.6.0", "@jimp/plugin-fisheye": "1.6.0", "@jimp/plugin-flip": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/plugin-mask": "1.6.0", "@jimp/plugin-print": "1.6.0", "@jimp/plugin-quantize": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/plugin-rotate": "1.6.0", "@jimp/plugin-threshold": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg=="],
-
"jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
"jmespath": ["jmespath@0.16.0", "", {}, "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw=="],
"jose": ["jose@6.0.11", "", {}, "sha512-QxG7EaliDARm1O1S8BGakqncGT9s25bKL1WSf6/oa17Tkqwi8D2ZNglqCF+DsYF88/rV66Q/Q2mFAy697E1DUg=="],
- "jpeg-js": ["jpeg-js@0.4.4", "", {}, "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="],
-
"js-base64": ["js-base64@3.7.7", "", {}, "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="],
"js-beautify": ["js-beautify@1.15.4", "", { "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^7.2.1" }, "bin": { "css-beautify": "js/bin/css-beautify.js", "html-beautify": "js/bin/html-beautify.js", "js-beautify": "js/bin/js-beautify.js" } }, "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA=="],
@@ -4091,8 +4028,6 @@
"oidc-token-hash": ["oidc-token-hash@5.2.0", "", {}, "sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw=="],
- "omggif": ["omggif@1.0.10", "", {}, "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="],
-
"on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="],
"on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
@@ -4167,12 +4102,6 @@
"param-case": ["param-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="],
- "parse-bmfont-ascii": ["parse-bmfont-ascii@1.0.6", "", {}, "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="],
-
- "parse-bmfont-binary": ["parse-bmfont-binary@1.0.6", "", {}, "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="],
-
- "parse-bmfont-xml": ["parse-bmfont-xml@1.1.6", "", { "dependencies": { "xml-parse-from-string": "^1.0.0", "xml2js": "^0.5.0" } }, "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA=="],
-
"parse-conflict-json": ["parse-conflict-json@5.0.1", "", { "dependencies": { "json-parse-even-better-errors": "^5.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, "sha512-ZHEmNKMq1wyJXNwLxyHnluPfRAFSIliBvbK/UiOceROt4Xh9Pz0fq49NytIaeaCUf5VR86hwQ/34FCcNU5/LKQ=="],
"parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
@@ -4217,8 +4146,6 @@
"peberminta": ["peberminta@0.9.0", "", {}, "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ=="],
- "peek-readable": ["peek-readable@4.1.0", "", {}, "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg=="],
-
"pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
"perfect-debounce": ["perfect-debounce@2.1.0", "", {}, "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g=="],
@@ -4239,8 +4166,6 @@
"pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="],
- "pixelmatch": ["pixelmatch@5.3.0", "", { "dependencies": { "pngjs": "^6.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q=="],
-
"pkce-challenge": ["pkce-challenge@5.0.1", "", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="],
"pkg-dir": ["pkg-dir@4.2.0", "", { "dependencies": { "find-up": "^4.0.0" } }, "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ=="],
@@ -4249,16 +4174,12 @@
"pkg-up": ["pkg-up@3.1.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA=="],
- "planck": ["planck@1.5.0", "", { "peerDependencies": { "stage-js": "^1.0.0-alpha.12" } }, "sha512-dlvqJE+FscZgrGUXJ5ybd0o5bvZ5XXyZNbm08xGsXp9WjXeAyWSFT6n9s/1PQcUBo4546fDXA5RMA4wbDyZw6g=="],
-
"playwright": ["playwright@1.59.1", "", { "dependencies": { "playwright-core": "1.59.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw=="],
"playwright-core": ["playwright-core@1.59.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg=="],
"plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="],
- "pngjs": ["pngjs@7.0.0", "", {}, "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow=="],
-
"poe-oauth": ["poe-oauth@0.0.6", "", {}, "sha512-dI8xrVl7RSFh0B+cb4GGuCjIfGtDT9VpbpVkP0UKcunpXF0eFw+6GencoJ7k+E02ZYqopBQApMVWGq70/GP69w=="],
"possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
@@ -4383,8 +4304,6 @@
"readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="],
- "readable-web-to-node-stream": ["readable-web-to-node-stream@3.0.4", "", { "dependencies": { "readable-stream": "^4.7.0" } }, "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw=="],
-
"readdir-glob": ["readdir-glob@1.1.3", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA=="],
"readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
@@ -4569,8 +4488,6 @@
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
- "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="],
-
"shiki": ["shiki@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/engine-javascript": "3.20.0", "@shikijs/engine-oniguruma": "3.20.0", "@shikijs/langs": "3.20.0", "@shikijs/themes": "3.20.0", "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg=="],
"shikiji": ["shikiji@0.6.13", "", { "dependencies": { "hast-util-to-html": "^9.0.0" } }, "sha512-4T7X39csvhT0p7GDnq9vysWddf2b6BeioiN3Ymhnt3xcy9tXmDcnsEFVxX18Z4YcQgEE/w48dLJ4pPPUcG9KkA=="],
@@ -4593,8 +4510,6 @@
"simple-update-notifier": ["simple-update-notifier@2.0.0", "", { "dependencies": { "semver": "^7.5.3" } }, "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w=="],
- "simple-xml-to-json": ["simple-xml-to-json@1.2.7", "", {}, "sha512-mz9VXphOxQWX3eQ/uXCtm6upltoN0DLx8Zb5T4TFC4FHB7S9FDPGre8CfLWqPWQQH/GrQYd2AXhhVM5LDpYx6Q=="],
-
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
"sitemap": ["sitemap@9.0.1", "", { "dependencies": { "@types/node": "^24.9.2", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.4.1" }, "bin": { "sitemap": "dist/esm/cli.js" } }, "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ=="],
@@ -4681,8 +4596,6 @@
"stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="],
- "stage-js": ["stage-js@1.0.2", "", {}, "sha512-EWTRBYlg7Qv9wGUao99/PfRe3KaiQqWmgSvTOXvaWnu1Jk/q/vV8yJVu6bi/3EqDZeMVnCPAjheba6OFc5k1GQ=="],
-
"standard-as-callback": ["standard-as-callback@2.1.0", "", {}, "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="],
"stat-mode": ["stat-mode@1.0.0", "", {}, "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg=="],
@@ -4731,8 +4644,6 @@
"strnum": ["strnum@1.1.2", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="],
- "strtok3": ["strtok3@6.3.0", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^4.1.0" } }, "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw=="],
-
"stubborn-fs": ["stubborn-fs@2.0.0", "", { "dependencies": { "stubborn-utils": "^1.0.1" } }, "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA=="],
"stubborn-utils": ["stubborn-utils@1.0.2", "", {}, "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg=="],
@@ -4785,8 +4696,6 @@
"thread-stream": ["thread-stream@4.0.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA=="],
- "three": ["three@0.177.0", "", {}, "sha512-EiXv5/qWAaGI+Vz2A+JfavwYCMdGjxVsrn3oBwllUoqYeaBO75J63ZfyaQKoiLrqNHoTlUc6PFgMXnS0kI45zg=="],
-
"thunky": ["thunky@1.1.0", "", {}, "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="],
"tiny-async-pool": ["tiny-async-pool@1.3.0", "", { "dependencies": { "semver": "^5.5.0" } }, "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA=="],
@@ -4799,8 +4708,6 @@
"tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="],
- "tinycolor2": ["tinycolor2@1.6.0", "", {}, "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="],
-
"tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
"tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="],
@@ -4821,8 +4728,6 @@
"toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
- "token-types": ["token-types@4.2.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ=="],
-
"toml": ["toml@4.1.1", "", {}, "sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw=="],
"toolbeam-docs-theme": ["toolbeam-docs-theme@0.4.8", "", { "peerDependencies": { "@astrojs/starlight": "^0.34.3", "astro": "^5.7.13" } }, "sha512-b+5ynEFp4Woe5a22hzNQm42lD23t13ZMihVxHbzjA50zdcM9aOSJTIjdJ0PDSd4/50HbBXcpHiQsz6rM4N88ww=="],
@@ -4975,8 +4880,6 @@
"utf8-byte-length": ["utf8-byte-length@1.0.5", "", {}, "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA=="],
- "utif2": ["utif2@4.1.0", "", { "dependencies": { "pako": "^1.0.11" } }, "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w=="],
-
"util": ["util@0.12.5", "", { "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", "which-typed-array": "^1.1.2" } }, "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA=="],
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
@@ -5105,8 +5008,6 @@
"xdg-basedir": ["xdg-basedir@5.1.0", "", {}, "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ=="],
- "xml-parse-from-string": ["xml-parse-from-string@1.0.1", "", {}, "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="],
-
"xml2js": ["xml2js@0.6.2", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA=="],
"xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
@@ -5459,46 +5360,10 @@
"@gitlab/opencode-gitlab-auth/open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="],
- "@happy-dom/global-registrator/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@hey-api/openapi-ts/open": ["open@11.0.0", "", { "dependencies": { "default-browser": "^5.4.0", "define-lazy-prop": "^3.0.0", "is-in-ssh": "^1.0.0", "is-inside-container": "^1.0.0", "powershell-utils": "^0.1.0", "wsl-utils": "^0.3.0" } }, "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw=="],
"@hey-api/openapi-ts/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
- "@jimp/core/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="],
-
- "@jimp/plugin-blit/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-circle/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-color/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-contain/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-cover/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-crop/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-displace/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-fisheye/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-flip/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-mask/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-print/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-quantize/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-resize/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-rotate/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/plugin-threshold/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
- "@jimp/types/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
"@jsx-email/cli/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
"@jsx-email/cli/esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="],
@@ -5585,6 +5450,12 @@
"@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="],
+ "@opencode-ai/core/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.71", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-bUWOzrzR0gJKJO/PLGMR4uH2dqEgqGhrsCV+sSpk4KtOEnUQlfjZI/F7BFlqSvVpFbjdgYRRLysAeEZpJ6S1lg=="],
+
+ "@opencode-ai/core/@ai-sdk/openai": ["@ai-sdk/openai@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ=="],
+
+ "@opencode-ai/core/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="],
+
"@opencode-ai/desktop/@actions/artifact": ["@actions/artifact@4.0.0", "", { "dependencies": { "@actions/core": "^1.10.0", "@actions/github": "^6.0.1", "@actions/http-client": "^2.1.0", "@azure/core-http": "^3.0.5", "@azure/storage-blob": "^12.15.0", "@octokit/core": "^5.2.1", "@octokit/plugin-request-log": "^1.0.4", "@octokit/plugin-retry": "^3.0.9", "@octokit/request": "^8.4.1", "@octokit/request-error": "^5.1.1", "@protobuf-ts/plugin": "^2.2.3-alpha.1", "archiver": "^7.0.1", "jwt-decode": "^3.1.2", "unzip-stream": "^0.3.1" } }, "sha512-HCc2jMJRAfviGFAh0FsOR/jNfWhirxl7W6z8zDtttt0GltwxBLdEIjLiweOPFl9WbyJRW1VWnPUSAixJqcWUMQ=="],
"@opencode-ai/desktop/marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="],
@@ -5637,24 +5508,16 @@
"@slack/bolt/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="],
- "@slack/logger/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@slack/oauth/@slack/logger": ["@slack/logger@3.0.0", "", { "dependencies": { "@types/node": ">=12.0.0" } }, "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA=="],
- "@slack/oauth/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@slack/socket-mode/@slack/logger": ["@slack/logger@3.0.0", "", { "dependencies": { "@types/node": ">=12.0.0" } }, "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA=="],
- "@slack/socket-mode/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@slack/socket-mode/@types/ws": ["@types/ws@7.4.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="],
"@slack/socket-mode/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="],
"@slack/web-api/@slack/logger": ["@slack/logger@3.0.0", "", { "dependencies": { "@types/node": ">=12.0.0" } }, "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA=="],
- "@slack/web-api/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@slack/web-api/eventemitter3": ["eventemitter3@3.1.2", "", {}, "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="],
"@slack/web-api/form-data": ["form-data@2.5.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" } }, "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A=="],
@@ -5715,62 +5578,8 @@
"@testing-library/dom/dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="],
- "@types/body-parser/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/cacache/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/cacheable-request/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/connect/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/cross-spawn/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/express-serve-static-core/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/fontkit/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/fs-extra/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/is-stream/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/jsonwebtoken/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/keyv/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/mssql/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/node-fetch/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/npm-registry-fetch/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/npmcli__arborist/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/npmlog/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/pacote/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/plist/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@types/plist/xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="],
- "@types/readable-stream/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/responselike/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/sax/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/send/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/serve-static/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/ssri/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/tunnel/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/ws/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "@types/yauzl/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"@vitest/expect/@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="],
"@vitest/expect/tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="],
@@ -5847,18 +5656,12 @@
"builder-util-runtime/sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="],
- "bun-types/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
- "bun-webgpu/@webgpu/types": ["@webgpu/types@0.1.69", "", {}, "sha512-RPmm6kgRbI8e98zSD3RVACvnuktIja5+yLgDAkTmxLr90BEwdTXRQWNLF3ETTTyH/8mKhznZuN5AveXYFEsMGQ=="],
-
"c12/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
"c12/dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="],
"clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="],
- "cloudflare/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"compress-commons/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="],
"condense-newlines/kind-of": ["kind-of@3.2.2", "", { "dependencies": { "is-buffer": "^1.1.5" } }, "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="],
@@ -5893,8 +5696,6 @@
"effect/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
- "electron/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"electron-builder/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
"electron-builder/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
@@ -5949,8 +5750,6 @@
"gray-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="],
- "happy-dom/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"happy-dom/ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="],
"html-minifier-terser/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="],
@@ -5963,8 +5762,6 @@
"iconv-corefoundation/node-addon-api": ["node-addon-api@1.7.2", "", {}, "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="],
- "image-q/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"js-beautify/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="],
"js-beautify/nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="],
@@ -6037,9 +5834,9 @@
"openid-client/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="],
- "opentui-spinner/@opentui/core": ["@opentui/core@0.1.105", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "marked": "17.0.1", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.105", "@opentui/core-darwin-x64": "0.1.105", "@opentui/core-linux-arm64": "0.1.105", "@opentui/core-linux-x64": "0.1.105", "@opentui/core-win32-arm64": "0.1.105", "@opentui/core-win32-x64": "0.1.105", "bun-webgpu": "0.1.5", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-vllSOOCW6VIThV/96GRLJ1IxIBuR+ci6FDvnPIAG4s7SJ/FW6zAkqDn1xrtBwwk/lM3QWjLqy8BZc+zwWvveJA=="],
+ "opentui-spinner/@opentui/core": ["@opentui/core@0.2.7", "", { "dependencies": { "bun-ffi-structs": "0.2.2", "diff": "9.0.0", "marked": "17.0.1", "string-width": "7.2.0", "strip-ansi": "7.1.2", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@opentui/core-darwin-arm64": "0.2.7", "@opentui/core-darwin-x64": "0.2.7", "@opentui/core-linux-arm64": "0.2.7", "@opentui/core-linux-x64": "0.2.7", "@opentui/core-win32-arm64": "0.2.7", "@opentui/core-win32-x64": "0.2.7" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-cnN6JcaGC7SeQzobBy/CHzqUAQFtypazuw1CjQBo7WwoOiLMGubt9W5FXeF0zIrSxH2Ed6NLWhPYRg7SD4629Q=="],
- "opentui-spinner/@opentui/solid": ["@opentui/solid@0.1.105", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.105", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.10", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.11" } }, "sha512-uxnaMP802sCI487pv/Hk9xdFdIj9mkg3eNliAqbqR0Shmd4phcjKEZvPRpijjmI99j4s9nul71jzF3h1oz31Nw=="],
+ "opentui-spinner/@opentui/solid": ["@opentui/solid@0.2.7", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.2.7", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.12", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.12" } }, "sha512-nlkx9HvuWaHtc5A8eUEAPNi+5+37LZS3ln73WRmtT5xin8LnQf+yhwopqGgPSnLq1ODLwhkKRdr/9JCDr2j7Bg=="],
"ora/bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="],
@@ -6053,14 +5850,10 @@
"p-retry/retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="],
- "parse-bmfont-xml/xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="],
-
"parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
"parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
- "pixelmatch/pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="],
-
"pkg-dir/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="],
"pkg-up/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "^3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="],
@@ -6085,8 +5878,6 @@
"proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
- "protobufjs/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="],
"readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="],
@@ -6117,8 +5908,6 @@
"shiki/@shikijs/types": ["@shikijs/types@3.20.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw=="],
- "sitemap/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"sitemap/sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="],
"slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
@@ -6141,20 +5930,14 @@
"strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
- "stripe/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
"tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="],
- "tedious/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
"tiny-async-pool/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="],
- "token-types/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
-
"tree-sitter-bash/node-addon-api": ["node-addon-api@8.7.0", "", {}, "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA=="],
"tw-to-css/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
@@ -6171,8 +5954,6 @@
"uri-js/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
- "utif2/pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
-
"venice-ai-sdk-provider/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="],
"vite-plugin-icons-spritesheet/glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="],
@@ -6487,8 +6268,6 @@
"@gitlab/opencode-gitlab-auth/open/wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="],
- "@happy-dom/global-registrator/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"@jsx-email/cli/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="],
"@jsx-email/cli/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.19.12", "", { "os": "android", "cpu": "arm" }, "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w=="],
@@ -6683,14 +6462,6 @@
"@sentry/cli/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
- "@slack/logger/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@slack/oauth/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@slack/socket-mode/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@slack/web-api/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"@slack/web-api/form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
"@slack/web-api/p-queue/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="],
@@ -6717,60 +6488,6 @@
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
- "@types/body-parser/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/cacache/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/cacheable-request/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/connect/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/cross-spawn/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/express-serve-static-core/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/fontkit/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/fs-extra/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/is-stream/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/jsonwebtoken/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/keyv/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/mssql/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/node-fetch/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/npm-registry-fetch/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/npmcli__arborist/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/npmlog/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/pacote/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/plist/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/readable-stream/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/responselike/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/sax/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/send/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/serve-static/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/ssri/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/tunnel/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/ws/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "@types/yauzl/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"@vitest/expect/@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="],
"accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
@@ -6819,12 +6536,8 @@
"body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
- "bun-types/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"c12/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="],
- "cloudflare/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"crc/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
"cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
@@ -6843,8 +6556,6 @@
"electron-winstaller/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="],
- "electron/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"esbuild-plugin-copy/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
"express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
@@ -6857,14 +6568,10 @@
"gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
- "happy-dom/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"iconv-corefoundation/cli-truncate/slice-ansi": ["slice-ansi@3.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ=="],
"iconv-corefoundation/cli-truncate/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
- "image-q/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"js-beautify/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
"js-beautify/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="],
@@ -6883,8 +6590,6 @@
"motion/framer-motion/motion-utils": ["motion-utils@12.36.0", "", {}, "sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg=="],
- "mssql/tedious/@types/node": ["@types/node@22.13.9", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw=="],
-
"mssql/tedious/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
"opencode-gitlab-auth/open/wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="],
@@ -6903,24 +6608,22 @@
"opencontrol/@modelcontextprotocol/sdk/zod-to-json-schema": ["zod-to-json-schema@3.25.2", "", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="],
- "opentui-spinner/@opentui/core/@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.1.105", "", { "os": "darwin", "cpu": "arm64" }, "sha512-1pIL7aer9amwj8EpYoMNtvavKetIe+nX8uBRmYsMQb+KvJoUAZUqENfRW+qHE5WrsOyxx8/QoyXTHw15GG5iLQ=="],
+ "opentui-spinner/@opentui/core/@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.2.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CAy6cL3byz2Xf6gFiJHBpcnsp/2ADEWLLOUokVypOyPLcy8GY3sPzlA4pkAjVGQMYQhDj+Y3+SXz4uTLt4AETg=="],
- "opentui-spinner/@opentui/core/@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.1.105", "", { "os": "darwin", "cpu": "x64" }, "sha512-hLIRSWlK3gY2NRXJGWiTBiMYSmRDjOYFZF6WtUVXhY2SL3sp08dhmr/6dmAVH+3pKCsCipLEsrrcQX6SAihCTA=="],
+ "opentui-spinner/@opentui/core/@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.2.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-K06h333rMkC9cyMJr/VvcRK3ik81Admd8ZsES5uf5YXWPdYhXGf75I1T8mKIThhUmoFLb8R5xqfuPmoocsjM7Q=="],
- "opentui-spinner/@opentui/core/@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.1.105", "", { "os": "linux", "cpu": "arm64" }, "sha512-jlRKfPkozTZEkHEePuCWYcTIUtPm+ieInAwGVqGmjbvqjxdVv1/W/Dt6LEZ/9jpRiOPd+FjXAfLe6wa/XWHr+w=="],
+ "opentui-spinner/@opentui/core/@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-iYWGTztbdG9yYSB5Alxuo0dWAmkWQR0+/paNWUyPOocjigmKgMmACDtHgYqa7sxkIcWgmXljt/f8rgXDG4wdMg=="],
- "opentui-spinner/@opentui/core/@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.1.105", "", { "os": "linux", "cpu": "x64" }, "sha512-kfWS1WMg6qHShmxZX9s1tZc/8JcXw6uyy2UtyTbJdRFExtXGH37oKHi8QK8iPL2ExCx4z7zqVnVJfO3X/Wh7lA=="],
+ "opentui-spinner/@opentui/core/@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-tymBCfYbsDRfHQNXsolkFfaTEIDhemD4+1ZovUztQd7i+0Ggnu9WbPN1SNCiRz6PjrlaNeQzZE3Wl8FfVdw/cw=="],
- "opentui-spinner/@opentui/core/@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.1.105", "", { "os": "win32", "cpu": "arm64" }, "sha512-UFx6A8OpBVbGWK6OAw4GqAqKZgIITJfSOd35pG9yDVKQouHN2OGc2HeeXrH2A4h42p40Xl6IfcqqfllkpC13Dg=="],
+ "opentui-spinner/@opentui/core/@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.2.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-XLPJWdT8QOukrYDkpIng6+uNUlF66ByXcQlC3qA9JbrUTBetZhgXs8Q2jEjRfc+Ty3uh1iRSA6PgJGbbOK/f4Q=="],
- "opentui-spinner/@opentui/core/@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.1.105", "", { "os": "win32", "cpu": "x64" }, "sha512-f9FqqUmxehwhF+cgyazm0YT0v0BYTTCPzd6eztqhl74N3x/kC+jOOz2rdJDC/tTBo1JVsF64KupOnhIs6/Cogg=="],
+ "opentui-spinner/@opentui/core/@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.2.7", "", { "os": "win32", "cpu": "x64" }, "sha512-CzVGEfqysVk8Hxcj0RDv/DtXIM6iZmbmr23kW7y8CJMPtmV1gmKI4D9abVjynWJnGbaSBnDi43mgZnGMgOdyEg=="],
- "opentui-spinner/@opentui/core/bun-ffi-structs": ["bun-ffi-structs@0.1.2", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-Lh1oQAYHDcnesJauieA4UNkWGXY9hYck7OA5IaRwE3Bp6K2F2pJSNYqq+hIy7P3uOvo3km3oxS8304g5gDMl/w=="],
+ "opentui-spinner/@opentui/core/diff": ["diff@9.0.0", "", {}, "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw=="],
"opentui-spinner/@opentui/solid/@babel/core": ["@babel/core@7.28.0", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.27.3", "@babel/helpers": "^7.27.6", "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ=="],
- "opentui-spinner/@opentui/solid/babel-preset-solid": ["babel-preset-solid@1.9.10", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.40.3" }, "peerDependencies": { "@babel/core": "^7.0.0", "solid-js": "^1.9.10" }, "optionalPeers": ["solid-js"] }, "sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ=="],
-
"ora/bl/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
"ora/bl/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
@@ -6929,14 +6632,10 @@
"p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
- "parse-bmfont-xml/xml2js/sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="],
-
"pkg-dir/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="],
"pkg-up/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="],
- "protobufjs/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
"readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.1.0", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w=="],
@@ -6947,16 +6646,10 @@
"send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
- "sitemap/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"storybook/open/wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="],
"string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
- "stripe/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
- "tedious/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"tw-to-css/tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
"tw-to-css/tailwindcss/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
@@ -7259,8 +6952,6 @@
"js-beautify/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
- "mssql/tedious/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
-
"opencontrol/@modelcontextprotocol/sdk/express/accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
"opencontrol/@modelcontextprotocol/sdk/express/body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
diff --git a/bunfig.toml b/bunfig.toml
index 36a21d9332a3..47c4ac53965b 100644
--- a/bunfig.toml
+++ b/bunfig.toml
@@ -1,6 +1,8 @@
[install]
exact = true
+# Only install newly resolved package versions published at least 3 days ago.
+minimumReleaseAge = 259200
+minimumReleaseAgeExcludes = ["@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-x64", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid"]
[test]
root = "./do-not-run-tests-from-root"
-
diff --git a/infra/console.ts b/infra/console.ts
index ab6502a8f875..56befe6268cb 100644
--- a/infra/console.ts
+++ b/infra/console.ts
@@ -293,3 +293,13 @@ new sst.cloudflare.x.SolidStart("Console", {
},
},
})
+
+////////////////
+// HELPERS
+////////////////
+
+export const stat = new sst.cloudflare.Worker("Stat", {
+ handler: "packages/console/function/src/stat.ts",
+ link: [database],
+ url: true,
+})
diff --git a/infra/monitoring.ts b/infra/monitoring.ts
index c08d39f26202..240e6c97ee1f 100644
--- a/infra/monitoring.ts
+++ b/infra/monitoring.ts
@@ -111,6 +111,34 @@ const providerHttpErrorsQuery = (product: "go" | "zen") => {
}).json
}
+const modelLowTpsQuery = (product: "go" | "zen") => {
+ const filters = [
+ { column: "model", op: "exists" },
+ { column: "event_type", op: "=", value: "completions" },
+ { column: "user_agent", op: "contains", value: "opencode" },
+ { column: "isGoTier", op: "=", value: product === "go" ? "true" : "false" },
+ { column: "status", op: ">=", value: "200" },
+ { column: "status", op: "<", value: "400" },
+ { column: "tps.output", op: "exists" },
+ ]
+
+ return honeycomb.getQuerySpecificationOutput({
+ breakdowns: ["model"],
+ calculations: [
+ { op: "COUNT", name: "TOTAL", filterCombination: "AND", filters },
+ {
+ op: "P50",
+ name: "TPS",
+ column: "tps.output",
+ filterCombination: "AND",
+ filters,
+ },
+ ],
+ formulas: [{ name: "LOW_TPS", expression: "IF(GTE($TOTAL, 100), $TPS, 999)" }],
+ timeRange: 1800,
+ }).json
+}
+
new honeycomb.Trigger("IncreasedModelHttpErrorsGo", {
name: "Increased Model HTTP Errors [Go]",
description,
@@ -149,6 +177,44 @@ new honeycomb.Trigger("IncreasedModelHttpErrorsZen", {
],
})
+new honeycomb.Trigger("LowModelTpsGo", {
+ name: "Low Model TPS [Go]",
+ description,
+ queryJson: modelLowTpsQuery("go"),
+ alertType: "on_change",
+ frequency: 600,
+ thresholds: [{ op: "<=", value: 10, exceededLimit: 1 }],
+ recipients: [
+ {
+ id: webhookRecipient.id,
+ notificationDetails: [
+ {
+ variables: [{ name: "type", value: "model_low_tps" }],
+ },
+ ],
+ },
+ ],
+})
+
+new honeycomb.Trigger("LowModelTpsZen", {
+ name: "Low Model TPS [Zen]",
+ description,
+ queryJson: modelLowTpsQuery("zen"),
+ alertType: "on_change",
+ frequency: 600,
+ thresholds: [{ op: "<=", value: 10, exceededLimit: 1 }],
+ recipients: [
+ {
+ id: webhookRecipient.id,
+ notificationDetails: [
+ {
+ variables: [{ name: "type", value: "model_low_tps" }],
+ },
+ ],
+ },
+ ],
+})
+
new honeycomb.Trigger("IncreasedProviderHttpErrorsGo", {
name: "Increased Provider HTTP Errors [Go]",
description,
diff --git a/nix/hashes.json b/nix/hashes.json
index 33003919af55..0e3f9c49a055 100644
--- a/nix/hashes.json
+++ b/nix/hashes.json
@@ -1,8 +1,8 @@
{
"nodeModules": {
- "x86_64-linux": "sha256-Q9r1S15YL9LQK7DRhuOpw3Fxi24BPovEM995GZJayKw=",
- "aarch64-linux": "sha256-C0rRTLnxxuuEkCBc3JZbkR66TUVwpcPFif3BU9GRAuA=",
- "aarch64-darwin": "sha256-1HvalOO/pOkRlYH8CZ93psapt90C+pYzui1JCadBE1Q=",
- "x86_64-darwin": "sha256-RrndyLWfhWm4mZ88XytFF2NI+ly8la550Z5LBN/g5u4="
+ "x86_64-linux": "sha256-Hw7sVV9rTm6qBMtdwfLIV2QvxvLQY5qrywXzuyYbhcs=",
+ "aarch64-linux": "sha256-++oXnY7YqrYt0Qv7ZISmoHliARM9qEP8FacqLxGZH1c=",
+ "aarch64-darwin": "sha256-kZVa0R1YbuvtTzpETqK6ddj4ISje5jBFHBdlynkhW7Q=",
+ "x86_64-darwin": "sha256-94eagNDa8GGJxF8BsMX2BF5Pa+QTl48lXL1+6HgEn0I="
}
}
diff --git a/package.json b/package.json
index 6d82864d6d59..a3400fbfb9a2 100644
--- a/package.json
+++ b/package.json
@@ -35,9 +35,9 @@
"@types/cross-spawn": "6.0.6",
"@octokit/rest": "22.0.0",
"@hono/zod-validator": "0.4.2",
- "@opentui/core": "0.2.6",
- "@opentui/keymap": "0.2.6",
- "@opentui/solid": "0.2.6",
+ "@opentui/core": "0.2.10",
+ "@opentui/keymap": "0.2.10",
+ "@opentui/solid": "0.2.10",
"ulid": "3.0.1",
"@kobalte/core": "0.13.11",
"@types/luxon": "3.7.1",
@@ -128,6 +128,9 @@
"electron"
],
"overrides": {
+ "@opentui/core": "catalog:",
+ "@opentui/keymap": "catalog:",
+ "@opentui/solid": "catalog:",
"@types/bun": "catalog:",
"@types/node": "catalog:"
},
diff --git a/packages/app/package.json b/packages/app/package.json
index 9eb4083725c6..5e033f263c3e 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
- "version": "1.14.48",
+ "version": "1.15.0",
"description": "",
"type": "module",
"exports": {
@@ -73,7 +73,6 @@
"solid-js": "catalog:",
"solid-list": "catalog:",
"tailwindcss": "catalog:",
- "virtua": "catalog:",
- "zod": "catalog:"
+ "virtua": "catalog:"
}
}
diff --git a/packages/app/src/components/dialog-select-file.tsx b/packages/app/src/components/dialog-select-file.tsx
index 63a321e46a4f..ac3bc03e44ec 100644
--- a/packages/app/src/components/dialog-select-file.tsx
+++ b/packages/app/src/components/dialog-select-file.tsx
@@ -107,7 +107,8 @@ function createCommandEntries(props: {
const allowed = createMemo(() => {
if (props.filesOnly()) return []
return props.command.options.filter(
- (option) => !option.disabled && !option.id.startsWith("suggested.") && option.id !== "file.open",
+ (option) =>
+ !option.disabled && !option.hidden && !option.id.startsWith("suggested.") && option.id !== "file.open",
)
})
diff --git a/packages/app/src/components/dialog-select-mcp.tsx b/packages/app/src/components/dialog-select-mcp.tsx
index 576ec8fec4b7..5a28173ead80 100644
--- a/packages/app/src/components/dialog-select-mcp.tsx
+++ b/packages/app/src/components/dialog-select-mcp.tsx
@@ -6,12 +6,14 @@ import { Dialog } from "@opencode-ai/ui/dialog"
import { List } from "@opencode-ai/ui/list"
import { Switch } from "@opencode-ai/ui/switch"
import { useLanguage } from "@/context/language"
-import { mcpQueryKey } from "@/context/global-sync"
+import { useQueryOptions } from "@/context/global-sync"
+import { pathKey } from "@/utils/path-key"
const statusLabels = {
connected: "mcp.status.connected",
failed: "mcp.status.failed",
needs_auth: "mcp.status.needs_auth",
+ needs_client_registration: "mcp.status.needs_client_registration",
disabled: "mcp.status.disabled",
} as const
@@ -20,6 +22,7 @@ export const DialogSelectMcp: Component = () => {
const sdk = useSDK()
const language = useLanguage()
const queryClient = useQueryClient()
+ const queryOptions = useQueryOptions()
const items = createMemo(() =>
Object.entries(sync.data.mcp ?? {})
@@ -29,10 +32,18 @@ export const DialogSelectMcp: Component = () => {
const toggle = useMutation(() => ({
mutationFn: async (name: string) => {
- if (sync.data.mcp[name]?.status === "connected") await sdk.client.mcp.disconnect({ name })
- else await sdk.client.mcp.connect({ name })
+ const status = sync.data.mcp[name]
+ if (status?.status === "connected") {
+ await sdk.client.mcp.disconnect({ name })
+ return
+ }
+ if (status?.status === "needs_auth") {
+ await sdk.client.mcp.auth.authenticate({ name })
+ return
+ }
+ await sdk.client.mcp.connect({ name })
},
- onSuccess: () => queryClient.refetchQueries({ queryKey: mcpQueryKey(sync.directory) }),
+ onSuccess: () => queryClient.refetchQueries(queryOptions.mcp(pathKey(sync.directory))),
}))
const enabledCount = createMemo(() => items().filter((i) => i.status === "connected").length)
@@ -65,7 +76,7 @@ export const DialogSelectMcp: Component = () => {
}
const error = () => {
const s = mcpStatus()
- return s?.status === "failed" ? s.error : undefined
+ if (s?.status === "failed" || s?.status === "needs_client_registration") return s.error
}
const enabled = () => status() === "connected"
return (
@@ -76,9 +87,6 @@ export const DialogSelectMcp: Component = () => {
{statusLabel()}
-
- {language.t("common.loading.ellipsis")}
-
{error()}
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx
index 2417fa98e25a..1e1be28b5961 100644
--- a/packages/app/src/components/prompt-input.tsx
+++ b/packages/app/src/components/prompt-input.tsx
@@ -16,7 +16,6 @@ import {
} from "@/context/prompt"
import { useLayout } from "@/context/layout"
import { useSDK } from "@/context/sdk"
-import { useGlobalSDK } from "@/context/global-sdk"
import { useSync } from "@/context/sync"
import { useComments } from "@/context/comments"
import { Button } from "@opencode-ai/ui/button"
@@ -56,7 +55,8 @@ import { PromptDragOverlay } from "./prompt-input/drag-overlay"
import { promptPlaceholder } from "./prompt-input/placeholder"
import { ImagePreview } from "@opencode-ai/ui/image-preview"
import { useQueries } from "@tanstack/solid-query"
-import { loadAgentsQuery, loadProvidersQuery } from "@/context/global-sync/bootstrap"
+import { useQueryOptions } from "@/context/global-sync"
+import { pathKey } from "@/utils/path-key"
interface PromptInputProps {
class?: string
@@ -103,7 +103,7 @@ const NON_EMPTY_TEXT = /[^\s\u200B]/
export const PromptInput: Component = (props) => {
const sdk = useSDK()
- const globalSDK = useGlobalSDK()
+ const queryOptions = useQueryOptions()
const sync = useSync()
const local = useLocal()
@@ -240,13 +240,7 @@ export const PromptInput: Component = (props) => {
return paths
})
const info = createMemo(() => (params.id ? sync.session.get(params.id) : undefined))
- const status = createMemo(
- () =>
- sync.data.session_status[params.id ?? ""] ?? {
- type: "idle",
- },
- )
- const working = createMemo(() => status()?.type !== "idle")
+ const working = createMemo(() => sync.data.session_working(params.id ?? ""))
const imageAttachments = createMemo(() =>
prompt.current().filter((part): part is ImageAttachmentPart => part.type === "image"),
)
@@ -1256,9 +1250,9 @@ export const PromptInput: Component = (props) => {
const [agentsQuery, globalProvidersQuery, providersQuery] = useQueries(() => ({
queries: [
- loadAgentsQuery(sdk.directory, sdk.client),
- loadProvidersQuery(null, globalSDK.client),
- loadProvidersQuery(sdk.directory, sdk.client),
+ queryOptions.agents(pathKey(sdk.directory)),
+ queryOptions.providers(null),
+ queryOptions.providers(pathKey(sdk.directory)),
],
}))
diff --git a/packages/app/src/components/prompt-input/submit.test.ts b/packages/app/src/components/prompt-input/submit.test.ts
index 83b6212dcc56..7e8d0eb40742 100644
--- a/packages/app/src/components/prompt-input/submit.test.ts
+++ b/packages/app/src/components/prompt-input/submit.test.ts
@@ -1,10 +1,12 @@
import { beforeAll, beforeEach, describe, expect, mock, test } from "bun:test"
import type { Prompt } from "@/context/prompt"
+import { Worktree } from "@/utils/worktree"
let createPromptSubmit: typeof import("./submit").createPromptSubmit
const createdClients: string[] = []
const createdSessions: string[] = []
+const createdSessionInputs: unknown[] = []
const enabledAutoAccept: Array<{ sessionID: string; directory: string }> = []
const optimistic: Array<{
directory?: string
@@ -20,18 +22,26 @@ const storedSessions: Record> = {}
const promoted: Array<{ directory: string; sessionID: string }> = []
const sentShell: string[] = []
const syncedDirectories: string[] = []
+const goalActions: Array<{ action: string; sessionID: string; objective?: string; status?: string }> = []
+const toasts: Array<{ title?: string; description?: string }> = []
+type GoalTestData = { id: string; sessionID: string; objective: string; status: string }
+let goalGetData: GoalTestData | undefined
+let goalUpdateData: GoalTestData | undefined
let params: { id?: string } = {}
let selected = "/repo/worktree-a"
let variant: string | undefined
-const promptValue: Prompt = [{ type: "text", content: "ls", start: 0, end: 2 }]
+let promptValue: Prompt = [{ type: "text", content: "ls", start: 0, end: 2 }]
+
+const flush = () => new Promise((resolve) => setTimeout(resolve, 0))
const clientFor = (directory: string) => {
createdClients.push(directory)
return {
session: {
- create: async () => {
+ create: async (input?: unknown) => {
+ createdSessionInputs.push(input)
createdSessions.push(directory)
return {
data: {
@@ -48,6 +58,21 @@ const clientFor = (directory: string) => {
promptAsync: async () => ({ data: undefined }),
command: async () => ({ data: undefined }),
abort: async () => ({ data: undefined }),
+ goal: {
+ get: async () => ({ data: goalGetData }),
+ create: async (input: { sessionID: string; objective: string }) => {
+ goalActions.push({ action: "create", ...input })
+ return { data: undefined }
+ },
+ update: async (input: { sessionID: string; objective?: string; status?: string }) => {
+ goalActions.push({ action: "update", ...input })
+ return { data: goalUpdateData }
+ },
+ clear: async (input: { sessionID: string }) => {
+ goalActions.push({ action: "clear", ...input })
+ return { data: undefined }
+ },
+ },
},
worktree: {
create: async () => ({ data: { directory: `${directory}/new` } }),
@@ -71,7 +96,10 @@ beforeAll(async () => {
}))
mock.module("@opencode-ai/ui/toast", () => ({
- showToast: () => 0,
+ showToast: (input: { title?: string; description?: string }) => {
+ toasts.push(input)
+ return 0
+ },
}))
mock.module("@opencode-ai/core/util/encode", () => ({
@@ -204,6 +232,7 @@ beforeAll(async () => {
beforeEach(() => {
createdClients.length = 0
createdSessions.length = 0
+ createdSessionInputs.length = 0
enabledAutoAccept.length = 0
optimistic.length = 0
optimisticSeeded.length = 0
@@ -211,8 +240,13 @@ beforeEach(() => {
params = {}
sentShell.length = 0
syncedDirectories.length = 0
+ goalActions.length = 0
+ toasts.length = 0
+ goalGetData = undefined
+ goalUpdateData = undefined
selected = "/repo/worktree-a"
variant = undefined
+ promptValue = [{ type: "text", content: "ls", start: 0, end: 2 }]
for (const key of Object.keys(storedSessions)) delete storedSessions[key]
})
@@ -342,4 +376,169 @@ describe("prompt submit worktree selection", () => {
expect(storedSessions["/repo/worktree-a"]).toEqual([{ id: "session-1", title: "New session 1" }])
expect(optimisticSeeded).toEqual([true])
})
+
+ test("routes /goal through the native goal API instead of prompt submission", async () => {
+ params = { id: "session-1" }
+ promptValue = [{ type: "text", content: "/goal ship app parity\n", start: 0, end: 22 }]
+
+ const submit = createPromptSubmit({
+ info: () => ({ id: "session-1" }),
+ imageAttachments: () => [],
+ commentCount: () => 0,
+ autoAccept: () => false,
+ mode: () => "normal",
+ working: () => false,
+ editor: () => undefined,
+ queueScroll: () => undefined,
+ promptLength: (value) => value.reduce((sum, part) => sum + ("content" in part ? part.content.length : 0), 0),
+ addToHistory: () => undefined,
+ resetHistoryNavigation: () => undefined,
+ setMode: () => undefined,
+ setPopover: () => undefined,
+ onSubmit: () => undefined,
+ })
+
+ await submit.handleSubmit({ preventDefault: () => undefined } as unknown as Event)
+ await flush()
+
+ expect(goalActions).toEqual([{ action: "create", sessionID: "session-1", objective: "ship app parity" }])
+ expect(optimistic).toHaveLength(0)
+ })
+
+ test("rejects oversized /goal objectives before posting to the goal API", async () => {
+ params = { id: "session-1" }
+ const text = `/goal ${"x".repeat(4001)}`
+ promptValue = [{ type: "text", content: text, start: 0, end: text.length }]
+
+ const submit = createPromptSubmit({
+ info: () => ({ id: "session-1" }),
+ imageAttachments: () => [],
+ commentCount: () => 0,
+ autoAccept: () => false,
+ mode: () => "normal",
+ working: () => false,
+ editor: () => undefined,
+ queueScroll: () => undefined,
+ promptLength: (value) => value.reduce((sum, part) => sum + ("content" in part ? part.content.length : 0), 0),
+ addToHistory: () => undefined,
+ resetHistoryNavigation: () => undefined,
+ setMode: () => undefined,
+ setPopover: () => undefined,
+ onSubmit: () => undefined,
+ })
+
+ await submit.handleSubmit({ preventDefault: () => undefined } as unknown as Event)
+ await flush()
+
+ expect(goalActions).toEqual([])
+ expect(toasts.at(-1)?.title).toBe("Goal command failed")
+ expect(toasts.at(-1)?.description).toContain("Goal objective is too long (4001/4000 characters)")
+ expect(optimistic).toHaveLength(0)
+ })
+
+ test("waits for created worktrees before applying /goal", async () => {
+ promptValue = [{ type: "text", content: "/goal ship app parity", start: 0, end: 21 }]
+
+ const submit = createPromptSubmit({
+ info: () => undefined,
+ imageAttachments: () => [],
+ commentCount: () => 0,
+ autoAccept: () => false,
+ mode: () => "normal",
+ working: () => false,
+ editor: () => undefined,
+ queueScroll: () => undefined,
+ promptLength: (value) => value.reduce((sum, part) => sum + ("content" in part ? part.content.length : 0), 0),
+ addToHistory: () => undefined,
+ resetHistoryNavigation: () => undefined,
+ setMode: () => undefined,
+ setPopover: () => undefined,
+ newSessionWorktree: () => "create",
+ onNewSessionWorktreeReset: () => undefined,
+ onSubmit: () => undefined,
+ })
+
+ await submit.handleSubmit({ preventDefault: () => undefined } as unknown as Event)
+ await flush()
+
+ expect(createdSessions).toEqual(["/repo/main/new"])
+ expect(createdSessionInputs[0]).toMatchObject({
+ agent: "agent",
+ model: { providerID: "provider", id: "model" },
+ })
+ expect(goalActions).toEqual([])
+
+ Worktree.ready("/repo/main/new")
+ await flush()
+
+ expect(goalActions).toEqual([{ action: "create", sessionID: "session-1", objective: "ship app parity" }])
+ expect(optimistic).toHaveLength(0)
+ })
+
+ test("applies /goal controls immediately while followups are queued", async () => {
+ params = { id: "session-1" }
+ promptValue = [{ type: "text", content: "/goal pause", start: 0, end: 11 }]
+ goalGetData = { id: "goal-1", sessionID: "session-1", objective: "ship app parity", status: "active" }
+ const queued: unknown[] = []
+
+ const submit = createPromptSubmit({
+ info: () => ({ id: "session-1" }),
+ imageAttachments: () => [],
+ commentCount: () => 0,
+ autoAccept: () => false,
+ mode: () => "normal",
+ working: () => true,
+ editor: () => undefined,
+ queueScroll: () => undefined,
+ promptLength: (value) => value.reduce((sum, part) => sum + ("content" in part ? part.content.length : 0), 0),
+ addToHistory: () => undefined,
+ resetHistoryNavigation: () => undefined,
+ setMode: () => undefined,
+ setPopover: () => undefined,
+ shouldQueue: () => true,
+ onQueue: (draft) => queued.push(draft),
+ onSubmit: () => undefined,
+ })
+
+ await submit.handleSubmit({ preventDefault: () => undefined } as unknown as Event)
+ await flush()
+
+ expect(goalActions).toEqual([{ action: "update", sessionID: "session-1", status: "paused" }])
+ expect(queued).toHaveLength(0)
+ expect(optimistic).toHaveLength(0)
+ })
+
+ test("reports when /goal resume remains budget-limited", async () => {
+ params = { id: "session-1" }
+ promptValue = [{ type: "text", content: "/goal resume", start: 0, end: 12 }]
+ goalGetData = { id: "goal-1", sessionID: "session-1", objective: "ship app parity", status: "budget_limited" }
+ goalUpdateData = goalGetData
+
+ const submit = createPromptSubmit({
+ info: () => ({ id: "session-1" }),
+ imageAttachments: () => [],
+ commentCount: () => 0,
+ autoAccept: () => false,
+ mode: () => "normal",
+ working: () => false,
+ editor: () => undefined,
+ queueScroll: () => undefined,
+ promptLength: (value) => value.reduce((sum, part) => sum + ("content" in part ? part.content.length : 0), 0),
+ addToHistory: () => undefined,
+ resetHistoryNavigation: () => undefined,
+ setMode: () => undefined,
+ setPopover: () => undefined,
+ onSubmit: () => undefined,
+ })
+
+ await submit.handleSubmit({ preventDefault: () => undefined } as unknown as Event)
+ await flush()
+
+ expect(goalActions).toEqual([{ action: "update", sessionID: "session-1", status: "active" }])
+ expect(toasts.at(-1)).toMatchObject({
+ title: "Goal still budget-limited",
+ description: "Increase or clear the token budget to resume continuation.",
+ })
+ expect(optimistic).toHaveLength(0)
+ })
})
diff --git a/packages/app/src/components/prompt-input/submit.ts b/packages/app/src/components/prompt-input/submit.ts
index 05f0a3ed2cb3..d730fddad6ee 100644
--- a/packages/app/src/components/prompt-input/submit.ts
+++ b/packages/app/src/components/prompt-input/submit.ts
@@ -1,4 +1,4 @@
-import type { Message, Session } from "@opencode-ai/sdk/v2/client"
+import type { Message, Session, SessionGoal } from "@opencode-ai/sdk/v2/client"
import { showToast } from "@opencode-ai/ui/toast"
import { base64Encode } from "@opencode-ai/core/util/encode"
import { Binary } from "@opencode-ai/core/util/binary"
@@ -25,6 +25,7 @@ type PendingPrompt = {
}
const pending = new Map()
+const GOAL_OBJECTIVE_MAX_LENGTH = 4000
export type FollowupDraft = {
sessionID: string
@@ -50,8 +51,79 @@ const draftText = (prompt: Prompt) => prompt.map((part) => ("content" in part ?
const draftImages = (prompt: Prompt) => prompt.filter((part): part is ImageAttachmentPart => part.type === "image")
+const goalDescription = (goal: SessionGoal) =>
+ [
+ goal.objective,
+ `Tokens: ${goal.tokens.used}${goal.tokens.budget === undefined ? "" : `/${goal.tokens.budget}`}`,
+ `Time: ${goal.time.used}s`,
+ "Commands: /goal edit, /goal pause, /goal resume, /goal clear",
+ ].join("\n")
+
+async function runGoal(input: {
+ client: ReturnType["client"]
+ sessionID: string
+ text: string
+ edit?: (value: string) => void
+}) {
+ const text = input.text.trim()
+ const arg = text.slice("/goal".length).trim()
+ const control = !arg || arg === "pause" || arg === "resume" || arg === "clear" || arg === "edit"
+ if (!control && arg.length > GOAL_OBJECTIVE_MAX_LENGTH) {
+ throw new Error(
+ `Goal objective is too long (${arg.length}/${GOAL_OBJECTIVE_MAX_LENGTH} characters). Shorten the /goal objective and put extra details in a normal follow-up prompt.`,
+ )
+ }
+ const current = await input.client.session.goal.get({ sessionID: input.sessionID })
+ if (!arg) {
+ const goal = current.data
+ showToast({
+ title: goal ? `Goal ${goal.status}` : "No goal set",
+ description: goal ? goalDescription(goal) : "Use /goal .",
+ })
+ return true
+ }
+ if (arg === "pause") {
+ if (!current.data) throw new Error("No goal to pause.")
+ await input.client.session.goal.update({ sessionID: input.sessionID, status: "paused" })
+ showToast({ title: "Goal paused" })
+ return true
+ }
+ if (arg === "resume") {
+ if (!current.data) throw new Error("No goal to resume.")
+ const updated = await input.client.session.goal.update({ sessionID: input.sessionID, status: "active" })
+ if (updated.data?.status === "budget_limited") {
+ showToast({
+ title: "Goal still budget-limited",
+ description: "Increase or clear the token budget to resume continuation.",
+ })
+ } else {
+ showToast({ title: "Goal resumed" })
+ }
+ return true
+ }
+ if (arg === "clear") {
+ await input.client.session.goal.clear({ sessionID: input.sessionID })
+ showToast({ title: "Goal cleared" })
+ return true
+ }
+ if (arg === "edit") {
+ if (!current.data) throw new Error("No goal to edit. Use /goal .")
+ input.edit?.(`/goal ${current.data.objective}`)
+ return true
+ }
+ if (current.data) {
+ await input.client.session.goal.update({ sessionID: input.sessionID, objective: arg, status: "active" })
+ showToast({ title: "Goal updated" })
+ return true
+ }
+ await input.client.session.goal.create({ sessionID: input.sessionID, objective: arg })
+ showToast({ title: "Goal set" })
+ return true
+}
+
export async function sendFollowupDraft(input: FollowupSendInput) {
const text = draftText(input.draft.prompt)
+ const commandText = text.trim()
const images = draftImages(input.draft.prompt)
const [, setStore] = input.globalSync.child(input.draft.sessionDirectory)
@@ -73,6 +145,11 @@ export async function sendFollowupDraft(input: FollowupSendInput) {
const [head, ...tail] = text.split(" ")
const cmd = head?.startsWith("/") ? head.slice(1) : undefined
+ if (commandText === "/goal" || commandText.startsWith("/goal ")) {
+ if (!(await wait())) return false
+ await runGoal({ client: input.client, sessionID: input.draft.sessionID, text: commandText })
+ return true
+ }
if (cmd && input.sync.data.command.find((item) => item.name === cmd)) {
setBusy()
try {
@@ -363,7 +440,14 @@ export function createPromptSubmit(input: PromptSubmitInput) {
let session = input.info()
if (!session && isNewSession) {
const created = await client.session
- .create()
+ .create({
+ agent: currentAgent.name,
+ model: {
+ providerID: currentModel.provider.id,
+ id: currentModel.id,
+ variant,
+ },
+ })
.then((x) => x.data ?? undefined)
.catch((err) => {
showToast({
@@ -424,67 +508,6 @@ export function createPromptSubmit(input: PromptSubmitInput) {
})
}
- if (!isNewSession && mode === "normal" && input.shouldQueue?.()) {
- input.onQueue?.(draft)
- clearContext()
- clearInput()
- return
- }
-
- input.onSubmit?.()
-
- if (mode === "shell") {
- clearInput()
- client.session
- .shell({
- sessionID: session.id,
- agent,
- model,
- command: text,
- })
- .catch((err) => {
- showToast({
- title: language.t("prompt.toast.shellSendFailed.title"),
- description: errorMessage(err),
- })
- restoreInput()
- })
- return
- }
-
- if (text.startsWith("/")) {
- const [cmdName, ...args] = text.split(" ")
- const commandName = cmdName.slice(1)
- const customCommand = sync.data.command.find((c) => c.name === commandName)
- if (customCommand) {
- clearInput()
- client.session
- .command({
- sessionID: session.id,
- command: commandName,
- arguments: args.join(" "),
- agent,
- model: `${model.providerID}/${model.modelID}`,
- variant,
- parts: images.map((attachment) => ({
- id: Identifier.ascending("part"),
- type: "file" as const,
- mime: attachment.mime,
- url: attachment.dataUrl,
- filename: attachment.filename,
- })),
- })
- .catch((err) => {
- showToast({
- title: language.t("prompt.toast.commandSendFailed.title"),
- description: formatServerError(err, language.t, language.t("common.requestFailed")),
- })
- restoreInput()
- })
- return
- }
- }
-
const commentItems = context.filter((item) => item.type === "file" && !!item.comment?.trim())
const messageID = Identifier.ascending("message")
@@ -496,10 +519,7 @@ export function createPromptSubmit(input: PromptSubmitInput) {
})
}
- removeCommentItems(commentItems)
- clearInput()
-
- const waitForWorktree = async () => {
+ const waitForWorktree = async (options: { restoreCommentItems?: boolean } = {}) => {
const worktree = WorktreeState.get(sessionDirectory)
if (!worktree || worktree.status !== "pending") return true
@@ -513,7 +533,7 @@ export function createPromptSubmit(input: PromptSubmitInput) {
sync.set("session_status", session.id, { type: "idle" })
}
removeOptimisticMessage()
- restoreCommentItems(commentItems)
+ if (options.restoreCommentItems !== false) restoreCommentItems(commentItems)
restoreInput()
}
@@ -554,6 +574,97 @@ export function createPromptSubmit(input: PromptSubmitInput) {
return true
}
+ if (mode === "normal" && text.startsWith("/")) {
+ const [cmdName] = text.split(" ")
+ const commandName = cmdName.slice(1)
+ if (commandName === "goal") {
+ input.onSubmit?.()
+ clearInput()
+ void (async () => {
+ if (!(await waitForWorktree({ restoreCommentItems: false }))) return
+ await runGoal({
+ client,
+ sessionID: session.id,
+ text,
+ edit: (value) => prompt.set([{ type: "text", content: value, start: 0, end: value.length }], value.length),
+ })
+ })().catch((err) => {
+ pending.delete(session.id)
+ showToast({
+ variant: "error",
+ title: "Goal command failed",
+ description: formatServerError(err, language.t, language.t("common.requestFailed")),
+ })
+ restoreInput()
+ })
+ return
+ }
+ }
+
+ if (!isNewSession && mode === "normal" && input.shouldQueue?.()) {
+ input.onQueue?.(draft)
+ clearContext()
+ clearInput()
+ return
+ }
+
+ input.onSubmit?.()
+
+ if (mode === "shell") {
+ clearInput()
+ client.session
+ .shell({
+ sessionID: session.id,
+ agent,
+ model,
+ command: text,
+ })
+ .catch((err) => {
+ showToast({
+ title: language.t("prompt.toast.shellSendFailed.title"),
+ description: errorMessage(err),
+ })
+ restoreInput()
+ })
+ return
+ }
+
+ if (text.startsWith("/")) {
+ const [cmdName, ...args] = text.split(" ")
+ const commandName = cmdName.slice(1)
+ const customCommand = sync.data.command.find((c) => c.name === commandName)
+ if (customCommand) {
+ clearInput()
+ client.session
+ .command({
+ sessionID: session.id,
+ command: commandName,
+ arguments: args.join(" "),
+ agent,
+ model: `${model.providerID}/${model.modelID}`,
+ variant,
+ parts: images.map((attachment) => ({
+ id: Identifier.ascending("part"),
+ type: "file" as const,
+ mime: attachment.mime,
+ url: attachment.dataUrl,
+ filename: attachment.filename,
+ })),
+ })
+ .catch((err) => {
+ showToast({
+ title: language.t("prompt.toast.commandSendFailed.title"),
+ description: formatServerError(err, language.t, language.t("common.requestFailed")),
+ })
+ restoreInput()
+ })
+ return
+ }
+ }
+
+ removeCommentItems(commentItems)
+ clearInput()
+
void sendFollowupDraft({
client,
sync,
diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx
index 3d4f58deec44..e3ce6e9e5770 100644
--- a/packages/app/src/components/session/session-header.tsx
+++ b/packages/app/src/components/session/session-header.tsx
@@ -158,6 +158,7 @@ export function SessionHeader() {
const tree = createMemo(() => !isDesktopBeta || settings.general.showFileTree())
const term = createMemo(() => !isDesktopBeta || settings.general.showTerminal())
const status = createMemo(() => !isDesktopBeta || settings.general.showStatus())
+ const goal = createMemo(() => sync.data.session_goal[params.id ?? ""])
const [exists, setExists] = createStore>>({
finder: true,
@@ -426,6 +427,13 @@ export function SessionHeader() {
+
+ {(item) => (
+
+ goal {item().status}
+
+ )}
+
diff --git a/packages/app/src/components/settings-keybinds.tsx b/packages/app/src/components/settings-keybinds.tsx
index 7d2dfaa6363a..149a0309b5ca 100644
--- a/packages/app/src/components/settings-keybinds.tsx
+++ b/packages/app/src/components/settings-keybinds.tsx
@@ -123,11 +123,13 @@ function listFor(command: CommandContext, map: KeybindMap, palette: string) {
for (const opt of command.catalog) {
if (opt.id.startsWith("suggested.")) continue
+ if (opt.hidden) continue
out.set(opt.id, { title: opt.title, group: groupFor(opt.id) })
}
for (const opt of command.options) {
if (opt.id.startsWith("suggested.")) continue
+ if (opt.hidden) continue
out.set(opt.id, { title: opt.title, group: groupFor(opt.id) })
}
diff --git a/packages/app/src/components/status-popover-body.tsx b/packages/app/src/components/status-popover-body.tsx
index bbac56278428..b38c98f141c2 100644
--- a/packages/app/src/components/status-popover-body.tsx
+++ b/packages/app/src/components/status-popover-body.tsx
@@ -15,7 +15,8 @@ import { useSDK } from "@/context/sdk"
import { normalizeServerUrl, ServerConnection, useServer } from "@/context/server"
import { useSync } from "@/context/sync"
import { useCheckServerHealth, type ServerHealth } from "@/utils/server-health"
-import { mcpQueryKey } from "@/context/global-sync"
+import { useQueryOptions } from "@/context/global-sync"
+import { pathKey } from "@/utils/path-key"
const pollMs = 10_000
@@ -139,13 +140,22 @@ const useMcpToggleMutation = () => {
const sdk = useSDK()
const language = useLanguage()
const queryClient = useQueryClient()
+ const queryOptions = useQueryOptions()
return useMutation(() => ({
mutationFn: async (name: string) => {
const status = sync.data.mcp[name]
- await (status?.status === "connected" ? sdk.client.mcp.disconnect({ name }) : sdk.client.mcp.connect({ name }))
+ if (status?.status === "connected") {
+ await sdk.client.mcp.disconnect({ name })
+ return
+ }
+ if (status?.status === "needs_auth") {
+ await sdk.client.mcp.auth.authenticate({ name })
+ return
+ }
+ await sdk.client.mcp.connect({ name })
},
- onSuccess: () => queryClient.refetchQueries({ queryKey: mcpQueryKey(sync.directory) }),
+ onSuccess: () => queryClient.refetchQueries(queryOptions.mcp(pathKey(sync.directory))),
onError: (err) => {
showToast({
variant: "error",
@@ -314,7 +324,7 @@ export function StatusPopoverBody(props: { shown: Accessor }) {
return (
}
+ keyed
>
{(project) => (
<>
@@ -2106,9 +2130,7 @@ export default function Layout(props: ParentProps) {
id={`project:${projectId()}`}
value={projectName}
onSave={(next) => {
- const item = project()
- if (!item) return
- void renameProject(item, next)
+ void renameProject(project, next)
}}
class="text-14-medium text-text-strong truncate"
displayClass="text-14-medium text-text-strong truncate"
@@ -2150,9 +2172,7 @@ export default function Layout(props: ParentProps) {
{
- const item = project()
- if (!item) return
- showEditProjectDialog(item)
+ showEditProjectDialog(project)
}}
>
{language.t("common.edit")}
@@ -2162,9 +2182,7 @@ export default function Layout(props: ParentProps) {
data-project={slug()}
disabled={!canToggle()}
onSelect={() => {
- const item = project()
- if (!item) return
- toggleProjectWorkspaces(item)
+ toggleProjectWorkspaces(project)
}}
>
@@ -2223,7 +2241,7 @@ export default function Layout(props: ParentProps) {
@@ -2238,9 +2256,7 @@ export default function Layout(props: ParentProps) {
icon="plus-small"
class="w-full"
onClick={() => {
- const item = project()
- if (!item) return
- void createWorkspace(item)
+ void createWorkspace(project)
}}
>
{language.t("workspace.new")}
@@ -2267,7 +2283,7 @@ export default function Layout(props: ParentProps) {
diff --git a/packages/app/src/pages/layout/sidebar-items.tsx b/packages/app/src/pages/layout/sidebar-items.tsx
index f27a9bb7a9ea..77d9a03d9de2 100644
--- a/packages/app/src/pages/layout/sidebar-items.tsx
+++ b/packages/app/src/pages/layout/sidebar-items.tsx
@@ -166,18 +166,7 @@ export const SessionItem = (props: SessionItemProps): JSX.Element => {
})
const isWorking = createMemo(() => {
if (hasPermissions()) return false
- const pending = (sessionStore.message[props.session.id] ?? []).findLast(
- (message) =>
- message.role === "assistant" &&
- typeof (message as { time?: { completed?: unknown } }).time?.completed !== "number",
- )
- const status = sessionStore.session_status[props.session.id]
- return (
- pending !== undefined ||
- status?.type === "busy" ||
- status?.type === "retry" ||
- (status !== undefined && status.type !== "idle")
- )
+ return sessionStore.session_working(props.session.id)
})
const tint = createMemo(() => messageAgentColor(sessionStore.message[props.session.id], sessionStore.agent))
diff --git a/packages/app/src/pages/layout/sidebar-project.tsx b/packages/app/src/pages/layout/sidebar-project.tsx
index 58595c25b996..b910dd2098b7 100644
--- a/packages/app/src/pages/layout/sidebar-project.tsx
+++ b/packages/app/src/pages/layout/sidebar-project.tsx
@@ -305,7 +305,7 @@ export const SortableProject = (props: {
const isWorking = createMemo(() =>
dirs().some((directory) => {
const [store] = globalSync.child(directory, { bootstrap: false })
- return Object.values(store.session_status).some((status) => status?.type === "busy" || status?.type === "retry")
+ return Object.keys(store.session_status).some((id) => store.session_working(id))
}),
)
const projectSessions = createMemo(() => sortedRootSessions(projectStore(), props.sortNow()))
diff --git a/packages/app/src/pages/layout/sidebar-workspace.tsx b/packages/app/src/pages/layout/sidebar-workspace.tsx
index 9b80adac29c4..f423c13d1e7a 100644
--- a/packages/app/src/pages/layout/sidebar-workspace.tsx
+++ b/packages/app/src/pages/layout/sidebar-workspace.tsx
@@ -14,7 +14,7 @@ import { Spinner } from "@opencode-ai/ui/spinner"
import { Tooltip } from "@opencode-ai/ui/tooltip"
import { type Session } from "@opencode-ai/sdk/v2/client"
import { type LocalProject } from "@/context/layout"
-import { loadSessionsQueryKey, useGlobalSync } from "@/context/global-sync"
+import { useGlobalSync, useQueryOptions } from "@/context/global-sync"
import { useLanguage } from "@/context/language"
import { pathKey } from "@/utils/path-key"
import { NewSessionItem, SessionItem, SessionSkeleton } from "./sidebar-items"
@@ -300,6 +300,7 @@ export const SortableWorkspace = (props: {
const navigate = useNavigate()
const params = useParams()
const globalSync = useGlobalSync()
+ const queryOptions = useQueryOptions()
const language = useLanguage()
const sortable = createSortable(props.directory)
const [workspaceStore, setWorkspaceStore] = globalSync.child(props.directory, { bootstrap: false })
@@ -320,7 +321,7 @@ export const SortableWorkspace = (props: {
const boot = createMemo(() => open() || active())
const count = createMemo(() => sessions()?.length ?? 0)
const hasMore = createMemo(() => workspaceStore.sessionTotal > count())
- const fetching = useIsFetching(() => ({ queryKey: loadSessionsQueryKey(props.directory) }))
+ const fetching = useIsFetching(() => queryOptions.sessions(pathKey(props.directory)))
const busy = createMemo(() => props.ctx.isBusy(props.directory))
const loading = () => fetching() > 0 && count() === 0
const touch = createMediaQuery("(hover: none)")
@@ -446,6 +447,7 @@ export const LocalWorkspace = (props: {
mobile?: boolean
}): JSX.Element => {
const globalSync = useGlobalSync()
+ const queryOptions = useQueryOptions()
const language = useLanguage()
const workspace = createMemo(() => {
const [store, setStore] = globalSync.child(props.project.worktree)
@@ -454,7 +456,7 @@ export const LocalWorkspace = (props: {
const slug = createMemo(() => base64Encode(props.project.worktree))
const sessions = createMemo(() => sortedRootSessions(workspace().store, props.sortNow()))
const count = createMemo(() => sessions()?.length ?? 0)
- const fetching = useIsFetching(() => ({ queryKey: loadSessionsQueryKey(props.project.worktree) }))
+ const fetching = useIsFetching(() => queryOptions.sessions(pathKey(props.project.worktree)))
const hasMore = createMemo(() => workspace().store.sessionTotal > count())
const loading = () => fetching() > 0 && count() === 0
const loadMore = async () => {
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 1345e355eb25..1e73ed590fc5 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -1496,12 +1496,7 @@ export default function Page() {
return out
})
- const busy = (sessionID: string) => {
- if ((sync.data.session_status[sessionID] ?? { type: "idle" as const }).type !== "idle") return true
- return (sync.data.message[sessionID] ?? []).some(
- (item) => item.role === "assistant" && typeof item.time.completed !== "number",
- )
- }
+ const busy = (sessionID: string) => sync.data.session_working(sessionID)
const queuedFollowups = createMemo(() => {
const id = params.id
diff --git a/packages/app/src/pages/session/composer/session-composer-region.tsx b/packages/app/src/pages/session/composer/session-composer-region.tsx
index 60447566ed01..e6bfd05ec405 100644
--- a/packages/app/src/pages/session/composer/session-composer-region.tsx
+++ b/packages/app/src/pages/session/composer/session-composer-region.tsx
@@ -2,6 +2,7 @@ import { Show, createEffect, createMemo, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { useNavigate } from "@solidjs/router"
import { useSpring } from "@opencode-ai/ui/motion-spring"
+import { useLayout } from "@/context/layout"
import { PromptInput } from "@/components/prompt-input"
import { useLanguage } from "@/context/language"
import { usePrompt } from "@/context/prompt"
@@ -46,10 +47,12 @@ export function SessionComposerRegion(props: {
setPromptDockRef: (el: HTMLDivElement) => void
}) {
const navigate = useNavigate()
+ const layout = useLayout()
const prompt = usePrompt()
const language = useLanguage()
const route = useSessionKey()
const sync = useSync()
+ const view = layout.view(route.sessionKey)
const handoffPrompt = createMemo(() => getSessionHandoff(route.sessionKey())?.prompt)
const info = createMemo(() => (route.params.id ? sync.session.get(route.params.id) : undefined))
@@ -207,6 +210,8 @@ export function SessionComposerRegion(props: {
view.todoCollapsed.set(!view.todoCollapsed.get())}
collapseLabel={language.t("session.todo.collapse")}
expandLabel={language.t("session.todo.expand")}
dockProgress={value()}
diff --git a/packages/app/src/pages/session/composer/session-composer-state.ts b/packages/app/src/pages/session/composer/session-composer-state.ts
index 525766dcfaee..a7213c4a7d05 100644
--- a/packages/app/src/pages/session/composer/session-composer-state.ts
+++ b/packages/app/src/pages/session/composer/session-composer-state.ts
@@ -57,14 +57,7 @@ export function createSessionComposerState(options?: { closeMs?: number | (() =>
() => todos().length > 0 && todos().every((todo) => todo.status === "completed" || todo.status === "cancelled"),
)
- const status = createMemo(() => {
- const id = params.id
- if (!id) return idle
- return sync.data.session_status[id] ?? idle
- })
-
- const busy = createMemo(() => status().type !== "idle")
- const live = createMemo(() => busy() || blocked())
+ const live = createMemo(() => sync.data.session_working(params.id ?? "") || blocked())
const [store, setStore] = createStore({
responding: undefined as string | undefined,
diff --git a/packages/app/src/pages/session/composer/session-todo-dock.tsx b/packages/app/src/pages/session/composer/session-todo-dock.tsx
index fa8c17734376..fccbeec1774e 100644
--- a/packages/app/src/pages/session/composer/session-todo-dock.tsx
+++ b/packages/app/src/pages/session/composer/session-todo-dock.tsx
@@ -42,18 +42,17 @@ function dot(status: Todo["status"]) {
export function SessionTodoDock(props: {
sessionID?: string
todos: Todo[]
+ collapsed: boolean
+ onToggle: () => void
collapseLabel: string
expandLabel: string
dockProgress: number
}) {
const language = useLanguage()
const [store, setStore] = createStore({
- collapsed: false,
height: 320,
})
- const toggle = () => setStore("collapsed", (value) => !value)
-
const total = createMemo(() => props.todos.length)
const done = createMemo(() => props.todos.filter((todo) => todo.status === "completed").length)
const label = createMemo(() => language.t("session.todo.progress", { done: done(), total: total() }))
@@ -72,7 +71,7 @@ export function SessionTodoDock(props: {
)
const preview = createMemo(() => active()?.content ?? "")
- const collapse = useSpring(() => (store.collapsed ? 1 : 0), { visualDuration: 0.3, bounce: 0 })
+ const collapse = useSpring(() => (props.collapsed ? 1 : 0), { visualDuration: 0.3, bounce: 0 })
const dock = createMemo(() => Math.max(0, Math.min(1, props.dockProgress)))
const shut = createMemo(() => 1 - dock())
const value = createMemo(() => Math.max(0, Math.min(1, collapse())))
@@ -107,11 +106,11 @@ export function SessionTodoDock(props: {
class="pl-3 pr-2 py-2 flex items-center gap-2 overflow-visible"
role="button"
tabIndex={0}
- onClick={toggle}
+ onClick={props.onToggle}
onKeyDown={(event) => {
if (event.key !== "Enter" && event.key !== " ") return
event.preventDefault()
- toggle()
+ props.onToggle()
}}
>
{
event.stopPropagation()
- toggle()
+ props.onToggle()
}}
- aria-label={store.collapsed ? props.expandLabel : props.collapseLabel}
+ aria-label={props.collapsed ? props.expandLabel : props.collapseLabel}
/>
0.1,
}}
diff --git a/packages/app/src/pages/session/review-tab.tsx b/packages/app/src/pages/session/review-tab.tsx
index 5719fce31840..92288c63b042 100644
--- a/packages/app/src/pages/session/review-tab.tsx
+++ b/packages/app/src/pages/session/review-tab.tsx
@@ -32,7 +32,7 @@ export interface SessionReviewTabProps {
focusedComment?: { file: string; id: string } | null
onFocusedCommentChange?: (focus: { file: string; id: string } | null) => void
focusedFile?: string
- onScrollRef?: (el: HTMLDivElement) => void
+ onScrollRef?: (el: HTMLDivElement | undefined) => void
commentMentions?: {
items: (query: string) => string[] | Promise
}
@@ -126,6 +126,7 @@ export function SessionReviewTab(props: SessionReviewTabProps) {
onCleanup(() => {
if (restoreFrame !== undefined) cancelAnimationFrame(restoreFrame)
+ props.onScrollRef?.(undefined)
})
return (
diff --git a/packages/app/src/pages/session/session-side-panel.tsx b/packages/app/src/pages/session/session-side-panel.tsx
index 66f5269bf9f5..9a745891a30c 100644
--- a/packages/app/src/pages/session/session-side-panel.tsx
+++ b/packages/app/src/pages/session/session-side-panel.tsx
@@ -221,239 +221,241 @@ export function SessionSidePanel(props: {
}}
style={{ width: panelWidth() }}
>
-
-
-
-
-
-
-
-
-
{
- const stop = createFileTabListSync({ el, contextOpen })
- onCleanup(stop)
- }}
- >
-
-
-
-
{language.t("session.tab.review")}
-
- {props.reviewCount()}
-
-
-
-
-
-
- tabs().close("context")}
- aria-label={language.t("common.closeTab")}
- />
-
- }
- hideCloseButton
- onMiddleClick={() => tabs().close("context")}
- >
-
-
-
{language.t("session.tab.context")}
-
-
-
-
- {(tab) => }
-
-
-
- {
- void import("@/components/dialog-select-file").then((x) => {
- dialog.show(() => )
- })
- }}
- aria-label={language.t("command.file.open")}
- />
-
-
-
-
-
-
-
- {props.reviewPanel()}
-
-
-
-
-
-
-
-
-
- {language.t("session.files.selectToOpen")}
-
+
+
+
+
+
+
+
+
+
+
{
+ const stop = createFileTabListSync({ el, contextOpen })
+ onCleanup(stop)
+ }}
+ >
+
+
+
+
{language.t("session.tab.review")}
+
+ {props.reviewCount()}
+
+
+
+
+
+
+ tabs().close("context")}
+ aria-label={language.t("common.closeTab")}
+ />
+
+ }
+ hideCloseButton
+ onMiddleClick={() => tabs().close("context")}
+ >
+
+
+
{language.t("session.tab.context")}
+
+
+
+
+ {(tab) => }
+
+
+
+ {
+ void import("@/components/dialog-select-file").then((x) => {
+ dialog.show(() => )
+ })
+ }}
+ aria-label={language.t("command.file.open")}
+ />
+
-
+
+
+
+
+
+ {props.reviewPanel()}
+
-
-
-
-
+
+
-
+
+
+
+ {language.t("session.files.selectToOpen")}
+
+
-
-
-
- {(tab) => }
-
-
-
-
- {(tab) => {
- const path = file.pathFromTab(tab)
- return (
-
- {(p) => }
-
- )
- }}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ {(tab) => }
+
+
+
+
+ {(tab) => {
+ const path = file.pathFromTab(tab)
+ return (
+
+ {(p) => }
+
+ )
+ }}
+
+
+
+
-
-
-
+
-
-
-
- {props.reviewCount()}{" "}
- {language.t(
- props.reviewCount() === 1 ? "session.review.change.one" : "session.review.change.other",
- )}
-
-
- {language.t("session.files.all")}
-
-
-
-
-
-
- {language.t("common.loading")}
- {language.t("common.loading.ellipsis")}
-
- }
- >
+
+
+
+ {props.reviewCount()}{" "}
+ {language.t(
+ props.reviewCount() === 1 ? "session.review.change.one" : "session.review.change.other",
+ )}
+
+
+ {language.t("session.files.all")}
+
+
+
+
+
+
+ {language.t("common.loading")}
+ {language.t("common.loading.ellipsis")}
+
+ }
+ >
+ props.focusReviewDiff(node.path)}
+ />
+
+
+
+
+
+
+ {empty(language.t("session.files.empty"))}
+
props.focusReviewDiff(node.path)}
+ onFileClick={(node) => openTab(file.tab(node.path))}
/>
-
-
-
-
-
-
- {empty(language.t("session.files.empty"))}
-
- openTab(file.tab(node.path))}
- />
-
-
-
-
-
-
- props.size.start()}>
- {
- props.size.touch()
- layout.fileTree.resize(width)
- }}
- />
+
+
+
+
-
-
-
-
+
+ props.size.start()}>
+ {
+ props.size.touch()
+ layout.fileTree.resize(width)
+ }}
+ />
+
+
+
+
+
+
)
diff --git a/packages/app/src/pages/session/use-session-commands.tsx b/packages/app/src/pages/session/use-session-commands.tsx
index 922299bec198..2a17523b1206 100644
--- a/packages/app/src/pages/session/use-session-commands.tsx
+++ b/packages/app/src/pages/session/use-session-commands.tsx
@@ -75,8 +75,16 @@ export const useSessionCommands = (actions: SessionCommandContext) => {
import.meta.env.VITE_OPENCODE_CHANNEL !== "beta" ||
settings.general.showFileTree()
- const idle = { type: "idle" as const }
- const status = () => sync.data.session_status[params.id ?? ""] ?? idle
+ const goal = () => sync.data.session_goal[params.id ?? ""]
+ const goalDescription = () => {
+ const current = goal()
+ if (!current) return "Use /goal ."
+ return [
+ current.objective,
+ `Tokens: ${current.tokens.used}${current.tokens.budget === undefined ? "" : `/${current.tokens.budget}`}`,
+ `Time: ${current.time.used}s`,
+ ].join("\n")
+ }
const messages = () => {
const id = params.id
if (!id) return []
@@ -290,7 +298,7 @@ export const useSessionCommands = (actions: SessionCommandContext) => {
const sessionID = params.id
if (!sessionID) return
- if (status().type !== "idle") {
+ if (sync.data.session_working(params.id ?? "")) {
await sdk.client.session.abort({ sessionID }).catch(() => {})
}
@@ -381,6 +389,58 @@ export const useSessionCommands = (actions: SessionCommandContext) => {
}
const sessionCmds = () => [
+ sessionCommand({
+ id: "session.goal",
+ title: "Goal",
+ description: goal() ? `${goal()!.status}: ${goal()!.objective}` : "Show or set the session goal",
+ slash: "goal",
+ disabled: !params.id,
+ onSelect: () =>
+ showToast({
+ title: goal() ? `Goal ${goal()!.status}` : "No goal set",
+ description: goalDescription(),
+ }),
+ }),
+ sessionCommand({
+ id: "session.goal.pause",
+ title: "Pause Goal",
+ description: "Pause active goal continuation",
+ disabled: !params.id || !goal() || goal()?.status === "paused",
+ onSelect: async () => {
+ if (!params.id) return
+ await sdk.client.session.goal.update({ sessionID: params.id, status: "paused" })
+ showToast({ title: "Goal paused" })
+ },
+ }),
+ sessionCommand({
+ id: "session.goal.resume",
+ title: "Resume Goal",
+ description: "Resume goal continuation",
+ disabled: !params.id || !goal() || goal()?.status === "active",
+ onSelect: async () => {
+ if (!params.id) return
+ const updated = await sdk.client.session.goal.update({ sessionID: params.id, status: "active" })
+ if (updated.data?.status === "budget_limited") {
+ showToast({
+ title: "Goal still budget-limited",
+ description: "Increase or clear the token budget to resume continuation.",
+ })
+ } else {
+ showToast({ title: "Goal resumed" })
+ }
+ },
+ }),
+ sessionCommand({
+ id: "session.goal.clear",
+ title: "Clear Goal",
+ description: "Clear the current session goal",
+ disabled: !params.id || !goal(),
+ onSelect: async () => {
+ if (!params.id) return
+ await sdk.client.session.goal.clear({ sessionID: params.id })
+ showToast({ title: "Goal cleared" })
+ },
+ }),
sessionCommand({
id: "session.new",
title: language.t("command.session.new"),
diff --git a/packages/app/src/utils/id.ts b/packages/app/src/utils/id.ts
index fa27cf4c5f94..dba7a8d95135 100644
--- a/packages/app/src/utils/id.ts
+++ b/packages/app/src/utils/id.ts
@@ -1,5 +1,3 @@
-import z from "zod"
-
const prefixes = {
session: "ses",
message: "msg",
@@ -15,10 +13,6 @@ let counter = 0
type Prefix = keyof typeof prefixes
export namespace Identifier {
- export function schema(prefix: Prefix) {
- return z.string().startsWith(prefixes[prefix])
- }
-
export function ascending(prefix: Prefix, given?: string) {
return generateID(prefix, false, given)
}
diff --git a/packages/app/src/utils/server-errors.test.ts b/packages/app/src/utils/server-errors.test.ts
index 1f53bb8cf66c..84f7c07d6078 100644
--- a/packages/app/src/utils/server-errors.test.ts
+++ b/packages/app/src/utils/server-errors.test.ts
@@ -128,4 +128,17 @@ describe("formatServerError", () => {
["Modelo nao encontrado: x/y", "Voce quis dizer: x/y2, x/y3", "Revise provider/model no config"].join("\n"),
)
})
+
+ test("unwraps SDK-wrapped errors from cause.body", () => {
+ const body = {
+ name: "ConfigInvalidError",
+ data: {
+ message: "Missing host",
+ },
+ } satisfies ConfigInvalidError
+
+ const wrapped = new Error("ConfigInvalidError", { cause: { body, status: 400 } })
+
+ expect(formatServerError(wrapped, language.t)).toBe("Arquivo de config em config invalido: Missing host")
+ })
})
diff --git a/packages/app/src/utils/server-errors.ts b/packages/app/src/utils/server-errors.ts
index 2c3a8c54dbbe..8a8db1781159 100644
--- a/packages/app/src/utils/server-errors.ts
+++ b/packages/app/src/utils/server-errors.ts
@@ -26,14 +26,22 @@ function tr(translator: Translator | undefined, key: string, text: string, vars?
}
export function formatServerError(error: unknown, translate?: Translator, fallback?: string) {
- if (isConfigInvalidErrorLike(error)) return parseReadableConfigInvalidError(error, translate)
- if (isProviderModelNotFoundErrorLike(error)) return parseReadableProviderModelNotFoundError(error, translate)
+ const unwrapped = unwrapNamedError(error)
+ if (isConfigInvalidErrorLike(unwrapped)) return parseReadableConfigInvalidError(unwrapped, translate)
+ if (isProviderModelNotFoundErrorLike(unwrapped)) return parseReadableProviderModelNotFoundError(unwrapped, translate)
if (error instanceof Error && error.message) return error.message
if (typeof error === "string" && error) return error
if (fallback) return fallback
return tr(translate, "error.chain.unknown", "Unknown error")
}
+function unwrapNamedError(error: unknown): unknown {
+ if (error instanceof Error && error.cause && typeof error.cause === "object" && "body" in error.cause) {
+ return (error.cause as Record).body
+ }
+ return error
+}
+
function isConfigInvalidErrorLike(error: unknown): error is ConfigInvalidError {
if (typeof error !== "object" || error === null) return false
const o = error as Record
diff --git a/packages/console/app/package.json b/packages/console/app/package.json
index 7e736ca77520..fbba88bea4ac 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.15.0",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/console/app/src/config.ts b/packages/console/app/src/config.ts
index 829da5751eb5..2cd039fef7ef 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/honeycomb/webhook.ts b/packages/console/app/src/routes/honeycomb/webhook.ts
index 367a93aeb023..05be68353572 100644
--- a/packages/console/app/src/routes/honeycomb/webhook.ts
+++ b/packages/console/app/src/routes/honeycomb/webhook.ts
@@ -12,13 +12,22 @@ const basePayload = z.object({
url: z.string(),
})
-const groups = z.object({ group: z.object({ key: z.string(), value: z.string() }).array() }).array()
+const groups = z
+ .object({
+ result: z.union([z.number(), z.string()]).nullish(),
+ group: z.object({ key: z.string(), value: z.string() }).array(),
+ })
+ .array()
const honeycombWebhookPayload = z.discriminatedUnion("type", [
basePayload.extend({
type: z.literal("model_http_errors"),
groups,
}),
+ basePayload.extend({
+ type: z.literal("model_low_tps"),
+ groups,
+ }),
basePayload.extend({
type: z.literal("provider_http_errors"),
groups,
@@ -29,14 +38,25 @@ const honeycombWebhookPayload = z.discriminatedUnion("type", [
])
const postDiscordMessage = async (payload: z.infer) => {
- const group =
- payload.type === "model_http_errors" ? "model" : payload.type === "provider_http_errors" ? "provider" : undefined
- const names = payload.type === "custom" ? [] : payload.groups.flatMap((item) => item.group.map((g) => g.value))
+ const names =
+ payload.type === "custom"
+ ? []
+ : payload.groups.flatMap((item) =>
+ item.group.map((g) => {
+ const result = item.result == null ? undefined : Number(item.result)
+ return `- ${g.value}${
+ result !== undefined && Number.isFinite(result)
+ ? payload.type === "model_low_tps"
+ ? ` (${Math.round(result)} TPS)`
+ : ` (${Math.round(result * 100)}% errors)`
+ : ""
+ }`
+ }),
+ )
const content = [
`[**${payload.isTest ? "[TEST] " : ""}${payload.name ?? "Honeycomb alert"}**](${payload.url})`,
- group && names.length > 0 ? `Affected ${group}s:` : undefined,
- ...names.map((name) => `- ${name}`),
+ ...names,
"",
`<@&${DISCORD_ALERT_ROLE_ID}>`,
]
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index 2e46df0366aa..3af36ad77a6c 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -123,7 +123,7 @@ export async function handler(
? createIpRateLimiter(modelInfo.id, modelInfo.rateLimit, ip, input.request)
: createKeyRateLimiter(modelInfo.id, modelInfo.rateLimit, zenApiKey, input.request)
await rateLimiter?.check()
- const stickyTracker = createStickyTracker(modelInfo.stickyProvider, sessionId)
+ const stickyTracker = createStickyTracker(modelInfo.id, modelInfo.stickyProvider, sessionId)
const stickyProvider = await stickyTracker?.get()
const authInfo = await authenticate(modelInfo, zenApiKey)
const billingSource = validateBilling(authInfo, modelInfo)
@@ -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 &&
@@ -238,7 +238,7 @@ export async function handler(
dataDumper?.provideRequest(reqBody)
// Store sticky provider
- await stickyTracker?.set(providerInfo.id)
+ if (res.status === 200) await stickyTracker?.set(providerInfo.id)
// Temporarily change 404 to 400 status code b/c solid start automatically override 404 response
const resStatus = res.status === 404 ? 400 : res.status
@@ -299,7 +299,6 @@ export async function handler(
let buffer = ""
let responseLength = 0
let timestampFirstByte = 0
- let timestampLastByte = 0
function pump(): Promise {
return (
@@ -321,6 +320,7 @@ export async function handler(
await modelTpsLimiter?.track(
providerInfo.id,
providerInfo.model,
+ providerInfo.tpsGoal,
timestampFirstByte,
timestampLastByte,
usageInfo,
@@ -526,7 +526,7 @@ export async function handler(
})
.filter((provider) => {
if (!provider.tpsGoal) return true
- const isLowTps = modelTpsLimits?.[`${provider.id}/${provider.model}`] ?? false
+ const isLowTps = modelTpsLimits?.[`${provider.id}/${provider.model}/${provider.tpsGoal}`] ?? false
return !isLowTps
})
.map((provider) => {
diff --git a/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts b/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts
index 428272eecd81..477d08ce6829 100644
--- a/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts
+++ b/packages/console/app/src/routes/zen/util/modelTpsLimiter.ts
@@ -5,7 +5,7 @@ import { UsageInfo } from "./provider/provider"
export function createModelTpsLimiter(providers: { id: string; model: string; tpsGoal?: number }[]) {
const tpsGoals = Object.fromEntries(
providers.flatMap((p) => {
- return p.tpsGoal ? [[`${p.id}/${p.model}`, p.tpsGoal]] : []
+ return p.tpsGoal ? [[`${p.id}/${p.model}/${p.tpsGoal}`, p.tpsGoal]] : []
}),
)
const ids = Object.keys(tpsGoals)
@@ -56,11 +56,17 @@ export function createModelTpsLimiter(providers: { id: string; model: string; tp
}),
)
},
- track: async (provider: string, model: string, tsFirstByte: number, tsLastByte: number, usageInfo: UsageInfo) => {
- const id = `${provider}/${model}`
- if (!ids.includes(id)) return
- const tpsGoal = tpsGoals[id]
+ track: async (
+ provider: string,
+ model: string,
+ tpsGoal: number | undefined,
+ tsFirstByte: number,
+ tsLastByte: number,
+ usageInfo: UsageInfo,
+ ) => {
if (!tpsGoal) return
+ const id = `${provider}/${model}/${tpsGoal}`
+ if (!ids.includes(id)) return
if (tsFirstByte <= 0 || tsLastByte <= 0) return
const tokens = usageInfo.outputTokens
if (tokens <= 10) return
diff --git a/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts b/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts
index 8029757c5b61..fae0cdf03c39 100644
--- a/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts
+++ b/packages/console/app/src/routes/zen/util/stickyProviderTracker.ts
@@ -1,16 +1,42 @@
-import { Resource } from "@opencode-ai/console-resource"
+import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
+import { ModelStickyProviderTable } from "@opencode-ai/console-core/schema/ip.sql.js"
-export function createStickyTracker(stickyProvider: "strict" | "prefer" | undefined, session: string) {
+export function createStickyTracker(modelId: string, stickyProvider: "strict" | "prefer" | undefined, session: string) {
if (!stickyProvider) return
if (!session) return
- const key = `sticky:${session}`
+ const id = `${modelId}/${session}`
+ let _providerId: string | undefined
return {
get: async () => {
- return await Resource.GatewayKv.get(key)
+ const data = await Database.use((tx) =>
+ tx
+ .select({
+ providerId: ModelStickyProviderTable.providerId,
+ })
+ .from(ModelStickyProviderTable)
+ .where(eq(ModelStickyProviderTable.id, id))
+ .limit(1),
+ )
+ _providerId = data[0]?.providerId
+ return _providerId
},
set: async (providerId: string) => {
- await Resource.GatewayKv.put(key, providerId, { expirationTtl: 86400 })
+ if (_providerId === providerId) return
+
+ await Database.use((tx) =>
+ tx
+ .insert(ModelStickyProviderTable)
+ .values({
+ id,
+ providerId,
+ })
+ .onDuplicateKeyUpdate({
+ set: {
+ providerId,
+ },
+ }),
+ )
},
}
}
diff --git a/packages/console/core/migrations/20260513163955_tearful_whistler/migration.sql b/packages/console/core/migrations/20260513163955_tearful_whistler/migration.sql
new file mode 100644
index 000000000000..a2bcc164ca61
--- /dev/null
+++ b/packages/console/core/migrations/20260513163955_tearful_whistler/migration.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `model_sticky_provider` (
+ `id` varchar(255) PRIMARY KEY,
+ `time_created` timestamp(3) NOT NULL DEFAULT (now()),
+ `time_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
+ `time_deleted` timestamp(3),
+ `provider_id` varchar(255) NOT NULL
+);
diff --git a/packages/console/core/migrations/20260513163955_tearful_whistler/snapshot.json b/packages/console/core/migrations/20260513163955_tearful_whistler/snapshot.json
new file mode 100644
index 000000000000..b79173522885
--- /dev/null
+++ b/packages/console/core/migrations/20260513163955_tearful_whistler/snapshot.json
@@ -0,0 +1,2765 @@
+{
+ "version": "6",
+ "dialect": "mysql",
+ "id": "1f04bd59-35b0-493b-9d55-cfa08207ba8e",
+ "prevIds": ["c742e0f2-5d89-4216-b843-059d00680f13"],
+ "ddl": [
+ {
+ "name": "account",
+ "entityType": "tables"
+ },
+ {
+ "name": "auth",
+ "entityType": "tables"
+ },
+ {
+ "name": "benchmark",
+ "entityType": "tables"
+ },
+ {
+ "name": "billing",
+ "entityType": "tables"
+ },
+ {
+ "name": "coupon",
+ "entityType": "tables"
+ },
+ {
+ "name": "lite",
+ "entityType": "tables"
+ },
+ {
+ "name": "payment",
+ "entityType": "tables"
+ },
+ {
+ "name": "subscription",
+ "entityType": "tables"
+ },
+ {
+ "name": "usage",
+ "entityType": "tables"
+ },
+ {
+ "name": "ip_rate_limit",
+ "entityType": "tables"
+ },
+ {
+ "name": "ip",
+ "entityType": "tables"
+ },
+ {
+ "name": "key_rate_limit",
+ "entityType": "tables"
+ },
+ {
+ "name": "model_sticky_provider",
+ "entityType": "tables"
+ },
+ {
+ "name": "model_tpm_rate_limit",
+ "entityType": "tables"
+ },
+ {
+ "name": "model_tps_rate_limit",
+ "entityType": "tables"
+ },
+ {
+ "name": "key",
+ "entityType": "tables"
+ },
+ {
+ "name": "model",
+ "entityType": "tables"
+ },
+ {
+ "name": "provider",
+ "entityType": "tables"
+ },
+ {
+ "name": "user",
+ "entityType": "tables"
+ },
+ {
+ "name": "workspace",
+ "entityType": "tables"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "account"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "account"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "account"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "account"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "enum('email','github','google')",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "provider",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "subject",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "account_id",
+ "entityType": "columns",
+ "table": "auth"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "varchar(64)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "model",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "varchar(64)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "agent",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "mediumtext",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "result",
+ "entityType": "columns",
+ "table": "benchmark"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "customer_id",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "payment_method_id",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(32)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "payment_method_type",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(4)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "payment_method_last4",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "bigint",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "balance",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "monthly_limit",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "monthly_usage",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_monthly_usage_updated",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "boolean",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "reload",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "reload_trigger",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "reload_amount",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "reload_error",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_reload_error",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_reload_locked_till",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "json",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "subscription",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(28)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "subscription_id",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "enum('20','100','200')",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "subscription_plan",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_subscription_booked",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_subscription_selected",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(28)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "lite_subscription_id",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "json",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "lite",
+ "entityType": "columns",
+ "table": "billing"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "email",
+ "entityType": "columns",
+ "table": "coupon"
+ },
+ {
+ "type": "enum('BUILDATHON','GOFREEMONTH','GO3MONTHS100','GO6MONTHS100','GO12MONTHS100')",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "type",
+ "entityType": "columns",
+ "table": "coupon"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_redeemed",
+ "entityType": "columns",
+ "table": "coupon"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "user_id",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "rolling_usage",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "weekly_usage",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "monthly_usage",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_rolling_updated",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_weekly_updated",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_monthly_updated",
+ "entityType": "columns",
+ "table": "lite"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "customer_id",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "invoice_id",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "payment_id",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "bigint",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "amount",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_refunded",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "json",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "enrichment",
+ "entityType": "columns",
+ "table": "payment"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "user_id",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "rolling_usage",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "fixed_usage",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_rolling_updated",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_fixed_updated",
+ "entityType": "columns",
+ "table": "subscription"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "model",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "provider",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "input_tokens",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "output_tokens",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "reasoning_tokens",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "cache_read_tokens",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "cache_write_5m_tokens",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "cache_write_1h_tokens",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "bigint",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "cost",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "key_id",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "json",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "enrichment",
+ "entityType": "columns",
+ "table": "usage"
+ },
+ {
+ "type": "varchar(45)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "ip",
+ "entityType": "columns",
+ "table": "ip_rate_limit"
+ },
+ {
+ "type": "varchar(10)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "interval",
+ "entityType": "columns",
+ "table": "ip_rate_limit"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "count",
+ "entityType": "columns",
+ "table": "ip_rate_limit"
+ },
+ {
+ "type": "varchar(45)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "ip",
+ "entityType": "columns",
+ "table": "ip"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "ip"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "ip"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "ip"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "usage",
+ "entityType": "columns",
+ "table": "ip"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "key",
+ "entityType": "columns",
+ "table": "key_rate_limit"
+ },
+ {
+ "type": "varchar(40)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "interval",
+ "entityType": "columns",
+ "table": "key_rate_limit"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "count",
+ "entityType": "columns",
+ "table": "key_rate_limit"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "model_sticky_provider"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "model_sticky_provider"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "model_sticky_provider"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "model_sticky_provider"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "provider_id",
+ "entityType": "columns",
+ "table": "model_sticky_provider"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "model_tpm_rate_limit"
+ },
+ {
+ "type": "bigint",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "interval",
+ "entityType": "columns",
+ "table": "model_tpm_rate_limit"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "count",
+ "entityType": "columns",
+ "table": "model_tpm_rate_limit"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "model_tps_rate_limit"
+ },
+ {
+ "type": "bigint",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "interval",
+ "entityType": "columns",
+ "table": "model_tps_rate_limit"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "qualify",
+ "entityType": "columns",
+ "table": "model_tps_rate_limit"
+ },
+ {
+ "type": "int",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "unqualify",
+ "entityType": "columns",
+ "table": "model_tps_rate_limit"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "name",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "key",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "user_id",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_used",
+ "entityType": "columns",
+ "table": "key"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "model"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "model"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "model"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "model"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "model"
+ },
+ {
+ "type": "varchar(64)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "model",
+ "entityType": "columns",
+ "table": "model"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "varchar(64)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "provider",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "credentials",
+ "entityType": "columns",
+ "table": "provider"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "workspace_id",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "account_id",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "email",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "name",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_seen",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "color",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "enum('admin','member')",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "role",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "int",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "monthly_limit",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "bigint",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "monthly_usage",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_monthly_usage_updated",
+ "entityType": "columns",
+ "table": "user"
+ },
+ {
+ "type": "varchar(30)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "workspace"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "slug",
+ "entityType": "columns",
+ "table": "workspace"
+ },
+ {
+ "type": "varchar(255)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "name",
+ "entityType": "columns",
+ "table": "workspace"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(now())",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_created",
+ "entityType": "columns",
+ "table": "workspace"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": true,
+ "autoIncrement": false,
+ "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))",
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_updated",
+ "entityType": "columns",
+ "table": "workspace"
+ },
+ {
+ "type": "timestamp(3)",
+ "notNull": false,
+ "autoIncrement": false,
+ "default": null,
+ "onUpdateNow": false,
+ "onUpdateNowFsp": null,
+ "charSet": null,
+ "collation": null,
+ "generated": null,
+ "name": "time_deleted",
+ "entityType": "columns",
+ "table": "workspace"
+ },
+ {
+ "columns": ["id"],
+ "name": "PRIMARY",
+ "table": "account",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "name": "PRIMARY",
+ "table": "auth",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "name": "PRIMARY",
+ "table": "benchmark",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "billing",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["email", "type"],
+ "name": "PRIMARY",
+ "table": "coupon",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "lite",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "payment",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "subscription",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "usage",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["ip", "interval"],
+ "name": "PRIMARY",
+ "table": "ip_rate_limit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["ip"],
+ "name": "PRIMARY",
+ "table": "ip",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["key", "interval"],
+ "name": "PRIMARY",
+ "table": "key_rate_limit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "name": "PRIMARY",
+ "table": "model_sticky_provider",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id", "interval"],
+ "name": "PRIMARY",
+ "table": "model_tpm_rate_limit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id", "interval"],
+ "name": "PRIMARY",
+ "table": "model_tps_rate_limit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "key",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "model",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "provider",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["workspace_id", "id"],
+ "name": "PRIMARY",
+ "table": "user",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "name": "PRIMARY",
+ "table": "workspace",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ {
+ "value": "provider",
+ "isExpression": false
+ },
+ {
+ "value": "subject",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "provider",
+ "entityType": "indexes",
+ "table": "auth"
+ },
+ {
+ "columns": [
+ {
+ "value": "account_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "account_id",
+ "entityType": "indexes",
+ "table": "auth"
+ },
+ {
+ "columns": [
+ {
+ "value": "time_created",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "time_created",
+ "entityType": "indexes",
+ "table": "benchmark"
+ },
+ {
+ "columns": [
+ {
+ "value": "customer_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "global_customer_id",
+ "entityType": "indexes",
+ "table": "billing"
+ },
+ {
+ "columns": [
+ {
+ "value": "subscription_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "global_subscription_id",
+ "entityType": "indexes",
+ "table": "billing"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "user_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "workspace_user_id",
+ "entityType": "indexes",
+ "table": "lite"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "user_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "workspace_user_id",
+ "entityType": "indexes",
+ "table": "subscription"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "time_created",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "usage_time_created",
+ "entityType": "indexes",
+ "table": "usage"
+ },
+ {
+ "columns": [
+ {
+ "value": "key",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "global_key",
+ "entityType": "indexes",
+ "table": "key"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "model",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "model_workspace_model",
+ "entityType": "indexes",
+ "table": "model"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "provider",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "workspace_provider",
+ "entityType": "indexes",
+ "table": "provider"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "account_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "user_account_id",
+ "entityType": "indexes",
+ "table": "user"
+ },
+ {
+ "columns": [
+ {
+ "value": "workspace_id",
+ "isExpression": false
+ },
+ {
+ "value": "email",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "user_email",
+ "entityType": "indexes",
+ "table": "user"
+ },
+ {
+ "columns": [
+ {
+ "value": "account_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "global_account_id",
+ "entityType": "indexes",
+ "table": "user"
+ },
+ {
+ "columns": [
+ {
+ "value": "email",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "global_email",
+ "entityType": "indexes",
+ "table": "user"
+ },
+ {
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "using": null,
+ "algorithm": null,
+ "lock": null,
+ "nameExplicit": true,
+ "name": "slug",
+ "entityType": "indexes",
+ "table": "workspace"
+ }
+ ],
+ "renames": []
+}
diff --git a/packages/console/core/package.json b/packages/console/core/package.json
index 986103ece3ca..b58e595171e8 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.15.0",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/console/core/src/schema/ip.sql.ts b/packages/console/core/src/schema/ip.sql.ts
index 975dcfa186ca..a80fa474cae3 100644
--- a/packages/console/core/src/schema/ip.sql.ts
+++ b/packages/console/core/src/schema/ip.sql.ts
@@ -51,3 +51,13 @@ export const ModelTpsRateLimitTable = mysqlTable(
},
(table) => [primaryKey({ columns: [table.id, table.interval] })],
)
+
+export const ModelStickyProviderTable = mysqlTable(
+ "model_sticky_provider",
+ {
+ id: varchar("id", { length: 255 }).notNull(),
+ ...timestamps,
+ providerId: varchar("provider_id", { length: 255 }).notNull(),
+ },
+ (table) => [primaryKey({ columns: [table.id] })],
+)
diff --git a/packages/console/core/sst-env.d.ts b/packages/console/core/sst-env.d.ts
index 9680a53aab1e..088db5be2c7e 100644
--- a/packages/console/core/sst-env.d.ts
+++ b/packages/console/core/sst-env.d.ts
@@ -298,6 +298,7 @@ declare module "sst" {
"EnterpriseStorage": cloudflare.R2Bucket
"GatewayKv": cloudflare.KVNamespace
"LogProcessor": cloudflare.Service
+ "Stat": cloudflare.Service
"ZenData": cloudflare.R2Bucket
"ZenDataNew": cloudflare.R2Bucket
}
diff --git a/packages/console/function/package.json b/packages/console/function/package.json
index 5c1d1ba22349..faf72baae09e 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.15.0",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
diff --git a/packages/console/function/src/stat.ts b/packages/console/function/src/stat.ts
new file mode 100644
index 000000000000..957adf491a60
--- /dev/null
+++ b/packages/console/function/src/stat.ts
@@ -0,0 +1,43 @@
+import { and, Database, inArray } from "@opencode-ai/console-core/drizzle/index.js"
+import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
+
+type Result = Record
+
+export default {
+ async fetch(request: Request) {
+ if (request.method !== "POST") return new Response("Method Not Allowed", { status: 405 })
+
+ const body = (await request.json()) as { ids: string[] }
+ const ids = body.ids
+ if (ids.length === 0) return Response.json({} satisfies Result)
+
+ const toInterval = (date: Date) =>
+ parseInt(
+ date
+ .toISOString()
+ .replace(/[^0-9]/g, "")
+ .substring(0, 12),
+ )
+ const now = Date.now()
+ const intervals = Array.from({ length: 30 }, (_, i) => toInterval(new Date(now - i * 60 * 1000)))
+
+ const rows = await Database.use((tx) =>
+ tx
+ .select()
+ .from(ModelTpsRateLimitTable)
+ .where(and(inArray(ModelTpsRateLimitTable.id, ids), inArray(ModelTpsRateLimitTable.interval, intervals))),
+ )
+
+ const rowsByKey = new Map(rows.map((row) => [`${row.id}:${row.interval}`, row]))
+ const result: Result = Object.fromEntries(
+ ids.map((id) => [
+ id,
+ intervals.map((interval) => {
+ const row = rowsByKey.get(`${id}:${interval}`)
+ return { interval, qualify: row?.qualify ?? 0, unqualify: row?.unqualify ?? 0 }
+ }),
+ ]),
+ )
+ return Response.json(result)
+ },
+}
diff --git a/packages/console/function/sst-env.d.ts b/packages/console/function/sst-env.d.ts
index 9680a53aab1e..088db5be2c7e 100644
--- a/packages/console/function/sst-env.d.ts
+++ b/packages/console/function/sst-env.d.ts
@@ -298,6 +298,7 @@ declare module "sst" {
"EnterpriseStorage": cloudflare.R2Bucket
"GatewayKv": cloudflare.KVNamespace
"LogProcessor": cloudflare.Service
+ "Stat": cloudflare.Service
"ZenData": cloudflare.R2Bucket
"ZenDataNew": cloudflare.R2Bucket
}
diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json
index 6c101f051e66..3ef49a1b90e6 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.15.0",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
diff --git a/packages/console/resource/sst-env.d.ts b/packages/console/resource/sst-env.d.ts
index 9680a53aab1e..088db5be2c7e 100644
--- a/packages/console/resource/sst-env.d.ts
+++ b/packages/console/resource/sst-env.d.ts
@@ -298,6 +298,7 @@ declare module "sst" {
"EnterpriseStorage": cloudflare.R2Bucket
"GatewayKv": cloudflare.KVNamespace
"LogProcessor": cloudflare.Service
+ "Stat": cloudflare.Service
"ZenData": cloudflare.R2Bucket
"ZenDataNew": cloudflare.R2Bucket
}
diff --git a/packages/core/package.json b/packages/core/package.json
index e2ffa31d8d73..7a7c0880b6a7 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.15.0",
"name": "@opencode-ai/core",
"type": "module",
"license": "MIT",
@@ -26,6 +26,27 @@
"@types/semver": "catalog:"
},
"dependencies": {
+ "@ai-sdk/alibaba": "1.0.17",
+ "@ai-sdk/amazon-bedrock": "4.0.96",
+ "@ai-sdk/anthropic": "3.0.71",
+ "@ai-sdk/azure": "3.0.49",
+ "@ai-sdk/cerebras": "2.0.41",
+ "@ai-sdk/cohere": "3.0.27",
+ "@ai-sdk/deepinfra": "2.0.41",
+ "@ai-sdk/gateway": "3.0.104",
+ "@ai-sdk/google": "3.0.63",
+ "@ai-sdk/google-vertex": "4.0.112",
+ "@ai-sdk/groq": "3.0.31",
+ "@ai-sdk/mistral": "3.0.27",
+ "@ai-sdk/openai": "3.0.53",
+ "@ai-sdk/openai-compatible": "2.0.41",
+ "@ai-sdk/perplexity": "3.0.26",
+ "@ai-sdk/provider": "3.0.8",
+ "@ai-sdk/provider-utils": "4.0.23",
+ "@ai-sdk/togetherai": "2.0.41",
+ "@ai-sdk/vercel": "2.0.39",
+ "@ai-sdk/xai": "3.0.82",
+ "@aws-sdk/credential-providers": "3.993.0",
"@effect/opentelemetry": "catalog:",
"@effect/platform-node": "catalog:",
"@npmcli/arborist": "9.4.0",
@@ -34,13 +55,19 @@
"@opentelemetry/context-async-hooks": "2.6.1",
"@opentelemetry/exporter-trace-otlp-http": "0.214.0",
"@opentelemetry/sdk-trace-base": "2.6.1",
- "effect": "catalog:",
+ "@openrouter/ai-sdk-provider": "2.8.1",
+ "ai-gateway-provider": "3.1.2",
"cross-spawn": "catalog:",
+ "effect": "catalog:",
+ "gitlab-ai-provider": "6.6.0",
"glob": "13.0.5",
+ "google-auth-library": "10.5.0",
+ "immer": "11.1.4",
"mime-types": "3.0.2",
"minimatch": "10.2.5",
"npm-package-arg": "13.0.2",
"semver": "^7.6.3",
+ "venice-ai-sdk-provider": "2.0.1",
"xdg-basedir": "5.1.0",
"zod": "catalog:"
},
diff --git a/packages/core/src/aisdk.ts b/packages/core/src/aisdk.ts
new file mode 100644
index 000000000000..5fa2294309c7
--- /dev/null
+++ b/packages/core/src/aisdk.ts
@@ -0,0 +1,172 @@
+export * as AISDK from "./aisdk"
+
+import type { LanguageModelV3 } from "@ai-sdk/provider"
+import { Cause, Context, Effect, Layer, Schema } from "effect"
+import { ModelV2 } from "./model"
+import { PluginV2 } from "./plugin"
+import { ProviderV2 } from "./provider"
+
+type SDK = any
+
+function wrapSSE(res: Response, ms: number, ctl: AbortController) {
+ if (typeof ms !== "number" || ms <= 0) return res
+ if (!res.body) return res
+ if (!res.headers.get("content-type")?.includes("text/event-stream")) return res
+
+ const reader = res.body.getReader()
+ const body = new ReadableStream({
+ async pull(ctrl) {
+ const part = await new Promise>>((resolve, reject) => {
+ const id = setTimeout(() => {
+ const err = new Error("SSE read timed out")
+ ctl.abort(err)
+ void reader.cancel(err)
+ reject(err)
+ }, ms)
+
+ reader.read().then(
+ (part) => {
+ clearTimeout(id)
+ resolve(part)
+ },
+ (err) => {
+ clearTimeout(id)
+ reject(err)
+ },
+ )
+ })
+
+ if (part.done) {
+ ctrl.close()
+ return
+ }
+
+ ctrl.enqueue(part.value)
+ },
+ async cancel(reason) {
+ ctl.abort(reason)
+ await reader.cancel(reason)
+ },
+ })
+
+ return new Response(body, {
+ headers: new Headers(res.headers),
+ status: res.status,
+ statusText: res.statusText,
+ })
+}
+
+function prepareOptions(model: ModelV2.Info, pkg: string) {
+ const options: Record = { name: model.providerID, ...model.options.aisdk.provider }
+ if (model.endpoint.type === "aisdk" && model.endpoint.url) options.baseURL = model.endpoint.url
+
+ const customFetch = options.fetch
+ const chunkTimeout = options.chunkTimeout
+ delete options.chunkTimeout
+ options.fetch = async (input: Parameters[0], init?: RequestInit) => {
+ const opts = { ...(init ?? {}) }
+ const signals = [
+ opts.signal,
+ typeof chunkTimeout === "number" && chunkTimeout > 0 ? new AbortController() : undefined,
+ options.timeout !== undefined && options.timeout !== null && options.timeout !== false
+ ? AbortSignal.timeout(options.timeout)
+ : undefined,
+ ].filter((item): item is AbortSignal | AbortController => Boolean(item))
+ const chunkAbortCtl = signals.find((item): item is AbortController => item instanceof AbortController)
+ const abortSignals = signals.map((item) => (item instanceof AbortController ? item.signal : item))
+ if (abortSignals.length === 1) opts.signal = abortSignals[0]
+ if (abortSignals.length > 1) opts.signal = AbortSignal.any(abortSignals)
+
+ if ((pkg === "@ai-sdk/openai" || pkg === "@ai-sdk/azure") && opts.body && opts.method === "POST") {
+ const body = JSON.parse(opts.body as string)
+ if (body.store !== true && Array.isArray(body.input)) {
+ for (const item of body.input) {
+ if ("id" in item) delete item.id
+ }
+ opts.body = JSON.stringify(body)
+ }
+ }
+
+ const res = await (typeof customFetch === "function" ? customFetch : fetch)(input, {
+ ...opts,
+ timeout: false,
+ })
+ if (!chunkAbortCtl || typeof chunkTimeout !== "number") return res
+ return wrapSSE(res, chunkTimeout, chunkAbortCtl)
+ }
+
+ return options
+}
+
+export class InitError extends Schema.TaggedErrorClass()("AISDK.InitError", {
+ providerID: ProviderV2.ID,
+ cause: Schema.Defect,
+}) {}
+
+function initError(providerID: ProviderV2.ID) {
+ return Effect.catchCause((cause) => Effect.fail(new InitError({ providerID, cause: Cause.squash(cause) })))
+}
+
+export interface Interface {
+ readonly language: (model: ModelV2.Info) => Effect.Effect
+}
+
+export class Service extends Context.Service()("@opencode/v2/AISDK") {}
+
+export const layer = Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const languages = new Map()
+ const sdks = new Map()
+
+ return Service.of({
+ language: Effect.fn("AISDK.language")(function* (model) {
+ const key = `${model.providerID}/${model.id}/${model.options.variant ?? "default"}`
+ const existing = languages.get(key)
+ if (existing) return existing
+ if (model.endpoint.type !== "aisdk")
+ return yield* new InitError({
+ providerID: model.providerID,
+ cause: new Error(`Unsupported endpoint ${model.endpoint.type}`),
+ })
+
+ const options = prepareOptions(model, model.endpoint.package)
+ const sdkKey = JSON.stringify({
+ providerID: model.providerID,
+ endpoint: model.endpoint,
+ options,
+ })
+ const sdk =
+ sdks.get(sdkKey) ??
+ (yield* plugin
+ .trigger("aisdk.sdk", { model, package: model.endpoint.package, options }, {})
+ .pipe(initError(model.providerID))).sdk
+ if (!sdk)
+ return yield* new InitError({
+ providerID: model.providerID,
+ cause: new Error("No AISDK provider plugin returned an SDK"),
+ })
+ sdks.set(sdkKey, sdk)
+ const result = yield* plugin
+ .trigger(
+ "aisdk.language",
+ {
+ model,
+ sdk,
+ options,
+ },
+ {},
+ )
+ .pipe(initError(model.providerID))
+ const language = yield* Effect.sync(() => result.language ?? sdk.languageModel(model.apiID)).pipe(
+ initError(model.providerID),
+ )
+ languages.set(key, language)
+ return language
+ }),
+ })
+ }),
+)
+
+export const defaultLayer = layer.pipe(Layer.provide(PluginV2.defaultLayer))
diff --git a/packages/opencode/src/v2/auth.ts b/packages/core/src/auth.ts
similarity index 86%
rename from packages/opencode/src/v2/auth.ts
rename to packages/core/src/auth.ts
index 0ac6223a66b3..843c9504b40e 100644
--- a/packages/opencode/src/v2/auth.ts
+++ b/packages/core/src/auth.ts
@@ -1,9 +1,9 @@
import path from "path"
import { Effect, Layer, Option, Schema, Context, SynchronizedRef } from "effect"
-import { Identifier } from "@opencode-ai/core/util/identifier"
-import { NonNegativeInt, withStatics } from "@opencode-ai/core/schema"
-import { Global } from "@opencode-ai/core/global"
-import { AppFileSystem } from "@opencode-ai/core/filesystem"
+import { Identifier } from "./util/identifier"
+import { NonNegativeInt, withStatics } from "./schema"
+import { Global } from "./global"
+import { AppFileSystem } from "./filesystem"
export const OAUTH_DUMMY_KEY = "opencode-oauth-dummy-key"
@@ -106,25 +106,43 @@ export const layer = Layer.effect(
const fsys = yield* AppFileSystem.Service
const global = yield* Global.Service
const file = path.join(global.data, "auth-v2.json")
+ const legacyFile = path.join(global.data, "auth.json")
+
+ const writeMigrated = Effect.fnUntraced(function* (raw: Record) {
+ const migrated = migrate(raw)
+ yield* fsys
+ .writeJson(file, migrated, 0o600)
+ .pipe(Effect.mapError((cause) => new AuthFileWriteError({ operation: "migrate", cause })))
+ return migrated
+ })
+
+ const parseAuthContent = () => {
+ try {
+ return JSON.parse(process.env.OPENCODE_AUTH_CONTENT ?? "")
+ } catch {}
+ }
const load: () => Effect.Effect = Effect.fnUntraced(function* () {
if (process.env.OPENCODE_AUTH_CONTENT) {
- try {
- return JSON.parse(process.env.OPENCODE_AUTH_CONTENT)
- } catch {}
+ const raw = parseAuthContent()
+ if (raw && typeof raw === "object") {
+ if ("version" in raw && raw.version === 2) return raw as Writable
+ return yield* writeMigrated(raw as Record)
+ }
+ return { version: 2, accounts: {}, active: {} }
}
- const raw = yield* fsys.readJson(file).pipe(Effect.orElseSucceed(() => null))
+ const legacy = yield* fsys.readJson(legacyFile).pipe(Effect.orElseSucceed(() => null))
+ if (legacy && typeof legacy === "object") return yield* writeMigrated(legacy as Record)
- if (!raw || typeof raw !== "object") return { version: 2, accounts: {}, active: {} }
+ const raw = yield* fsys.readJson(file).pipe(Effect.orElseSucceed(() => null))
- if ("version" in raw && raw.version === 2) return raw as Writable
+ if (raw && typeof raw === "object") {
+ if ("version" in raw && raw.version === 2) return raw as Writable
+ return yield* writeMigrated(raw as Record)
+ }
- const migrated = migrate(raw as Record)
- yield* fsys
- .writeJson(file, migrated, 0o600)
- .pipe(Effect.mapError((cause) => new AuthFileWriteError({ operation: "migrate", cause })))
- return migrated
+ return { version: 2, accounts: {}, active: {} }
})
const write = (data: Writable) =>
diff --git a/packages/core/src/catalog.ts b/packages/core/src/catalog.ts
new file mode 100644
index 000000000000..d27f17bfb872
--- /dev/null
+++ b/packages/core/src/catalog.ts
@@ -0,0 +1,269 @@
+export * as Catalog from "./catalog"
+
+import { Context, Effect, HashMap, Layer, Option, Order, pipe, Schema, Array } from "effect"
+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
+ models: HashMap.HashMap
+}
+
+export class ProviderNotFoundError extends Schema.TaggedErrorClass()(
+ "CatalogV2.ProviderNotFound",
+ {
+ providerID: ProviderV2.ID,
+ },
+) {}
+
+export class ModelNotFoundError extends Schema.TaggedErrorClass()("CatalogV2.ModelNotFound", {
+ providerID: ProviderV2.ID,
+ modelID: ModelV2.ID,
+}) {}
+
+export const Event = {
+ ModelUpdated: EventV2.define({
+ type: "catalog.model.updated",
+ schema: {
+ model: ModelV2.Info,
+ },
+ }),
+}
+
+export interface Interface {
+ readonly provider: {
+ readonly get: (providerID: ProviderV2.ID) => Effect.Effect
+ readonly update: (providerID: ProviderV2.ID, fn: (provider: Draft) => void) => Effect.Effect
+ readonly all: () => Effect.Effect
+ readonly available: () => Effect.Effect
+ }
+ readonly model: {
+ readonly get: (
+ providerID: ProviderV2.ID,
+ modelID: ModelV2.ID,
+ ) => Effect.Effect
+ readonly update: (
+ providerID: ProviderV2.ID,
+ modelID: ModelV2.ID,
+ fn: (model: Draft) => void,
+ ) => Effect.Effect
+ readonly all: () => Effect.Effect
+ readonly available: () => Effect.Effect
+ readonly default: () => Effect.Effect>
+ readonly setDefault: (
+ providerID: ProviderV2.ID,
+ modelID: ModelV2.ID,
+ ) => Effect.Effect
+ readonly small: (providerID: ProviderV2.ID) => Effect.Effect>
+ }
+}
+
+export class Service extends Context.Service()("@opencode/v2/Catalog") {}
+
+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
+ const endpoint =
+ model.endpoint.type === "unknown"
+ ? provider.endpoint
+ : model.endpoint.type === "aisdk" && provider.endpoint.type === "aisdk" && !model.endpoint.url
+ ? { ...model.endpoint, url: provider.endpoint.url }
+ : model.endpoint
+ const options = {
+ headers: {
+ ...provider.options.headers,
+ ...model.options.headers,
+ },
+ body: {
+ ...provider.options.body,
+ ...model.options.body,
+ },
+ aisdk: {
+ provider: {
+ ...provider.options.aisdk.provider,
+ ...model.options.aisdk.provider,
+ },
+ request: model.options.aisdk.request,
+ },
+ variant: model.options.variant,
+ }
+ return new ModelV2.Info({
+ ...model,
+ endpoint,
+ options,
+ })
+ }
+
+ function* getRecord(providerID: ProviderV2.ID) {
+ const match = HashMap.get(records, providerID)
+ if (!match.valueOrUndefined) return yield* new ProviderNotFoundError({ providerID })
+ return match.value
+ }
+
+ const result: Interface = {
+ provider: {
+ get: Effect.fn("CatalogV2.provider.get")(function* (providerID) {
+ const record = yield* getRecord(providerID)
+ return record.provider
+ }),
+
+ update: Effect.fnUntraced(function* (providerID, fn) {
+ const current = Option.getOrUndefined(HashMap.get(records, providerID))
+ const provider = produce(current?.provider ?? ProviderV2.Info.empty(providerID), (draft) => {
+ fn(draft)
+ if (draft.endpoint.type === "aisdk" && typeof draft.options.aisdk.provider.baseURL === "string") {
+ draft.endpoint.url = draft.options.aisdk.provider.baseURL
+ delete draft.options.aisdk.provider.baseURL
+ }
+ })
+ const updated = yield* plugin.trigger("provider.update", {}, { provider, cancel: false })
+ records = HashMap.set(records, providerID, {
+ provider: updated.provider,
+ models: current?.models ?? HashMap.empty(),
+ })
+ }),
+
+ all: Effect.fn("CatalogV2.provider.all")(function* () {
+ return globalThis.Array.from(HashMap.values(records)).map((record) => record.provider)
+ }),
+
+ available: Effect.fn("CatalogV2.provider.available")(function* () {
+ return globalThis.Array.from(HashMap.values(records))
+ .map((record) => record.provider)
+ .filter((provider) => provider.enabled)
+ }),
+ },
+
+ model: {
+ get: Effect.fn("CatalogV2.model.get")(function* (providerID, modelID) {
+ const record = yield* getRecord(providerID)
+ const model = Option.getOrUndefined(HashMap.get(record.models, modelID))
+ if (!model) return yield* new ModelNotFoundError({ providerID, modelID })
+ return resolve(model)
+ }),
+
+ update: Effect.fnUntraced(function* (providerID, modelID, fn) {
+ const record = yield* getRecord(providerID)
+ const model = produce(
+ HashMap.get(record.models, modelID).pipe(Option.getOrElse(() => ModelV2.Info.empty(providerID, modelID))),
+ (draft) => {
+ fn(draft)
+ if (draft.endpoint.type === "aisdk" && typeof draft.options.aisdk.provider.baseURL === "string") {
+ draft.endpoint.url = draft.options.aisdk.provider.baseURL
+ delete draft.options.aisdk.provider.baseURL
+ }
+ },
+ )
+ 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, next),
+ })
+ yield* events.publish(Event.ModelUpdated, { model: resolve(next) })
+ return
+ }),
+
+ all: Effect.fn("CatalogV2.model.all")(function* () {
+ return pipe(
+ records,
+ HashMap.toValues,
+ Array.flatMap((record) => HashMap.toValues(record.models)),
+ Array.map(resolve),
+ Array.sortWith((item) => item.time.released.epochMilliseconds, Order.flip(Order.Number)),
+ )
+ }),
+
+ available: Effect.fn("CatalogV2.model.available")(function* () {
+ return (yield* result.model.all()).filter((model) => {
+ const record = Option.getOrUndefined(HashMap.get(records, model.providerID))
+ return record?.provider.enabled !== false && model.enabled
+ })
+ }),
+
+ default: Effect.fn("CatalogV2.model.default")(function* () {
+ if (defaultModel) {
+ const model = yield* result.model.get(defaultModel.providerID, defaultModel.modelID).pipe(Effect.option)
+ if (Option.isSome(model) && model.value.enabled) return model
+ }
+
+ return pipe(
+ yield* result.model.available(),
+ Array.sortWith((item) => item.time.released.epochMilliseconds, Order.flip(Order.Number)),
+ Array.head,
+ )
+ }),
+
+ setDefault: Effect.fn("CatalogV2.model.setDefault")(function* (providerID, modelID) {
+ yield* result.model.get(providerID, modelID)
+ defaultModel = { providerID, modelID }
+ }),
+
+ small: Effect.fn("CatalogV2.model.small")(function* (providerID) {
+ const record = Option.getOrUndefined(HashMap.get(records, providerID))
+ if (!record) return Option.none()
+
+ if (providerID === ProviderV2.ID.opencode) {
+ const gpt5Nano = Option.getOrUndefined(HashMap.get(record.models, ModelV2.ID.make("gpt-5-nano")))
+ if (gpt5Nano?.enabled && gpt5Nano.status === "active") return Option.some(resolve(gpt5Nano))
+ }
+
+ const candidates = pipe(
+ HashMap.toValues(record.models),
+ Array.filter(
+ (model) =>
+ model.providerID === providerID &&
+ model.enabled &&
+ model.status === "active" &&
+ model.capabilities.input.some((item) => item.startsWith("text")) &&
+ model.capabilities.output.some((item) => item.startsWith("text")),
+ ),
+ Array.map((model) => ({
+ model,
+ cost: model.cost[0] ? model.cost[0].input + model.cost[0].output : 999,
+ age: (Date.now() - model.time.released.epochMilliseconds) / (1000 * 60 * 60 * 24 * 30),
+ small: SMALL_MODEL_RE.test(`${model.id} ${model.family ?? ""} ${model.name}`.toLowerCase()),
+ })),
+ Array.filter((item) => item.cost > 0 && item.age <= 18),
+ )
+
+ const pick = (items: typeof candidates) => {
+ const maxCost = Math.max(...items.map((item) => item.cost), 0.01)
+ const maxAge = Math.max(...items.map((item) => item.age), 0.01)
+ return pipe(
+ items,
+ Array.sortWith((item) => (item.cost / maxCost) * 0.8 + (item.age / maxAge) * 0.2, Order.Number),
+ Array.map((item) => resolve(item.model)),
+ Array.head,
+ )
+ }
+
+ return pipe(
+ candidates,
+ Array.filter((item) => item.small),
+ (items) => (items.length > 0 ? pick(items) : pick(candidates)),
+ )
+ }),
+ },
+ }
+
+ return Service.of(result)
+ }),
+)
+
+const SMALL_MODEL_RE = /\b(nano|flash|lite|mini|haiku|small|fast)\b/
+
+export const defaultLayer = layer.pipe(Layer.provideMerge(EventV2.defaultLayer), Layer.provide(PluginV2.defaultLayer))
diff --git a/packages/core/src/effect-zod.ts b/packages/core/src/effect-zod.ts
deleted file mode 100644
index 42d89ec7d537..000000000000
--- a/packages/core/src/effect-zod.ts
+++ /dev/null
@@ -1,370 +0,0 @@
-import { Effect, Option, Schema, SchemaAST } from "effect"
-import z from "zod"
-
-/**
- * Annotation key for providing a hand-crafted Zod schema that the walker
- * should use instead of re-deriving from the AST. Attach it via
- * `Schema.String.annotate({ [ZodOverride]: z.string().startsWith("per") })`.
- */
-export const ZodOverride: unique symbol = Symbol.for("effect-zod/override")
-
-// AST nodes are immutable and frequently shared across schemas (e.g. a single
-// Schema.Class embedded in multiple parents). Memoizing by node identity
-// avoids rebuilding equivalent Zod subtrees and keeps derived children stable
-// by reference across callers.
-const walkCache = new WeakMap()
-
-// Shared empty ParseOptions for the rare callers that need one — avoids
-// allocating a fresh object per parse inside refinements and transforms.
-const EMPTY_PARSE_OPTIONS = {} as SchemaAST.ParseOptions
-
-export function zod(schema: S): z.ZodType> {
- return walk(schema.ast) as z.ZodType>
-}
-
-/**
- * Derive a Zod value from an Effect Schema (or a Schema-backed export with a
- * `.zod` static) and narrow the result to `z.ZodObject` so `.shape`,
- * `.omit`, `.extend`, and friends are accessible.
- *
- * The `zod()` walker returns `z.ZodType` because not every AST node decodes
- * to an object; this helper keeps the "I started from a `Schema.Struct`" cast
- * in one place instead of sprinkling `as unknown as z.ZodObject` across
- * call sites.
- *
- * The return is intentionally loose — carrying Schema field types through the
- * mapped `.omit()` / `.extend()` surface triggers brand-intersection
- * explosions for branded primitives (`string & Brand<"SessionID">` extends
- * `object` via the brand and gets walked into the prototype by `DeepPartial`,
- * mapped-schema helpers, and zod's inference through `z.ZodType`
- * wrappers also can't reconstruct `T` cleanly. Consumers that care about the
- * post-`.omit()` shape should cast `c.req.valid(...)` to the expected type.
- */
-export function zodObject(schema: S): z.ZodObject {
- const derived: z.ZodTypeAny = "zod" in schema && isZodType(schema.zod) ? schema.zod : walk(schema.ast)
- return derived as unknown as z.ZodObject
-}
-
-function isZodType(value: unknown): value is z.ZodTypeAny {
- return typeof value === "object" && value !== null && "_zod" in value
-}
-
-/**
- * Emit a JSON Schema for a tool/route parameter schema — derives the zod form
- * via the walker so Effect Schema inputs flow through the same zod-openapi
- * pipeline the LLM/SDK layer already depends on. `io: "input"` mirrors what
- * `session/prompt.ts` has always passed to `ai`'s `jsonSchema()` helper.
- */
-export function toJsonSchema(schema: S) {
- return z.toJSONSchema(zod(schema), { io: "input" })
-}
-
-function walk(ast: SchemaAST.AST): z.ZodTypeAny {
- const cached = walkCache.get(ast)
- if (cached) return cached
- const result = walkUncached(ast)
- walkCache.set(ast, result)
- return result
-}
-
-function walkUncached(ast: SchemaAST.AST): z.ZodTypeAny {
- const override = (ast.annotations as any)?.[ZodOverride] as z.ZodTypeAny | undefined
- // `description` annotations layer on top of an override so callers can
- // reuse a shared override schema (e.g. `SessionID`) and still add a
- // per-field description on the outer wrapper.
- const base = override ?? bodyWithChecks(ast)
- const desc = SchemaAST.resolveDescription(ast)
- const ref = SchemaAST.resolveIdentifier(ast)
- const described = desc ? base.describe(desc) : base
- return ref ? described.meta({ ref }) : described
-}
-
-function bodyWithChecks(ast: SchemaAST.AST): z.ZodTypeAny {
- // Schema.Class wraps its fields in a Declaration AST plus an encoding that
- // constructs the class instance. For the Zod derivation we want the plain
- // field shape (the decoded/consumer view), not the class instance — so
- // Declarations fall through to body(), not encoded(). User-level
- // Schema.decodeTo / Schema.transform attach encoding to non-Declaration
- // nodes, where we do apply the transform.
- //
- // Schema.withDecodingDefault also attaches encoding, but we want `.default(v)`
- // on the inner Zod rather than a transform wrapper — so optional ASTs whose
- // encoding resolves a default from Option.none() route through body()/opt().
- const hasEncoding = ast.encoding?.length && (ast._tag !== "Declaration" || ast.typeParameters.length === 0)
- const hasTransform = hasEncoding && !(SchemaAST.isOptional(ast) && extractDefault(ast) !== undefined)
- const base = hasTransform ? encoded(ast) : body(ast)
- return ast.checks?.length ? applyChecks(base, ast.checks, ast) : base
-}
-
-// Walk the encoded side and apply each link's decode to produce the decoded
-// shape. A node `Target` produced by `from.decodeTo(Target)` carries
-// `Target.encoding = [Link(from, transformation)]`. Chained decodeTo calls
-// nest the encoding via `Link.to` so walking it recursively threads all
-// prior transforms — typical encoding.length is 1.
-function encoded(ast: SchemaAST.AST): z.ZodTypeAny {
- const encoding = ast.encoding!
- return encoding.reduce(
- (acc, link) => acc.transform((v) => decode(link.transformation, v)),
- walk(encoding[0].to),
- )
-}
-
-// Transformations built via pure `SchemaGetter.transform(fn)` (the common
-// decodeTo case) resolve synchronously, so running with no services is safe.
-// Effectful / middleware-based transforms will surface as Effect defects.
-function decode(transformation: SchemaAST.Link["transformation"], value: unknown): unknown {
- const exit = Effect.runSyncExit(
- (transformation.decode as any).run(Option.some(value), EMPTY_PARSE_OPTIONS) as Effect.Effect<
- Option.Option
- >,
- )
- if (exit._tag === "Failure") throw new Error(`effect-zod: transform failed: ${String(exit.cause)}`)
- return Option.getOrElse(exit.value, () => value)
-}
-
-// Flatten FilterGroups and any nested variants into a linear list of Filters.
-// Well-known filters (Schema.isInt, isGreaterThan, isPattern, …) are
-// translated into native Zod methods so their JSON Schema output includes
-// the corresponding constraint (type: integer, exclusiveMinimum, pattern, …).
-// Anything else falls back to a single .superRefine layer — runtime-only,
-// emits no JSON Schema constraint.
-function applyChecks(out: z.ZodTypeAny, checks: SchemaAST.Checks, ast: SchemaAST.AST): z.ZodTypeAny {
- const filters: SchemaAST.Filter[] = []
- const collect = (c: SchemaAST.Check) => {
- if (c._tag === "FilterGroup") c.checks.forEach(collect)
- else filters.push(c)
- }
- checks.forEach(collect)
-
- const unhandled: SchemaAST.Filter[] = []
- const translated = filters.reduce((acc, filter) => {
- const next = translateFilter(acc, filter)
- if (next) return next
- unhandled.push(filter)
- return acc
- }, out)
-
- if (unhandled.length === 0) return translated
-
- return translated.superRefine((value, ctx) => {
- for (const filter of unhandled) {
- const issue = filter.run(value, ast, EMPTY_PARSE_OPTIONS)
- if (!issue) continue
- const message = issueMessage(issue) ?? (filter.annotations as any)?.message ?? "Validation failed"
- ctx.addIssue({ code: "custom", message })
- }
- })
-}
-
-// Translate a well-known Effect Schema filter into a native Zod method call on
-// `out`. Dispatch is keyed on `filter.annotations.meta._tag`, which every
-// built-in check factory (isInt, isGreaterThan, isPattern, …) attaches at
-// construction time. Returns `undefined` for unrecognised filters so the
-// caller can fall back to the generic .superRefine path.
-function translateFilter(out: z.ZodTypeAny, filter: SchemaAST.Filter): z.ZodTypeAny | undefined {
- const meta = (filter.annotations as { meta?: Record } | undefined)?.meta
- if (!meta || typeof meta._tag !== "string") return undefined
- switch (meta._tag) {
- case "isInt":
- return call(out, "int")
- case "isFinite":
- return call(out, "finite")
- case "isGreaterThan":
- return call(out, "gt", meta.exclusiveMinimum)
- case "isGreaterThanOrEqualTo":
- return call(out, "gte", meta.minimum)
- case "isLessThan":
- return call(out, "lt", meta.exclusiveMaximum)
- case "isLessThanOrEqualTo":
- return call(out, "lte", meta.maximum)
- case "isBetween": {
- const lo = meta.exclusiveMinimum ? call(out, "gt", meta.minimum) : call(out, "gte", meta.minimum)
- if (!lo) return undefined
- return meta.exclusiveMaximum ? call(lo, "lt", meta.maximum) : call(lo, "lte", meta.maximum)
- }
- case "isMultipleOf":
- return call(out, "multipleOf", meta.divisor)
- case "isMinLength":
- return call(out, "min", meta.minLength)
- case "isMaxLength":
- return call(out, "max", meta.maxLength)
- case "isLengthBetween": {
- const lo = call(out, "min", meta.minimum)
- if (!lo) return undefined
- return call(lo, "max", meta.maximum)
- }
- case "isPattern":
- return call(out, "regex", meta.regExp)
- case "isStartsWith":
- return call(out, "startsWith", meta.startsWith)
- case "isEndsWith":
- return call(out, "endsWith", meta.endsWith)
- case "isIncludes":
- return call(out, "includes", meta.includes)
- case "isUUID":
- return call(out, "uuid")
- case "isULID":
- return call(out, "ulid")
- case "isBase64":
- return call(out, "base64")
- case "isBase64Url":
- return call(out, "base64url")
- }
- return undefined
-}
-
-// Invoke a named Zod method on `target` if it exists, otherwise return
-// undefined so the caller can fall back. Using this helper instead of a
-// typed cast keeps `translateFilter` free of per-case narrowing noise.
-function call(target: z.ZodTypeAny, method: string, ...args: unknown[]): z.ZodTypeAny | undefined {
- const fn = (target as unknown as Record z.ZodTypeAny) | undefined>)[method]
- return typeof fn === "function" ? fn.apply(target, args) : undefined
-}
-
-function issueMessage(issue: any): string | undefined {
- if (typeof issue?.annotations?.message === "string") return issue.annotations.message
- if (typeof issue?.message === "string") return issue.message
- return undefined
-}
-
-function body(ast: SchemaAST.AST): z.ZodTypeAny {
- if (SchemaAST.isOptional(ast)) return opt(ast)
-
- switch (ast._tag) {
- case "String":
- return z.string()
- case "Number":
- return z.number()
- case "Boolean":
- return z.boolean()
- case "Null":
- return z.null()
- case "Undefined":
- return z.undefined()
- case "Any":
- case "Unknown":
- return z.unknown()
- case "Never":
- return z.never()
- case "Literal":
- return z.literal(ast.literal)
- case "Union":
- return union(ast)
- case "Objects":
- return object(ast)
- case "Arrays":
- return array(ast)
- case "Declaration":
- return decl(ast)
- default:
- return fail(ast)
- }
-}
-
-function opt(ast: SchemaAST.AST): z.ZodTypeAny {
- if (ast._tag !== "Union") return fail(ast)
- const items = ast.types.filter((item) => item._tag !== "Undefined")
- const inner =
- items.length === 1
- ? walk(items[0])
- : items.length > 1
- ? z.union(items.map(walk) as [z.ZodTypeAny, z.ZodTypeAny, ...Array])
- : z.undefined()
- // Schema.withDecodingDefault attaches an encoding `Link` whose transformation
- // decode Getter resolves `Option.none()` to `Option.some(default)`. Invoke
- // it to extract the default and emit `.default(...)` instead of `.optional()`.
- const fallback = extractDefault(ast)
- if (fallback !== undefined) return inner.default(fallback.value)
- return inner.optional()
-}
-
-type DecodeLink = {
- readonly transformation: {
- readonly decode: {
- readonly run: (
- input: Option.Option,
- options: SchemaAST.ParseOptions,
- ) => Effect.Effect, unknown>
- }
- }
-}
-
-function extractDefault(ast: SchemaAST.AST): { value: unknown } | undefined {
- const encoding = (ast as { encoding?: ReadonlyArray }).encoding
- if (!encoding?.length) return undefined
- // Walk the chain of encoding Links in order; the first Getter that produces
- // a value from Option.none wins. withDecodingDefault always puts its
- // defaulting Link adjacent to the optional Union.
- for (const link of encoding) {
- const probe = Effect.runSyncExit(link.transformation.decode.run(Option.none(), {}))
- if (probe._tag !== "Success") continue
- if (Option.isSome(probe.value)) return { value: probe.value.value }
- }
- return undefined
-}
-
-function union(ast: SchemaAST.Union): z.ZodTypeAny {
- // When every member is a string literal, emit z.enum() so that
- // JSON Schema produces { "enum": [...] } instead of { "anyOf": [{ "const": ... }] }.
- if (ast.types.length >= 2 && ast.types.every((t) => t._tag === "Literal" && typeof t.literal === "string")) {
- return z.enum(ast.types.map((t) => (t as SchemaAST.Literal).literal as string) as [string, ...string[]])
- }
-
- const items = ast.types.map(walk)
- if (items.length === 1) return items[0]
- if (items.length < 2) return fail(ast)
-
- const discriminator = ast.annotations?.discriminator
- if (typeof discriminator === "string") {
- return z.discriminatedUnion(discriminator, items as [z.ZodObject, z.ZodObject, ...z.ZodObject[]])
- }
-
- return z.union(items as [z.ZodTypeAny, z.ZodTypeAny, ...Array])
-}
-
-function object(ast: SchemaAST.Objects): z.ZodTypeAny {
- // Pure record: { [k: string]: V }
- if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 1) {
- const sig = ast.indexSignatures[0]
- if (sig.parameter._tag !== "String") return fail(ast)
- return z.record(z.string(), walk(sig.type))
- }
-
- // Pure object with known fields and no index signatures.
- if (ast.indexSignatures.length === 0) {
- return z.object(Object.fromEntries(ast.propertySignatures.map((sig) => [String(sig.name), walk(sig.type)])))
- }
-
- // Struct with a catchall (StructWithRest): known fields + index signature.
- // Only supports a single string-keyed index signature; multi-signature or
- // symbol/number keys fall through to fail.
- if (ast.indexSignatures.length !== 1) return fail(ast)
- const sig = ast.indexSignatures[0]
- if (sig.parameter._tag !== "String") return fail(ast)
- return z
- .object(Object.fromEntries(ast.propertySignatures.map((p) => [String(p.name), walk(p.type)])))
- .catchall(walk(sig.type))
-}
-
-function array(ast: SchemaAST.Arrays): z.ZodTypeAny {
- // Pure variadic arrays: { elements: [], rest: [item] }
- if (ast.elements.length === 0) {
- if (ast.rest.length !== 1) return fail(ast)
- return z.array(walk(ast.rest[0]))
- }
- // Fixed-length tuples: { elements: [a, b, ...], rest: [] }
- // Tuples with a variadic tail (...rest) are not yet supported.
- if (ast.rest.length > 0) return fail(ast)
- const items = ast.elements.map(walk)
- return z.tuple(items as [z.ZodTypeAny, ...Array])
-}
-
-function decl(ast: SchemaAST.Declaration): z.ZodTypeAny {
- if (ast.typeParameters.length !== 1) return fail(ast)
- return walk(ast.typeParameters[0])
-}
-
-function fail(ast: SchemaAST.AST): never {
- const ref = SchemaAST.resolveIdentifier(ast)
- throw new Error(`unsupported effect schema: ${ref ?? ast._tag}`)
-}
diff --git a/packages/core/src/event.ts b/packages/core/src/event.ts
new file mode 100644
index 000000000000..e01dc5b0d63b
--- /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 f76d1aaf9d22..4b1d3d20aec5 100644
--- a/packages/core/src/flag/flag.ts
+++ b/packages/core/src/flag/flag.ts
@@ -5,29 +5,13 @@ 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
- const parsed = Number(value)
- return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined
-}
-
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"],
@@ -38,53 +22,28 @@ export const Flag = {
OPENCODE_DISABLE_TERMINAL_TITLE: truthy("OPENCODE_DISABLE_TERMINAL_TITLE"),
OPENCODE_SHOW_TTFD: truthy("OPENCODE_SHOW_TTFD"),
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"],
OPENCODE_SERVER_USERNAME: process.env["OPENCODE_SERVER_USERNAME"],
- OPENCODE_ENABLE_QUESTION_TOOL: truthy("OPENCODE_ENABLE_QUESTION_TOOL"),
// Experimental
- OPENCODE_EXPERIMENTAL,
OPENCODE_EXPERIMENTAL_FILEWATCHER: Config.boolean("OPENCODE_EXPERIMENTAL_FILEWATCHER").pipe(
Config.withDefault(false),
),
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"),
OPENCODE_WORKSPACE_ID: process.env["OPENCODE_WORKSPACE_ID"],
OPENCODE_EXPERIMENTAL_WORKSPACES: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_WORKSPACES"),
- OPENCODE_EXPERIMENTAL_EVENT_SYSTEM: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_EVENT_SYSTEM"),
OPENCODE_EXPERIMENTAL_SESSION_SWITCHING: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_SESSION_SWITCHING"),
// Evaluated at access time (not module load) because tests, the CLI, and
diff --git a/packages/opencode/src/provider/sdk/copilot/README.md b/packages/core/src/github-copilot/README.md
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/README.md
rename to packages/core/src/github-copilot/README.md
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts b/packages/core/src/github-copilot/chat/convert-to-openai-compatible-chat-messages.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts
rename to packages/core/src/github-copilot/chat/convert-to-openai-compatible-chat-messages.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/get-response-metadata.ts b/packages/core/src/github-copilot/chat/get-response-metadata.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/get-response-metadata.ts
rename to packages/core/src/github-copilot/chat/get-response-metadata.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts b/packages/core/src/github-copilot/chat/map-openai-compatible-finish-reason.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts
rename to packages/core/src/github-copilot/chat/map-openai-compatible-finish-reason.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts b/packages/core/src/github-copilot/chat/openai-compatible-api-types.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts
rename to packages/core/src/github-copilot/chat/openai-compatible-api-types.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts b/packages/core/src/github-copilot/chat/openai-compatible-chat-language-model.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts
rename to packages/core/src/github-copilot/chat/openai-compatible-chat-language-model.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts b/packages/core/src/github-copilot/chat/openai-compatible-chat-options.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts
rename to packages/core/src/github-copilot/chat/openai-compatible-chat-options.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts b/packages/core/src/github-copilot/chat/openai-compatible-metadata-extractor.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts
rename to packages/core/src/github-copilot/chat/openai-compatible-metadata-extractor.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts b/packages/core/src/github-copilot/chat/openai-compatible-prepare-tools.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts
rename to packages/core/src/github-copilot/chat/openai-compatible-prepare-tools.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/copilot-provider.ts b/packages/core/src/github-copilot/copilot-provider.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/copilot-provider.ts
rename to packages/core/src/github-copilot/copilot-provider.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/openai-compatible-error.ts b/packages/core/src/github-copilot/openai-compatible-error.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/openai-compatible-error.ts
rename to packages/core/src/github-copilot/openai-compatible-error.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts b/packages/core/src/github-copilot/responses/convert-to-openai-responses-input.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts
rename to packages/core/src/github-copilot/responses/convert-to-openai-responses-input.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts b/packages/core/src/github-copilot/responses/map-openai-responses-finish-reason.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts
rename to packages/core/src/github-copilot/responses/map-openai-responses-finish-reason.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-config.ts b/packages/core/src/github-copilot/responses/openai-config.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/openai-config.ts
rename to packages/core/src/github-copilot/responses/openai-config.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-error.ts b/packages/core/src/github-copilot/responses/openai-error.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/openai-error.ts
rename to packages/core/src/github-copilot/responses/openai-error.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-api-types.ts b/packages/core/src/github-copilot/responses/openai-responses-api-types.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/openai-responses-api-types.ts
rename to packages/core/src/github-copilot/responses/openai-responses-api-types.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts b/packages/core/src/github-copilot/responses/openai-responses-language-model.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts
rename to packages/core/src/github-copilot/responses/openai-responses-language-model.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts b/packages/core/src/github-copilot/responses/openai-responses-prepare-tools.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts
rename to packages/core/src/github-copilot/responses/openai-responses-prepare-tools.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-settings.ts b/packages/core/src/github-copilot/responses/openai-responses-settings.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/openai-responses-settings.ts
rename to packages/core/src/github-copilot/responses/openai-responses-settings.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/tool/code-interpreter.ts b/packages/core/src/github-copilot/responses/tool/code-interpreter.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/tool/code-interpreter.ts
rename to packages/core/src/github-copilot/responses/tool/code-interpreter.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/tool/file-search.ts b/packages/core/src/github-copilot/responses/tool/file-search.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/tool/file-search.ts
rename to packages/core/src/github-copilot/responses/tool/file-search.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/tool/image-generation.ts b/packages/core/src/github-copilot/responses/tool/image-generation.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/tool/image-generation.ts
rename to packages/core/src/github-copilot/responses/tool/image-generation.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/tool/local-shell.ts b/packages/core/src/github-copilot/responses/tool/local-shell.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/tool/local-shell.ts
rename to packages/core/src/github-copilot/responses/tool/local-shell.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search-preview.ts b/packages/core/src/github-copilot/responses/tool/web-search-preview.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/tool/web-search-preview.ts
rename to packages/core/src/github-copilot/responses/tool/web-search-preview.ts
diff --git a/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search.ts b/packages/core/src/github-copilot/responses/tool/web-search.ts
similarity index 100%
rename from packages/opencode/src/provider/sdk/copilot/responses/tool/web-search.ts
rename to packages/core/src/github-copilot/responses/tool/web-search.ts
diff --git a/packages/core/src/location-layer.ts b/packages/core/src/location-layer.ts
new file mode 100644
index 000000000000..84dfb3dfae7f
--- /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 000000000000..00ff9cd3ea72
--- /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/model.ts b/packages/core/src/model.ts
new file mode 100644
index 000000000000..77b8c60ebe77
--- /dev/null
+++ b/packages/core/src/model.ts
@@ -0,0 +1,116 @@
+import { DateTime, Schema } from "effect"
+import { DateTimeUtcFromMillis } from "effect/Schema"
+import { ProviderV2 } from "./provider"
+
+export const ID = Schema.String.pipe(Schema.brand("ModelV2.ID"))
+export type ID = typeof ID.Type
+
+export const VariantID = Schema.String.pipe(Schema.brand("VariantID"))
+export type VariantID = typeof VariantID.Type
+
+// Grouping of models, eg claude opus, claude sonnet
+export const Family = Schema.String.pipe(Schema.brand("Family"))
+export type Family = typeof Family.Type
+
+export const Capabilities = Schema.Struct({
+ tools: Schema.Boolean,
+ // mime patterns, image, audio, video/*, text/*
+ input: Schema.String.pipe(Schema.Array),
+ output: Schema.String.pipe(Schema.Array),
+})
+export type Capabilities = typeof Capabilities.Type
+
+export const Cost = Schema.Struct({
+ tier: Schema.Struct({
+ type: Schema.Literal("context"),
+ size: Schema.Int,
+ }).pipe(Schema.optional),
+ input: Schema.Finite,
+ output: Schema.Finite,
+ cache: Schema.Struct({
+ read: Schema.Finite,
+ write: Schema.Finite,
+ }),
+})
+
+export const Ref = Schema.Struct({
+ id: ID,
+ providerID: ProviderV2.ID,
+ variant: VariantID,
+})
+export type Ref = typeof Ref.Type
+
+export class Info extends Schema.Class("ModelV2.Info")({
+ id: ID,
+ apiID: ID,
+ providerID: ProviderV2.ID,
+ family: Family.pipe(Schema.optional),
+ name: Schema.String,
+ endpoint: ProviderV2.Endpoint,
+ capabilities: Capabilities,
+ options: Schema.Struct({
+ ...ProviderV2.Options.fields,
+ variant: Schema.String.pipe(Schema.optional),
+ }),
+ variants: Schema.Struct({
+ id: VariantID,
+ ...ProviderV2.Options.fields,
+ }).pipe(Schema.Array),
+ time: Schema.Struct({
+ released: DateTimeUtcFromMillis,
+ }),
+ cost: Cost.pipe(Schema.Array),
+ status: Schema.Literals(["alpha", "beta", "deprecated", "active"]),
+ enabled: Schema.Boolean,
+ limit: Schema.Struct({
+ context: Schema.Int,
+ input: Schema.Int.pipe(Schema.optional),
+ output: Schema.Int,
+ }),
+}) {
+ static empty(providerID: ProviderV2.ID, modelID: ID) {
+ return new Info({
+ id: modelID,
+ apiID: modelID,
+ providerID,
+ name: modelID,
+ endpoint: {
+ type: "unknown",
+ },
+ capabilities: {
+ tools: false,
+ input: [],
+ output: [],
+ },
+ options: {
+ headers: {},
+ body: {},
+ aisdk: {
+ provider: {},
+ request: {},
+ },
+ },
+ variants: [],
+ time: {
+ released: DateTime.makeUnsafe(0),
+ },
+ cost: [],
+ status: "active",
+ enabled: true,
+ limit: {
+ context: 0,
+ output: 0,
+ },
+ })
+ }
+}
+
+export function parse(input: string): { providerID: ProviderV2.ID; modelID: ID } {
+ const [providerID, ...modelID] = input.split("/")
+ return {
+ providerID: ProviderV2.ID.make(providerID),
+ modelID: ID.make(modelID.join("/")),
+ }
+}
+
+export * as ModelV2 from "./model"
diff --git a/packages/core/src/models-snapshot.d.ts b/packages/core/src/models-snapshot.d.ts
new file mode 100644
index 000000000000..839eba6b7d51
--- /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 000000000000..c582a75bdfd4
--- /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 81%
rename from packages/opencode/src/provider/models.ts
rename to packages/core/src/models.ts
index fb240e4cf17c..4ee17b8e25eb 100644
--- a/packages/opencode/src/provider/models.ts
+++ b/packages/core/src/models.ts
@@ -1,20 +1,35 @@
-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 { 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,
+ output: Schema.Finite,
+ cache_read: Schema.optional(Schema.Finite),
+ cache_write: Schema.optional(Schema.Finite),
+ tier: Schema.Struct({
+ type: Schema.Literal("context"),
+ size: Schema.Finite,
+ }),
+})
const Cost = Schema.Struct({
input: Schema.Finite,
output: Schema.Finite,
cache_read: Schema.optional(Schema.Finite),
cache_write: Schema.optional(Schema.Finite),
+ tiers: Schema.optional(Schema.Array(CostTier)),
context_over_200k: Schema.optional(
Schema.Struct({
input: Schema.Finite,
@@ -97,11 +112,21 @@ export interface Interface {
export class Service extends Context.Service()("@opencode/ModelsDev") {}
-export const layer: Layer.Layer = Layer.effect(
+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 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(
@@ -120,7 +145,7 @@ export const layer: Layer.Layer res.text),
Effect.timeout("10 seconds"),
@@ -177,7 +202,9 @@ export const layer: Layer.Layer Effect.logError("Failed to fetch models.dev", { cause })),
+ Effect.tapCause((cause) =>
+ Effect.logError("Failed to fetch models.dev").pipe(Effect.annotateLogs("cause", cause)),
+ ),
Effect.ignore,
)
})
diff --git a/packages/core/src/plugin.ts b/packages/core/src/plugin.ts
new file mode 100644
index 000000000000..dfcae9468596
--- /dev/null
+++ b/packages/core/src/plugin.ts
@@ -0,0 +1,146 @@
+export * as PluginV2 from "./plugin"
+
+import { createDraft, finishDraft, type Draft } from "immer"
+import type { LanguageModelV3 } from "@ai-sdk/provider"
+import { type ProviderV2 } from "./provider"
+import { Context, Effect, Layer, Schema } from "effect"
+import type { ModelV2 } from "./model"
+
+export const ID = Schema.String.pipe(Schema.brand("Plugin.ID"))
+export type ID = typeof ID.Type
+
+type HookSpec = {
+ "provider.update": {
+ input: {}
+ output: {
+ provider: ProviderV2.Info
+ cancel: boolean
+ }
+ }
+ "model.update": {
+ input: {}
+ output: {
+ model: ModelV2.Info
+ cancel: boolean
+ }
+ }
+ "aisdk.language": {
+ input: {
+ model: ModelV2.Info
+ sdk: any
+ options: Record
+ }
+ output: {
+ language?: LanguageModelV3
+ }
+ }
+ "aisdk.sdk": {
+ input: {
+ model: ModelV2.Info
+ package: string
+ options: Record
+ }
+ output: {
+ sdk?: any
+ }
+ }
+}
+
+export type Hooks = {
+ [Name in keyof HookSpec]: Readonly & {
+ -readonly [Field in keyof HookSpec[Name]["output"]]: HookSpec[Name]["output"][Field] extends object
+ ? Draft
+ : HookSpec[Name]["output"][Field]
+ }
+}
+
+export type HookFunctions = {
+ [key in keyof Hooks]?: (input: Hooks[key]) => Effect.Effect
+}
+
+export type HookInput = HookSpec[Name]["input"]
+export type HookOutput = HookSpec[Name]["output"]
+
+export type Effect = Effect.Effect
+
+export function define(input: { id: ID; effect: Effect.Effect }) {
+ return input
+}
+
+export interface Interface {
+ readonly add: (input: { id: ID; effect: Effect }) => Effect.Effect
+ readonly remove: (id: ID) => Effect.Effect
+ readonly trigger: (
+ name: Name,
+ input: HookInput,
+ output: HookOutput,
+ ) => Effect.Effect & HookOutput>
+}
+
+export class Service extends Context.Service()("@opencode/v2/Plugin") {}
+
+export const layer = Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ let hooks: {
+ id: ID
+ hooks: HookFunctions
+ }[] = []
+
+ const svc = Service.of({
+ add: Effect.fn("Plugin.add")(function* (input) {
+ const result = yield* input.effect
+ if (!result) return
+ hooks = [
+ ...hooks.filter((item) => item.id !== input.id),
+ {
+ id: input.id,
+ hooks: result,
+ },
+ ]
+ }),
+ trigger: Effect.fn("Plugin.trigger")(function* (name, input, output) {
+ const draftEntries = new Map>()
+ const event = {
+ ...input,
+ ...output,
+ } as Record
+
+ for (const [field, value] of Object.entries(output)) {
+ if (value && typeof value === "object") {
+ draftEntries.set(field, createDraft(value))
+ event[field] = draftEntries.get(field)
+ }
+ }
+
+ for (const item of hooks) {
+ const match = item.hooks[name]
+ if (!match) continue
+ yield* match(event as any).pipe(
+ Effect.withSpan(`Plugin.hook.${name}`, {
+ attributes: {
+ plugin: item.id,
+ hook: name,
+ },
+ }),
+ )
+ }
+
+ for (const [field, draft] of draftEntries) {
+ event[field] = finishDraft(draft)
+ }
+
+ return event as any
+ }),
+ remove: Effect.fn("Plugin.remove")(function* (id) {
+ hooks = hooks.filter((item) => item.id !== id)
+ }),
+ })
+ return svc
+ }),
+)
+
+export const defaultLayer = layer
+
+// opencode
+// sdcok
diff --git a/packages/core/src/plugin/auth.ts b/packages/core/src/plugin/auth.ts
new file mode 100644
index 000000000000..81cbfbe3f7ad
--- /dev/null
+++ b/packages/core/src/plugin/auth.ts
@@ -0,0 +1,27 @@
+import { Effect } from "effect"
+import { AuthV2 } from "../auth"
+import { PluginV2 } from "../plugin"
+
+export const AuthPlugin = PluginV2.define({
+ id: PluginV2.ID.make("auth"),
+ effect: Effect.gen(function* () {
+ const auth = yield* AuthV2.Service
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ const account = yield* auth.active(AuthV2.ServiceID.make(evt.provider.id)).pipe(Effect.orDie)
+ if (!account) return
+ evt.provider.enabled = {
+ via: "auth",
+ service: account.serviceID,
+ }
+ if (account.credential.type === "api") {
+ evt.provider.options.aisdk.provider.apiKey = account.credential.key
+ Object.assign(evt.provider.options.aisdk.provider, account.credential.metadata ?? {})
+ }
+ if (account.credential.type === "oauth") {
+ evt.provider.options.aisdk.provider.apiKey = account.credential.access
+ }
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/boot.ts b/packages/core/src/plugin/boot.ts
new file mode 100644
index 000000000000..74560ac85b77
--- /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/env.ts b/packages/core/src/plugin/env.ts
new file mode 100644
index 000000000000..d63936fa13d4
--- /dev/null
+++ b/packages/core/src/plugin/env.ts
@@ -0,0 +1,18 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../plugin"
+
+export const EnvPlugin = PluginV2.define({
+ id: PluginV2.ID.make("env"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ const key = evt.provider.env.find((item) => process.env[item])
+ if (!key) return
+ evt.provider.enabled = {
+ via: "env",
+ name: key,
+ }
+ }),
+ }
+ }),
+})
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 000000000000..63e33d3f0c46
--- /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/core/src/plugin/models-dev.ts b/packages/core/src/plugin/models-dev.ts
new file mode 100644
index 000000000000..e67c2e75a98c
--- /dev/null
+++ b/packages/core/src/plugin/models-dev.ts
@@ -0,0 +1,108 @@
+import { DateTime, Effect } from "effect"
+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)
+ return DateTime.makeUnsafe(Number.isFinite(time) ? time : 0)
+}
+
+function cost(input: ModelsDev.Model["cost"]) {
+ const base = {
+ input: input?.input ?? 0,
+ output: input?.output ?? 0,
+ cache: {
+ read: input?.cache_read ?? 0,
+ write: input?.cache_write ?? 0,
+ },
+ }
+ if (!input?.context_over_200k) return [base]
+ return [
+ base,
+ {
+ tier: {
+ type: "context" as const,
+ size: 200_000,
+ },
+ input: input.context_over_200k.input,
+ output: input.context_over_200k.output,
+ cache: {
+ read: input.context_over_200k.cache_read ?? 0,
+ write: input.context_over_200k.cache_write ?? 0,
+ },
+ },
+ ]
+}
+
+function variants(model: ModelsDev.Model) {
+ return Object.entries(model.experimental?.modes ?? {}).map(([id, item]) => ({
+ id: ModelV2.VariantID.make(id),
+ headers: { ...(item.provider?.headers ?? {}) },
+ body: { ...(item.provider?.body ?? {}) },
+ aisdk: {
+ provider: {},
+ request: {},
+ },
+ }))
+}
+
+export const ModelsDevPlugin = PluginV2.define({
+ id: PluginV2.ID.make("models-dev"),
+ effect: Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const modelsDev = yield* ModelsDev.Service
+ for (const item of Object.values(yield* modelsDev.get())) {
+ const providerID = ProviderV2.ID.make(item.id)
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.name = item.name
+ provider.env = [...item.env]
+ provider.endpoint = item.npm
+ ? {
+ type: "aisdk",
+ package: item.npm,
+ url: item.api,
+ }
+ : {
+ type: "unknown",
+ }
+ })
+
+ for (const model of Object.values(item.models)) {
+ const modelID = ModelV2.ID.make(model.id)
+ yield* catalog.model
+ .update(providerID, modelID, (draft) => {
+ draft.name = model.name
+ draft.family = model.family ? ModelV2.Family.make(model.family) : undefined
+ draft.endpoint = model.provider?.npm
+ ? {
+ type: "aisdk",
+ package: model.provider?.npm,
+ url: model.provider.api,
+ }
+ : {
+ type: "unknown",
+ }
+ draft.capabilities = {
+ tools: model.tool_call,
+ input: [...(model.modalities?.input ?? [])],
+ output: [...(model.modalities?.output ?? [])],
+ }
+ draft.variants = variants(model)
+ draft.time.released = released(model.release_date)
+ draft.cost = cost(model.cost)
+ draft.status = model.status ?? "active"
+ draft.enabled = true
+ draft.limit = {
+ context: model.limit.context,
+ input: model.limit.input,
+ output: model.limit.output,
+ }
+ })
+ .pipe(Effect.orDie)
+ }
+ }
+ }).pipe(Effect.provide(ModelsDev.defaultLayer)),
+})
diff --git a/packages/core/src/plugin/provider.ts b/packages/core/src/plugin/provider.ts
new file mode 100644
index 000000000000..1880787495fd
--- /dev/null
+++ b/packages/core/src/plugin/provider.ts
@@ -0,0 +1 @@
+export { ProviderPlugins } from "./provider/index"
diff --git a/packages/core/src/plugin/provider/alibaba.ts b/packages/core/src/plugin/provider/alibaba.ts
new file mode 100644
index 000000000000..fa5c0a91cfb6
--- /dev/null
+++ b/packages/core/src/plugin/provider/alibaba.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const AlibabaPlugin = PluginV2.define({
+ id: PluginV2.ID.make("alibaba"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/alibaba") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/alibaba"))
+ evt.sdk = mod.createAlibaba(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/amazon-bedrock.ts b/packages/core/src/plugin/provider/amazon-bedrock.ts
new file mode 100644
index 000000000000..366548a0a32c
--- /dev/null
+++ b/packages/core/src/plugin/provider/amazon-bedrock.ts
@@ -0,0 +1,94 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+// Bedrock cross-region inference profiles require regional prefixes only for
+// specific model/region combinations. Keep the mapping narrow and avoid
+// double-prefixing model IDs that models.dev already marks as global/us/eu/etc.
+function resolveModelID(modelID: string, region: string | undefined) {
+ const crossRegionPrefixes = ["global.", "us.", "eu.", "jp.", "apac.", "au."]
+ if (crossRegionPrefixes.some((prefix) => modelID.startsWith(prefix))) return modelID
+
+ const resolvedRegion = region ?? "us-east-1"
+ const regionPrefix = resolvedRegion.split("-")[0]
+ if (regionPrefix === "us") {
+ const requiresPrefix = ["nova-micro", "nova-lite", "nova-pro", "nova-premier", "nova-2", "claude", "deepseek"].some(
+ (item) => modelID.includes(item),
+ )
+ if (requiresPrefix && !resolvedRegion.startsWith("us-gov")) return `${regionPrefix}.${modelID}`
+ return modelID
+ }
+ if (regionPrefix === "eu") {
+ const regionRequiresPrefix = [
+ "eu-west-1",
+ "eu-west-2",
+ "eu-west-3",
+ "eu-north-1",
+ "eu-central-1",
+ "eu-south-1",
+ "eu-south-2",
+ ].some((item) => resolvedRegion.includes(item))
+ const modelRequiresPrefix = ["claude", "nova-lite", "nova-micro", "llama3", "pixtral"].some((item) =>
+ modelID.includes(item),
+ )
+ return regionRequiresPrefix && modelRequiresPrefix ? `${regionPrefix}.${modelID}` : modelID
+ }
+ if (regionPrefix !== "ap") return modelID
+
+ const australia = ["ap-southeast-2", "ap-southeast-4"].includes(resolvedRegion)
+ if (australia && ["anthropic.claude-sonnet-4-5", "anthropic.claude-haiku"].some((item) => modelID.includes(item))) {
+ return `au.${modelID}`
+ }
+
+ const prefix = resolvedRegion === "ap-northeast-1" ? "jp" : "apac"
+ return ["claude", "nova-lite", "nova-micro", "nova-pro"].some((item) => modelID.includes(item))
+ ? `${prefix}.${modelID}`
+ : modelID
+}
+
+export const AmazonBedrockPlugin = PluginV2.define({
+ id: PluginV2.ID.make("amazon-bedrock"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.amazonBedrock) return
+ if (evt.provider.endpoint.type !== "aisdk") return
+ if (typeof evt.provider.options.aisdk.provider.endpoint !== "string") return
+ // The AI SDK expects a base URL, but users configure Bedrock private/VPC
+ // endpoints as `endpoint`; move it into the catalog endpoint URL once.
+ evt.provider.endpoint.url = evt.provider.options.aisdk.provider.endpoint
+ delete evt.provider.options.aisdk.provider.endpoint
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/amazon-bedrock") return
+ const options = { ...evt.options }
+ const profile = typeof options.profile === "string" ? options.profile : process.env.AWS_PROFILE
+ const region = typeof options.region === "string" ? options.region : (process.env.AWS_REGION ?? "us-east-1")
+ const bearerToken =
+ process.env.AWS_BEARER_TOKEN_BEDROCK ??
+ (typeof options.bearerToken === "string" ? options.bearerToken : undefined)
+ if (bearerToken && !process.env.AWS_BEARER_TOKEN_BEDROCK) process.env.AWS_BEARER_TOKEN_BEDROCK = bearerToken
+ const containerCreds = Boolean(
+ process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI || process.env.AWS_CONTAINER_CREDENTIALS_FULL_URI,
+ )
+
+ options.region = region
+ if (typeof options.endpoint === "string") options.baseURL = options.endpoint
+ if (!bearerToken && options.credentialProvider === undefined) {
+ // Do not gate SDK creation on explicit AWS env vars. The default chain
+ // also handles ~/.aws/credentials, SSO, process creds, and instance roles.
+ const { fromNodeProviderChain } = yield* Effect.promise(() => import("@aws-sdk/credential-providers"))
+ options.credentialProvider = fromNodeProviderChain(profile ? { profile } : {})
+ }
+
+ const mod = yield* Effect.promise(() => import("@ai-sdk/amazon-bedrock"))
+ evt.sdk = mod.createAmazonBedrock(options)
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.amazonBedrock) return
+ const region = typeof evt.options.region === "string" ? evt.options.region : process.env.AWS_REGION
+ evt.language = evt.sdk.languageModel(resolveModelID(evt.model.apiID, region))
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/anthropic.ts b/packages/core/src/plugin/provider/anthropic.ts
new file mode 100644
index 000000000000..14851c4a3193
--- /dev/null
+++ b/packages/core/src/plugin/provider/anthropic.ts
@@ -0,0 +1,21 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const AnthropicPlugin = PluginV2.define({
+ id: PluginV2.ID.make("anthropic"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.anthropic) return
+ evt.provider.options.headers["anthropic-beta"] =
+ "interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14"
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/anthropic") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/anthropic"))
+ evt.sdk = mod.createAnthropic(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/azure.ts b/packages/core/src/plugin/provider/azure.ts
new file mode 100644
index 000000000000..6c29a161034f
--- /dev/null
+++ b/packages/core/src/plugin/provider/azure.ts
@@ -0,0 +1,64 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+function selectLanguage(sdk: any, modelID: string, useChat: boolean) {
+ if (useChat && sdk.chat) return sdk.chat(modelID)
+ if (sdk.responses) return sdk.responses(modelID)
+ if (sdk.messages) return sdk.messages(modelID)
+ if (sdk.chat) return sdk.chat(modelID)
+ return sdk.languageModel(modelID)
+}
+
+export const AzurePlugin = PluginV2.define({
+ id: PluginV2.ID.make("azure"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.azure) return
+ const configured = evt.provider.options.aisdk.provider.resourceName
+ const resourceName =
+ typeof configured === "string" && configured.trim() !== "" ? configured : process.env.AZURE_RESOURCE_NAME
+ if (resourceName) evt.provider.options.aisdk.provider.resourceName = resourceName
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/azure") return
+ if (evt.model.providerID === ProviderV2.ID.azure) {
+ if (
+ !evt.options.resourceName &&
+ !evt.options.baseURL &&
+ (evt.model.endpoint.type !== "aisdk" || !evt.model.endpoint.url)
+ ) {
+ throw new Error(
+ "AZURE_RESOURCE_NAME is missing, set it using env var or reconnecting the azure provider and setting it",
+ )
+ }
+ }
+ const mod = yield* Effect.promise(() => import("@ai-sdk/azure"))
+ evt.sdk = mod.createAzure(evt.options)
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.azure) return
+ evt.language = selectLanguage(evt.sdk, evt.model.apiID, Boolean(evt.options.useCompletionUrls))
+ }),
+ }
+ }),
+})
+
+export const AzureCognitiveServicesPlugin = PluginV2.define({
+ id: PluginV2.ID.make("azure-cognitive-services"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("azure-cognitive-services")) return
+ const resourceName = process.env.AZURE_COGNITIVE_SERVICES_RESOURCE_NAME
+ if (resourceName)
+ evt.provider.options.aisdk.provider.baseURL = `https://${resourceName}.cognitiveservices.azure.com/openai`
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.make("azure-cognitive-services")) return
+ evt.language = selectLanguage(evt.sdk, evt.model.apiID, Boolean(evt.options.useCompletionUrls))
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/cerebras.ts b/packages/core/src/plugin/provider/cerebras.ts
new file mode 100644
index 000000000000..b2fadd8bf114
--- /dev/null
+++ b/packages/core/src/plugin/provider/cerebras.ts
@@ -0,0 +1,20 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const CerebrasPlugin = PluginV2.define({
+ id: PluginV2.ID.make("cerebras"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("cerebras")) return
+ evt.provider.options.headers["X-Cerebras-3rd-Party-Integration"] = "opencode"
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/cerebras") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/cerebras"))
+ evt.sdk = mod.createCerebras(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts
new file mode 100644
index 000000000000..ffcd4adcf46c
--- /dev/null
+++ b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts
@@ -0,0 +1,81 @@
+import os from "os"
+import { InstallationVersion } from "../../installation/version"
+import { Effect, Option, Schema } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const CloudflareAIGatewayPlugin = PluginV2.define({
+ id: PluginV2.ID.make("cloudflare-ai-gateway"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "ai-gateway-provider") return
+ if (evt.options.baseURL) return
+
+ const config = gatewayConfig(evt.options)
+ if (!config) return
+ const metadata = gatewayMetadata(evt.options)
+ const { createAiGateway } = yield* Effect.promise(() => import("ai-gateway-provider")).pipe(Effect.orDie)
+ const { createUnified } = yield* Effect.promise(() => import("ai-gateway-provider/providers/unified")).pipe(
+ Effect.orDie,
+ )
+ const gateway = createAiGateway({
+ accountId: config.accountId,
+ gateway: config.gatewayId,
+ apiKey: config.apiKey,
+ options: gatewayOptions(evt.options, metadata),
+ } as any)
+ const unified = createUnified()
+ evt.sdk = {
+ languageModel(modelID: string) {
+ return gateway(unified(modelID))
+ },
+ }
+ }),
+ }
+ }),
+})
+
+type GatewayConfig = {
+ accountId: string
+ gatewayId: string
+ apiKey: string
+}
+
+const decodeJson = Schema.decodeUnknownOption(Schema.UnknownFromJsonString)
+
+function gatewayConfig(options: Record): GatewayConfig | undefined {
+ const accountId = process.env.CLOUDFLARE_ACCOUNT_ID ?? stringOption(options, "accountId")
+ // AuthPlugin copies CLI prompt metadata into options. The prompt stores the
+ // gateway as gatewayId, while older config examples may use gateway.
+ const gatewayId =
+ process.env.CLOUDFLARE_GATEWAY_ID ?? stringOption(options, "gatewayId") ?? stringOption(options, "gateway")
+ const apiKey = process.env.CLOUDFLARE_API_TOKEN ?? process.env.CF_AIG_TOKEN ?? stringOption(options, "apiKey")
+ if (!accountId || !gatewayId || !apiKey) return undefined
+
+ return { accountId, gatewayId, apiKey }
+}
+
+function gatewayMetadata(options: Record) {
+ // Preserve the legacy cf-aig-metadata header escape hatch for gateway logging
+ // metadata, but prefer the typed metadata option when present.
+ if (options.metadata !== undefined) return options.metadata
+ const raw = (options.headers as Record | undefined)?.["cf-aig-metadata"]
+ return raw ? Option.getOrUndefined(decodeJson(raw)) : undefined
+}
+
+function gatewayOptions(options: Record, metadata: unknown) {
+ return {
+ metadata,
+ cacheTtl: options.cacheTtl,
+ cacheKey: options.cacheKey,
+ skipCache: options.skipCache,
+ collectLog: options.collectLog,
+ headers: {
+ "User-Agent": `opencode/${InstallationVersion} cloudflare-ai-gateway (${os.platform()} ${os.release()}; ${os.arch()})`,
+ },
+ }
+}
+
+function stringOption(options: Record, key: string) {
+ return typeof options[key] === "string" ? options[key] : undefined
+}
diff --git a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts
new file mode 100644
index 000000000000..f39869b57d7d
--- /dev/null
+++ b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts
@@ -0,0 +1,69 @@
+import os from "os"
+import { InstallationVersion } from "../../installation/version"
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+const providerID = ProviderV2.ID.make("cloudflare-workers-ai")
+
+export const CloudflareWorkersAIPlugin = PluginV2.define({
+ id: PluginV2.ID.make("cloudflare-workers-ai"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== providerID) return
+ if (evt.provider.endpoint.type !== "aisdk") return
+ if (evt.provider.endpoint.url) return
+
+ const accountId = resolveAccountId(evt.provider.options.aisdk.provider)
+ if (accountId) evt.provider.endpoint.url = workersEndpoint(accountId)
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== providerID) return
+ if (evt.package !== "@ai-sdk/openai-compatible") return
+
+ if (!hasWorkersEndpoint(evt.model.endpoint)) return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/openai-compatible"))
+ evt.sdk = mod.createOpenAICompatible(sdkOptions(evt.options) as any)
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== providerID) return
+ evt.language = evt.sdk.languageModel(evt.model.apiID)
+ }),
+ }
+ }),
+})
+
+function resolveAccountId(options: Record) {
+ return process.env.CLOUDFLARE_ACCOUNT_ID ?? stringOption(options, "accountId")
+}
+
+function workersEndpoint(accountId: string) {
+ return `https://api.cloudflare.com/client/v4/accounts/${accountId}/ai/v1`
+}
+
+function hasWorkersEndpoint(endpoint: ProviderV2.Endpoint) {
+ return endpoint.type === "aisdk" && Boolean(endpoint.url)
+}
+
+function sdkOptions(options: Record) {
+ return {
+ ...options,
+ baseURL: expandAccountId(options.baseURL),
+ apiKey: process.env.CLOUDFLARE_API_KEY ?? options.apiKey,
+ headers: {
+ "User-Agent": `opencode/${InstallationVersion} cloudflare-workers-ai (${os.platform()} ${os.release()}; ${os.arch()})`,
+ ...options.headers,
+ },
+ name: providerID,
+ }
+}
+
+function expandAccountId(baseURL: unknown) {
+ if (typeof baseURL !== "string") return baseURL
+ return baseURL.replaceAll("${CLOUDFLARE_ACCOUNT_ID}", process.env.CLOUDFLARE_ACCOUNT_ID ?? "${CLOUDFLARE_ACCOUNT_ID}")
+}
+
+function stringOption(options: Record, key: string) {
+ return typeof options[key] === "string" ? options[key] : undefined
+}
diff --git a/packages/core/src/plugin/provider/cohere.ts b/packages/core/src/plugin/provider/cohere.ts
new file mode 100644
index 000000000000..991c370d1751
--- /dev/null
+++ b/packages/core/src/plugin/provider/cohere.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const CoherePlugin = PluginV2.define({
+ id: PluginV2.ID.make("cohere"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/cohere") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/cohere"))
+ evt.sdk = mod.createCohere(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/deepinfra.ts b/packages/core/src/plugin/provider/deepinfra.ts
new file mode 100644
index 000000000000..bbd42f6e283b
--- /dev/null
+++ b/packages/core/src/plugin/provider/deepinfra.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const DeepInfraPlugin = PluginV2.define({
+ id: PluginV2.ID.make("deepinfra"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/deepinfra") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/deepinfra"))
+ evt.sdk = mod.createDeepInfra(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/dynamic.ts b/packages/core/src/plugin/provider/dynamic.ts
new file mode 100644
index 000000000000..e5abc7009e30
--- /dev/null
+++ b/packages/core/src/plugin/provider/dynamic.ts
@@ -0,0 +1,31 @@
+import { Npm } from "../../npm"
+import { Effect, Option } from "effect"
+import { pathToFileURL } from "url"
+import { PluginV2 } from "../../plugin"
+
+export const DynamicProviderPlugin = PluginV2.define({
+ id: PluginV2.ID.make("dynamic-provider"),
+ effect: Effect.gen(function* () {
+ const npm = yield* Npm.Service
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.sdk) return
+
+ const installedPath = evt.package.startsWith("file://")
+ ? evt.package
+ : Option.getOrUndefined((yield* npm.add(evt.package).pipe(Effect.orDie)).entrypoint)
+ if (!installedPath) throw new Error(`Package ${evt.package} has no import entrypoint`)
+
+ const mod = yield* Effect.promise(async () => {
+ return (await import(
+ installedPath.startsWith("file://") ? installedPath : pathToFileURL(installedPath).href
+ )) as Record any>
+ }).pipe(Effect.orDie)
+ const match = Object.keys(mod).find((name) => name.startsWith("create"))
+ if (!match) throw new Error(`Package ${evt.package} has no provider factory export`)
+
+ evt.sdk = mod[match](evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/gateway.ts b/packages/core/src/plugin/provider/gateway.ts
new file mode 100644
index 000000000000..5b08ad9ef5e2
--- /dev/null
+++ b/packages/core/src/plugin/provider/gateway.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const GatewayPlugin = PluginV2.define({
+ id: PluginV2.ID.make("gateway"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/gateway") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/gateway"))
+ evt.sdk = mod.createGateway(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/github-copilot.ts b/packages/core/src/plugin/provider/github-copilot.ts
new file mode 100644
index 000000000000..31e57ba12ab6
--- /dev/null
+++ b/packages/core/src/plugin/provider/github-copilot.ts
@@ -0,0 +1,44 @@
+import { Effect } from "effect"
+import { ModelV2 } from "../../model"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+function shouldUseResponses(modelID: string) {
+ // Copilot supports Responses for GPT-5 class models, except mini variants
+ // which still need the chat-completions endpoint.
+ const match = /^gpt-(\d+)/.exec(modelID)
+ if (!match) return false
+ return Number(match[1]) >= 5 && !modelID.startsWith("gpt-5-mini")
+}
+
+export const GithubCopilotPlugin = PluginV2.define({
+ id: PluginV2.ID.make("github-copilot"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.githubCopilot) return
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/github-copilot") return
+ const mod = yield* Effect.promise(() => import("../../github-copilot/copilot-provider"))
+ evt.sdk = mod.createOpenaiCompatible(evt.options)
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.githubCopilot) return
+ if (evt.sdk.responses === undefined && evt.sdk.chat === undefined) {
+ evt.language = evt.sdk.languageModel(evt.model.apiID)
+ return
+ }
+ evt.language = shouldUseResponses(evt.model.apiID)
+ ? evt.sdk.responses(evt.model.apiID)
+ : evt.sdk.chat(evt.model.apiID)
+ }),
+ "model.update": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.githubCopilot) return
+ // This chat-only alias conflicts with the Copilot GPT-5 Responses route,
+ // so hide it only for Copilot rather than for every provider catalog.
+ if (evt.model.id === ModelV2.ID.make("gpt-5-chat-latest")) evt.cancel = true
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/gitlab.ts b/packages/core/src/plugin/provider/gitlab.ts
new file mode 100644
index 000000000000..226f5a45eb4c
--- /dev/null
+++ b/packages/core/src/plugin/provider/gitlab.ts
@@ -0,0 +1,65 @@
+import os from "os"
+import { InstallationVersion } from "../../installation/version"
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const GitLabPlugin = PluginV2.define({
+ id: PluginV2.ID.make("gitlab"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "gitlab-ai-provider") return
+ const mod = yield* Effect.promise(() => import("gitlab-ai-provider"))
+ evt.sdk = mod.createGitLab({
+ ...evt.options,
+ instanceUrl:
+ typeof evt.options.instanceUrl === "string"
+ ? evt.options.instanceUrl
+ : (process.env.GITLAB_INSTANCE_URL ?? "https://gitlab.com"),
+ apiKey: typeof evt.options.apiKey === "string" ? evt.options.apiKey : process.env.GITLAB_TOKEN,
+ aiGatewayHeaders: {
+ "User-Agent": `opencode/${InstallationVersion} gitlab-ai-provider/${mod.VERSION} (${os.platform()} ${os.release()}; ${os.arch()})`,
+ "anthropic-beta": "context-1m-2025-08-07",
+ ...evt.options.aiGatewayHeaders,
+ },
+ featureFlags: {
+ duo_agent_platform_agentic_chat: true,
+ duo_agent_platform: true,
+ ...evt.options.featureFlags,
+ },
+ })
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.gitlab) return
+ const featureFlags =
+ typeof evt.options.featureFlags === "object" && evt.options.featureFlags ? evt.options.featureFlags : {}
+ if (evt.model.apiID.startsWith("duo-workflow-")) {
+ const gitlab = yield* Effect.promise(() => import("gitlab-ai-provider")).pipe(Effect.orDie)
+ const workflowRef =
+ typeof evt.model.options.aisdk.request.workflowRef === "string"
+ ? evt.model.options.aisdk.request.workflowRef
+ : undefined
+ const workflowDefinition =
+ typeof evt.model.options.aisdk.request.workflowDefinition === "string"
+ ? evt.model.options.aisdk.request.workflowDefinition
+ : undefined
+ const language = evt.sdk.workflowChat(
+ gitlab.isWorkflowModel(evt.model.apiID) ? evt.model.apiID : "duo-workflow",
+ {
+ featureFlags,
+ workflowDefinition,
+ },
+ )
+ if (workflowRef) language.selectedModelRef = workflowRef
+ evt.language = language
+ return
+ }
+ evt.language = evt.sdk.agenticChat(evt.model.apiID, {
+ aiGatewayHeaders: evt.options.aiGatewayHeaders,
+ featureFlags,
+ })
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/google-vertex.ts b/packages/core/src/plugin/provider/google-vertex.ts
new file mode 100644
index 000000000000..0c335df9312b
--- /dev/null
+++ b/packages/core/src/plugin/provider/google-vertex.ts
@@ -0,0 +1,141 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+function resolveProject(options: Record) {
+ // models.dev advertises GOOGLE_VERTEX_PROJECT for Vertex, while Google SDKs
+ // and ADC examples commonly use the broader Google Cloud project aliases.
+ return (
+ options.project ??
+ process.env.GOOGLE_VERTEX_PROJECT ??
+ process.env.GOOGLE_CLOUD_PROJECT ??
+ process.env.GCP_PROJECT ??
+ process.env.GCLOUD_PROJECT
+ )
+}
+
+function resolveLocation(options: Record) {
+ return (
+ options.location ??
+ process.env.GOOGLE_VERTEX_LOCATION ??
+ process.env.GOOGLE_CLOUD_LOCATION ??
+ process.env.VERTEX_LOCATION ??
+ "us-central1"
+ )
+}
+
+function vertexEndpoint(location: string) {
+ return location === "global" ? "aiplatform.googleapis.com" : `${location}-aiplatform.googleapis.com`
+}
+
+function replaceVertexVars(value: string, project: string | undefined, location: string) {
+ // Vertex OpenAI-compatible endpoints are stored as templates in the catalog;
+ // expand them after provider config/env project and location have been resolved.
+ return value
+ .replaceAll("${GOOGLE_VERTEX_PROJECT}", project ?? "${GOOGLE_VERTEX_PROJECT}")
+ .replaceAll("${GOOGLE_VERTEX_LOCATION}", location)
+ .replaceAll("${GOOGLE_VERTEX_ENDPOINT}", vertexEndpoint(location))
+}
+
+function authFetch(fetchWithRuntimeOptions?: unknown) {
+ // Native Vertex SDKs handle ADC internally. OpenAI-compatible Vertex endpoints
+ // do not, so inject a Google access token into their fetch path.
+ return async (input: Parameters[0], init?: RequestInit) => {
+ const { GoogleAuth } = await import("google-auth-library")
+ const auth = new GoogleAuth()
+ const client = await auth.getApplicationDefault()
+ const token = await client.credential.getAccessToken()
+ const headers = new Headers(init?.headers)
+ headers.set("Authorization", `Bearer ${token.token}`)
+ return typeof fetchWithRuntimeOptions === "function"
+ ? fetchWithRuntimeOptions(input, { ...init, headers })
+ : fetch(input, { ...init, headers })
+ }
+}
+
+export const GoogleVertexPlugin = PluginV2.define({
+ id: PluginV2.ID.make("google-vertex"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.googleVertex) return
+ const project = resolveProject(evt.provider.options.aisdk.provider)
+ const location = String(resolveLocation(evt.provider.options.aisdk.provider))
+ if (project) evt.provider.options.aisdk.provider.project = project
+ evt.provider.options.aisdk.provider.location = location
+ if (evt.provider.endpoint.type === "aisdk" && evt.provider.endpoint.url) {
+ evt.provider.endpoint.url = replaceVertexVars(evt.provider.endpoint.url, project, location)
+ }
+ if (
+ evt.provider.endpoint.type === "aisdk" &&
+ evt.provider.endpoint.package.includes("@ai-sdk/openai-compatible")
+ ) {
+ evt.provider.options.aisdk.provider.fetch = authFetch(evt.provider.options.aisdk.provider.fetch)
+ }
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.model.providerID === ProviderV2.ID.googleVertex && evt.package.includes("@ai-sdk/openai-compatible")) {
+ evt.options.fetch = authFetch(evt.options.fetch)
+ return
+ }
+ if (evt.package !== "@ai-sdk/google-vertex") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/google-vertex"))
+ const project = resolveProject(evt.options)
+ const location = resolveLocation(evt.options)
+ const options = { ...evt.options }
+ delete options.fetch
+ evt.sdk = mod.createVertex({
+ ...options,
+ project,
+ location,
+ })
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.googleVertex) return
+ evt.language = evt.sdk.languageModel(String(evt.model.apiID).trim())
+ }),
+ }
+ }),
+})
+
+export const GoogleVertexAnthropicPlugin = PluginV2.define({
+ id: PluginV2.ID.make("google-vertex-anthropic"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("google-vertex-anthropic")) return
+ const project =
+ evt.provider.options.aisdk.provider.project ??
+ process.env.GOOGLE_CLOUD_PROJECT ??
+ process.env.GCP_PROJECT ??
+ process.env.GCLOUD_PROJECT
+ const location =
+ evt.provider.options.aisdk.provider.location ??
+ process.env.GOOGLE_CLOUD_LOCATION ??
+ process.env.VERTEX_LOCATION ??
+ "global"
+ if (project) evt.provider.options.aisdk.provider.project = project
+ evt.provider.options.aisdk.provider.location = location
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/google-vertex/anthropic") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/google-vertex/anthropic"))
+ evt.sdk = mod.createVertexAnthropic({
+ ...evt.options,
+ project:
+ typeof evt.options.project === "string"
+ ? evt.options.project
+ : (process.env.GOOGLE_CLOUD_PROJECT ?? process.env.GCP_PROJECT ?? process.env.GCLOUD_PROJECT),
+ location:
+ typeof evt.options.location === "string"
+ ? evt.options.location
+ : (process.env.GOOGLE_CLOUD_LOCATION ?? process.env.VERTEX_LOCATION ?? "global"),
+ })
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.make("google-vertex-anthropic")) return
+ evt.language = evt.sdk.languageModel(String(evt.model.apiID).trim())
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/google.ts b/packages/core/src/plugin/provider/google.ts
new file mode 100644
index 000000000000..47e29c6b5d54
--- /dev/null
+++ b/packages/core/src/plugin/provider/google.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const GooglePlugin = PluginV2.define({
+ id: PluginV2.ID.make("google"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/google") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/google"))
+ evt.sdk = mod.createGoogleGenerativeAI(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/groq.ts b/packages/core/src/plugin/provider/groq.ts
new file mode 100644
index 000000000000..f2052afd1a86
--- /dev/null
+++ b/packages/core/src/plugin/provider/groq.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const GroqPlugin = PluginV2.define({
+ id: PluginV2.ID.make("groq"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/groq") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/groq"))
+ evt.sdk = mod.createGroq(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/index.ts b/packages/core/src/plugin/provider/index.ts
new file mode 100644
index 000000000000..fd02d322a1f9
--- /dev/null
+++ b/packages/core/src/plugin/provider/index.ts
@@ -0,0 +1,67 @@
+import { AlibabaPlugin } from "./alibaba"
+import { AmazonBedrockPlugin } from "./amazon-bedrock"
+import { AnthropicPlugin } from "./anthropic"
+import { AzureCognitiveServicesPlugin, AzurePlugin } from "./azure"
+import { CerebrasPlugin } from "./cerebras"
+import { CloudflareAIGatewayPlugin } from "./cloudflare-ai-gateway"
+import { CloudflareWorkersAIPlugin } from "./cloudflare-workers-ai"
+import { CoherePlugin } from "./cohere"
+import { DeepInfraPlugin } from "./deepinfra"
+import { DynamicProviderPlugin } from "./dynamic"
+import { GatewayPlugin } from "./gateway"
+import { GithubCopilotPlugin } from "./github-copilot"
+import { GitLabPlugin } from "./gitlab"
+import { GooglePlugin } from "./google"
+import { GoogleVertexAnthropicPlugin, GoogleVertexPlugin } from "./google-vertex"
+import { GroqPlugin } from "./groq"
+import { KiloPlugin } from "./kilo"
+import { LLMGatewayPlugin } from "./llmgateway"
+import { MistralPlugin } from "./mistral"
+import { NvidiaPlugin } from "./nvidia"
+import { OpenAIPlugin } from "./openai"
+import { OpenAICompatiblePlugin } from "./openai-compatible"
+import { OpencodePlugin } from "./opencode"
+import { OpenRouterPlugin } from "./openrouter"
+import { PerplexityPlugin } from "./perplexity"
+import { SapAICorePlugin } from "./sap-ai-core"
+import { TogetherAIPlugin } from "./togetherai"
+import { VercelPlugin } from "./vercel"
+import { VenicePlugin } from "./venice"
+import { XAIPlugin } from "./xai"
+import { ZenmuxPlugin } from "./zenmux"
+
+export const ProviderPlugins = [
+ AlibabaPlugin,
+ AmazonBedrockPlugin,
+ AnthropicPlugin,
+ AzureCognitiveServicesPlugin,
+ AzurePlugin,
+ CerebrasPlugin,
+ CloudflareAIGatewayPlugin,
+ CloudflareWorkersAIPlugin,
+ CoherePlugin,
+ DeepInfraPlugin,
+ GatewayPlugin,
+ GithubCopilotPlugin,
+ GitLabPlugin,
+ GooglePlugin,
+ GoogleVertexAnthropicPlugin,
+ GoogleVertexPlugin,
+ GroqPlugin,
+ KiloPlugin,
+ LLMGatewayPlugin,
+ MistralPlugin,
+ NvidiaPlugin,
+ OpencodePlugin,
+ OpenAICompatiblePlugin,
+ OpenAIPlugin,
+ OpenRouterPlugin,
+ PerplexityPlugin,
+ SapAICorePlugin,
+ TogetherAIPlugin,
+ VercelPlugin,
+ VenicePlugin,
+ XAIPlugin,
+ ZenmuxPlugin,
+ DynamicProviderPlugin,
+]
diff --git a/packages/core/src/plugin/provider/kilo.ts b/packages/core/src/plugin/provider/kilo.ts
new file mode 100644
index 000000000000..47b8ec99cd92
--- /dev/null
+++ b/packages/core/src/plugin/provider/kilo.ts
@@ -0,0 +1,16 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const KiloPlugin = PluginV2.define({
+ id: PluginV2.ID.make("kilo"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("kilo")) return
+ evt.provider.options.headers["HTTP-Referer"] = "https://opencode.ai/"
+ evt.provider.options.headers["X-Title"] = "opencode"
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/llmgateway.ts b/packages/core/src/plugin/provider/llmgateway.ts
new file mode 100644
index 000000000000..da1ab282bdab
--- /dev/null
+++ b/packages/core/src/plugin/provider/llmgateway.ts
@@ -0,0 +1,18 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const LLMGatewayPlugin = PluginV2.define({
+ id: PluginV2.ID.make("llmgateway"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("llmgateway")) return
+ if (evt.provider.enabled === false) return
+ evt.provider.options.headers["HTTP-Referer"] = "https://opencode.ai/"
+ evt.provider.options.headers["X-Title"] = "opencode"
+ evt.provider.options.headers["X-Source"] = "opencode"
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/mistral.ts b/packages/core/src/plugin/provider/mistral.ts
new file mode 100644
index 000000000000..e7f0decb79ee
--- /dev/null
+++ b/packages/core/src/plugin/provider/mistral.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const MistralPlugin = PluginV2.define({
+ id: PluginV2.ID.make("mistral"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/mistral") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/mistral"))
+ evt.sdk = mod.createMistral(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/nvidia.ts b/packages/core/src/plugin/provider/nvidia.ts
new file mode 100644
index 000000000000..49ef6af0f60c
--- /dev/null
+++ b/packages/core/src/plugin/provider/nvidia.ts
@@ -0,0 +1,17 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const NvidiaPlugin = PluginV2.define({
+ id: PluginV2.ID.make("nvidia"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ 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/plugin/provider/openai-compatible.ts b/packages/core/src/plugin/provider/openai-compatible.ts
new file mode 100644
index 000000000000..76c33737066f
--- /dev/null
+++ b/packages/core/src/plugin/provider/openai-compatible.ts
@@ -0,0 +1,17 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const OpenAICompatiblePlugin = PluginV2.define({
+ id: PluginV2.ID.make("openai-compatible"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.sdk) return
+ if (!evt.package.includes("@ai-sdk/openai-compatible")) return
+ if (evt.options.includeUsage !== false) evt.options.includeUsage = true
+ const mod = yield* Effect.promise(() => import("@ai-sdk/openai-compatible"))
+ evt.sdk = mod.createOpenAICompatible(evt.options as any)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/openai.ts b/packages/core/src/plugin/provider/openai.ts
new file mode 100644
index 000000000000..a81455f1985e
--- /dev/null
+++ b/packages/core/src/plugin/provider/openai.ts
@@ -0,0 +1,27 @@
+import { Effect } from "effect"
+import { ModelV2 } from "../../model"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const OpenAIPlugin = PluginV2.define({
+ id: PluginV2.ID.make("openai"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/openai") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/openai"))
+ evt.sdk = mod.createOpenAI(evt.options)
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.openai) return
+ evt.language = evt.sdk.responses(evt.model.apiID)
+ }),
+ "model.update": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.openai) return
+ // OpenAIPlugin sends OpenAI models through Responses; this alias is a
+ // chat-completions-only model, so remove it only from OpenAI's catalog.
+ if (evt.model.id === ModelV2.ID.make("gpt-5-chat-latest")) evt.cancel = true
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/opencode.ts b/packages/core/src/plugin/provider/opencode.ts
new file mode 100644
index 000000000000..10bbb62dadbe
--- /dev/null
+++ b/packages/core/src/plugin/provider/opencode.ts
@@ -0,0 +1,27 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const OpencodePlugin = PluginV2.define({
+ id: PluginV2.ID.make("opencode"),
+ effect: Effect.gen(function* () {
+ let hasKey = false
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.opencode) return
+ hasKey = Boolean(
+ process.env.OPENCODE_API_KEY ||
+ evt.provider.env.some((item) => process.env[item]) ||
+ evt.provider.options.aisdk.provider.apiKey ||
+ (evt.provider.enabled && evt.provider.enabled.via === "auth"),
+ )
+ if (!hasKey) evt.provider.options.aisdk.provider.apiKey = "public"
+ }),
+ "model.update": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.opencode) return
+ if (hasKey) return
+ if (evt.model.cost.some((item) => item.input > 0)) evt.cancel = true
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/openrouter.ts b/packages/core/src/plugin/provider/openrouter.ts
new file mode 100644
index 000000000000..976eea8c057b
--- /dev/null
+++ b/packages/core/src/plugin/provider/openrouter.ts
@@ -0,0 +1,29 @@
+import { Effect } from "effect"
+import { ModelV2 } from "../../model"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const OpenRouterPlugin = PluginV2.define({
+ id: PluginV2.ID.make("openrouter"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.openrouter) return
+ evt.provider.options.headers["HTTP-Referer"] = "https://opencode.ai/"
+ evt.provider.options.headers["X-Title"] = "opencode"
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@openrouter/ai-sdk-provider") return
+ const mod = yield* Effect.promise(() => import("@openrouter/ai-sdk-provider"))
+ evt.sdk = mod.createOpenRouter(evt.options)
+ }),
+ "model.update": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.openrouter) return
+ // These are OpenRouter-specific OpenAI chat aliases that do not work on
+ // the generic path. Keep custom providers with matching IDs untouched.
+ if (evt.model.id === ModelV2.ID.make("gpt-5-chat-latest")) evt.cancel = true
+ if (evt.model.id === ModelV2.ID.make("openai/gpt-5-chat")) evt.cancel = true
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/perplexity.ts b/packages/core/src/plugin/provider/perplexity.ts
new file mode 100644
index 000000000000..2415ab7c1a22
--- /dev/null
+++ b/packages/core/src/plugin/provider/perplexity.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const PerplexityPlugin = PluginV2.define({
+ id: PluginV2.ID.make("perplexity"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/perplexity") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/perplexity"))
+ evt.sdk = mod.createPerplexity(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/sap-ai-core.ts b/packages/core/src/plugin/provider/sap-ai-core.ts
new file mode 100644
index 000000000000..7c57b785bff7
--- /dev/null
+++ b/packages/core/src/plugin/provider/sap-ai-core.ts
@@ -0,0 +1,44 @@
+import { Npm } from "../../npm"
+import { Effect, Option } from "effect"
+import { pathToFileURL } from "url"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const SapAICorePlugin = PluginV2.define({
+ id: PluginV2.ID.make("sap-ai-core"),
+ effect: Effect.gen(function* () {
+ const npm = yield* Npm.Service
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.make("sap-ai-core")) return
+ const serviceKey =
+ process.env.AICORE_SERVICE_KEY ??
+ (typeof evt.options.serviceKey === "string" ? evt.options.serviceKey : undefined)
+ if (serviceKey && !process.env.AICORE_SERVICE_KEY) process.env.AICORE_SERVICE_KEY = serviceKey
+
+ const installedPath = evt.package.startsWith("file://")
+ ? evt.package
+ : Option.getOrUndefined((yield* npm.add(evt.package).pipe(Effect.orDie)).entrypoint)
+ if (!installedPath) throw new Error(`Package ${evt.package} has no import entrypoint`)
+
+ const mod = yield* Effect.promise(async () => {
+ return (await import(
+ installedPath.startsWith("file://") ? installedPath : pathToFileURL(installedPath).href
+ )) as Record any>
+ }).pipe(Effect.orDie)
+ const match = Object.keys(mod).find((name) => name.startsWith("create"))
+ if (!match) throw new Error(`Package ${evt.package} has no provider factory export`)
+
+ evt.sdk = mod[match](
+ serviceKey
+ ? { deploymentId: process.env.AICORE_DEPLOYMENT_ID, resourceGroup: process.env.AICORE_RESOURCE_GROUP }
+ : {},
+ )
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.make("sap-ai-core")) return
+ evt.language = evt.sdk(evt.model.apiID)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/togetherai.ts b/packages/core/src/plugin/provider/togetherai.ts
new file mode 100644
index 000000000000..b1870f266253
--- /dev/null
+++ b/packages/core/src/plugin/provider/togetherai.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const TogetherAIPlugin = PluginV2.define({
+ id: PluginV2.ID.make("togetherai"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/togetherai") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/togetherai"))
+ evt.sdk = mod.createTogetherAI(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/venice.ts b/packages/core/src/plugin/provider/venice.ts
new file mode 100644
index 000000000000..8a3b950245c6
--- /dev/null
+++ b/packages/core/src/plugin/provider/venice.ts
@@ -0,0 +1,15 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+
+export const VenicePlugin = PluginV2.define({
+ id: PluginV2.ID.make("venice"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "venice-ai-sdk-provider") return
+ const mod = yield* Effect.promise(() => import("venice-ai-sdk-provider"))
+ evt.sdk = mod.createVenice(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/vercel.ts b/packages/core/src/plugin/provider/vercel.ts
new file mode 100644
index 000000000000..2108542b1655
--- /dev/null
+++ b/packages/core/src/plugin/provider/vercel.ts
@@ -0,0 +1,21 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const VercelPlugin = PluginV2.define({
+ id: PluginV2.ID.make("vercel"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("vercel")) return
+ evt.provider.options.headers["http-referer"] = "https://opencode.ai/"
+ evt.provider.options.headers["x-title"] = "opencode"
+ }),
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/vercel") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/vercel"))
+ evt.sdk = mod.createVercel(evt.options)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/xai.ts b/packages/core/src/plugin/provider/xai.ts
new file mode 100644
index 000000000000..b54aa7374c67
--- /dev/null
+++ b/packages/core/src/plugin/provider/xai.ts
@@ -0,0 +1,20 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const XAIPlugin = PluginV2.define({
+ id: PluginV2.ID.make("xai"),
+ effect: Effect.gen(function* () {
+ return {
+ "aisdk.sdk": Effect.fn(function* (evt) {
+ if (evt.package !== "@ai-sdk/xai") return
+ const mod = yield* Effect.promise(() => import("@ai-sdk/xai"))
+ evt.sdk = mod.createXai(evt.options)
+ }),
+ "aisdk.language": Effect.fn(function* (evt) {
+ if (evt.model.providerID !== ProviderV2.ID.make("xai")) return
+ evt.language = evt.sdk.responses(evt.model.apiID)
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/plugin/provider/zenmux.ts b/packages/core/src/plugin/provider/zenmux.ts
new file mode 100644
index 000000000000..6bdd42601009
--- /dev/null
+++ b/packages/core/src/plugin/provider/zenmux.ts
@@ -0,0 +1,16 @@
+import { Effect } from "effect"
+import { PluginV2 } from "../../plugin"
+import { ProviderV2 } from "../../provider"
+
+export const ZenmuxPlugin = PluginV2.define({
+ id: PluginV2.ID.make("zenmux"),
+ effect: Effect.gen(function* () {
+ return {
+ "provider.update": Effect.fn(function* (evt) {
+ if (evt.provider.id !== ProviderV2.ID.make("zenmux")) return
+ evt.provider.options.headers["HTTP-Referer"] ??= "https://opencode.ai/"
+ evt.provider.options.headers["X-Title"] ??= "opencode"
+ }),
+ }
+ }),
+})
diff --git a/packages/core/src/process.ts b/packages/core/src/process.ts
new file mode 100644
index 000000000000..f076ea4e42c8
--- /dev/null
+++ b/packages/core/src/process.ts
@@ -0,0 +1,234 @@
+import { Context, Duration, Effect, Fiber, Layer, Schema, Stream } from "effect"
+import type { PlatformError } from "effect/PlatformError"
+import { ChildProcess } from "effect/unstable/process"
+import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
+import { CrossSpawnSpawner } from "./cross-spawn-spawner"
+
+export class AppProcessError extends Schema.TaggedErrorClass()("AppProcessError", {
+ command: Schema.String,
+ exitCode: Schema.optional(Schema.Number),
+ stderr: Schema.optional(Schema.String),
+ cause: Schema.optional(Schema.Defect),
+}) {}
+
+export interface RunOptions {
+ readonly maxOutputBytes?: number
+ readonly maxErrorBytes?: number
+ readonly signal?: AbortSignal
+ readonly timeout?: Duration.Input
+ readonly stdin?: string | Uint8Array | Stream.Stream
+}
+
+export interface RunStreamOptions {
+ readonly signal?: AbortSignal
+ readonly includeStderr?: boolean
+ readonly okExitCodes?: ReadonlyArray
+ readonly maxErrorBytes?: number
+}
+
+export interface RunResult {
+ readonly command: string
+ readonly exitCode: number
+ readonly stdout: Buffer
+ readonly stderr: Buffer
+ readonly stdoutTruncated: boolean
+ readonly stderrTruncated: boolean
+}
+
+export type Interface = ChildProcessSpawner["Service"] & {
+ readonly run: (command: ChildProcess.Command, options?: RunOptions) => Effect.Effect
+ readonly runStream: (
+ command: ChildProcess.Command,
+ options?: RunStreamOptions,
+ ) => Stream.Stream
+}
+
+export class Service extends Context.Service()("@opencode/AppProcess") {}
+
+export const requireSuccess = (result: RunResult): Effect.Effect =>
+ result.exitCode === 0
+ ? Effect.succeed(result)
+ : Effect.fail(
+ new AppProcessError({
+ command: result.command,
+ exitCode: result.exitCode,
+ stderr: result.stderr.toString("utf8"),
+ }),
+ )
+
+export const requireExitIn =
+ (codes: ReadonlyArray) =>
+ (result: RunResult): Effect.Effect =>
+ codes.includes(result.exitCode)
+ ? Effect.succeed(result)
+ : Effect.fail(
+ new AppProcessError({
+ command: result.command,
+ exitCode: result.exitCode,
+ stderr: result.stderr.toString("utf8"),
+ }),
+ )
+
+const describeCommand = (command: ChildProcess.Command): string => {
+ if (command._tag === "StandardCommand") {
+ return command.args.length ? `${command.command} ${command.args.join(" ")}` : command.command
+ }
+ return `${describeCommand(command.left)} | ${describeCommand(command.right)}`
+}
+
+const wrapError = (description: string, cause: unknown): AppProcessError =>
+ cause instanceof AppProcessError ? cause : new AppProcessError({ command: description, cause })
+
+const abortError = (signal: AbortSignal): Error => {
+ const reason = signal.reason
+ if (reason instanceof Error) return reason
+ const err = new Error("Aborted")
+ err.name = "AbortError"
+ return err
+}
+
+const waitForAbort = (signal: AbortSignal) =>
+ Effect.callback((resume) => {
+ if (signal.aborted) {
+ resume(Effect.fail(abortError(signal)))
+ return
+ }
+ const onabort = () => resume(Effect.fail(abortError(signal)))
+ signal.addEventListener("abort", onabort, { once: true })
+ return Effect.sync(() => signal.removeEventListener("abort", onabort))
+ })
+
+const normalizeStdin = (
+ input: string | Uint8Array | Stream.Stream,
+): Stream.Stream =>
+ typeof input === "string"
+ ? Stream.make(new TextEncoder().encode(input))
+ : input instanceof Uint8Array
+ ? Stream.make(input)
+ : input
+
+const collectStream = (stream: Stream.Stream, maxOutputBytes: number | undefined) =>
+ Stream.runFold(
+ stream,
+ () => ({ chunks: [] as Uint8Array[], bytes: 0, truncated: false }),
+ (acc, chunk) => {
+ if (maxOutputBytes === undefined) {
+ acc.chunks.push(chunk)
+ acc.bytes += chunk.length
+ return acc
+ }
+ const remaining = maxOutputBytes - acc.bytes
+ if (remaining > 0) acc.chunks.push(remaining >= chunk.length ? chunk : chunk.slice(0, remaining))
+ acc.bytes += chunk.length
+ acc.truncated = acc.truncated || acc.bytes > maxOutputBytes
+ return acc
+ },
+ ).pipe(Effect.map((x) => ({ buffer: Buffer.concat(x.chunks), truncated: x.truncated })))
+
+export const layer = Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const spawner = yield* ChildProcessSpawner
+
+ const runCommand = (command: ChildProcess.Command, options?: RunOptions) => {
+ const description = describeCommand(command)
+ const collect = Effect.scoped(
+ Effect.gen(function* () {
+ const handle = yield* spawner.spawn(command)
+ const [stdout, stderr, exitCode] = yield* Effect.all(
+ [
+ collectStream(handle.stdout, options?.maxOutputBytes),
+ collectStream(handle.stderr, options?.maxErrorBytes),
+ handle.exitCode,
+ ],
+ { concurrency: "unbounded" },
+ )
+ return {
+ command: description,
+ exitCode,
+ stdout: stdout.buffer,
+ stderr: stderr.buffer,
+ stdoutTruncated: stdout.truncated,
+ stderrTruncated: stderr.truncated,
+ } satisfies RunResult
+ }),
+ )
+ const timed = options?.timeout
+ ? Effect.timeoutOrElse(collect, {
+ duration: options.timeout,
+ orElse: () => Effect.fail(new AppProcessError({ command: description, cause: new Error("Timed out") })),
+ })
+ : collect
+ const aborted = options?.signal
+ ? timed.pipe(
+ Effect.raceFirst(
+ waitForAbort(options.signal).pipe(Effect.mapError((cause) => wrapError(description, cause))),
+ ),
+ )
+ : timed
+ return aborted.pipe(Effect.catch((cause) => Effect.fail(wrapError(description, cause))))
+ }
+
+ const run = Effect.fn("AppProcess.run")(function* (command: ChildProcess.Command, options?: RunOptions) {
+ if (options?.stdin === undefined) return yield* runCommand(command, options)
+ if (command._tag !== "StandardCommand") {
+ return yield* new AppProcessError({
+ command: describeCommand(command),
+ cause: new Error("stdin option only supports StandardCommand; received PipedCommand"),
+ })
+ }
+ const next = ChildProcess.make(command.command, command.args, {
+ ...command.options,
+ stdin: normalizeStdin(options.stdin),
+ })
+ return yield* runCommand(next, options)
+ })
+
+ const runStream = (
+ command: ChildProcess.Command,
+ options?: RunStreamOptions,
+ ): Stream.Stream => {
+ const description = describeCommand(command)
+ const okExitCodes = options?.okExitCodes
+ const built: Stream.Stream = Stream.unwrap(
+ Effect.gen(function* () {
+ const handle = yield* spawner.spawn(command)
+ const stderrFiber = yield* Effect.forkScoped(
+ collectStream(handle.stderr, options?.maxErrorBytes).pipe(Effect.map((x) => x.buffer.toString("utf8"))),
+ )
+ const source = options?.includeStderr === true ? handle.all : handle.stdout
+ const lines = source.pipe(
+ Stream.decodeText,
+ Stream.splitLines,
+ Stream.filter((line) => line.length > 0),
+ )
+ const tail = Stream.unwrap(
+ Effect.gen(function* () {
+ const code = yield* handle.exitCode
+ if (okExitCodes && okExitCodes.length > 0 && !okExitCodes.includes(code)) {
+ const stderr = yield* Fiber.join(stderrFiber)
+ return Stream.fail(new AppProcessError({ command: description, exitCode: code, stderr }))
+ }
+ return Stream.empty
+ }),
+ )
+ return Stream.concat(lines, tail) as Stream.Stream
+ }),
+ )
+ const mapped = built.pipe(
+ Stream.catch((cause): Stream.Stream => Stream.fail(wrapError(description, cause))),
+ )
+ if (!options?.signal) return mapped
+ const signal = options.signal
+ return mapped.pipe(
+ Stream.interruptWhen(waitForAbort(signal).pipe(Effect.mapError((cause) => wrapError(description, cause)))),
+ )
+ }
+
+ return Service.of({ ...spawner, run, runStream })
+ }),
+)
+
+export const defaultLayer = layer.pipe(Layer.provide(CrossSpawnSpawner.defaultLayer))
+
+export * as AppProcess from "./process"
diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts
new file mode 100644
index 000000000000..7c1c9666542e
--- /dev/null
+++ b/packages/core/src/provider.ts
@@ -0,0 +1,120 @@
+export * as ProviderV2 from "./provider"
+
+import { withStatics } from "./schema"
+import { Schema } from "effect"
+
+export const ID = Schema.String.pipe(
+ Schema.brand("ProviderV2.ID"),
+ withStatics((schema) => ({
+ // Well-known providers
+ opencode: schema.make("opencode"),
+ anthropic: schema.make("anthropic"),
+ openai: schema.make("openai"),
+ google: schema.make("google"),
+ googleVertex: schema.make("google-vertex"),
+ githubCopilot: schema.make("github-copilot"),
+ amazonBedrock: schema.make("amazon-bedrock"),
+ azure: schema.make("azure"),
+ openrouter: schema.make("openrouter"),
+ mistral: schema.make("mistral"),
+ gitlab: schema.make("gitlab"),
+ })),
+)
+export type ID = typeof ID.Type
+
+const OpenAIResponses = Schema.Struct({
+ type: Schema.Literal("openai/responses"),
+ url: Schema.String,
+ websocket: Schema.optional(Schema.Boolean),
+})
+
+const OpenAICompletions = Schema.Struct({
+ type: Schema.Literal("openai/completions"),
+ url: Schema.String,
+ reasoning: Schema.Union([
+ Schema.Struct({
+ type: Schema.Literal("reasoning_content"),
+ }),
+ Schema.Struct({
+ type: Schema.Literal("reasoning_details"),
+ }),
+ ]).pipe(Schema.optional),
+})
+export type OpenAICompletions = typeof OpenAICompletions.Type
+
+const AISDK = Schema.Struct({
+ type: Schema.Literal("aisdk"),
+ package: Schema.String,
+ url: Schema.String.pipe(Schema.optional),
+})
+
+const AnthropicMessages = Schema.Struct({
+ type: Schema.Literal("anthropic/messages"),
+ url: Schema.String,
+})
+
+const UnknownEndpoint = Schema.Struct({
+ type: Schema.Literal("unknown"),
+})
+
+export const Endpoint = Schema.Union([
+ UnknownEndpoint,
+ OpenAIResponses,
+ OpenAICompletions,
+ AnthropicMessages,
+ AISDK,
+]).pipe(Schema.toTaggedUnion("type"))
+export type Endpoint = typeof Endpoint.Type
+
+export const Options = Schema.Struct({
+ headers: Schema.Record(Schema.String, Schema.String),
+ body: Schema.Record(Schema.String, Schema.Any),
+ aisdk: Schema.Struct({
+ provider: Schema.Record(Schema.String, Schema.Any),
+ request: Schema.Record(Schema.String, Schema.Any),
+ }),
+})
+export type Options = typeof Options.Type
+
+export class Info extends Schema.Class("ProviderV2.Info")({
+ id: ID,
+ name: Schema.String,
+ enabled: Schema.Union([
+ Schema.Literal(false),
+ Schema.Struct({
+ via: Schema.Literal("env"),
+ name: Schema.String,
+ }),
+ Schema.Struct({
+ via: Schema.Literal("auth"),
+ service: Schema.String,
+ }),
+ Schema.Struct({
+ via: Schema.Literal("custom"),
+ data: Schema.Record(Schema.String, Schema.Any),
+ }),
+ ]),
+ env: Schema.String.pipe(Schema.Array),
+ endpoint: Endpoint,
+ options: Options,
+}) {
+ static empty(providerID: ID) {
+ return new Info({
+ id: providerID,
+ name: providerID,
+ enabled: false,
+ env: [],
+ endpoint: {
+ type: "unknown",
+ },
+ options: {
+ headers: {},
+ body: {},
+ aisdk: {
+ provider: {},
+ request: {},
+ },
+ },
+ })
+ }
+}
diff --git a/packages/core/src/schema.ts b/packages/core/src/schema.ts
index 2a6c02349fbb..5b4042c7369f 100644
--- a/packages/core/src/schema.ts
+++ b/packages/core/src/schema.ts
@@ -1,5 +1,4 @@
import { Option, Schema, SchemaGetter } from "effect"
-import { zod, ZodOverride } from "./effect-zod"
/**
* Integer greater than zero.
@@ -21,7 +20,6 @@ export const optionalOmitUndefined = (schema: S) =>
decode: SchemaGetter.passthrough({ strict: false }),
encode: SchemaGetter.transformOptional(Option.filter((value) => value !== undefined)),
}),
- Schema.annotate({ [ZodOverride]: zod(schema).optional() }),
)
/**
diff --git a/packages/opencode/src/v2/session-event.ts b/packages/core/src/session-event.ts
similarity index 72%
rename from packages/opencode/src/v2/session-event.ts
rename to packages/core/src/session-event.ts
index fa211bd8c4ed..a98d9cc05144 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 { 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 { Schema } from "effect"
-export { FileAttachment }
import { ToolOutput } from "./tool-output"
-import { V2Schema } from "./schema"
-import { Modelv2 } from "./model"
+import { V2Schema } from "./v2-schema"
+
+export { FileAttachment }
export const Source = Schema.Struct({
start: NonNegativeInt,
@@ -15,104 +16,106 @@ 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,
+ 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,
- model: Modelv2.Ref,
+ model: ModelV2.Ref,
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 89%
rename from packages/opencode/src/v2/session-message.ts
rename to packages/core/src/session-message.ts
index 62fc75fc8386..73b6dd7da2b9 100644
--- a/packages/opencode/src/v2/session-message.ts
+++ b/packages/core/src/session-message.ts
@@ -3,8 +3,8 @@ import { Prompt } from "./session-prompt"
import { SessionEvent } from "./session-event"
import { EventV2 } from "./event"
import { ToolOutput } from "./tool-output"
-import { V2Schema } from "./schema"
-import { Modelv2 } from "./model"
+import { V2Schema } from "./v2-schema"
+import { ModelV2 } from "./model"
export const ID = EventV2.ID
export type ID = Schema.Schema.Type
@@ -20,13 +20,13 @@ 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")({
...Base,
type: Schema.Literal("model-switched"),
- model: Modelv2.Ref,
+ model: ModelV2.Ref,
}) {}
export class User extends Schema.Class("Session.Message.User")({
@@ -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/opencode/src/v2/session-prompt.ts b/packages/core/src/session-prompt.ts
similarity index 100%
rename from packages/opencode/src/v2/session-prompt.ts
rename to packages/core/src/session-prompt.ts
diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts
new file mode 100644
index 000000000000..756531e32809
--- /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/opencode/src/v2/tool-output.ts b/packages/core/src/tool-output.ts
similarity index 100%
rename from packages/opencode/src/v2/tool-output.ts
rename to packages/core/src/tool-output.ts
diff --git a/packages/core/src/util/error.ts b/packages/core/src/util/error.ts
index 9d3b7c661a3e..7338571f298e 100644
--- a/packages/core/src/util/error.ts
+++ b/packages/core/src/util/error.ts
@@ -1,8 +1,8 @@
-import z from "zod"
+import { Schema } from "effect"
export abstract class NamedError extends Error {
- abstract schema(): z.core.$ZodType
- abstract toObject(): { name: string; data: any }
+ abstract schema(): Schema.Top
+ abstract toObject(): { name: string; data: unknown }
static hasName(error: unknown, name: string): boolean {
return (
@@ -10,30 +10,42 @@ export abstract class NamedError extends Error {
)
}
- static create(name: Name, data: Data) {
- const schema = z
- .object({
- name: z.literal(name),
- data,
- })
- .meta({
- ref: name,
- })
+ static create(
+ name: Name,
+ fields: Fields,
+ ): ReturnType>>
+ static create(
+ name: Name,
+ data: DataSchema,
+ ): ReturnType>
+ static create(name: Name, data: Schema.Top | Schema.Struct.Fields) {
+ return NamedError.createSchemaClass(name, Schema.isSchema(data) ? data : Schema.Struct(data))
+ }
+
+ private static createSchemaClass(name: Name, data: DataSchema) {
+ const schema = Schema.Struct({
+ name: Schema.Literal(name),
+ data,
+ }).annotate({ identifier: name })
+ type Data = Schema.Schema.Type
+
const result = class extends NamedError {
public static readonly Schema = schema
+ public static readonly EffectSchema = schema
+ public static readonly tag = name
- public override readonly name = name as Name
+ public override readonly name = name
constructor(
- public readonly data: z.input,
+ public readonly data: Data,
options?: ErrorOptions,
) {
super(name, options)
this.name = name
}
- static isInstance(input: any): input is InstanceType {
- return typeof input === "object" && "name" in input && input.name === name
+ static isInstance(input: unknown): input is InstanceType {
+ return NamedError.hasName(input, name)
}
schema() {
@@ -51,10 +63,7 @@ export abstract class NamedError extends Error {
return result
}
- public static readonly Unknown = NamedError.create(
- "UnknownError",
- z.object({
- message: z.string(),
- }),
- )
+ public static readonly Unknown = NamedError.create("UnknownError", {
+ message: Schema.String,
+ })
}
diff --git a/packages/core/src/util/fn.ts b/packages/core/src/util/fn.ts
deleted file mode 100644
index 9efe4622fcdb..000000000000
--- a/packages/core/src/util/fn.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { z } from "zod"
-
-export function fn(schema: T, cb: (input: z.infer) => Result) {
- const result = (input: z.infer) => {
- const parsed = schema.parse(input)
- return cb(parsed)
- }
- result.force = (input: z.infer) => cb(input)
- result.schema = schema
- return result
-}
diff --git a/packages/core/src/util/log.ts b/packages/core/src/util/log.ts
index e1962aed4ca9..3b5249cdc3e8 100644
--- a/packages/core/src/util/log.ts
+++ b/packages/core/src/util/log.ts
@@ -4,11 +4,14 @@ import path from "path"
import fs from "fs/promises"
import { createWriteStream } from "fs"
import * as Global from "../global"
-import z from "zod"
+import { Schema } from "effect"
import { Glob } from "./glob"
-export const Level = z.enum(["DEBUG", "INFO", "WARN", "ERROR"]).meta({ ref: "LogLevel", description: "Log level" })
-export type Level = z.infer
+export const Level = Schema.Literals(["DEBUG", "INFO", "WARN", "ERROR"]).annotate({
+ identifier: "LogLevel",
+ description: "Log level",
+})
+export type Level = Schema.Schema.Type
const levelPriority: Record = {
DEBUG: 0,
@@ -17,6 +20,7 @@ const levelPriority: Record = {
ERROR: 3,
}
const keep = 10
+const initializedRunID = "OPENCODE_LOG_INITIALIZED_RUN_ID"
let level: Level = "INFO"
@@ -67,7 +71,10 @@ export async function init(options: Options) {
Global.Path.log,
options.dev ? "dev.log" : new Date().toISOString().split(".")[0].replace(/:/g, "") + ".log",
)
- await fs.truncate(logpath).catch(() => {})
+ const runID = process.env.OPENCODE_RUN_ID
+ const shouldTruncate = !options.dev || !runID || process.env[initializedRunID] !== runID
+ if (shouldTruncate) await fs.truncate(logpath).catch(() => {})
+ if (options.dev && runID) process.env[initializedRunID] = runID
const stream = createWriteStream(logpath, { flags: "a" })
write = async (msg: any) => {
return new Promise((resolve, reject) => {
diff --git a/packages/opencode/src/v2/schema.ts b/packages/core/src/v2-schema.ts
similarity index 88%
rename from packages/opencode/src/v2/schema.ts
rename to packages/core/src/v2-schema.ts
index 44587b838a43..a34b0b151690 100644
--- a/packages/opencode/src/v2/schema.ts
+++ b/packages/core/src/v2-schema.ts
@@ -7,4 +7,4 @@ export const DateTimeUtcFromMillis = Schema.Finite.pipe(
}),
)
-export * as V2Schema from "./schema"
+export * as V2Schema from "./v2-schema"
diff --git a/packages/core/test/catalog.test.ts b/packages/core/test/catalog.test.ts
new file mode 100644
index 000000000000..594f42d1c8b5
--- /dev/null
+++ b/packages/core/test/catalog.test.ts
@@ -0,0 +1,233 @@
+import { describe, expect } from "bun:test"
+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"
+
+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", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const providerID = ProviderV2.ID.make("test")
+
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.endpoint = {
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://default.example.com",
+ }
+ provider.options.aisdk.provider.baseURL = "https://override.example.com"
+ })
+
+ const provider = yield* catalog.provider.get(providerID)
+
+ expect(provider.endpoint).toEqual({
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://override.example.com",
+ })
+ expect(provider.options.aisdk.provider.baseURL).toBeUndefined()
+ }),
+ )
+
+ it.effect("normalizes model baseURL into endpoint url", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const providerID = ProviderV2.ID.make("test")
+ const modelID = ModelV2.ID.make("model")
+
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.endpoint = {
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://provider.example.com",
+ }
+ })
+ yield* catalog.model.update(providerID, modelID, (model) => {
+ model.endpoint = {
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://model.example.com",
+ }
+ model.options.aisdk.provider.baseURL = "https://override.example.com"
+ })
+
+ const model = yield* catalog.model.get(providerID, modelID)
+
+ expect(model.endpoint).toEqual({
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://override.example.com",
+ })
+ expect(model.options.aisdk.provider.baseURL).toBeUndefined()
+ }),
+ )
+
+ 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
+ const providerID = ProviderV2.ID.make("test")
+ const modelID = ModelV2.ID.make("model")
+
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.endpoint = {
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://provider.example.com",
+ }
+ })
+ yield* catalog.model.update(providerID, modelID, () => {})
+
+ const model = yield* catalog.model.get(providerID, modelID)
+
+ expect(model.endpoint).toEqual({
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ url: "https://provider.example.com",
+ })
+ }),
+ )
+
+ it.effect("runs provider hooks after baseURL is normalized", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const plugin = yield* PluginV2.Service
+ const providerID = ProviderV2.ID.make("test")
+ const seen: unknown[] = []
+
+ yield* plugin.add({
+ id: PluginV2.ID.make("test"),
+ effect: Effect.succeed({
+ "provider.update": (evt) =>
+ Effect.sync(() => {
+ seen.push(evt.provider.endpoint.type)
+ if (evt.provider.endpoint.type === "aisdk") seen.push(evt.provider.endpoint.url)
+ seen.push(evt.provider.options.aisdk.provider.baseURL)
+ }),
+ }),
+ })
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.endpoint = {
+ type: "aisdk",
+ package: "@ai-sdk/openai-compatible",
+ }
+ provider.options.aisdk.provider.baseURL = "https://provider.example.com"
+ })
+
+ expect(seen).toEqual(["aisdk", "https://provider.example.com", undefined])
+ }),
+ )
+
+ it.effect("resolves provider and model option merges", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const providerID = ProviderV2.ID.make("test")
+ const modelID = ModelV2.ID.make("model")
+
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.options.headers.provider = "provider"
+ provider.options.headers.shared = "provider"
+ provider.options.body.provider = true
+ provider.options.aisdk.provider.provider = true
+ })
+ yield* catalog.model.update(providerID, modelID, (model) => {
+ model.options.headers.model = "model"
+ model.options.headers.shared = "model"
+ model.options.body.model = true
+ model.options.aisdk.provider.model = true
+ model.options.aisdk.request.request = true
+ })
+
+ const model = yield* catalog.model.get(providerID, modelID)
+
+ expect(model.options.headers).toEqual({ provider: "provider", shared: "model", model: "model" })
+ expect(model.options.body).toEqual({ provider: true, model: true })
+ expect(model.options.aisdk.provider).toEqual({ provider: true, model: true })
+ expect(model.options.aisdk.request).toEqual({ request: true })
+ }),
+ )
+
+ it.effect("falls back to newest available model when no default is configured", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const providerID = ProviderV2.ID.make("test")
+
+ yield* catalog.provider.update(providerID, (provider) => {
+ provider.enabled = { via: "custom", data: {} }
+ })
+ yield* catalog.model.update(providerID, ModelV2.ID.make("old"), (model) => {
+ model.time.released = DateTime.makeUnsafe(1000)
+ })
+ yield* catalog.model.update(providerID, ModelV2.ID.make("new"), (model) => {
+ model.time.released = DateTime.makeUnsafe(2000)
+ })
+
+ const model = yield* catalog.model.default()
+
+ expect(Option.getOrUndefined(model)?.id).toMatch("new")
+ }),
+ )
+
+ it.effect("small model prefers small keyword candidates before cost scoring", () =>
+ Effect.gen(function* () {
+ const catalog = yield* Catalog.Service
+ const providerID = ProviderV2.ID.make("test")
+
+ yield* catalog.provider.update(providerID, () => {})
+ yield* catalog.model.update(providerID, ModelV2.ID.make("cheap-large"), (model) => {
+ model.capabilities.input = ["text"]
+ model.capabilities.output = ["text"]
+ model.cost = [{ input: 1, output: 1, cache: { read: 0, write: 0 } }]
+ model.time.released = DateTime.makeUnsafe(Date.now())
+ })
+ yield* catalog.model.update(providerID, ModelV2.ID.make("expensive-mini"), (model) => {
+ model.capabilities.input = ["text"]
+ model.capabilities.output = ["text"]
+ model.cost = [{ input: 10, output: 10, cache: { read: 0, write: 0 } }]
+ model.time.released = DateTime.makeUnsafe(Date.now())
+ })
+
+ const model = yield* catalog.model.small(providerID)
+
+ expect(Option.getOrUndefined(model)?.id).toMatch("expensive-mini")
+ }),
+ )
+})
diff --git a/packages/core/test/event.test.ts b/packages/core/test/event.test.ts
new file mode 100644
index 000000000000..b67b2897a1b0
--- /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/copilot/convert-to-copilot-messages.test.ts b/packages/core/test/github-copilot/convert-to-copilot-messages.test.ts
similarity index 99%
rename from packages/opencode/test/provider/copilot/convert-to-copilot-messages.test.ts
rename to packages/core/test/github-copilot/convert-to-copilot-messages.test.ts
index 6f874db6d2e9..65f4b6a5369c 100644
--- a/packages/opencode/test/provider/copilot/convert-to-copilot-messages.test.ts
+++ b/packages/core/test/github-copilot/convert-to-copilot-messages.test.ts
@@ -1,4 +1,4 @@
-import { convertToOpenAICompatibleChatMessages as convertToCopilotMessages } from "@/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages"
+import { convertToOpenAICompatibleChatMessages as convertToCopilotMessages } from "@opencode-ai/core/github-copilot/chat/convert-to-openai-compatible-chat-messages"
import { describe, test, expect } from "bun:test"
describe("system messages", () => {
diff --git a/packages/opencode/test/provider/copilot/copilot-chat-model.test.ts b/packages/core/test/github-copilot/copilot-chat-model.test.ts
similarity index 99%
rename from packages/opencode/test/provider/copilot/copilot-chat-model.test.ts
rename to packages/core/test/github-copilot/copilot-chat-model.test.ts
index 389a72bb377b..bc1e2ecd956e 100644
--- a/packages/opencode/test/provider/copilot/copilot-chat-model.test.ts
+++ b/packages/core/test/github-copilot/copilot-chat-model.test.ts
@@ -1,4 +1,4 @@
-import { OpenAICompatibleChatLanguageModel } from "@/provider/sdk/copilot/chat/openai-compatible-chat-language-model"
+import { OpenAICompatibleChatLanguageModel } from "@opencode-ai/core/github-copilot/chat/openai-compatible-chat-language-model"
import { describe, test, expect, mock } from "bun:test"
import type { LanguageModelV3Prompt } from "@ai-sdk/provider"
diff --git a/packages/opencode/test/provider/models.test.ts b/packages/core/test/models.test.ts
similarity index 93%
rename from packages/opencode/test/provider/models.test.ts
rename to packages/core/test/models.test.ts
index 7ccf126a9caa..0ade327a5307 100644
--- a/packages/opencode/test/provider/models.test.ts
+++ b/packages/core/test/models.test.ts
@@ -4,8 +4,8 @@ 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"
@@ -70,13 +70,16 @@ const fixture2: Record = {
interface MockState {
body: string
status: number
- calls: Array<{ url: string }>
+ calls: Array<{ url: string; userAgent: string | null }>
}
const makeMockClient = (state: Ref.Ref) =>
HttpClient.make((request) =>
Effect.gen(function* () {
- yield* Ref.update(state, (s) => ({ ...s, calls: [...s.calls, { url: request.url }] }))
+ yield* Ref.update(state, (s) => ({
+ ...s,
+ calls: [...s.calls, { url: request.url, userAgent: request.headers["user-agent"] ?? null }],
+ }))
const s = yield* Ref.get(state)
return HttpClientResponse.fromWeb(request, new Response(s.body, { status: s.status }))
}),
@@ -133,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([])
}),
@@ -202,6 +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("/cli")
}),
)
@@ -251,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/plugin/fixtures/provider-factory.ts b/packages/core/test/plugin/fixtures/provider-factory.ts
new file mode 100644
index 000000000000..7278c231dd54
--- /dev/null
+++ b/packages/core/test/plugin/fixtures/provider-factory.ts
@@ -0,0 +1,9 @@
+export function createFixtureProvider(options: Record) {
+ const captured = Object.fromEntries(Object.entries(options))
+ return Object.assign((modelID: string) => ({ modelID, options: captured }), {
+ options: captured,
+ languageModel(modelID: string) {
+ return { modelID, options: captured }
+ },
+ })
+}
diff --git a/packages/core/test/plugin/provider-alibaba.test.ts b/packages/core/test/plugin/provider-alibaba.test.ts
new file mode 100644
index 000000000000..06e6f969fdc6
--- /dev/null
+++ b/packages/core/test/plugin/provider-alibaba.test.ts
@@ -0,0 +1,67 @@
+import { describe, expect } from "bun:test"
+import { createAlibaba } from "@ai-sdk/alibaba"
+import { Effect } from "effect"
+import { ModelV2 } from "@opencode-ai/core/model"
+import { PluginV2 } from "@opencode-ai/core/plugin"
+import { AlibabaPlugin } from "@opencode-ai/core/plugin/provider/alibaba"
+import { it, model } from "./provider-helper"
+
+describe("AlibabaPlugin", () => {
+ it.effect("creates an Alibaba SDK for @ai-sdk/alibaba", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AlibabaPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ { model: model("alibaba", "qwen"), package: "@ai-sdk/alibaba", options: { name: "alibaba" } },
+ {},
+ )
+ expect(result.sdk).toBeDefined()
+ }),
+ )
+
+ it.effect("ignores non-Alibaba SDK packages", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AlibabaPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ { model: model("alibaba", "qwen"), package: "@ai-sdk/openai-compatible", options: { name: "alibaba" } },
+ {},
+ )
+ expect(result.sdk).toBeUndefined()
+ }),
+ )
+
+ it.effect("matches the old bundled Alibaba SDK provider naming", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AlibabaPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("custom-alibaba", "qwen"),
+ package: "@ai-sdk/alibaba",
+ options: { name: "custom-alibaba", apiKey: "test" },
+ },
+ {},
+ )
+ const expected = createAlibaba({ apiKey: "test", ...{ name: "custom-alibaba" } }).languageModel("qwen")
+ const actual = result.sdk?.languageModel("qwen")
+ expect(actual?.provider).toBe(expected.provider)
+ expect(actual?.modelId).toBe(expected.modelId)
+ }),
+ )
+
+ it.effect("uses the old default languageModel(apiID) behavior", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AlibabaPlugin)
+ const item = model("alibaba", "alias", { apiID: ModelV2.ID.make("qwen-plus") })
+ const result = yield* plugin.trigger("aisdk.sdk", { model: item, package: "@ai-sdk/alibaba", options: {} }, {})
+ const language = result.sdk?.languageModel(item.apiID)
+ expect(language?.modelId).toBe("qwen-plus")
+ expect(language?.provider).toBe("alibaba.chat")
+ }),
+ )
+})
diff --git a/packages/core/test/plugin/provider-amazon-bedrock.test.ts b/packages/core/test/plugin/provider-amazon-bedrock.test.ts
new file mode 100644
index 000000000000..c70ada08d94d
--- /dev/null
+++ b/packages/core/test/plugin/provider-amazon-bedrock.test.ts
@@ -0,0 +1,465 @@
+import { describe, expect } from "bun:test"
+import { Effect } from "effect"
+import { PluginV2 } from "@opencode-ai/core/plugin"
+import { AmazonBedrockPlugin } from "@opencode-ai/core/plugin/provider/amazon-bedrock"
+import { fakeSelectorSdk, it, model, provider, withEnv } from "./provider-helper"
+
+function bedrockBaseURL(sdk: unknown, modelID = "anthropic.claude-sonnet-4-5") {
+ const language = (sdk as { languageModel: (id: string) => unknown }).languageModel(modelID)
+ return (language as { config: { baseUrl: () => string } }).config.baseUrl()
+}
+
+function bedrockFetch(sdk: unknown, modelID = "anthropic.claude-sonnet-4-5") {
+ const language = (sdk as { languageModel: (id: string) => unknown }).languageModel(modelID)
+ return (
+ language as { config: { fetch: (input: Parameters[0], init?: RequestInit) => Promise } }
+ ).config.fetch
+}
+
+describe("AmazonBedrockPlugin", () => {
+ it.effect("moves endpoint option to endpoint URL", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("amazon-bedrock", {
+ options: {
+ headers: {},
+ body: {},
+ aisdk: { provider: { endpoint: "https://bedrock.example" }, request: {} },
+ },
+ }),
+ cancel: false,
+ },
+ )
+ expect(result.provider.endpoint).toEqual({
+ type: "aisdk",
+ package: "test-provider",
+ url: "https://bedrock.example",
+ })
+ expect(result.provider.options.aisdk.provider.endpoint).toBeUndefined()
+ }),
+ )
+
+ it.effect("prefers endpoint over baseURL for SDK base URL", () =>
+ withEnv({ AWS_BEARER_TOKEN_BEDROCK: undefined, AWS_PROFILE: undefined, AWS_ACCESS_KEY_ID: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: {
+ name: "amazon-bedrock",
+ bearerToken: "token",
+ baseURL: "https://base.example",
+ endpoint: "https://endpoint.example",
+ region: "us-east-1",
+ },
+ },
+ {},
+ )
+ expect(bedrockBaseURL(result.sdk)).toBe("https://endpoint.example")
+ }),
+ ),
+ )
+
+ it.effect("uses baseURL as SDK base URL", () =>
+ withEnv({ AWS_BEARER_TOKEN_BEDROCK: undefined, AWS_PROFILE: undefined, AWS_ACCESS_KEY_ID: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: {
+ name: "amazon-bedrock",
+ bearerToken: "token",
+ baseURL: "https://base.example",
+ region: "us-east-1",
+ },
+ },
+ {},
+ )
+ expect(bedrockBaseURL(result.sdk)).toBe("https://base.example")
+ }),
+ ),
+ )
+
+ it.effect("creates SDK without explicit credential env so the default AWS chain can resolve credentials", () =>
+ withEnv(
+ {
+ AWS_ACCESS_KEY_ID: undefined,
+ AWS_BEARER_TOKEN_BEDROCK: undefined,
+ AWS_CONTAINER_CREDENTIALS_FULL_URI: undefined,
+ AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: undefined,
+ AWS_PROFILE: undefined,
+ AWS_REGION: undefined,
+ AWS_WEB_IDENTITY_TOKEN_FILE: undefined,
+ },
+ () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: { name: "amazon-bedrock" },
+ },
+ {},
+ )
+ expect(result.sdk).toBeDefined()
+ expect(bedrockBaseURL(result.sdk)).toBe("https://bedrock-runtime.us-east-1.amazonaws.com")
+ }),
+ ),
+ )
+
+ it.effect("uses config region over AWS_REGION for SDK base URL", () =>
+ withEnv({ AWS_BEARER_TOKEN_BEDROCK: "token", AWS_REGION: "us-east-1" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: { name: "amazon-bedrock", region: "eu-west-1" },
+ },
+ {},
+ )
+ expect(bedrockBaseURL(result.sdk)).toBe("https://bedrock-runtime.eu-west-1.amazonaws.com")
+ }),
+ ),
+ )
+
+ it.effect("uses AWS_REGION for SDK base URL when config region is absent", () =>
+ withEnv({ AWS_BEARER_TOKEN_BEDROCK: "token", AWS_REGION: "eu-west-1" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: { name: "amazon-bedrock" },
+ },
+ {},
+ )
+ expect(bedrockBaseURL(result.sdk)).toBe("https://bedrock-runtime.eu-west-1.amazonaws.com")
+ }),
+ ),
+ )
+
+ it.effect("defaults SDK region to us-east-1", () =>
+ withEnv({ AWS_BEARER_TOKEN_BEDROCK: "token", AWS_REGION: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: { name: "amazon-bedrock" },
+ },
+ {},
+ )
+ expect(bedrockBaseURL(result.sdk)).toBe("https://bedrock-runtime.us-east-1.amazonaws.com")
+ }),
+ ),
+ )
+
+ it.effect("loads bearer token option into env and uses bearer auth", () =>
+ withEnv({ AWS_ACCESS_KEY_ID: undefined, AWS_BEARER_TOKEN_BEDROCK: undefined, AWS_PROFILE: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const headers: Array = []
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: {
+ name: "amazon-bedrock",
+ bearerToken: "option-token",
+ fetch: async (_input: Parameters[0], init?: RequestInit) => {
+ headers.push(new Headers(init?.headers).get("Authorization"))
+ return new Response("{}")
+ },
+ },
+ },
+ {},
+ )
+ yield* Effect.promise(() => bedrockFetch(result.sdk)("https://bedrock.example", { method: "POST" }))
+ expect(process.env.AWS_BEARER_TOKEN_BEDROCK).toBe("option-token")
+ expect(headers).toEqual(["Bearer option-token"])
+ }),
+ ),
+ )
+
+ it.effect("prefers bearer token env over bearer token option", () =>
+ withEnv({ AWS_BEARER_TOKEN_BEDROCK: "env-token" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const headers: Array = []
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: {
+ name: "amazon-bedrock",
+ bearerToken: "option-token",
+ fetch: async (_input: Parameters[0], init?: RequestInit) => {
+ headers.push(new Headers(init?.headers).get("Authorization"))
+ return new Response("{}")
+ },
+ },
+ },
+ {},
+ )
+ yield* Effect.promise(() => bedrockFetch(result.sdk)("https://bedrock.example", { method: "POST" }))
+ expect(process.env.AWS_BEARER_TOKEN_BEDROCK).toBe("env-token")
+ expect(headers).toEqual(["Bearer env-token"])
+ }),
+ ),
+ )
+
+ it.effect("uses SigV4 credential env when bearer token is absent", () =>
+ withEnv(
+ {
+ AWS_ACCESS_KEY_ID: "test-access-key",
+ AWS_BEARER_TOKEN_BEDROCK: undefined,
+ AWS_REGION: "us-east-1",
+ AWS_SECRET_ACCESS_KEY: "test-secret-key",
+ AWS_SESSION_TOKEN: "test-session-token",
+ },
+ () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const headers: Array = []
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ package: "@ai-sdk/amazon-bedrock",
+ options: {
+ name: "amazon-bedrock",
+ fetch: async (_input: Parameters[0], init?: RequestInit) => {
+ headers.push(new Headers(init?.headers).get("Authorization"))
+ return new Response("{}")
+ },
+ },
+ },
+ {},
+ )
+ yield* Effect.promise(() =>
+ bedrockFetch(result.sdk)("https://bedrock-runtime.us-east-1.amazonaws.com/model/test/invoke", {
+ body: "{}",
+ method: "POST",
+ }),
+ )
+ expect(headers[0]?.startsWith("AWS4-HMAC-SHA256 ")).toBe(true)
+ }),
+ ),
+ )
+
+ it.effect("applies legacy cross-region inference prefixes", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AmazonBedrockPlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: {},
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: { region: "eu-west-1" },
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", "global.anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: { region: "eu-west-1" },
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: { region: "ap-northeast-1" },
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: { region: "ap-southeast-2" },
+ },
+ {},
+ )
+ expect(calls).toEqual([
+ "languageModel:us.anthropic.claude-sonnet-4-5",
+ "languageModel:eu.anthropic.claude-sonnet-4-5",
+ "languageModel:global.anthropic.claude-sonnet-4-5",
+ "languageModel:jp.anthropic.claude-sonnet-4-5",
+ "languageModel:au.anthropic.claude-sonnet-4-5",
+ ])
+ }),
+ )
+
+ it.effect("uses AWS_REGION for language prefixes when region option is absent", () =>
+ withEnv({ AWS_REGION: "eu-west-1" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AmazonBedrockPlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", "anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: {},
+ },
+ {},
+ )
+ expect(calls).toEqual(["languageModel:eu.anthropic.claude-sonnet-4-5"])
+ }),
+ ),
+ )
+
+ it.effect("applies the full legacy cross-region prefix matrix", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ const cases = [
+ { region: "us-east-1", modelID: "amazon.nova-micro-v1:0", expected: "us.amazon.nova-micro-v1:0" },
+ { region: "us-east-1", modelID: "amazon.nova-lite-v1:0", expected: "us.amazon.nova-lite-v1:0" },
+ { region: "us-east-1", modelID: "amazon.nova-pro-v1:0", expected: "us.amazon.nova-pro-v1:0" },
+ { region: "us-east-1", modelID: "amazon.nova-premier-v1:0", expected: "us.amazon.nova-premier-v1:0" },
+ { region: "us-east-1", modelID: "amazon.nova-2-lite-v1:0", expected: "us.amazon.nova-2-lite-v1:0" },
+ { region: "us-east-1", modelID: "anthropic.claude-sonnet-4-5", expected: "us.anthropic.claude-sonnet-4-5" },
+ { region: "us-east-1", modelID: "deepseek.r1-v1:0", expected: "us.deepseek.r1-v1:0" },
+ { region: "us-gov-west-1", modelID: "anthropic.claude-sonnet-4-5", expected: "anthropic.claude-sonnet-4-5" },
+ { region: "us-east-1", modelID: "cohere.command-r-plus-v1:0", expected: "cohere.command-r-plus-v1:0" },
+ { region: "eu-west-1", modelID: "anthropic.claude-sonnet-4-5", expected: "eu.anthropic.claude-sonnet-4-5" },
+ { region: "eu-west-2", modelID: "amazon.nova-lite-v1:0", expected: "eu.amazon.nova-lite-v1:0" },
+ { region: "eu-west-3", modelID: "amazon.nova-micro-v1:0", expected: "eu.amazon.nova-micro-v1:0" },
+ {
+ region: "eu-north-1",
+ modelID: "meta.llama3-70b-instruct-v1:0",
+ expected: "eu.meta.llama3-70b-instruct-v1:0",
+ },
+ { region: "eu-central-1", modelID: "mistral.pixtral-large-v1:0", expected: "eu.mistral.pixtral-large-v1:0" },
+ { region: "eu-south-1", modelID: "anthropic.claude-sonnet-4-5", expected: "eu.anthropic.claude-sonnet-4-5" },
+ { region: "eu-south-2", modelID: "anthropic.claude-sonnet-4-5", expected: "eu.anthropic.claude-sonnet-4-5" },
+ { region: "eu-central-2", modelID: "anthropic.claude-sonnet-4-5", expected: "anthropic.claude-sonnet-4-5" },
+ { region: "eu-west-1", modelID: "cohere.command-r-plus-v1:0", expected: "cohere.command-r-plus-v1:0" },
+ {
+ region: "ap-southeast-2",
+ modelID: "anthropic.claude-sonnet-4-5",
+ expected: "au.anthropic.claude-sonnet-4-5",
+ },
+ {
+ region: "ap-southeast-4",
+ modelID: "anthropic.claude-haiku-v1:0",
+ expected: "au.anthropic.claude-haiku-v1:0",
+ },
+ { region: "ap-southeast-2", modelID: "anthropic.claude-opus-4", expected: "apac.anthropic.claude-opus-4" },
+ {
+ region: "ap-northeast-1",
+ modelID: "anthropic.claude-sonnet-4-5",
+ expected: "jp.anthropic.claude-sonnet-4-5",
+ },
+ { region: "ap-northeast-1", modelID: "amazon.nova-pro-v1:0", expected: "jp.amazon.nova-pro-v1:0" },
+ { region: "ap-south-1", modelID: "anthropic.claude-sonnet-4-5", expected: "apac.anthropic.claude-sonnet-4-5" },
+ { region: "ap-south-1", modelID: "amazon.nova-lite-v1:0", expected: "apac.amazon.nova-lite-v1:0" },
+ { region: "ca-central-1", modelID: "anthropic.claude-sonnet-4-5", expected: "anthropic.claude-sonnet-4-5" },
+ {
+ region: "us-east-1",
+ modelID: "global.anthropic.claude-sonnet-4-5",
+ expected: "global.anthropic.claude-sonnet-4-5",
+ },
+ { region: "us-east-1", modelID: "us.anthropic.claude-sonnet-4-5", expected: "us.anthropic.claude-sonnet-4-5" },
+ { region: "eu-west-1", modelID: "eu.anthropic.claude-sonnet-4-5", expected: "eu.anthropic.claude-sonnet-4-5" },
+ {
+ region: "ap-northeast-1",
+ modelID: "jp.anthropic.claude-sonnet-4-5",
+ expected: "jp.anthropic.claude-sonnet-4-5",
+ },
+ {
+ region: "ap-south-1",
+ modelID: "apac.anthropic.claude-sonnet-4-5",
+ expected: "apac.anthropic.claude-sonnet-4-5",
+ },
+ {
+ region: "ap-southeast-2",
+ modelID: "au.anthropic.claude-sonnet-4-5",
+ expected: "au.anthropic.claude-sonnet-4-5",
+ },
+ ]
+ yield* plugin.add(AmazonBedrockPlugin)
+ for (const item of cases) {
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("amazon-bedrock", item.modelID),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: { region: item.region },
+ },
+ {},
+ )
+ }
+ expect(calls).toEqual(cases.map((item) => `languageModel:${item.expected}`))
+ }),
+ )
+
+ it.effect("ignores non-Bedrock providers for language selection", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AmazonBedrockPlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("openai", "anthropic.claude-sonnet-4-5"),
+ sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
+ options: { region: "eu-west-1" },
+ },
+ {},
+ )
+ expect(calls).toEqual([])
+ expect(result.language).toBeUndefined()
+ }),
+ )
+})
diff --git a/packages/core/test/plugin/provider-anthropic.test.ts b/packages/core/test/plugin/provider-anthropic.test.ts
new file mode 100644
index 000000000000..bbea4a372151
--- /dev/null
+++ b/packages/core/test/plugin/provider-anthropic.test.ts
@@ -0,0 +1,91 @@
+import { describe, expect } from "bun:test"
+import { Effect } from "effect"
+import { PluginV2 } from "@opencode-ai/core/plugin"
+import { AnthropicPlugin } from "@opencode-ai/core/plugin/provider/anthropic"
+import { it, model, provider } from "./provider-helper"
+
+describe("AnthropicPlugin", () => {
+ it.effect("applies legacy beta headers", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AnthropicPlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("anthropic", {
+ options: { headers: { Existing: "1" }, body: {}, aisdk: { provider: {}, request: {} } },
+ }),
+ cancel: false,
+ },
+ )
+ expect(result.provider.options.headers["anthropic-beta"]).toBe(
+ "interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14",
+ )
+ expect(result.provider.options.headers.Existing).toBe("1")
+ }),
+ )
+
+ it.effect("ignores non-Anthropic providers", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AnthropicPlugin)
+ const result = yield* plugin.trigger("provider.update", {}, { provider: provider("openai"), cancel: false })
+ expect(result.provider.options.headers["anthropic-beta"]).toBeUndefined()
+ }),
+ )
+
+ it.effect("creates Anthropic SDKs with the model provider ID as the SDK name", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const providers: string[] = []
+ yield* plugin.add(AnthropicPlugin)
+ yield* plugin.add({
+ id: PluginV2.ID.make("anthropic-sdk-inspector"),
+ effect: Effect.succeed({
+ "aisdk.sdk": (evt) =>
+ Effect.sync(() => {
+ providers.push(evt.sdk.languageModel("claude-sonnet-4-5").provider)
+ }),
+ }),
+ })
+ yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("custom-anthropic", "claude-sonnet-4-5"),
+ package: "@ai-sdk/anthropic",
+ options: { name: "custom-anthropic", apiKey: "test" },
+ },
+ {},
+ )
+ expect(providers).toEqual(["custom-anthropic"])
+ }),
+ )
+
+ it.effect("uses the Anthropic provider ID as the SDK name for the bundled Anthropic provider", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const providers: string[] = []
+ yield* plugin.add(AnthropicPlugin)
+ yield* plugin.add({
+ id: PluginV2.ID.make("anthropic-sdk-inspector"),
+ effect: Effect.succeed({
+ "aisdk.sdk": (evt) =>
+ Effect.sync(() => {
+ providers.push(evt.sdk.languageModel("claude-sonnet-4-5").provider)
+ }),
+ }),
+ })
+ yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("anthropic", "claude-sonnet-4-5"),
+ package: "@ai-sdk/anthropic",
+ options: { name: "anthropic", apiKey: "test" },
+ },
+ {},
+ )
+ expect(providers).toEqual(["anthropic"])
+ }),
+ )
+})
diff --git a/packages/core/test/plugin/provider-azure-cognitive-services.test.ts b/packages/core/test/plugin/provider-azure-cognitive-services.test.ts
new file mode 100644
index 000000000000..b835cbeeff09
--- /dev/null
+++ b/packages/core/test/plugin/provider-azure-cognitive-services.test.ts
@@ -0,0 +1,127 @@
+import { describe, expect } from "bun:test"
+import { Effect } from "effect"
+import { PluginV2 } from "@opencode-ai/core/plugin"
+import { AzureCognitiveServicesPlugin } from "@opencode-ai/core/plugin/provider/azure"
+import { fakeSelectorSdk, it, model, provider, withEnv } from "./provider-helper"
+
+describe("AzureCognitiveServicesPlugin", () => {
+ it.effect("maps the resource env var to the Azure SDK baseURL", () =>
+ withEnv({ AZURE_COGNITIVE_SERVICES_RESOURCE_NAME: "cognitive" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzureCognitiveServicesPlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ { provider: provider("azure-cognitive-services"), cancel: false },
+ )
+ expect(result.provider.endpoint).toEqual({
+ type: "aisdk",
+ package: "test-provider",
+ })
+ expect(result.provider.options.aisdk.provider.baseURL).toBe(
+ "https://cognitive.cognitiveservices.azure.com/openai",
+ )
+ expect(result.provider.options.aisdk.provider.resourceName).toBeUndefined()
+ }),
+ ),
+ )
+
+ it.effect("leaves baseURL unset without resource env and ignores other providers", () =>
+ withEnv({ AZURE_COGNITIVE_SERVICES_RESOURCE_NAME: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzureCognitiveServicesPlugin)
+ const azure = yield* plugin.trigger(
+ "provider.update",
+ {},
+ { provider: provider("azure-cognitive-services"), cancel: false },
+ )
+ const other = yield* plugin.trigger("provider.update", {}, { provider: provider("openai"), cancel: false })
+ expect(azure.provider.options.aisdk.provider.baseURL).toBeUndefined()
+ expect(azure.provider.endpoint).toEqual({ type: "aisdk", package: "test-provider" })
+ expect(other.provider.options.aisdk.provider.baseURL).toBeUndefined()
+ expect(other.provider.endpoint).toEqual({ type: "aisdk", package: "test-provider" })
+ }),
+ ),
+ )
+
+ it.effect("selects chat only for completion URLs", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AzureCognitiveServicesPlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("azure-cognitive-services", "deployment"),
+ sdk: fakeSelectorSdk(calls),
+ options: { useCompletionUrls: true },
+ },
+ {},
+ )
+ expect(calls).toEqual(["chat:deployment"])
+ }),
+ )
+
+ it.effect("uses the legacy Azure selector order and provider guard", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AzureCognitiveServicesPlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("azure-cognitive-services", "deployment"), sdk: fakeSelectorSdk(calls), options: {} },
+ {},
+ )
+ const ignored = yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("openai", "deployment"), sdk: fakeSelectorSdk(calls), options: {} },
+ {},
+ )
+ expect(calls).toEqual(["responses:deployment"])
+ expect(ignored.language).toBeUndefined()
+ }),
+ )
+
+ it.effect("falls back from responses to messages, chat, then languageModel", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ const sdk = fakeSelectorSdk(calls)
+ yield* plugin.add(AzureCognitiveServicesPlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("azure-cognitive-services", "messages-deployment"),
+ sdk: { messages: sdk.messages, chat: sdk.chat, languageModel: sdk.languageModel },
+ options: {},
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("azure-cognitive-services", "chat-deployment"),
+ sdk: { chat: sdk.chat, languageModel: sdk.languageModel },
+ options: {},
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("azure-cognitive-services", "language-deployment"),
+ sdk: { languageModel: sdk.languageModel },
+ options: {},
+ },
+ {},
+ )
+ expect(calls).toEqual([
+ "messages:messages-deployment",
+ "chat:chat-deployment",
+ "languageModel:language-deployment",
+ ])
+ }),
+ )
+})
diff --git a/packages/core/test/plugin/provider-azure.test.ts b/packages/core/test/plugin/provider-azure.test.ts
new file mode 100644
index 000000000000..5121b1eec028
--- /dev/null
+++ b/packages/core/test/plugin/provider-azure.test.ts
@@ -0,0 +1,245 @@
+import { describe, expect } from "bun:test"
+import { Effect, Layer } from "effect"
+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 { fakeSelectorSdk, it, model, npmLayer, provider, withEnv } from "./provider-helper"
+
+const itWithAuth = testEffect(Layer.mergeAll(PluginV2.defaultLayer, AuthV2.defaultLayer, npmLayer))
+
+describe("AzurePlugin", () => {
+ it.effect("resolves resourceName from env", () =>
+ withEnv({ AZURE_RESOURCE_NAME: "from-env" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzurePlugin)
+ const result = yield* plugin.trigger("provider.update", {}, { provider: provider("azure"), cancel: false })
+ expect(result.provider.options.aisdk.provider.resourceName).toBe("from-env")
+ }),
+ ),
+ )
+
+ it.effect("keeps explicit resourceName over env and ignores other providers", () =>
+ withEnv({ AZURE_RESOURCE_NAME: "from-env" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzurePlugin)
+ const azure = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("azure", {
+ options: { headers: {}, body: {}, aisdk: { provider: { resourceName: "from-config" }, request: {} } },
+ }),
+ cancel: false,
+ },
+ )
+ const other = yield* plugin.trigger("provider.update", {}, { provider: provider("openai"), cancel: false })
+ expect(azure.provider.options.aisdk.provider.resourceName).toBe("from-config")
+ expect(other.provider.options.aisdk.provider.resourceName).toBeUndefined()
+ }),
+ ),
+ )
+
+ itWithAuth.effect("prefers auth resourceName over env", () =>
+ withEnv(
+ {
+ AZURE_RESOURCE_NAME: "from-env",
+ },
+ () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const auth = yield* AuthV2.Service
+ yield* auth.create({
+ serviceID: AuthV2.ServiceID.make("azure"),
+ credential: new AuthV2.ApiKeyCredential({
+ type: "api",
+ key: "key",
+ metadata: { resourceName: "from-auth" },
+ }),
+ active: true,
+ })
+ yield* plugin.add({
+ ...AuthPlugin,
+ effect: AuthPlugin.effect.pipe(Effect.provideService(AuthV2.Service, auth)),
+ })
+ yield* plugin.add(AzurePlugin)
+ const result = yield* plugin.trigger("provider.update", {}, { provider: provider("azure"), cancel: false })
+ expect(result.provider.options.aisdk.provider.resourceName).toBe("from-auth")
+ }),
+ ),
+ )
+
+ it.effect("falls back to env when configured resourceName is blank", () =>
+ withEnv({ AZURE_RESOURCE_NAME: "from-env" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzurePlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("azure", {
+ options: { headers: {}, body: {}, aisdk: { provider: { resourceName: "" }, request: {} } },
+ }),
+ cancel: false,
+ },
+ )
+ expect(result.provider.options.aisdk.provider.resourceName).toBe("from-env")
+ }),
+ ),
+ )
+
+ it.effect("falls back to env when configured resourceName is whitespace", () =>
+ withEnv({ AZURE_RESOURCE_NAME: "from-env" }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzurePlugin)
+ const result = yield* plugin.trigger(
+ "provider.update",
+ {},
+ {
+ provider: provider("azure", {
+ options: { headers: {}, body: {}, aisdk: { provider: { resourceName: " " }, request: {} } },
+ }),
+ cancel: false,
+ },
+ )
+ expect(result.provider.options.aisdk.provider.resourceName).toBe("from-env")
+ }),
+ ),
+ )
+
+ it.effect("allows configured baseURL without resourceName", () =>
+ withEnv({ AZURE_RESOURCE_NAME: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzurePlugin)
+ const result = yield* plugin.trigger(
+ "aisdk.sdk",
+ {
+ model: model("azure", "deployment"),
+ package: "@ai-sdk/azure",
+ options: { name: "azure", baseURL: "https://proxy.example.com/openai" },
+ },
+ {},
+ )
+ expect(result.sdk).toBeDefined()
+ }),
+ ),
+ )
+
+ it.effect("rejects missing resourceName when baseURL is not configured", () =>
+ withEnv({ AZURE_RESOURCE_NAME: undefined }, () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ yield* plugin.add(AzurePlugin)
+ const exit = yield* plugin
+ .trigger(
+ "aisdk.sdk",
+ { model: model("azure", "deployment"), package: "@ai-sdk/azure", options: { name: "azure" } },
+ {},
+ )
+ .pipe(Effect.exit)
+ expect(exit._tag).toBe("Failure")
+ }),
+ ),
+ )
+
+ it.effect("selects chat only for completion URLs", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AzurePlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("azure", "deployment"), sdk: fakeSelectorSdk(calls), options: { useCompletionUrls: true } },
+ {},
+ )
+ expect(calls).toEqual(["chat:deployment"])
+ }),
+ )
+
+ it.effect("selects chat from per-call useCompletionUrls", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AzurePlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("azure", "deployment"), sdk: fakeSelectorSdk(calls), options: { useCompletionUrls: true } },
+ {},
+ )
+ expect(calls).toEqual(["chat:deployment"])
+ }),
+ )
+
+ it.effect("ignores model useCompletionUrls when per-call option is unset", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AzurePlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("azure", "deployment", {
+ options: { headers: {}, body: {}, aisdk: { provider: {}, request: { useCompletionUrls: true } } },
+ }),
+ sdk: fakeSelectorSdk(calls),
+ options: {},
+ },
+ {},
+ )
+ expect(calls).toEqual(["responses:deployment"])
+ }),
+ )
+
+ it.effect("uses the legacy Azure selector order and provider guard", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ yield* plugin.add(AzurePlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("azure", "deployment"), sdk: fakeSelectorSdk(calls), options: {} },
+ {},
+ )
+ const ignored = yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("openai", "deployment"), sdk: fakeSelectorSdk(calls), options: {} },
+ {},
+ )
+ expect(calls).toEqual(["responses:deployment"])
+ expect(ignored.language).toBeUndefined()
+ }),
+ )
+
+ it.effect("falls back through the legacy Azure selector order", () =>
+ Effect.gen(function* () {
+ const plugin = yield* PluginV2.Service
+ const calls: string[] = []
+ const make = (method: string) => (id: string) => {
+ calls.push(`${method}:${id}`)
+ return { modelId: id, provider: method, specificationVersion: "v3" }
+ }
+ yield* plugin.add(AzurePlugin)
+ yield* plugin.trigger(
+ "aisdk.language",
+ {
+ model: model("azure", "messages-deployment"),
+ sdk: { messages: make("messages"), chat: make("chat"), languageModel: make("languageModel") },
+ options: {},
+ },
+ {},
+ )
+ yield* plugin.trigger(
+ "aisdk.language",
+ { model: model("azure", "language-deployment"), sdk: { languageModel: make("languageModel") }, options: {} },
+ {},
+ )
+ expect(calls).toEqual(["messages:messages-deployment", "languageModel:language-deployment"])
+ }),
+ )
+})
diff --git a/packages/core/test/plugin/provider-cerebras.test.ts b/packages/core/test/plugin/provider-cerebras.test.ts
new file mode 100644
index 000000000000..7270d5367ae2
--- /dev/null
+++ b/packages/core/test/plugin/provider-cerebras.test.ts
@@ -0,0 +1,102 @@
+import { describe, expect, mock } from "bun:test"
+import { Effect } from "effect"
+import { PluginV2 } from "@opencode-ai/core/plugin"
+import { CerebrasPlugin } from "@opencode-ai/core/plugin/provider/cerebras"
+import { it, model, provider } from "./provider-helper"
+
+const cerebrasOptions: Record