diff --git a/AGENTS.md b/AGENTS.md index fe268ca..ddd7fcf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,9 +18,12 @@ import) or any `KIMI_*` env var. - **Zero egress**: outbound connections are limited to `auth.kimi.com`, `api.kimi.com`, `api.moonshot.cn`, `api.moonshot.ai`, - GitHub Releases domains, and user-configured MCP servers. No telemetry, - no analytics, ever. `crates/codegen/kigi-env` is the single home of - first-party endpoints. + GitHub Releases domains, user-configured MCP servers, the endpoints of + provider platforms the user has credentialed, and `models.dev` (model + metadata refresh — reached ONLY when an enabled platform's `/models` wire + lacks metadata, `wire_serves_metadata=false`; Kimi/Moonshot never trigger + it; `KIGI_MODELS_DEV_URL=0` disables). No telemetry, no analytics, ever. + `crates/codegen/kigi-env` is the single home of first-party endpoints. - **Toolchain**: Rust 1.97.0 (rust-toolchain.toml), edition 2024. - **Gates** (all must stay green): `cargo check --workspace --all-targets`, @@ -165,6 +168,15 @@ edges stay deterministic Rust. The harness appends a terminal are built generically from advertised methods (`AuthMethodKind:: ApiKeyPlatform`), so new registry rows appear in the picker with no TUI changes. +- Model metadata (context window, thinking levels) comes from the provider + wire when served; metadata-poor listings are enriched from models.dev + (`kigi-models/src/enrichment.rs` — bundled raw snapshot regenerated by + `scripts/gen_enrichment_snapshot.py`, single Rust transform + `parse_api_json` for bundled + runtime refresh; 24h cache + `~/.kigi/models_dev_cache.json`). Wire values always win; enrichment + never invents model availability. Canonical reasoning efforts: + none/minimal/low/medium/high/xhigh/max (`max` split from `xhigh` + 2026-07; Kimi wire spells its top tier `max`, kimi_compat renames). ## Milestones (PRD §8.3) diff --git a/Cargo.lock b/Cargo.lock index 33086b6..0de5a28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5965,6 +5965,7 @@ dependencies = [ "kigi-env", "serde", "serde_json", + "tracing", ] [[package]] diff --git a/NOTICE b/NOTICE index bed2b06..f0233d7 100644 --- a/NOTICE +++ b/NOTICE @@ -19,3 +19,8 @@ Modifications relative to the upstream work (Apache License 2.0 §4(b) notice): This product includes code ported from openai/codex and sst/opencode; see crates/codegen/kigi-tools/THIRD_PARTY_NOTICES.md for the license terms and the per-file change notices. + +This product bundles model metadata derived from models.dev +(https://github.com/sst/models.dev, MIT License) as +crates/codegen/kigi-models/enrichment_snapshot.json, and may refresh it +from https://models.dev/api.json at runtime. diff --git a/crates/codegen/kigi-models/Cargo.toml b/crates/codegen/kigi-models/Cargo.toml index a7e8d89..c92197b 100644 --- a/crates/codegen/kigi-models/Cargo.toml +++ b/crates/codegen/kigi-models/Cargo.toml @@ -9,6 +9,7 @@ description = "Kimi platform registry, /models wire contract, capability derivat kigi-env = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } +tracing = { workspace = true } [lints] workspace = true diff --git a/crates/codegen/kigi-models/enrichment_snapshot.json b/crates/codegen/kigi-models/enrichment_snapshot.json new file mode 100644 index 0000000..767066e --- /dev/null +++ b/crates/codegen/kigi-models/enrichment_snapshot.json @@ -0,0 +1 @@ +{"_meta":{"note":"filtered snapshot for kigi model-metadata enrichment; regenerate via scripts/gen_enrichment_snapshot.py","source":"https://models.dev/api.json (github.com/sst/models.dev, MIT)"},"alibaba-token-plan":{"models":{"MiniMax-M2.5":{"limit":{"context":196608,"input":196601,"output":24576},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek-v3.2":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3.2","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"glm-5":{"limit":{"context":202752,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.1":{"limit":{"context":202752,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":16384},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true},"qwen-image-2.0":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Qwen Image 2.0","reasoning":false,"tool_call":false},"qwen-image-2.0-pro":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Qwen Image 2.0 Pro","reasoning":false,"tool_call":false},"qwen3.6-flash":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.6-plus":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.7-max":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3.7 Max","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"type":"budget_tokens"}],"tool_call":true},"qwen3.7-plus":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3.7 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"type":"budget_tokens"}],"tool_call":true},"qwen3.8-max-preview":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.8 Max Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"max":262144,"min":0,"type":"budget_tokens"}],"tool_call":true},"wan2.7-image":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Wan2.7 Image","reasoning":false,"tool_call":false},"wan2.7-image-pro":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Wan2.7 Image Pro","reasoning":false,"tool_call":false}}},"alibaba-token-plan-cn":{"models":{"MiniMax-M2.5":{"limit":{"context":196608,"input":196601,"output":24576},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek-v3.2":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3.2","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5":{"limit":{"context":202752,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.1":{"limit":{"context":202752,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":16384},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true},"qwen-image-2.0":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Qwen Image 2.0","reasoning":false,"tool_call":false},"qwen-image-2.0-pro":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Qwen Image 2.0 Pro","reasoning":false,"tool_call":false},"qwen3.6-flash":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.6-plus":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.7-max":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3.7 Max","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"type":"budget_tokens"}],"tool_call":true},"qwen3.7-plus":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3.7 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"type":"budget_tokens"}],"tool_call":true},"qwen3.8-max-preview":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.8 Max Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"max":262144,"min":0,"type":"budget_tokens"}],"tool_call":true},"wan2.7-image":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Wan2.7 Image","reasoning":false,"tool_call":false},"wan2.7-image-pro":{"limit":{"context":8192,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Wan2.7 Image Pro","reasoning":false,"tool_call":false}}},"amazon-bedrock":{"models":{"amazon.nova-2-lite-v1:0":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Nova 2 Lite","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"amazon.nova-lite-v1:0":{"limit":{"context":300000,"output":8192},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Nova Lite","reasoning":false,"tool_call":true},"amazon.nova-micro-v1:0":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Nova Micro","reasoning":false,"tool_call":true},"amazon.nova-pro-v1:0":{"limit":{"context":300000,"output":8192},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Nova Pro","reasoning":false,"tool_call":true},"anthropic.claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"anthropic.claude-haiku-4-5-20251001-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic.claude-opus-4-1-20250805-v1:0":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic.claude-opus-4-5-20251101-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic.claude-opus-4-6-v1":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic.claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"anthropic.claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"anthropic.claude-sonnet-4-5-20250929-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic.claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic.claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (AU)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"au.anthropic.claude-opus-4-6-v1":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"AU Anthropic Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"au.anthropic.claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8 (AU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (AU)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"au.anthropic.claude-sonnet-4-6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"AU Anthropic Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"au.anthropic.claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5 (AU)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"deepseek.r1-v1:0":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-R1","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek.v3-v1:0":{"limit":{"context":163840,"output":81920},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3.1","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek.v3.2":{"limit":{"context":163840,"output":81920},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3.2","reasoning":true,"reasoning_options":[],"tool_call":true},"eu.anthropic.claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5 (EU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (EU)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5 (EU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"eu.anthropic.claude-opus-4-6-v1":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6 (EU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"eu.anthropic.claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7 (EU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"eu.anthropic.claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8 (EU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (EU)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"eu.anthropic.claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6 (EU)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"eu.anthropic.claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5 (EU)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"global.anthropic.claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5 (Global)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (Global)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"global.anthropic.claude-opus-4-5-20251101-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5 (Global)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"global.anthropic.claude-opus-4-6-v1":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6 (Global)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"global.anthropic.claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7 (Global)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"global.anthropic.claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8 (Global)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (Global)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"global.anthropic.claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6 (Global)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"global.anthropic.claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5 (Global)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"google.gemma-3-12b-it":{"limit":{"context":131072,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Google Gemma 3 12B","reasoning":false,"tool_call":false},"google.gemma-3-27b-it":{"limit":{"context":202752,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Google Gemma 3 27B Instruct","reasoning":false,"tool_call":true},"google.gemma-3-4b-it":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 3 4B IT","reasoning":false,"tool_call":true},"jp.anthropic.claude-haiku-4-5-20251001-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (JP)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"jp.anthropic.claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7 (JP)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"jp.anthropic.claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8 (JP)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (JP)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"jp.anthropic.claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6 (JP)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"jp.anthropic.claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5 (JP)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"meta.llama3-1-70b-instruct-v1:0":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 70B Instruct","reasoning":false,"tool_call":true},"meta.llama3-1-8b-instruct-v1:0":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B Instruct","reasoning":false,"tool_call":true},"meta.llama3-3-70b-instruct-v1:0":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.3 70B Instruct","reasoning":false,"tool_call":true},"meta.llama4-maverick-17b-instruct-v1:0":{"limit":{"context":1000000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Maverick 17B Instruct","reasoning":false,"tool_call":true},"meta.llama4-scout-17b-instruct-v1:0":{"limit":{"context":3500000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Scout 17B Instruct","reasoning":false,"tool_call":true},"minimax.minimax-m2":{"limit":{"context":204608,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax.minimax-m2.1":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.1","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax.minimax-m2.5":{"limit":{"context":196608,"output":98304},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"mistral.devstral-2-123b":{"limit":{"context":256000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral 2 123B","reasoning":false,"tool_call":true},"mistral.magistral-small-2509":{"limit":{"context":128000,"output":40000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Magistral Small 1.2","reasoning":true,"reasoning_options":[],"tool_call":true},"mistral.ministral-3-14b-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 14B 3.0","reasoning":false,"tool_call":true},"mistral.ministral-3-3b-instruct":{"limit":{"context":256000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Ministral 3 3B","reasoning":false,"tool_call":true},"mistral.ministral-3-8b-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 3 8B","reasoning":false,"tool_call":true},"mistral.mistral-large-3-675b-instruct":{"limit":{"context":256000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Large 3","reasoning":false,"tool_call":true},"mistral.pixtral-large-2502-v1:0":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Pixtral Large (25.02)","reasoning":false,"tool_call":true},"mistral.voxtral-mini-3b-2507":{"limit":{"context":128000,"output":4096},"modalities":{"input":["audio","text"],"output":["text"]},"name":"Voxtral Mini 3B 2507","reasoning":false,"tool_call":true},"mistral.voxtral-small-24b-2507":{"limit":{"context":32000,"output":8192},"modalities":{"input":["text","audio"],"output":["text"]},"name":"Voxtral Small 24B 2507","reasoning":false,"tool_call":true},"moonshot.kimi-k2-thinking":{"limit":{"context":262143,"output":16000},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"moonshotai.kimi-k2.5":{"limit":{"context":262143,"output":16000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"nvidia.nemotron-nano-12b-v2":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"NVIDIA Nemotron Nano 12B v2 VL BF16","reasoning":false,"tool_call":true},"nvidia.nemotron-nano-3-30b":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"NVIDIA Nemotron Nano 3 30B","reasoning":true,"reasoning_options":[],"tool_call":true},"nvidia.nemotron-nano-9b-v2":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"NVIDIA Nemotron Nano 9B v2","reasoning":false,"tool_call":true},"nvidia.nemotron-super-3-120b":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"NVIDIA Nemotron 3 Super 120B A12B","reasoning":true,"reasoning_options":[],"tool_call":true},"openai.gpt-5.4":{"limit":{"context":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai.gpt-5.5":{"limit":{"context":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai.gpt-5.6-luna":{"limit":{"context":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"openai.gpt-5.6-sol":{"limit":{"context":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"openai.gpt-5.6-terra":{"limit":{"context":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"openai.gpt-oss-120b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"gpt-oss-120b","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai.gpt-oss-120b-1:0":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"gpt-oss-120b","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai.gpt-oss-20b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"gpt-oss-20b","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai.gpt-oss-20b-1:0":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"gpt-oss-20b","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai.gpt-oss-safeguard-120b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS Safeguard 120B","reasoning":false,"tool_call":true},"openai.gpt-oss-safeguard-20b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS Safeguard 20B","reasoning":false,"tool_call":true},"qwen.qwen3-235b-a22b-2507-v1:0":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 235B A22B 2507","reasoning":false,"tool_call":true},"qwen.qwen3-32b-v1:0":{"limit":{"context":16384,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 32B (dense)","reasoning":true,"reasoning_options":[],"tool_call":true},"qwen.qwen3-coder-30b-a3b-v1:0":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder 30B A3B Instruct","reasoning":false,"tool_call":true},"qwen.qwen3-coder-480b-a35b-v1:0":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder 480B A35B Instruct","reasoning":false,"tool_call":true},"qwen.qwen3-coder-next":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder Next","reasoning":true,"reasoning_options":[],"tool_call":true},"qwen.qwen3-next-80b-a3b":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen/Qwen3-Next-80B-A3B-Instruct","reasoning":false,"tool_call":true},"qwen.qwen3-vl-235b-a22b":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen/Qwen3-VL-235B-A22B-Instruct","reasoning":false,"tool_call":true},"us.anthropic.claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5 (US)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (US)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"us.anthropic.claude-opus-4-1-20250805-v1:0":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1 (US)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"us.anthropic.claude-opus-4-5-20251101-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5 (US)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"us.anthropic.claude-opus-4-6-v1":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6 (US)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"us.anthropic.claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7 (US)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"us.anthropic.claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8 (US)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (US)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"us.anthropic.claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6 (US)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"us.anthropic.claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5 (US)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"us.deepseek.r1-v1:0":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-R1 (US)","reasoning":true,"reasoning_options":[],"tool_call":true},"us.meta.llama4-maverick-17b-instruct-v1:0":{"limit":{"context":1000000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Maverick 17B Instruct (US)","reasoning":false,"tool_call":true},"us.meta.llama4-scout-17b-instruct-v1:0":{"limit":{"context":3500000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Scout 17B Instruct (US)","reasoning":false,"tool_call":true},"writer.palmyra-x4-v1:0":{"limit":{"context":122880,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Palmyra X4","reasoning":true,"reasoning_options":[],"tool_call":true},"writer.palmyra-x5-v1:0":{"limit":{"context":1040000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Palmyra X5","reasoning":true,"reasoning_options":[],"tool_call":true},"xai.grok-4.3":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok 4.3","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"zai.glm-4.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7","reasoning":true,"reasoning_options":[],"tool_call":true},"zai.glm-4.7-flash":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7-Flash","reasoning":true,"reasoning_options":[],"tool_call":true},"zai.glm-5":{"limit":{"context":202752,"output":101376},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[],"tool_call":true}}},"anthropic":{"models":{"claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-haiku-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (latest)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-haiku-4-5-20251001":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-1":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1 (latest)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-1-20250805":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-5-20251101":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-sonnet-4-5":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (latest)","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-4-5-20250929":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-4-6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true}}},"azure":{"models":{"claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-haiku-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-1":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-sonnet-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"codestral-2501":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text"],"output":["text"]},"name":"Codestral 25.01","reasoning":false,"tool_call":true},"codex-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text"],"output":["text"]},"name":"Codex Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"cohere-command-a":{"limit":{"context":131072,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Command A","reasoning":true,"reasoning_options":[],"tool_call":true},"cohere-command-r-08-2024":{"limit":{"context":128000,"output":4000},"modalities":{"input":["text"],"output":["text"]},"name":"Command R","reasoning":false,"tool_call":true},"cohere-command-r-plus-08-2024":{"limit":{"context":128000,"output":4000},"modalities":{"input":["text"],"output":["text"]},"name":"Command R+","reasoning":false,"tool_call":true},"cohere-embed-v-4-0":{"limit":{"context":128000,"output":1536},"modalities":{"input":["text","image"],"output":["text"]},"name":"Embed v4","reasoning":false,"tool_call":false},"cohere-embed-v3-english":{"limit":{"context":512,"output":1024},"modalities":{"input":["text"],"output":["text"]},"name":"Embed v3 English","reasoning":false,"tool_call":false},"cohere-embed-v3-multilingual":{"limit":{"context":512,"output":1024},"modalities":{"input":["text"],"output":["text"]},"name":"Embed v3 Multilingual","reasoning":false,"tool_call":false},"deepseek-r1":{"limit":{"context":163840,"output":163840},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-R1","reasoning":true,"reasoning_options":[],"tool_call":false},"deepseek-r1-0528":{"limit":{"context":163840,"output":163840},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-R1-0528","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek-v3-0324":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3-0324","reasoning":false,"tool_call":true},"deepseek-v3.1":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3.1","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek-v3.2":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3.2","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek-v3.2-speciale":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3.2-Speciale","reasoning":true,"reasoning_options":[],"tool_call":false},"deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V4-Flash","reasoning":true,"reasoning_options":[],"tool_call":false},"deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V4-Pro","reasoning":true,"reasoning_options":[],"tool_call":false},"gpt-3.5-turbo-0125":{"limit":{"context":16384,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5 Turbo 0125","reasoning":false,"tool_call":false},"gpt-3.5-turbo-0301":{"limit":{"context":4096,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5 Turbo 0301","reasoning":false,"tool_call":false},"gpt-3.5-turbo-0613":{"limit":{"context":16384,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5 Turbo 0613","reasoning":false,"tool_call":false},"gpt-3.5-turbo-1106":{"limit":{"context":16384,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5 Turbo 1106","reasoning":false,"tool_call":false},"gpt-3.5-turbo-instruct":{"limit":{"context":4096,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5 Turbo Instruct","reasoning":false,"tool_call":false},"gpt-4":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-4","reasoning":false,"tool_call":true},"gpt-4-32k":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-4 32K","reasoning":false,"tool_call":true},"gpt-4-turbo":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4 Turbo","reasoning":false,"tool_call":true},"gpt-4-turbo-vision":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4 Turbo Vision","reasoning":false,"tool_call":true},"gpt-4.1":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4.1","reasoning":false,"tool_call":true},"gpt-4.1-mini":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4.1 mini","reasoning":false,"tool_call":true},"gpt-4.1-nano":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4.1 nano","reasoning":false,"tool_call":true},"gpt-4o":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o","reasoning":false,"tool_call":true},"gpt-4o-mini":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o mini","reasoning":false,"tool_call":true},"gpt-5":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-chat":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Chat","reasoning":true,"reasoning_options":[],"tool_call":false},"gpt-5-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5-Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-pro":{"limit":{"context":400000,"output":272000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true},"gpt-5.1":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"name":"GPT-5.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"gpt-5.1-chat":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"name":"GPT-5.1 Chat","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"gpt-5.1-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"name":"GPT-5.1 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.1-codex-max":{"limit":{"context":400000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex Max","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.1-codex-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.2":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.2-chat":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2 Chat","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"gpt-5.2-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.3-chat":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.3 Chat","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"gpt-5.3-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.3 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-pro":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.4 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"gpt-5.5":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.6-luna":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-sol":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-terra":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-chat-latest":{"limit":{"context":128000,"input":111616,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT Chat Latest","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-image-1":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["image"]},"name":"GPT-Image-1","reasoning":false,"tool_call":false},"gpt-image-1.5":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"GPT-Image-1.5","reasoning":false,"tool_call":false},"gpt-image-2":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["image"]},"name":"GPT-Image-2","reasoning":false,"tool_call":false},"grok-4-1-fast-non-reasoning":{"limit":{"context":128000,"input":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok 4.1 Fast (Non-Reasoning)","reasoning":false,"tool_call":true},"grok-4-1-fast-reasoning":{"limit":{"context":128000,"input":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok 4.1 Fast (Reasoning)","reasoning":true,"reasoning_options":[],"tool_call":true},"grok-4-20-non-reasoning":{"limit":{"context":262000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Grok 4.20 (Non-Reasoning)","reasoning":false,"tool_call":true},"grok-4-20-reasoning":{"limit":{"context":262000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Grok 4.20 (Reasoning)","reasoning":true,"reasoning_options":[],"tool_call":true},"grok-4-fast-reasoning":{"limit":{"context":2000000,"output":30000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok 4 Fast (Reasoning)","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2-thinking":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"llama-3.2-11b-vision-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama-3.2-11B-Vision-Instruct","reasoning":false,"tool_call":true},"llama-3.2-90b-vision-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama-3.2-90B-Vision-Instruct","reasoning":false,"tool_call":true},"llama-3.3-70b-instruct":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Llama-3.3-70B-Instruct","reasoning":false,"tool_call":true},"llama-4-maverick-17b-128e-instruct-fp8":{"limit":{"context":1000000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Maverick 17B 128E Instruct FP8","reasoning":false,"tool_call":true},"llama-4-scout-17b-16e-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Scout 17B 16E Instruct","reasoning":false,"tool_call":true},"meta-llama-3-70b-instruct":{"limit":{"context":8192,"output":2048},"modalities":{"input":["text"],"output":["text"]},"name":"Meta-Llama-3-70B-Instruct","reasoning":false,"tool_call":false},"meta-llama-3-8b-instruct":{"limit":{"context":8192,"output":2048},"modalities":{"input":["text"],"output":["text"]},"name":"Meta-Llama-3-8B-Instruct","reasoning":false,"tool_call":false},"meta-llama-3.1-405b-instruct":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Meta-Llama-3.1-405B-Instruct","reasoning":false,"tool_call":true},"meta-llama-3.1-70b-instruct":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Meta-Llama-3.1-70B-Instruct","reasoning":false,"tool_call":true},"meta-llama-3.1-8b-instruct":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Meta-Llama-3.1-8B-Instruct","reasoning":false,"tool_call":true},"ministral-3b":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 3B","reasoning":false,"tool_call":true},"mistral-large-2411":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Large 24.11","reasoning":false,"tool_call":true},"mistral-medium-2505":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium 3","reasoning":false,"tool_call":true},"mistral-nemo":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Nemo","reasoning":false,"tool_call":true},"mistral-small-2503":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Small 3.1","reasoning":false,"tool_call":true},"model-router":{"limit":{"context":200000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Model Router","reasoning":false,"tool_call":true},"o1":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o1","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o1-mini":{"limit":{"context":128000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"o1-mini","reasoning":true,"reasoning_options":[],"tool_call":true},"o3":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o3","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o3-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text"],"output":["text"]},"name":"o3-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o4-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o4-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"phi-3-medium-128k-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3-medium-instruct (128k)","reasoning":false,"tool_call":false},"phi-3-medium-4k-instruct":{"limit":{"context":4096,"output":1024},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3-medium-instruct (4k)","reasoning":false,"tool_call":false},"phi-3-mini-128k-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3-mini-instruct (128k)","reasoning":false,"tool_call":false},"phi-3-mini-4k-instruct":{"limit":{"context":4096,"output":1024},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3-mini-instruct (4k)","reasoning":false,"tool_call":false},"phi-3-small-128k-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3-small-instruct (128k)","reasoning":false,"tool_call":false},"phi-3-small-8k-instruct":{"limit":{"context":8192,"output":2048},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3-small-instruct (8k)","reasoning":false,"tool_call":false},"phi-3.5-mini-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3.5-mini-instruct","reasoning":false,"tool_call":false},"phi-3.5-moe-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-3.5-MoE-instruct","reasoning":false,"tool_call":false},"phi-4":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-4","reasoning":false,"tool_call":false},"phi-4-mini":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-4-mini","reasoning":false,"tool_call":true},"phi-4-mini-reasoning":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-4-mini-reasoning","reasoning":true,"reasoning_options":[],"tool_call":true},"phi-4-multimodal":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image","audio"],"output":["text"]},"name":"Phi-4-multimodal","reasoning":false,"tool_call":false},"phi-4-reasoning":{"limit":{"context":32000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-4-reasoning","reasoning":true,"reasoning_options":[],"tool_call":false},"phi-4-reasoning-plus":{"limit":{"context":32000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-4-reasoning-plus","reasoning":true,"reasoning_options":[],"tool_call":false},"text-embedding-3-large":{"limit":{"context":8191,"output":3072},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-3-large","reasoning":false,"tool_call":false},"text-embedding-3-small":{"limit":{"context":8191,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-3-small","reasoning":false,"tool_call":false},"text-embedding-ada-002":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-ada-002","reasoning":false,"tool_call":false}}},"cerebras":{"models":{"gemma-4-31b":{"limit":{"context":131072,"output":40960},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 4 31B IT","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"gpt-oss-120b":{"limit":{"context":131072,"output":40960},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 120B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"zai-glm-4.7":{"limit":{"context":131072,"output":40960},"modalities":{"input":["text"],"output":["text"]},"name":"Z.AI GLM-4.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["none"]}],"tool_call":true}}},"cloudflare-ai-gateway":{"models":{"anthropic/claude-3-5-haiku":{"limit":{"context":200000,"output":8192},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 3.5 (latest)","reasoning":false,"tool_call":true},"anthropic/claude-3-haiku":{"limit":{"context":200000,"output":4096},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 3","reasoning":false,"tool_call":true},"anthropic/claude-3-opus":{"limit":{"context":200000,"output":4096},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 3","reasoning":false,"tool_call":true},"anthropic/claude-3-sonnet":{"limit":{"context":200000,"output":4096},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 3","reasoning":false,"tool_call":true},"anthropic/claude-3.5-haiku":{"limit":{"context":200000,"output":8192},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 3.5 (latest)","reasoning":false,"tool_call":true},"anthropic/claude-3.5-sonnet":{"limit":{"context":200000,"output":8192},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 3.5 v2","reasoning":false,"tool_call":true},"anthropic/claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-haiku-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-opus-4":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-opus-4-1":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-opus-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-opus-4-6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"anthropic/claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-sonnet-4":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-sonnet-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"anthropic/claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"moonshotai/kimi-k3":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K3","reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true},"openai/gpt-3.5-turbo":{"limit":{"context":16385,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5-turbo","reasoning":false,"tool_call":false},"openai/gpt-4":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-4","reasoning":false,"tool_call":true},"openai/gpt-4-turbo":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4 Turbo","reasoning":false,"tool_call":true},"openai/gpt-4o":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o","reasoning":false,"tool_call":true},"openai/gpt-4o-mini":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o mini","reasoning":false,"tool_call":true},"openai/gpt-5.1":{"limit":{"context":400000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"openai/gpt-5.1-codex":{"limit":{"context":400000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-5.2":{"limit":{"context":400000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.2-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.3-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.3 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.4":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.5":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.6-luna":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"openai/gpt-5.6-sol":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"openai/gpt-5.6-terra":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"openai/o1":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o1","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o3":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o3","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o3-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text"],"output":["text"]},"name":"o3-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o3-pro":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o3-pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o4-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o4-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"workers-ai/@cf/ai4bharat/indictrans2-en-indic-1B":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"IndicTrans2 EN-Indic 1B","reasoning":false,"tool_call":false},"workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Gemma SEA-LION v4 27B IT","reasoning":false,"tool_call":false},"workers-ai/@cf/baai/bge-base-en-v1.5":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"BGE Base EN v1.5","reasoning":false,"tool_call":false},"workers-ai/@cf/baai/bge-large-en-v1.5":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"BGE Large EN v1.5","reasoning":false,"tool_call":false},"workers-ai/@cf/baai/bge-m3":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"BGE M3","reasoning":false,"tool_call":false},"workers-ai/@cf/baai/bge-reranker-base":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"BGE Reranker Base","reasoning":false,"tool_call":false},"workers-ai/@cf/baai/bge-small-en-v1.5":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"BGE Small EN v1.5","reasoning":false,"tool_call":false},"workers-ai/@cf/deepgram/aura-2-en":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Deepgram Aura 2 (EN)","reasoning":false,"tool_call":false},"workers-ai/@cf/deepgram/aura-2-es":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Deepgram Aura 2 (ES)","reasoning":false,"tool_call":false},"workers-ai/@cf/deepgram/nova-3":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Deepgram Nova 3","reasoning":false,"tool_call":false},"workers-ai/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek R1 Distill Qwen 32B","reasoning":false,"tool_call":false},"workers-ai/@cf/facebook/bart-large-cnn":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"BART Large CNN","reasoning":false,"tool_call":false},"workers-ai/@cf/google/gemma-3-12b-it":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Gemma 3 12B IT","reasoning":false,"tool_call":false},"workers-ai/@cf/huggingface/distilbert-sst-2-int8":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"DistilBERT SST-2 INT8","reasoning":false,"tool_call":false},"workers-ai/@cf/ibm-granite/granite-4.0-h-micro":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"IBM Granite 4.0 H Micro","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-2-7b-chat-fp16":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 2 7B Chat FP16","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3-8b-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3 8B Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3-8b-instruct-awq":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3 8B Instruct AWQ","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.1-8b-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.1-8b-instruct-awq":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B Instruct AWQ","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.1-8b-instruct-fp8":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B Instruct FP8","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.2-11b-vision-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.2 11B Vision Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.2-1b-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.2 1B Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.2-3b-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.2 3B Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.3 70B Instruct FP8 Fast","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 4 Scout 17B 16E Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/llama-guard-3-8b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Llama Guard 3 8B","reasoning":false,"tool_call":false},"workers-ai/@cf/meta/m2m100-1.2b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"M2M100 1.2B","reasoning":false,"tool_call":false},"workers-ai/@cf/mistral/mistral-7b-instruct-v0.1":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral 7B Instruct v0.1","reasoning":false,"tool_call":false},"workers-ai/@cf/mistralai/mistral-small-3.1-24b-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Small 3.1 24B Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/moonshotai/kimi-k2.5":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"workers-ai/@cf/moonshotai/kimi-k2.6":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"workers-ai/@cf/myshell-ai/melotts":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"MyShell MeloTTS","reasoning":false,"tool_call":false},"workers-ai/@cf/nvidia/nemotron-3-120b-a12b":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Super 120B","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"workers-ai/@cf/openai/gpt-oss-120b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 120B","reasoning":false,"tool_call":false},"workers-ai/@cf/openai/gpt-oss-20b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 20B","reasoning":false,"tool_call":false},"workers-ai/@cf/pfnet/plamo-embedding-1b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"PLaMo Embedding 1B","reasoning":false,"tool_call":false},"workers-ai/@cf/pipecat-ai/smart-turn-v2":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Pipecat Smart Turn v2","reasoning":false,"tool_call":false},"workers-ai/@cf/qwen/qwen2.5-coder-32b-instruct":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 2.5 Coder 32B Instruct","reasoning":false,"tool_call":false},"workers-ai/@cf/qwen/qwen3-30b-a3b-fp8":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 30B A3B FP8","reasoning":false,"tool_call":false},"workers-ai/@cf/qwen/qwen3-embedding-0.6b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Embedding 0.6B","reasoning":false,"tool_call":false},"workers-ai/@cf/qwen/qwq-32b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"QwQ 32B","reasoning":false,"tool_call":false},"workers-ai/@cf/zai-org/glm-4.7-flash":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7-Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"workers-ai/@cf/zai-org/glm-5.2":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Glm 5.2","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true}}},"deepseek":{"models":{"deepseek-chat":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek Chat","reasoning":false,"tool_call":true},"deepseek-reasoner":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek Reasoner","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true}}},"fireworks-ai":{"models":{"accounts/fireworks/models/deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"accounts/fireworks/models/deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"accounts/fireworks/models/glm-5p1":{"limit":{"context":202800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"accounts/fireworks/models/glm-5p2":{"limit":{"context":1048575,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.2","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"accounts/fireworks/models/gpt-oss-120b":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 120B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"accounts/fireworks/models/gpt-oss-20b":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 20B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"accounts/fireworks/models/kimi-k2p6":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"accounts/fireworks/models/kimi-k2p7-code":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"accounts/fireworks/models/minimax-m2p7":{"limit":{"context":196608,"output":196608},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"accounts/fireworks/models/minimax-m3":{"limit":{"context":512000,"output":512000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"accounts/fireworks/models/qwen3p7-plus":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen 3.7 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"min":1,"type":"budget_tokens"}],"tool_call":true},"accounts/fireworks/routers/glm-5p1-fast":{"limit":{"context":202800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.1 Fast","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"accounts/fireworks/routers/glm-5p2-fast":{"limit":{"context":1048575,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.2 Fast","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"accounts/fireworks/routers/kimi-k2p6-fast":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.6 Fast","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"accounts/fireworks/routers/kimi-k2p6-turbo":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.6 Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"accounts/fireworks/routers/kimi-k2p7-code-fast":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.7 Code Fast","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"github-copilot":{"models":{"claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-haiku-4.5":{"limit":{"context":200000,"input":136000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5 (latest)","reasoning":true,"reasoning_options":[{"max":32000,"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4.5":{"limit":{"context":200000,"input":168000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5 (latest)","reasoning":true,"reasoning_options":[{"max":32000,"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4.6":{"limit":{"context":200000,"input":168000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true},"claude-opus-4.7":{"limit":{"context":200000,"input":168000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-opus-4.8":{"limit":{"context":200000,"input":168000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-sonnet-4":{"limit":{"context":216000,"input":128000,"output":16000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4 (latest)","reasoning":true,"reasoning_options":[],"tool_call":true},"claude-sonnet-4.5":{"limit":{"context":200000,"input":168000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5 (latest)","reasoning":true,"reasoning_options":[{"max":32000,"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-4.6":{"limit":{"context":200000,"input":168000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"max":32000,"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"gemini-2.5-pro":{"limit":{"context":128000,"input":128000,"output":64000},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.5 Pro","reasoning":true,"reasoning_options":[{"max":32768,"min":128,"type":"budget_tokens"}],"tool_call":true},"gemini-3-flash-preview":{"limit":{"context":128000,"input":128000,"output":64000},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3 Flash Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"max":32000,"min":256,"type":"budget_tokens"}],"tool_call":true},"gemini-3.1-pro-preview":{"limit":{"context":1000000,"input":936000,"output":64000},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.1 Pro Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"max":32000,"min":256,"type":"budget_tokens"}],"tool_call":true},"gemini-3.5-flash":{"limit":{"context":200000,"input":128000,"output":64000},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"max":24000,"min":256,"type":"budget_tokens"}],"tool_call":true},"gpt-4.1":{"limit":{"context":128000,"input":128000,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4.1","reasoning":false,"tool_call":true},"gpt-5-mini":{"limit":{"context":264000,"input":128000,"output":64000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.2":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2","reasoning":true,"reasoning_options":[],"tool_call":true},"gpt-5.2-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2 Codex","reasoning":true,"reasoning_options":[],"tool_call":true},"gpt-5.3-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.3 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.4 mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.4 nano","reasoning":true,"reasoning_options":[],"tool_call":true},"gpt-5.5":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.6-luna":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-sol":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-terra":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":256000,"input":224000,"output":32000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"mai-code-1-flash-picker":{"limit":{"context":256000,"input":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"MAI-Code-1-Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true}}},"google":{"models":{"gemini-2.0-flash":{"limit":{"context":1048576,"output":8192},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.0 Flash","reasoning":false,"tool_call":true},"gemini-2.0-flash-lite":{"limit":{"context":1048576,"output":8192},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.0 Flash-Lite","reasoning":false,"tool_call":true},"gemini-2.5-flash":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.5 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":24576,"min":0,"type":"budget_tokens"}],"tool_call":true},"gemini-2.5-flash-image":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"Nano Banana","reasoning":true,"reasoning_options":[],"tool_call":false},"gemini-2.5-flash-lite":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.5 Flash-Lite","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":24576,"min":512,"type":"budget_tokens"}],"tool_call":true},"gemini-2.5-flash-preview-tts":{"limit":{"context":8192,"output":16384},"modalities":{"input":["text"],"output":["audio"]},"name":"Gemini 2.5 Flash Preview TTS","reasoning":false,"tool_call":false},"gemini-2.5-pro":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.5 Pro","reasoning":true,"reasoning_options":[{"max":32768,"min":128,"type":"budget_tokens"}],"tool_call":true},"gemini-2.5-pro-preview-tts":{"limit":{"context":8192,"output":16384},"modalities":{"input":["text"],"output":["audio"]},"name":"Gemini 2.5 Pro Preview TTS","reasoning":false,"tool_call":false},"gemini-3-flash-preview":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3 Flash Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-3-pro-image-preview":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"Nano Banana Pro","reasoning":true,"reasoning_options":[],"tool_call":false},"gemini-3-pro-preview":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3 Pro Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true},"gemini-3.1-flash-image-preview":{"limit":{"context":65536,"output":65536},"modalities":{"input":["text","image","pdf"],"output":["text","image"]},"name":"Nano Banana 2","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false},"gemini-3.1-flash-lite":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.1 Flash Lite","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-3.1-flash-lite-preview":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.1 Flash Lite Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-3.1-pro-preview":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.1 Pro Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gemini-3.1-pro-preview-customtools":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.1 Pro Preview Custom Tools","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gemini-3.5-flash":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-embedding-001":{"limit":{"context":2048,"output":1},"modalities":{"input":["text"],"output":["text"]},"name":"Gemini Embedding 001","reasoning":false,"tool_call":false},"gemini-flash-latest":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini Flash Latest","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-flash-lite-latest":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini Flash-Lite Latest","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-omni-flash-preview":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text","image","video"],"output":["video"]},"name":"Gemini Omni Flash Preview","reasoning":true,"reasoning_options":[],"tool_call":false},"gemma-4-26b-a4b-it":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 4 26B A4B IT","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"gemma-4-31b-it":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 4 31B IT","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"groq":{"models":{"canopylabs/orpheus-arabic-saudi":{"limit":{"context":4000,"output":50000},"modalities":{"input":["text"],"output":["audio"]},"name":"Canopy Labs Orpheus Arabic Saudi","reasoning":false,"tool_call":false},"canopylabs/orpheus-v1-english":{"limit":{"context":4000,"output":50000},"modalities":{"input":["text"],"output":["audio"]},"name":"Canopy Labs Orpheus V1 English","reasoning":false,"tool_call":false},"groq/compound":{"limit":{"context":131072,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Compound","reasoning":false,"tool_call":false},"groq/compound-mini":{"limit":{"context":131072,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Compound Mini","reasoning":false,"tool_call":false},"llama-3.1-8b-instant":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B","reasoning":false,"tool_call":true},"llama-3.3-70b-versatile":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.3 70B","reasoning":false,"tool_call":true},"meta-llama/llama-4-scout-17b-16e-instruct":{"limit":{"context":131072,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Scout 17B 16E","reasoning":false,"tool_call":true},"meta-llama/llama-prompt-guard-2-22m":{"limit":{"context":512,"output":512},"modalities":{"input":["text"],"output":["text"]},"name":"Llama Prompt Guard 2 22M","reasoning":false,"tool_call":false},"meta-llama/llama-prompt-guard-2-86m":{"limit":{"context":512,"output":512},"modalities":{"input":["text"],"output":["text"]},"name":"Prompt Guard 2 86M","reasoning":false,"tool_call":false},"openai/gpt-oss-120b":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 120B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-oss-20b":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 20B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-oss-safeguard-20b":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Safety GPT OSS 20B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"qwen/qwen3-32b":{"limit":{"context":131072,"output":40960},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3-32B","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","default"]}],"tool_call":true},"whisper-large-v3":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"Whisper","reasoning":false,"tool_call":false},"whisper-large-v3-turbo":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"Whisper Large V3 Turbo","reasoning":false,"tool_call":false}}},"kimi-for-coding":{"models":{"k3":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K3","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true},"kimi-for-coding":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-for-coding-highspeed":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi For Coding HighSpeed","reasoning":true,"reasoning_options":[],"tool_call":true}}},"minimax":{"models":{"MiniMax-M2":{"limit":{"context":196608,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.1":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.1","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.5":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.5-highspeed":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5-highspeed","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.7-highspeed":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7-highspeed","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M3":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"minimax-cn":{"models":{"MiniMax-M2":{"limit":{"context":196608,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.1":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.1","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.5":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.5-highspeed":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5-highspeed","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M2.7-highspeed":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7-highspeed","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMax-M3":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"mistral":{"models":{"codestral-latest":{"limit":{"context":256000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Codestral (latest)","reasoning":false,"tool_call":true},"devstral-2512":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral 2","reasoning":false,"tool_call":true},"devstral-latest":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral 2","reasoning":false,"tool_call":true},"devstral-medium-2507":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral Medium","reasoning":false,"tool_call":true},"devstral-medium-latest":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral 2 (latest)","reasoning":false,"tool_call":true},"devstral-small-2505":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral Small 2505","reasoning":false,"tool_call":true},"devstral-small-2507":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral Small","reasoning":false,"tool_call":true},"labs-devstral-small-2512":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Devstral Small 2","reasoning":false,"tool_call":true},"magistral-medium-latest":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Magistral Medium (latest)","reasoning":true,"reasoning_options":[],"tool_call":true},"magistral-small":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Magistral Small","reasoning":true,"reasoning_options":[],"tool_call":true},"ministral-3b-latest":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 3B (latest)","reasoning":false,"tool_call":true},"ministral-8b-latest":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 8B (latest)","reasoning":false,"tool_call":true},"mistral-embed":{"limit":{"context":8000,"output":3072},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Embed","reasoning":false,"tool_call":false},"mistral-large-2411":{"limit":{"context":131072,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Large 2.1","reasoning":false,"tool_call":true},"mistral-large-2512":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Large 3","reasoning":false,"tool_call":true},"mistral-large-latest":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Large (latest)","reasoning":false,"tool_call":true},"mistral-medium-2505":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium 3","reasoning":false,"tool_call":true},"mistral-medium-2508":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium 3.1","reasoning":false,"tool_call":true},"mistral-medium-2604":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium 3.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"mistral-medium-latest":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"mistral-nemo":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Nemo","reasoning":false,"tool_call":true},"mistral-small-2506":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Small 3.2","reasoning":false,"tool_call":true},"mistral-small-2603":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Small 4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"mistral-small-latest":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Small (latest)","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"open-mistral-7b":{"limit":{"context":8000,"output":8000},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral 7B","reasoning":false,"tool_call":true},"open-mistral-nemo":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Open Mistral Nemo","reasoning":false,"tool_call":true},"open-mixtral-8x22b":{"limit":{"context":64000,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"Mixtral 8x22B","reasoning":false,"tool_call":true},"open-mixtral-8x7b":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Mixtral 8x7B","reasoning":false,"tool_call":true},"pixtral-12b":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Pixtral 12B","reasoning":false,"tool_call":true},"pixtral-large-latest":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Pixtral Large (latest)","reasoning":false,"tool_call":true}}},"moonshotai":{"models":{"kimi-k2-0711-preview":{"limit":{"context":131072,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 0711","reasoning":false,"tool_call":true},"kimi-k2-0905-preview":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 0905","reasoning":false,"tool_call":true},"kimi-k2-thinking":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2-thinking-turbo":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking Turbo","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2-turbo-preview":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Turbo","reasoning":false,"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2.7-code-highspeed":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code HighSpeed","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k3":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K3","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true}}},"moonshotai-cn":{"models":{"kimi-k2-0711-preview":{"limit":{"context":131072,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 0711","reasoning":false,"tool_call":true},"kimi-k2-0905-preview":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 0905","reasoning":false,"tool_call":true},"kimi-k2-thinking":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2-thinking-turbo":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking Turbo","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2-turbo-preview":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Turbo","reasoning":false,"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2.7-code-highspeed":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code HighSpeed","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k3":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K3","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true}}},"nvidia":{"models":{"abacusai/dracarys-llama-3_1-70b-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"dracarys-llama-3.1-70b-instruct","reasoning":false,"tool_call":true},"baai/bge-m3":{"limit":{"context":8192,"output":1024},"modalities":{"input":["text"],"output":["text"]},"name":"BGE M3","reasoning":false,"tool_call":false},"black-forest-labs/flux.1-dev":{"limit":{"context":4096,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.1-dev","reasoning":false,"tool_call":false},"black-forest-labs/flux_1-kontext-dev":{"limit":{"context":40960,"output":40960},"modalities":{"input":["text","image"],"output":["image"]},"name":"FLUX.1-Kontext-dev","reasoning":false,"tool_call":false},"black-forest-labs/flux_1-schnell":{"limit":{"context":77,"input":77,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.1-schnell","reasoning":false,"tool_call":false},"black-forest-labs/flux_2-klein-4b":{"limit":{"context":40960,"output":40960},"modalities":{"input":["image","text"],"output":["image"]},"name":"FLUX.2 Klein 4B","reasoning":false,"tool_call":false},"bytedance/seed-oss-36b-instruct":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text"],"output":["text"]},"name":"ByteDance-Seed/Seed-OSS-36B-Instruct","reasoning":false,"tool_call":true},"deepseek-ai/deepseek-v4-flash":{"limit":{"context":1048576,"output":393216},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true},"deepseek-ai/deepseek-v4-pro":{"limit":{"context":1048576,"output":393216},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true},"google/gemma-2-2b-it":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Gemma 2 2b It","reasoning":false,"tool_call":true},"google/gemma-3n-e2b-it":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 3n E2b It","reasoning":false,"tool_call":true},"google/gemma-3n-e4b-it":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 3n E4b It","reasoning":false,"tool_call":true},"google/gemma-4-31b-it":{"limit":{"context":256000,"output":16384},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Gemma-4-31B-IT","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"google/google-paligemma":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"paligemma","reasoning":false,"tool_call":false},"meta/esm2-650m":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"esm2-650m","reasoning":false,"tool_call":false},"meta/esmfold":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"esmfold","reasoning":false,"tool_call":false},"meta/llama-3.1-70b-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 70b Instruct","reasoning":false,"tool_call":true},"meta/llama-3.1-8b-instruct":{"limit":{"context":16000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B Instruct","reasoning":false,"tool_call":true},"meta/llama-3.2-11b-vision-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 3.2 11b Vision Instruct","reasoning":false,"tool_call":true},"meta/llama-3.2-1b-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.2 1b Instruct","reasoning":false,"tool_call":true},"meta/llama-3.2-3b-instruct":{"limit":{"context":32768,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.2 3B Instruct","reasoning":false,"tool_call":false},"meta/llama-3.2-90b-vision-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama-3.2-90B-Vision-Instruct","reasoning":false,"tool_call":true},"meta/llama-3.3-70b-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.3 70b Instruct","reasoning":false,"tool_call":true},"meta/llama-4-maverick-17b-128e-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama 4 Maverick 17b 128e Instruct","reasoning":false,"tool_call":true},"meta/llama-guard-4-12b":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama Guard 4 12B","reasoning":false,"tool_call":false},"microsoft/phi-4-mini-instruct":{"limit":{"context":131072,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Phi-4-Mini","reasoning":false,"tool_call":true},"microsoft/phi-4-multimodal-instruct":{"limit":{"context":128000,"input":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Phi 4 Multimodal","reasoning":false,"tool_call":false},"minimaxai/minimax-m2.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"minimaxai/minimax-m3":{"limit":{"context":1000000,"output":16384},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mistralai/magistral-small-2506":{"limit":{"context":32768,"input":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Magistral Small 2506","reasoning":false,"tool_call":false},"mistralai/mistral-7b-instruct-v03":{"limit":{"context":65536,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral-7B-Instruct-v0.3","reasoning":false,"tool_call":true},"mistralai/mistral-large-3-675b-instruct-2512":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Large 3 675B Instruct 2512","reasoning":false,"tool_call":true},"mistralai/mistral-medium-3-instruct":{"limit":{"context":131072,"input":131072,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium 3","reasoning":false,"tool_call":false},"mistralai/mistral-nemotron":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"mistral-nemotron","reasoning":false,"tool_call":true},"mistralai/mistral-small-4-119b-2603":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"mistral-small-4-119b-2603","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"mistralai/mixtral-8x22b-instruct":{"limit":{"context":65536,"output":13108},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral: Mixtral 8x22B Instruct","reasoning":false,"tool_call":true},"mistralai/mixtral-8x7b-instruct":{"limit":{"context":32768,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral: Mixtral 8x7B Instruct","reasoning":false,"tool_call":true},"moonshotai/kimi-k2-instruct-0905":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 0905","reasoning":false,"tool_call":true},"moonshotai/kimi-k2.6":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true},"nvidia/active-speaker-detection":{"limit":{"context":0,"output":4096},"modalities":{"input":["video"],"output":["text"]},"name":"Active Speaker Detection","reasoning":false,"tool_call":false},"nvidia/bevformer":{"limit":{"context":128000,"output":8192},"modalities":{"input":["video"],"output":["text"]},"name":"bevformer","reasoning":false,"tool_call":false},"nvidia/cosmos-predict1-5b":{"limit":{"context":0,"output":4096},"modalities":{"input":["text","image","video"],"output":["video"]},"name":"cosmos-predict1-5b","reasoning":false,"tool_call":false},"nvidia/cosmos-transfer1-7b":{"limit":{"context":0,"output":4096},"modalities":{"input":["text","image","video"],"output":["video"]},"name":"cosmos-transfer1-7b","reasoning":false,"tool_call":false},"nvidia/cosmos-transfer2_5-2b":{"limit":{"context":0,"output":4096},"modalities":{"input":["text","image","video"],"output":["video"]},"name":"cosmos-transfer2.5-2b","reasoning":false,"tool_call":false},"nvidia/gliner-pii":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"gliner-pii","reasoning":false,"tool_call":false},"nvidia/llama-3_1-nemotron-safety-guard-8b-v3":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"llama-3.1-nemotron-safety-guard-8b-v3","reasoning":false,"tool_call":false},"nvidia/llama-3_2-nemoretriever-300m-embed-v1":{"limit":{"context":32768,"output":2048},"modalities":{"input":["text"],"output":["text"]},"name":"llama-3_2-nemoretriever-300m-embed-v1","reasoning":false,"tool_call":false},"nvidia/llama-nemotron-embed-vl-1b-v2":{"limit":{"context":32768,"output":2048},"modalities":{"input":["text","image"],"output":["text"]},"name":"llama-nemotron-embed-vl-1b-v2","reasoning":false,"tool_call":false},"nvidia/llama-nemotron-rerank-vl-1b-v2":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"llama-nemotron-rerank-vl-1b-v2","reasoning":false,"tool_call":false},"nvidia/magpie-tts-zeroshot":{"limit":{"context":0,"output":4096},"modalities":{"input":["text","audio"],"output":["audio"]},"name":"magpie-tts-zeroshot","reasoning":false,"tool_call":false},"nvidia/nemotron-3-content-safety":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"nemotron-3-content-safety","reasoning":false,"tool_call":false},"nvidia/nemotron-3-nano-30b-a3b":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"nemotron-3-nano-30b-a3b","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"limit":{"context":256000,"output":65536},"modalities":{"input":["text","image","video","audio"],"output":["text"]},"name":"Nemotron 3 Nano Omni","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":32768,"min":-1,"type":"budget_tokens"}],"tool_call":true},"nvidia/nemotron-3-super-120b-a12b":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Super","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nvidia/nemotron-3-ultra-550b-a55b":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Ultra 550B A55B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nvidia/nemotron-content-safety-reasoning-4b":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"nemotron-content-safety-reasoning-4b","reasoning":true,"reasoning_options":[],"tool_call":false},"nvidia/nemotron-mini-4b-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"nemotron-mini-4b-instruct","reasoning":false,"tool_call":true},"nvidia/nemotron-voicechat":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text","audio"],"output":["text"]},"name":"nemotron-voicechat","reasoning":false,"tool_call":true},"nvidia/nv-embed-v1":{"limit":{"context":32768,"output":2048},"modalities":{"input":["text"],"output":["text"]},"name":"nv-embed-v1","reasoning":false,"tool_call":false},"nvidia/nv-embedcode-7b-v1":{"limit":{"context":32768,"output":2048},"modalities":{"input":["text"],"output":["text"]},"name":"nv-embedcode-7b-v1","reasoning":false,"tool_call":false},"nvidia/nvidia-nemotron-nano-9b-v2":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"nvidia-nemotron-nano-9b-v2","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nvidia/rerank-qa-mistral-4b":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"rerank-qa-mistral-4b","reasoning":false,"tool_call":false},"nvidia/riva-translate-4b-instruct-v1_1":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"riva-translate-4b-instruct-v1_1","reasoning":false,"tool_call":false},"nvidia/sparsedrive":{"limit":{"context":128000,"output":8192},"modalities":{"input":["video"],"output":["text"]},"name":"sparsedrive","reasoning":false,"tool_call":false},"nvidia/streampetr":{"limit":{"context":128000,"output":8192},"modalities":{"input":["video"],"output":["text"]},"name":"streampetr","reasoning":false,"tool_call":false},"nvidia/studiovoice":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"studiovoice","reasoning":false,"tool_call":false},"nvidia/synthetic-video-detector":{"limit":{"context":0,"output":4096},"modalities":{"input":["video"],"output":["text"]},"name":"synthetic-video-detector","reasoning":false,"tool_call":false},"nvidia/usdcode":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"usdcode","reasoning":false,"tool_call":false},"nvidia/usdvalidate":{"limit":{"context":0,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"usdvalidate","reasoning":false,"tool_call":false},"openai/gpt-oss-120b":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-OSS-120B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-oss-20b":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 20B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/whisper-large-v3":{"limit":{"context":0,"output":4096},"modalities":{"input":["audio"],"output":["text"]},"name":"Whisper Large v3","reasoning":false,"tool_call":false},"qwen/qwen-image":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["image"]},"name":"Qwen Image","reasoning":false,"tool_call":false},"qwen/qwen-image-edit":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["image"]},"name":"Qwen Image Edit","reasoning":false,"tool_call":false},"qwen/qwen2.5-coder-32b-instruct":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen2.5 Coder 32b Instruct","reasoning":false,"tool_call":true},"qwen/qwen3-coder-480b-a35b-instruct":{"limit":{"context":262144,"output":66536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder 480B A35B Instruct","reasoning":false,"tool_call":true},"qwen/qwen3-next-80b-a3b-instruct":{"limit":{"context":262144,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3-Next-80B-A3B-Instruct","reasoning":false,"tool_call":true},"qwen/qwen3.5-122b-a10b":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video","audio"],"output":["text"]},"name":"Qwen3.5 122B-A10B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"qwen/qwen3.5-397b-a17b":{"limit":{"context":262144,"output":8192},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3.5-397B-A17B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"sarvamai/sarvam-m":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"sarvam-m","reasoning":false,"tool_call":true},"stepfun-ai/step-3.5-flash":{"limit":{"context":256000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Step 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"stepfun-ai/step-3.7-flash":{"limit":{"context":256000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"Step 3.7 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true},"upstage/solar-10_7b-instruct":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"solar-10.7b-instruct","reasoning":false,"tool_call":true},"z-ai/glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"openai":{"models":{"chatgpt-image-latest":{"limit":{"context":0,"input":0,"output":0},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"chatgpt-image-latest","reasoning":false,"tool_call":false},"gpt-3.5-turbo":{"limit":{"context":16385,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5-turbo","reasoning":false,"tool_call":false},"gpt-4":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-4","reasoning":false,"tool_call":true},"gpt-4-turbo":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4 Turbo","reasoning":false,"tool_call":true},"gpt-4.1":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4.1","reasoning":false,"tool_call":true},"gpt-4.1-mini":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4.1 mini","reasoning":false,"tool_call":true},"gpt-4.1-nano":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4.1 nano","reasoning":false,"tool_call":true},"gpt-4o":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4o","reasoning":false,"tool_call":true},"gpt-4o-2024-05-13":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o (2024-05-13)","reasoning":false,"tool_call":true},"gpt-4o-2024-08-06":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o (2024-08-06)","reasoning":false,"tool_call":true},"gpt-4o-2024-11-20":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4o (2024-11-20)","reasoning":false,"tool_call":true},"gpt-4o-mini":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4o mini","reasoning":false,"tool_call":true},"gpt-5":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-chat-latest":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Chat (latest)","reasoning":true,"reasoning_options":[],"tool_call":false},"gpt-5-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5-Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-pro":{"limit":{"context":400000,"input":272000,"output":272000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true},"gpt-5.1":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"gpt-5.1-chat-latest":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Chat","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"gpt-5.1-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.1-codex-max":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex Max","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.1-codex-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.2":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.2-chat-latest":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2 Chat","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"gpt-5.2-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.2-pro":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"gpt-5.3-chat-latest":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.3 Chat (latest)","reasoning":false,"tool_call":true},"gpt-5.3-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.3 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.3-codex-spark":{"limit":{"context":128000,"input":100000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.3 Codex Spark","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.4 mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.4 nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-pro":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.4 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"gpt-5.5":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.5-pro":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"gpt-5.6":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-luna":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-sol":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-terra":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-image-1":{"limit":{"context":0,"input":0,"output":0},"modalities":{"input":["text","image"],"output":["image"]},"name":"gpt-image-1","reasoning":false,"tool_call":false},"gpt-image-1-mini":{"limit":{"context":0,"input":0,"output":0},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"gpt-image-1-mini","reasoning":false,"tool_call":false},"gpt-image-1.5":{"limit":{"context":0,"input":0,"output":0},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"gpt-image-1.5","reasoning":false,"tool_call":false},"gpt-image-2":{"limit":{"context":0,"input":0,"output":0},"modalities":{"input":["text","image"],"output":["image"]},"name":"gpt-image-2","reasoning":false,"tool_call":false},"gpt-realtime-2.1":{"limit":{"context":128000,"input":96000,"output":32000},"modalities":{"input":["text","audio","image"],"output":["text","audio"]},"name":"GPT-Realtime-2.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true},"o1":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"o1","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o1-pro":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o1-pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o3":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"o3","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o3-deep-research":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o3-deep-research","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"o3-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text"],"output":["text"]},"name":"o3-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o3-pro":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o3-pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o4-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o4-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"o4-mini-deep-research":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o4-mini-deep-research","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"text-embedding-3-large":{"limit":{"context":8191,"output":3072},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-3-large","reasoning":false,"tool_call":false},"text-embedding-3-small":{"limit":{"context":8191,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-3-small","reasoning":false,"tool_call":false},"text-embedding-ada-002":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-ada-002","reasoning":false,"tool_call":false}}},"opencode":{"models":{"big-pickle":{"limit":{"context":200000,"input":160000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Big Pickle","reasoning":true,"reasoning_options":[],"tool_call":true},"claude-3-5-haiku":{"limit":{"context":200000,"output":8192},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 3.5","reasoning":false,"tool_call":true},"claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-haiku-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-1":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-opus-4-7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-opus-4-8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"claude-sonnet-4":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-4-5":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-4-6":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true},"deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"deepseek-v4-flash-free":{"limit":{"context":200000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash Free","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"gemini-3-flash":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gemini-3-pro":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true},"gemini-3.1-pro":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.1 Pro Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gemini-3.5-flash":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"name":"Gemini 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"glm-4.6":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-4.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-4.7-free":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7 Free","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5-free":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5 Free","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.1":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"gpt-5":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"gpt-5.1":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"gpt-5.1-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.1-codex-max":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex Max","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.1-codex-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.1 Codex Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"gpt-5.2":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.2-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.3-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.3 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.3-codex-spark":{"limit":{"context":128000,"input":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-5.3 Codex Spark","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.4-pro":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.4 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"gpt-5.5":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"gpt-5.5-pro":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.5 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"gpt-5.6-luna":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-sol":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"gpt-5.6-terra":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"grok-4.5":{"limit":{"context":500000,"output":500000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"grok-build-0.1":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok Build 0.1","reasoning":true,"reasoning_options":[],"tool_call":true},"grok-code":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text"],"output":["text"]},"name":"Grok Code Fast 1","reasoning":true,"reasoning_options":[],"tool_call":true},"hy3-free":{"limit":{"context":190000,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"Hy3 Free","reasoning":true,"reasoning_options":[],"tool_call":true},"hy3-preview-free":{"limit":{"context":256000,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"Hy3 preview Free","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2","reasoning":false,"tool_call":true},"kimi-k2-thinking":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.5-free":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5 Free","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"ling-2.6-flash-free":{"limit":{"context":262100,"output":32800},"modalities":{"input":["text"],"output":["text"]},"name":"Ling 2.6 Flash Free","reasoning":false,"tool_call":true},"mimo-v2-flash-free":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo V2 Flash Free","reasoning":true,"reasoning_options":[],"tool_call":true},"mimo-v2-omni-free":{"limit":{"context":262144,"output":64000},"modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"name":"MiMo V2 Omni Free","reasoning":true,"reasoning_options":[],"tool_call":true},"mimo-v2-pro-free":{"limit":{"context":1048576,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo V2 Pro Free","reasoning":true,"reasoning_options":[],"tool_call":true},"mimo-v2.5-free":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","audio","video"],"output":["text"]},"name":"MiMo V2.5 Free","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.1":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.1","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.1-free":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.1 Free","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.5":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.5-free":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5 Free","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m3":{"limit":{"context":512000,"output":128000},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m3-free":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"MiniMax-M3 Free","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nemotron-3-super-free":{"limit":{"context":204800,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Super Free","reasoning":true,"reasoning_options":[],"tool_call":true},"nemotron-3-ultra-free":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Ultra Free","reasoning":true,"reasoning_options":[],"tool_call":true},"north-mini-code-free":{"limit":{"context":256000,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"North Mini Code Free","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"qwen3-coder":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder","reasoning":false,"tool_call":true},"qwen3.5-plus":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.5 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.6-plus":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.6-plus-free":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Plus Free","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"ring-2.6-1t-free":{"limit":{"context":262000,"output":66000},"modalities":{"input":["text"],"output":["text"]},"name":"Ring 2.6 1T Free","reasoning":true,"reasoning_options":[],"tool_call":true},"trinity-large-preview-free":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Trinity Large Preview","reasoning":false,"tool_call":true}}},"opencode-go":{"models":{"deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"glm-5":{"limit":{"context":202752,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[],"tool_call":true},"glm-5.1":{"limit":{"context":202752,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[],"tool_call":true},"glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"grok-4.5":{"limit":{"context":500000,"output":500000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"kimi-k2.5":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2.6":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k2.7-code":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"kimi-k3":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K3 (2x usage)","reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true},"mimo-v2-omni":{"limit":{"context":262144,"output":128000},"modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"name":"MiMo V2 Omni","reasoning":true,"reasoning_options":[],"tool_call":true},"mimo-v2-pro":{"limit":{"context":1048576,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo V2 Pro","reasoning":true,"reasoning_options":[],"tool_call":true},"mimo-v2.5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","audio","video"],"output":["text"]},"name":"MiMo V2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"mimo-v2.5-pro":{"limit":{"context":1048576,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo V2.5 Pro","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.5":{"limit":{"context":204800,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m2.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax-m3":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"qwen3.5-plus":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.5 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.6-plus":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.6 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"type":"budget_tokens"}],"tool_call":true},"qwen3.7-max":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3.7 Max","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"type":"budget_tokens"}],"tool_call":true},"qwen3.7-plus":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Qwen3.7 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"type":"budget_tokens"}],"tool_call":true}}},"togetherai":{"models":{"LiquidAI/LFM2-24B-A2B":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"LFM2-24B-A2B","reasoning":false,"tool_call":false},"MiniMaxAI/MiniMax-M2.5":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMaxAI/MiniMax-M2.7":{"limit":{"context":202752,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax-M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"MiniMaxAI/MiniMax-M3":{"limit":{"context":524288,"output":250000},"modalities":{"input":["text","image"],"output":["text"]},"name":"MiniMax-M3","reasoning":true,"reasoning_options":[],"tool_call":true},"Qwen/Qwen2.5-7B-Instruct-Turbo":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 2.5 7B Instruct Turbo","reasoning":false,"tool_call":true},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 235B A22B Instruct 2507 FP8","reasoning":false,"tool_call":true},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder 480B A35B Instruct","reasoning":false,"tool_call":true},"Qwen/Qwen3-Coder-Next-FP8":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder Next FP8","reasoning":false,"tool_call":true},"Qwen/Qwen3.5-397B-A17B":{"limit":{"context":262144,"output":130000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3.5 397B A17B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"Qwen/Qwen3.5-9B":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3.5 9B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"Qwen/Qwen3.6-Plus":{"limit":{"context":1000000,"output":500000},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3.6 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"Qwen/Qwen3.7-Max":{"limit":{"context":1000000,"output":500000},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3.7 Max","reasoning":false,"tool_call":true},"deepcogito/cogito-v2-1-671b":{"limit":{"context":163840,"output":163840},"modalities":{"input":["text"],"output":["text"]},"name":"Cogito v2.1 671B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false},"deepseek-ai/DeepSeek-R1":{"limit":{"context":163839,"output":163839},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-R1","reasoning":true,"reasoning_options":[],"tool_call":false},"deepseek-ai/DeepSeek-V3":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3","reasoning":false,"tool_call":true},"deepseek-ai/DeepSeek-V3-1":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"deepseek-ai/DeepSeek-V4-Pro":{"limit":{"context":512000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true},"essentialai/Rnj-1-Instruct":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Rnj-1 Instruct","reasoning":false,"tool_call":true},"google/gemma-3n-E4B-it":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Gemma 3N E4B Instruct","reasoning":false,"tool_call":false},"google/gemma-4-31B-it":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text","image"],"output":["text"]},"name":"Gemma 4 31B Instruct","reasoning":true,"reasoning_options":[],"tool_call":true},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.3 70B","reasoning":false,"tool_call":true},"meta-llama/Meta-Llama-3-8B-Instruct-Lite":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Meta Llama 3 8B Instruct Lite","reasoning":false,"tool_call":false},"moonshotai/Kimi-K2.5":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"moonshotai/Kimi-K2.6":{"limit":{"context":262144,"output":131000},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"moonshotai/Kimi-K2.7-Code":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"nvidia/nemotron-3-ultra-550b-a55b":{"limit":{"context":512300,"output":512300},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Ultra 550B A55B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"openai/gpt-oss-120b":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 120B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-oss-20b":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 20B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"pearl-ai/gemma-4-31b-it":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Pearl AI Gemma 4 31B Instruct","reasoning":true,"reasoning_options":[],"tool_call":false},"thinkingmachines/Inkling":{"limit":{"context":524288,"output":131072},"modalities":{"input":["text","image","audio"],"output":["text"]},"name":"Inkling","reasoning":true,"reasoning_options":[{"type":"effort","values":["max","xhigh","high","medium","low","none"]}],"tool_call":true},"zai-org/GLM-5":{"limit":{"context":202752,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai-org/GLM-5.1":{"limit":{"context":202752,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai-org/GLM-5.2":{"limit":{"context":262144,"output":164000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true}}},"vercel":{"models":{"alibaba/qwen-3-14b":{"limit":{"context":40960,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3-14B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"alibaba/qwen-3-235b":{"limit":{"context":262144,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 235B A22B Instruct 2507","reasoning":true,"reasoning_options":[],"tool_call":true},"alibaba/qwen-3-30b":{"limit":{"context":40960,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3-30B-A3B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"alibaba/qwen-3-32b":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 3.32B","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":38912,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen-3.6-max-preview":{"limit":{"context":240000,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 3.6 Max Preview","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":131072,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3-235b-a22b-thinking":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen3 235B A22B Thinking 2507","reasoning":true,"reasoning_options":[{"max":81920,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3-coder":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder 480B A35B Instruct","reasoning":true,"reasoning_options":[],"tool_call":true},"alibaba/qwen3-coder-30b-a3b":{"limit":{"context":262144,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 3 Coder 30B A3B Instruct","reasoning":true,"reasoning_options":[],"tool_call":true},"alibaba/qwen3-coder-next":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder Next","reasoning":true,"reasoning_options":[],"tool_call":true},"alibaba/qwen3-coder-plus":{"limit":{"context":1000000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Coder Plus","reasoning":false,"tool_call":true},"alibaba/qwen3-embedding-0.6b":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Embedding 0.6B","reasoning":false,"tool_call":false},"alibaba/qwen3-embedding-4b":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Embedding 4B","reasoning":false,"tool_call":false},"alibaba/qwen3-embedding-8b":{"limit":{"context":32768,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Embedding 8B","reasoning":false,"tool_call":false},"alibaba/qwen3-max":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Max","reasoning":false,"tool_call":true},"alibaba/qwen3-max-preview":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Max Preview","reasoning":false,"tool_call":true},"alibaba/qwen3-max-thinking":{"limit":{"context":256000,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 3 Max Thinking","reasoning":true,"reasoning_options":[{"max":81920,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3-next-80b-a3b-instruct":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Next 80B A3B Instruct","reasoning":false,"tool_call":true},"alibaba/qwen3-next-80b-a3b-thinking":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen3 Next 80B A3B Thinking","reasoning":true,"reasoning_options":[{"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3-vl-235b-a22b-instruct":{"limit":{"context":131072,"output":129024},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3 VL 235B A22B Instruct","reasoning":false,"tool_call":false},"alibaba/qwen3-vl-instruct":{"limit":{"context":131072,"output":129024},"modalities":{"input":["text","image"],"output":["text"]},"name":"Qwen3 VL Instruct","reasoning":false,"tool_call":true},"alibaba/qwen3-vl-thinking":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen3 VL Thinking","reasoning":true,"reasoning_options":[{"max":81920,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3.5-flash":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3.5-plus":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen 3.5 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":81920,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3.6-27b":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen 3.6 27B","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":131072,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3.6-plus":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen 3.6 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":131072,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3.7-max":{"limit":{"context":991000,"output":64000},"modalities":{"input":["text"],"output":["text"]},"name":"Qwen 3.7 Max","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/qwen3.7-plus":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Qwen 3.7 Plus","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":262144,"min":1,"type":"budget_tokens"}],"tool_call":true},"alibaba/wan-v2.5-t2v-preview":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.5 Text-to-Video Preview","reasoning":false,"tool_call":false},"alibaba/wan-v2.6-i2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.6 Image-to-Video","reasoning":false,"tool_call":false},"alibaba/wan-v2.6-i2v-flash":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.6 Image-to-Video Flash","reasoning":false,"tool_call":false},"alibaba/wan-v2.6-r2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.6 Reference-to-Video","reasoning":false,"tool_call":false},"alibaba/wan-v2.6-r2v-flash":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.6 Reference-to-Video Flash","reasoning":false,"tool_call":false},"alibaba/wan-v2.6-t2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.6 Text-to-Video","reasoning":false,"tool_call":false},"alibaba/wan-v2.7-r2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.7 Reference-to-Video","reasoning":false,"tool_call":false},"alibaba/wan-v2.7-t2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Wan v2.7 Text-to-Video","reasoning":false,"tool_call":false},"amazon/nova-2-lite":{"limit":{"context":1000000,"output":1000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Nova 2 Lite","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":false},"amazon/nova-lite":{"limit":{"context":300000,"output":8192},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Nova Lite","reasoning":false,"tool_call":true},"amazon/nova-micro":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Nova Micro","reasoning":false,"tool_call":true},"amazon/nova-pro":{"limit":{"context":300000,"output":8192},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"Nova Pro","reasoning":false,"tool_call":true},"amazon/titan-embed-text-v2":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Titan Text Embeddings V2","reasoning":false,"tool_call":false},"anthropic/claude-3-haiku":{"limit":{"context":200000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Claude Haiku 3","reasoning":false,"tool_call":true},"anthropic/claude-fable-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Fable 5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"anthropic/claude-haiku-4.5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Haiku 4.5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic/claude-opus-4":{"limit":{"context":200000,"output":8192},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4","reasoning":true,"reasoning_options":[],"tool_call":true},"anthropic/claude-opus-4.1":{"limit":{"context":200000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.1","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic/claude-opus-4.5":{"limit":{"context":200000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic/claude-opus-4.6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.6","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic/claude-opus-4.7":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"anthropic/claude-opus-4.7-fast":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.7 (Fast)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"anthropic/claude-opus-4.8":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"anthropic/claude-opus-4.8-fast":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Opus 4.8 (Fast)","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"anthropic/claude-sonnet-4":{"limit":{"context":1000000,"output":8192},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4","reasoning":true,"reasoning_options":[],"tool_call":true},"anthropic/claude-sonnet-4.5":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.5","reasoning":true,"reasoning_options":[{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic/claude-sonnet-4.6":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 4.6","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"min":1024,"type":"budget_tokens"}],"tool_call":true},"anthropic/claude-sonnet-5":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Claude Sonnet 5","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"arcee-ai/trinity-large-thinking":{"limit":{"context":262100,"output":80000},"modalities":{"input":["text"],"output":["text"]},"name":"Trinity Large Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"arcee-ai/trinity-mini":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Trinity Mini","reasoning":false,"tool_call":false},"bfl/flux-2-flex":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.2 [flex]","reasoning":false,"tool_call":false},"bfl/flux-2-klein-4b":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.2 [klein] 4B","reasoning":false,"tool_call":false},"bfl/flux-2-klein-9b":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.2 [klein] 9B","reasoning":false,"tool_call":false},"bfl/flux-2-max":{"limit":{"context":67300,"output":67300},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.2 [max]","reasoning":false,"tool_call":false},"bfl/flux-2-pro":{"limit":{"context":67300,"output":67300},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.2 [pro]","reasoning":false,"tool_call":false},"bfl/flux-kontext-max":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.1 Kontext Max","reasoning":false,"tool_call":false},"bfl/flux-kontext-pro":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.1 Kontext Pro","reasoning":false,"tool_call":false},"bfl/flux-pro-1.0-fill":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX.1 Fill [pro]","reasoning":false,"tool_call":false},"bfl/flux-pro-1.1":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX1.1 [pro]","reasoning":false,"tool_call":false},"bfl/flux-pro-1.1-ultra":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"FLUX1.1 [pro] Ultra","reasoning":false,"tool_call":false},"bytedance/seed-1.6":{"limit":{"context":256000,"output":32000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Seed 1.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"bytedance/seed-1.8":{"limit":{"context":256000,"output":64000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Seed 1.8","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"bytedance/seedance-2.0":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["video"]},"name":"Seedance 2.0","reasoning":false,"tool_call":false},"bytedance/seedance-2.0-fast":{"limit":{"context":0,"output":0},"modalities":{"input":["text","image"],"output":["video"]},"name":"Seedance 2.0 Fast","reasoning":false,"tool_call":false},"bytedance/seedance-v1.0-pro":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Seedance v1.0 Pro","reasoning":false,"tool_call":false},"bytedance/seedance-v1.0-pro-fast":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Seedance v1.0 Pro Fast","reasoning":false,"tool_call":false},"bytedance/seedance-v1.5-pro":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Seedance v1.5 Pro","reasoning":false,"tool_call":false},"bytedance/seedream-4.0":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Seedream 4.0","reasoning":false,"tool_call":false},"bytedance/seedream-4.5":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Seedream 4.5","reasoning":false,"tool_call":false},"bytedance/seedream-5.0-lite":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Seedream 5.0 Lite","reasoning":false,"tool_call":false},"bytedance/seedream-5.0-pro":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Seedream 5.0 Pro","reasoning":false,"tool_call":false},"cohere/command-a":{"limit":{"context":256000,"output":8000},"modalities":{"input":["text"],"output":["text"]},"name":"Command A","reasoning":false,"tool_call":true},"cohere/embed-v4.0":{"limit":{"context":128000,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Embed v4.0","reasoning":false,"tool_call":false},"cohere/rerank-v3.5":{"limit":{"context":4096,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Cohere Rerank 3.5","reasoning":false,"tool_call":false},"cohere/rerank-v4-fast":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Cohere Rerank 4 Fast","reasoning":false,"tool_call":false},"cohere/rerank-v4-pro":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Cohere Rerank 4 Pro","reasoning":false,"tool_call":false},"deepseek/deepseek-r1":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-R1","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek/deepseek-v3":{"limit":{"context":163840,"output":163840},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3 0324","reasoning":false,"tool_call":true},"deepseek/deepseek-v3.1":{"limit":{"context":163840,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek-V3.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"deepseek/deepseek-v3.1-terminus":{"limit":{"context":131072,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3.1 Terminus","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"deepseek/deepseek-v3.2":{"limit":{"context":128000,"output":8000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3.2","reasoning":false,"tool_call":false},"deepseek/deepseek-v3.2-thinking":{"limit":{"context":128000,"output":8000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V3.2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"deepseek/deepseek-v4-flash":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true},"deepseek/deepseek-v4-pro":{"limit":{"context":1000000,"output":384000},"modalities":{"input":["text"],"output":["text"]},"name":"DeepSeek V4 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true},"google/gemini-2.5-flash":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.5 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":24576,"min":0,"type":"budget_tokens"}],"tool_call":true},"google/gemini-2.5-flash-image":{"limit":{"context":32768,"output":65536},"modalities":{"input":["text"],"output":["text","image"]},"name":"Nano Banana (Gemini 2.5 Flash Image)","reasoning":false,"tool_call":false},"google/gemini-2.5-flash-lite":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 2.5 Flash Lite","reasoning":true,"reasoning_options":[{"type":"toggle"},{"max":24576,"min":512,"type":"budget_tokens"}],"tool_call":true},"google/gemini-2.5-pro":{"limit":{"context":1048576,"output":65536},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"Gemini 2.5 Pro","reasoning":true,"reasoning_options":[{"max":32768,"min":128,"type":"budget_tokens"}],"tool_call":true},"google/gemini-3-flash":{"limit":{"context":1000000,"output":65000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 3 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"google/gemini-3-pro-image":{"limit":{"context":65536,"output":32768},"modalities":{"input":["text"],"output":["text","image"]},"name":"Nano Banana Pro","reasoning":false,"tool_call":false},"google/gemini-3-pro-preview":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 3 Pro Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true},"google/gemini-3.1-flash-image":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"Nano Banana 2","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false},"google/gemini-3.1-flash-image-preview":{"limit":{"context":131072,"output":32768},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"Gemini 3.1 Flash Image Preview (Nano Banana 2)","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false},"google/gemini-3.1-flash-lite":{"limit":{"context":1000000,"output":65000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 3.1 Flash Lite","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"google/gemini-3.1-flash-lite-image":{"limit":{"context":65536,"output":4096},"modalities":{"input":["text","image"],"output":["text","image"]},"name":"Gemini 3.1 Flash Lite Image (Nano Banana 2 Lite)","reasoning":true,"reasoning_options":[],"tool_call":false},"google/gemini-3.1-flash-lite-preview":{"limit":{"context":1000000,"output":65000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 3.1 Flash Lite Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"google/gemini-3.1-pro-preview":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 3.1 Pro Preview","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"google/gemini-3.5-flash":{"limit":{"context":1000000,"output":64000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"google/gemini-embedding-001":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Gemini Embedding 001","reasoning":false,"tool_call":false},"google/gemini-embedding-2":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["text"]},"name":"Gemini Embedding 2","reasoning":false,"tool_call":false},"google/gemini-omni-flash-preview":{"limit":{"context":1000000,"output":57920},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemini Omni Flash Preview","reasoning":true,"reasoning_options":[],"tool_call":false},"google/gemma-4-26b-a4b-it":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemma 4 26B A4B IT","reasoning":true,"reasoning_options":[],"tool_call":true},"google/gemma-4-31b-it":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Gemma 4 31B IT","reasoning":false,"tool_call":true},"google/imagen-4.0-fast-generate-001":{"limit":{"context":480,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Imagen 4 Fast","reasoning":false,"tool_call":false},"google/imagen-4.0-generate-001":{"limit":{"context":480,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Imagen 4","reasoning":false,"tool_call":false},"google/imagen-4.0-ultra-generate-001":{"limit":{"context":480,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Imagen 4 Ultra","reasoning":false,"tool_call":false},"google/text-embedding-005":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Text Embedding 005","reasoning":false,"tool_call":false},"google/text-multilingual-embedding-002":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Text Multilingual Embedding 002","reasoning":false,"tool_call":false},"google/veo-3.0-fast-generate-001":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Veo 3.0 Fast Generate","reasoning":false,"tool_call":false},"google/veo-3.0-generate-001":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Veo 3.0","reasoning":false,"tool_call":false},"google/veo-3.1-fast-generate-001":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Veo 3.1 Fast Generate","reasoning":false,"tool_call":false},"google/veo-3.1-generate-001":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Veo 3.1","reasoning":false,"tool_call":false},"inception/mercury-2":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Mercury 2","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"inception/mercury-coder-small":{"limit":{"context":32000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Mercury Coder Small Beta","reasoning":false,"tool_call":true},"interfaze/interfaze-beta":{"limit":{"context":1000000,"output":32000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Interfaze Beta","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false},"klingai/kling-v2.5-turbo-i2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v2.5 Turbo Image-to-Video","reasoning":false,"tool_call":false},"klingai/kling-v2.5-turbo-t2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v2.5 Turbo Text-to-Video","reasoning":false,"tool_call":false},"klingai/kling-v2.6-i2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v2.6 Image-to-Video","reasoning":false,"tool_call":false},"klingai/kling-v2.6-motion-control":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v2.6 Motion Control","reasoning":false,"tool_call":false},"klingai/kling-v2.6-t2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v2.6 Text-to-Video","reasoning":false,"tool_call":false},"klingai/kling-v3.0-i2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v3.0 Image-to-Video","reasoning":false,"tool_call":false},"klingai/kling-v3.0-motion-control":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v3.0 Motion Control","reasoning":false,"tool_call":false},"klingai/kling-v3.0-t2v":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Kling v3.0 Text-to-Video","reasoning":false,"tool_call":false},"kwaipilot/kat-coder-air-v2.5":{"limit":{"context":256000,"output":80000},"modalities":{"input":["text"],"output":["text"]},"name":"Kat Coder Air V2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"kwaipilot/kat-coder-pro-v1":{"limit":{"context":256000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"KAT-Coder-Pro V1","reasoning":true,"reasoning_options":[],"tool_call":false},"kwaipilot/kat-coder-pro-v2":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text"],"output":["text"]},"name":"Kat Coder Pro V2","reasoning":true,"reasoning_options":[],"tool_call":true},"kwaipilot/kat-coder-pro-v2.5":{"limit":{"context":256000,"output":80000},"modalities":{"input":["text"],"output":["text"]},"name":"Kat Coder Pro V2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"meta/llama-3.1-70b":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 70B Instruct","reasoning":false,"tool_call":true},"meta/llama-3.1-8b":{"limit":{"context":128000,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"Llama 3.1 8B Instruct","reasoning":false,"tool_call":true},"meta/llama-3.3-70b":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Llama-3.3-70B-Instruct","reasoning":false,"tool_call":true},"meta/llama-4-maverick":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama-4-Maverick-17B-128E-Instruct-FP8","reasoning":false,"tool_call":true},"meta/llama-4-scout":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"Llama-4-Scout-17B-16E-Instruct-FP8","reasoning":false,"tool_call":true},"meta/muse-spark-1.1":{"limit":{"context":1048576,"output":1048576},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Muse Spark 1.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true},"minimax/minimax-m2":{"limit":{"context":205000,"output":205000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m2.1":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.1","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m2.1-lightning":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.1 Lightning","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m2.5":{"limit":{"context":204800,"output":131000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.5","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m2.5-highspeed":{"limit":{"context":204800,"output":131000},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.5 High Speed","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m2.7":{"limit":{"context":204800,"output":131000},"modalities":{"input":["text"],"output":["text"]},"name":"Minimax M2.7","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m2.7-highspeed":{"limit":{"context":204800,"output":131100},"modalities":{"input":["text"],"output":["text"]},"name":"MiniMax M2.7 High Speed","reasoning":true,"reasoning_options":[],"tool_call":true},"minimax/minimax-m3":{"limit":{"context":1000000,"output":1000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"MiniMax M3","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mistral/codestral":{"limit":{"context":256000,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"Codestral (latest)","reasoning":false,"tool_call":true},"mistral/codestral-embed":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Codestral Embed","reasoning":false,"tool_call":false},"mistral/devstral-2":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text"],"output":["text"]},"name":"Devstral 2","reasoning":false,"tool_call":true},"mistral/devstral-small-2":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Devstral Small 2","reasoning":false,"tool_call":true},"mistral/magistral-medium":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"Magistral Medium (latest)","reasoning":true,"reasoning_options":[],"tool_call":true},"mistral/magistral-small":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Magistral Small","reasoning":true,"reasoning_options":[],"tool_call":true},"mistral/ministral-14b":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Ministral 14B","reasoning":false,"tool_call":false},"mistral/ministral-3b":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 3B (latest)","reasoning":false,"tool_call":true},"mistral/ministral-8b":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Ministral 8B (latest)","reasoning":false,"tool_call":true},"mistral/mistral-embed":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Embed","reasoning":false,"tool_call":false},"mistral/mistral-large-3":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Large 3","reasoning":false,"tool_call":false},"mistral/mistral-medium":{"limit":{"context":128000,"output":64000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium 3.1","reasoning":false,"tool_call":true},"mistral/mistral-medium-3.5":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Medium Latest","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true},"mistral/mistral-nemo":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"Mistral Nemo","reasoning":false,"tool_call":true},"mistral/mistral-small":{"limit":{"context":32000,"output":4000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Mistral Small (latest)","reasoning":false,"tool_call":true},"mistral/pixtral-12b":{"limit":{"context":128000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Pixtral 12B","reasoning":false,"tool_call":true},"moonshotai/kimi-k2":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Instruct","reasoning":false,"tool_call":true},"moonshotai/kimi-k2-thinking":{"limit":{"context":216144,"output":216144},"modalities":{"input":["text"],"output":["text"]},"name":"Kimi K2 Thinking","reasoning":true,"reasoning_options":[],"tool_call":true},"moonshotai/kimi-k2.5":{"limit":{"context":262114,"output":262114},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"moonshotai/kimi-k2.6":{"limit":{"context":262000,"output":262000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Kimi K2.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"moonshotai/kimi-k2.7-code":{"limit":{"context":256000,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Kimi K2.7 Code","reasoning":true,"reasoning_options":[],"tool_call":true},"moonshotai/kimi-k2.7-code-highspeed":{"limit":{"context":262144,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Kimi K2.7 Code High Speed","reasoning":true,"reasoning_options":[],"tool_call":true},"moonshotai/kimi-k3":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Kimi K3","reasoning":true,"reasoning_options":[],"tool_call":true},"morph/morph-v3-fast":{"limit":{"context":16000,"output":16000},"modalities":{"input":["text"],"output":["text"]},"name":"Morph v3 Fast","reasoning":false,"tool_call":false},"morph/morph-v3-large":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Morph v3 Large","reasoning":false,"tool_call":false},"nvidia/nemotron-3-nano-30b-a3b":{"limit":{"context":262144,"output":262144},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Nano 30B A3B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false},"nvidia/nemotron-3-super-120b-a12b":{"limit":{"context":256000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"NVIDIA Nemotron 3 Super 120B A12B","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false},"nvidia/nemotron-3-ultra-550b-a55b":{"limit":{"context":1000000,"output":65000},"modalities":{"input":["text"],"output":["text"]},"name":"Nemotron 3 Ultra","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nvidia/nemotron-nano-12b-v2-vl":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text","image"],"output":["text"]},"name":"Nvidia Nemotron Nano 12B V2 VL","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"nvidia/nemotron-nano-9b-v2":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"Nvidia Nemotron Nano 9B V2","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"openai/gpt-3.5-turbo":{"limit":{"context":16385,"input":12289,"output":4096},"modalities":{"input":["text"],"output":["text"]},"name":"GPT-3.5 Turbo","reasoning":false,"tool_call":false},"openai/gpt-4-turbo":{"limit":{"context":128000,"output":4096},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4 Turbo","reasoning":false,"tool_call":true},"openai/gpt-4.1":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4.1","reasoning":false,"tool_call":true},"openai/gpt-4.1-mini":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4.1 mini","reasoning":false,"tool_call":true},"openai/gpt-4.1-nano":{"limit":{"context":1047576,"output":32768},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-4.1 nano","reasoning":false,"tool_call":true},"openai/gpt-4o":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4o","reasoning":false,"tool_call":true},"openai/gpt-4o-mini":{"limit":{"context":128000,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-4o mini","reasoning":false,"tool_call":true},"openai/gpt-4o-mini-search-preview":{"limit":{"context":128000,"input":111616,"output":16384},"modalities":{"input":["text"],"output":["text"]},"name":"GPT 4o Mini Search Preview","reasoning":false,"tool_call":false},"openai/gpt-4o-mini-transcribe":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"GPT-4o mini Transcribe","reasoning":false,"tool_call":false},"openai/gpt-4o-transcribe":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"GPT-4o Transcribe","reasoning":false,"tool_call":false},"openai/gpt-5":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"openai/gpt-5-chat":{"limit":{"context":128000,"input":111616,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text","image"]},"name":"GPT-5 Chat","reasoning":true,"reasoning_options":[],"tool_call":true},"openai/gpt-5-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5-Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-5-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"openai/gpt-5-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GPT-5 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true},"openai/gpt-5-pro":{"limit":{"context":400000,"input":128000,"output":272000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5 pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true},"openai/gpt-5.1-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.1-Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-5.1-codex-max":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.1 Codex Max","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.1-codex-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.1 Codex mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-5.1-instant":{"limit":{"context":128000,"input":111616,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.1 Instant","reasoning":false,"tool_call":true},"openai/gpt-5.1-thinking":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text","image"]},"name":"GPT 5.1 Thinking","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"openai/gpt-5.2":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.2-chat":{"limit":{"context":128000,"input":111616,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2 Chat","reasoning":false,"tool_call":true},"openai/gpt-5.2-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.2-Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.2-pro":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.2 ","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.3-chat":{"limit":{"context":128000,"input":111616,"output":16384},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT-5.3 Chat","reasoning":false,"tool_call":true},"openai/gpt-5.3-codex":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.3 Codex","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.4":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.4","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.4-mini":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.4 Mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.4-nano":{"limit":{"context":400000,"input":272000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.4 Nano","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.4-pro":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.4 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.5":{"limit":{"context":1000000,"input":872000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.5-pro":{"limit":{"context":1000000,"input":872000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.5 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true},"openai/gpt-5.6-luna":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.6 Luna","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"openai/gpt-5.6-sol":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.6 Sol","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"openai/gpt-5.6-terra":{"limit":{"context":1050000,"input":922000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GPT 5.6 Terra","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true},"openai/gpt-image-1":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"GPT Image 1","reasoning":false,"tool_call":false},"openai/gpt-image-1-mini":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"GPT Image 1 Mini","reasoning":false,"tool_call":false},"openai/gpt-image-1.5":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"GPT Image 1.5","reasoning":false,"tool_call":false},"openai/gpt-image-2":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"GPT Image 2","reasoning":false,"tool_call":false},"openai/gpt-oss-120b":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 120B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-oss-20b":{"limit":{"context":131072,"input":122880,"output":8192},"modalities":{"input":["text"],"output":["text"]},"name":"GPT OSS 20B","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-oss-safeguard-20b":{"limit":{"context":131072,"input":65536,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"gpt-oss-safeguard-20b","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/gpt-realtime-1.5":{"limit":{"context":0,"output":0},"modalities":{"input":["text","audio"],"output":["text","audio"]},"name":"GPT-Realtime-1.5","reasoning":false,"tool_call":false},"openai/gpt-realtime-2":{"limit":{"context":0,"output":0},"modalities":{"input":["text","audio"],"output":["text","audio"]},"name":"gpt-realtime-2","reasoning":false,"tool_call":false},"openai/gpt-realtime-2.1":{"limit":{"context":128000,"input":96000,"output":32000},"modalities":{"input":["text","audio"],"output":["text","audio"]},"name":"gpt-realtime-2.1","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":false},"openai/gpt-realtime-mini":{"limit":{"context":0,"output":0},"modalities":{"input":["text","audio"],"output":["text","audio"]},"name":"GPT-Realtime mini","reasoning":false,"tool_call":false},"openai/gpt-realtime-whisper":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"gpt-realtime-whisper","reasoning":false,"tool_call":false},"openai/o1":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"o1","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o3":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"o3","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o3-deep-research":{"limit":{"context":200000,"input":100000,"output":100000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"o3-deep-research","reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true},"openai/o3-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text"],"output":["text"]},"name":"o3-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o3-pro":{"limit":{"context":200000,"input":100000,"output":100000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"o3 Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/o4-mini":{"limit":{"context":200000,"output":100000},"modalities":{"input":["text","image"],"output":["text"]},"name":"o4-mini","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"openai/text-embedding-3-large":{"limit":{"context":8192,"input":6656,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-3-large","reasoning":false,"tool_call":false},"openai/text-embedding-3-small":{"limit":{"context":8192,"input":6656,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-3-small","reasoning":false,"tool_call":false},"openai/text-embedding-ada-002":{"limit":{"context":8192,"input":6656,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"text-embedding-ada-002","reasoning":false,"tool_call":false},"openai/tts-1":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["audio"]},"name":"TTS-1","reasoning":false,"tool_call":false},"openai/tts-1-hd":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["audio"]},"name":"TTS-1 HD","reasoning":false,"tool_call":false},"openai/whisper-1":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"Whisper","reasoning":false,"tool_call":false},"perplexity/sonar":{"limit":{"context":127000,"output":8000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Sonar","reasoning":false,"tool_call":true},"perplexity/sonar-pro":{"limit":{"context":200000,"output":8000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Sonar Pro","reasoning":false,"tool_call":true},"perplexity/sonar-reasoning-pro":{"limit":{"context":127000,"output":8000},"modalities":{"input":["text"],"output":["text"]},"name":"Sonar Reasoning Pro","reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false},"prodia/flux-fast-schnell":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Flux Schnell","reasoning":false,"tool_call":false},"quiverai/arrow-1.1":{"limit":{"context":131072,"output":131072},"modalities":{"input":["text"],"output":["image"]},"name":"Arrow 1.1","reasoning":false,"tool_call":false},"recraft/recraft-v2":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V2","reasoning":false,"tool_call":false},"recraft/recraft-v3":{"limit":{"context":512,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V3","reasoning":false,"tool_call":false},"recraft/recraft-v4":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V4","reasoning":false,"tool_call":false},"recraft/recraft-v4-pro":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V4 Pro","reasoning":false,"tool_call":false},"recraft/recraft-v4.1":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V4.1","reasoning":false,"tool_call":false},"recraft/recraft-v4.1-pro":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V4.1 Pro","reasoning":false,"tool_call":false},"recraft/recraft-v4.1-utility":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V4.1 Utility","reasoning":false,"tool_call":false},"recraft/recraft-v4.1-utility-pro":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["image"]},"name":"Recraft V4.1 Utility Pro","reasoning":false,"tool_call":false},"sakana/fugu-ultra":{"limit":{"context":1000000,"output":1000000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Fugu Ultra","reasoning":true,"reasoning_options":[],"tool_call":true},"stepfun/step-3.5-flash":{"limit":{"context":262114,"output":262114},"modalities":{"input":["text"],"output":["text"]},"name":"StepFun 3.5 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"stepfun/step-3.7-flash":{"limit":{"context":256000,"input":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Step 3.7 Flash","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"thinkingmachines/inkling":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Inkling","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true},"voyage/rerank-2.5":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Voyage Rerank 2.5","reasoning":false,"tool_call":false},"voyage/rerank-2.5-lite":{"limit":{"context":32000,"output":32000},"modalities":{"input":["text"],"output":["text"]},"name":"Voyage Rerank 2.5 Lite","reasoning":false,"tool_call":false},"voyage/voyage-3-large":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-3-large","reasoning":false,"tool_call":false},"voyage/voyage-3.5":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-3.5","reasoning":false,"tool_call":false},"voyage/voyage-3.5-lite":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-3.5-lite","reasoning":false,"tool_call":false},"voyage/voyage-4":{"limit":{"context":32000,"output":0},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-4","reasoning":false,"tool_call":false},"voyage/voyage-4-large":{"limit":{"context":32000,"output":0},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-4-large","reasoning":false,"tool_call":false},"voyage/voyage-4-lite":{"limit":{"context":32000,"output":0},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-4-lite","reasoning":false,"tool_call":false},"voyage/voyage-code-2":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-code-2","reasoning":false,"tool_call":false},"voyage/voyage-code-3":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-code-3","reasoning":false,"tool_call":false},"voyage/voyage-finance-2":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-finance-2","reasoning":false,"tool_call":false},"voyage/voyage-law-2":{"limit":{"context":8192,"output":1536},"modalities":{"input":["text"],"output":["text"]},"name":"voyage-law-2","reasoning":false,"tool_call":false},"xai/grok-4.1-fast-non-reasoning":{"limit":{"context":1000000,"output":1000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.1 Fast Non-Reasoning","reasoning":false,"tool_call":true},"xai/grok-4.1-fast-reasoning":{"limit":{"context":1000000,"output":1000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.1 Fast Reasoning","reasoning":true,"reasoning_options":[],"tool_call":true},"xai/grok-4.20-multi-agent":{"limit":{"context":2000000,"output":2000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Multi-Agent","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"xai/grok-4.20-multi-agent-beta":{"limit":{"context":2000000,"output":2000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Multi Agent Beta","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true},"xai/grok-4.20-non-reasoning":{"limit":{"context":2000000,"output":2000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Non-Reasoning","reasoning":false,"tool_call":true},"xai/grok-4.20-non-reasoning-beta":{"limit":{"context":2000000,"output":2000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Beta Non-Reasoning","reasoning":false,"tool_call":true},"xai/grok-4.20-reasoning":{"limit":{"context":2000000,"output":2000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Reasoning","reasoning":true,"reasoning_options":[],"tool_call":true},"xai/grok-4.20-reasoning-beta":{"limit":{"context":2000000,"output":2000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Beta Reasoning","reasoning":true,"reasoning_options":[],"tool_call":true},"xai/grok-4.3":{"limit":{"context":1000000,"output":1000000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.3","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"xai/grok-4.5":{"limit":{"context":500000,"output":500000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"xai/grok-build-0.1":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image"],"output":["text"]},"name":"Grok Build 0.1","reasoning":true,"reasoning_options":[],"tool_call":true},"xai/grok-imagine-image":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["text","image"]},"name":"Grok Imagine Image","reasoning":false,"tool_call":false},"xai/grok-imagine-video":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Grok Imagine","reasoning":false,"tool_call":false},"xai/grok-imagine-video-1.5":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Grok Imagine Video 1.5","reasoning":false,"tool_call":false},"xai/grok-imagine-video-1.5-preview":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["video"]},"name":"Grok Imagine Video 1.5 Preview","reasoning":false,"tool_call":false},"xai/grok-stt":{"limit":{"context":0,"output":0},"modalities":{"input":["audio"],"output":["text"]},"name":"Grok STT","reasoning":false,"tool_call":false},"xai/grok-tts":{"limit":{"context":0,"output":0},"modalities":{"input":["text"],"output":["audio"]},"name":"Grok TTS","reasoning":false,"tool_call":false},"xai/grok-voice-think-fast-1.0":{"limit":{"context":0,"output":0},"modalities":{"input":["text","audio"],"output":["text","audio"]},"name":"Grok Voice Think Fast 1.0","reasoning":false,"tool_call":false},"xiaomi/mimo-v2.5":{"limit":{"context":1050000,"output":131100},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"MiMo M2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"xiaomi/mimo-v2.5-pro":{"limit":{"context":1050000,"output":131000},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo V2.5 Pro","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.5":{"limit":{"context":128000,"output":96000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 4.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.5-air":{"limit":{"context":128000,"output":96000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 4.5 Air","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.5v":{"limit":{"context":66000,"output":16000},"modalities":{"input":["text","image"],"output":["text"]},"name":"GLM 4.5V","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.6":{"limit":{"context":200000,"output":96000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 4.6","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.6v":{"limit":{"context":128000,"output":24000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GLM-4.6V","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.6v-flash":{"limit":{"context":128000,"output":24000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GLM-4.6V-Flash","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.7":{"limit":{"context":200000,"output":120000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 4.7","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.7-flash":{"limit":{"context":200000,"output":131000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 4.7 Flash","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-4.7-flashx":{"limit":{"context":200000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 4.7 FlashX","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-5":{"limit":{"context":202800,"output":131100},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-5-turbo":{"limit":{"context":202800,"output":131100},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5 Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-5.1":{"limit":{"context":202000,"output":202000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"zai/glm-5.2":{"limit":{"context":1040000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.2","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true},"zai/glm-5.2-fast":{"limit":{"context":1000000,"output":128000},"modalities":{"input":["text"],"output":["text"]},"name":"GLM 5.2 Fast","reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true},"zai/glm-5v-turbo":{"limit":{"context":200000,"output":128000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"GLM 5V Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"xai":{"models":{"grok-4.20-0309-non-reasoning":{"limit":{"context":1000000,"output":30000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 (Non-Reasoning)","reasoning":false,"tool_call":true},"grok-4.20-0309-reasoning":{"limit":{"context":1000000,"output":30000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 (Reasoning)","reasoning":true,"reasoning_options":[],"tool_call":true},"grok-4.20-multi-agent-0309":{"limit":{"context":1000000,"output":30000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.20 Multi-Agent","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false},"grok-4.3":{"limit":{"context":1000000,"output":30000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.3","reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true},"grok-4.5":{"limit":{"context":500000,"output":500000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok 4.5","reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true},"grok-build-0.1":{"limit":{"context":256000,"output":256000},"modalities":{"input":["text","image","pdf"],"output":["text"]},"name":"Grok Build 0.1","reasoning":true,"reasoning_options":[],"tool_call":true},"grok-imagine-image":{"limit":{"context":8000,"output":0},"modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"name":"Grok Imagine Image","reasoning":false,"tool_call":false},"grok-imagine-image-quality":{"limit":{"context":8000,"output":0},"modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"name":"Grok Imagine Image Quality","reasoning":false,"tool_call":false},"grok-imagine-video":{"limit":{"context":1024,"output":0},"modalities":{"input":["text","image","video","pdf"],"output":["video"]},"name":"Grok Imagine Video","reasoning":false,"tool_call":false}}},"xiaomi":{"models":{"mimo-v2-flash":{"limit":{"context":262144,"output":65536},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo-V2-Flash","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2-omni":{"limit":{"context":262144,"output":131072},"modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"name":"MiMo-V2-Omni","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2-pro":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo-V2-Pro","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2.5":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","audio","video"],"output":["text"]},"name":"MiMo-V2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2.5-pro":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo-V2.5-Pro","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2.5-pro-ultraspeed":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo-V2.5-Pro-UltraSpeed","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"xiaomi-token-plan-cn":{"models":{"mimo-v2-pro":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo-V2-Pro","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2-tts":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["audio"]},"name":"MiMo-V2-TTS","reasoning":false,"tool_call":false},"mimo-v2.5":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text","image","audio","video"],"output":["text"]},"name":"MiMo-V2.5","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2.5-pro":{"limit":{"context":1048576,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"MiMo-V2.5-Pro","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"mimo-v2.5-tts":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["audio"]},"name":"MiMo-V2.5-TTS","reasoning":false,"tool_call":false},"mimo-v2.5-tts-voiceclone":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["audio"]},"name":"MiMo-V2.5-TTS-VoiceClone","reasoning":false,"tool_call":false},"mimo-v2.5-tts-voicedesign":{"limit":{"context":8192,"output":8192},"modalities":{"input":["text"],"output":["audio"]},"name":"MiMo-V2.5-TTS-VoiceDesign","reasoning":false,"tool_call":false}}},"zai-coding-plan":{"models":{"glm-4.5-air":{"limit":{"context":131072,"output":98304},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.5-Air","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-4.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5-turbo":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5-Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.1":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"glm-5v-turbo":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text","image","video","pdf"],"output":["text"]},"name":"GLM-5V-Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}},"zhipuai-coding-plan":{"models":{"glm-4.5-air":{"limit":{"context":131072,"output":98304},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.5-Air","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-4.6v":{"limit":{"context":128000,"output":32768},"modalities":{"input":["text","image","video"],"output":["text"]},"name":"GLM-4.6V","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-4.7":{"limit":{"context":204800,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-4.7","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5-turbo":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5-Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.1":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.1","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true},"glm-5.2":{"limit":{"context":1000000,"output":131072},"modalities":{"input":["text"],"output":["text"]},"name":"GLM-5.2","reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true},"glm-5v-turbo":{"limit":{"context":200000,"output":131072},"modalities":{"input":["text","image","video","pdf"],"output":["text"]},"name":"GLM-5V-Turbo","reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true}}}} diff --git a/crates/codegen/kigi-models/src/enrichment.rs b/crates/codegen/kigi-models/src/enrichment.rs new file mode 100644 index 0000000..2a63f06 --- /dev/null +++ b/crates/codegen/kigi-models/src/enrichment.rs @@ -0,0 +1,382 @@ +//! models.dev metadata enrichment (multi-provider expansion). +//! +//! Most provider `/models` listings return bare ids — no context window, no +//! thinking levels. This module carries per-model metadata keyed by +//! models.dev provider id, sourced from the bundled snapshot +//! (`enrichment_snapshot.json`, regenerated by +//! `scripts/gen_enrichment_snapshot.py`) or a runtime refresh fetched by the +//! shell. It NEVER invents model availability: the live listing is the only +//! source of which models exist — enrichment only fills metadata gaps, and +//! wire-served values always win (see [`enrich_wire_model`]). + +use std::collections::BTreeMap; +use std::sync::LazyLock; + +/// One model's enrichment metadata. All fields optional-by-default so the +/// snapshot stays minimal. +#[derive(Debug, Clone, Default, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct EnrichmentModel { + /// Max context window in tokens (`limit.context`). + #[serde(default, skip_serializing_if = "is_zero")] + pub context: u64, + /// Max output tokens (`limit.output`). Not yet consumed by + /// [`enrich_wire_model`]; feeds `max_completion_tokens` when provider + /// cycles start mapping it. + #[serde(default, skip_serializing_if = "is_zero")] + pub output: u64, + /// Model supports reasoning/thinking. + #[serde(default, skip_serializing_if = "std::ops::Not::not")] + pub reasoning: bool, + /// Selectable effort levels (canonical tokens, e.g. ["low","high","max"]). + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub efforts: Vec, + /// Accepts image input. + #[serde(default, skip_serializing_if = "std::ops::Not::not")] + pub image_in: bool, + /// Supports tool calling (used later to filter non-agentic listings). + #[serde(default, skip_serializing_if = "std::ops::Not::not")] + pub tool_call: bool, + /// Human display name. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +fn is_zero(v: &u64) -> bool { + *v == 0 +} + +/// `models.dev provider id -> model id -> metadata`. +pub type EnrichmentCatalog = BTreeMap>; + +/// The bundled snapshot, embedded at compile time — RAW models.dev shape, +/// filtered to the providers kigi references (pure-filter script: +/// `scripts/gen_enrichment_snapshot.py`). OFFLINE FALLBACK for the runtime +/// refresh; both parse through [`parse_api_json`] so there is exactly one +/// field interpretation. +pub const ENRICHMENT_SNAPSHOT_JSON: &str = include_str!("../enrichment_snapshot.json"); + +static BUNDLED: LazyLock = LazyLock::new(|| { + // Baked-in JSON — a mismatch here is a developer error, not a runtime + // condition (same policy as default_models.json). + parse_api_json(ENRICHMENT_SNAPSHOT_JSON, None) + .expect("enrichment_snapshot.json: invalid JSON (regenerate via script)") +}); + +// ── Raw models.dev api.json shape (parse-only) ────────────────────────────── + +#[derive(serde::Deserialize)] +struct RawProvider { + #[serde(default)] + models: BTreeMap, +} + +#[derive(serde::Deserialize, Default)] +#[serde(default)] +struct RawModel { + name: Option, + reasoning: bool, + reasoning_options: Vec, + limit: RawLimit, + modalities: RawModalities, + tool_call: bool, +} + +#[derive(serde::Deserialize, Default)] +#[serde(default)] +struct RawReasoningOption { + r#type: String, + values: Vec, +} + +#[derive(serde::Deserialize, Default)] +#[serde(default)] +struct RawLimit { + context: u64, + output: u64, +} + +#[derive(serde::Deserialize, Default)] +#[serde(default)] +struct RawModalities { + input: Vec, +} + +/// Parse a models.dev `api.json` document (full download or the bundled +/// filtered snapshot) into the in-memory catalog. `keep`: restrict to these +/// provider ids (runtime refresh filters the full 3MB download to the +/// registry's providers); `None` keeps everything present. +/// +/// Blast-radius confinement: providers are filtered on RAW keys first and +/// typed-parsed individually — a schema drift in one of the ~70 providers +/// kigi never keeps cannot fail the whole refresh, and a malformed KEPT +/// provider is warn-skipped (its models fall to defaults) rather than +/// killing the others. Only a document that isn't a JSON object errors +/// (the caller falls back to cache/bundled — never a silently empty +/// catalog). Keys starting with `_` (provenance stamps) are skipped. +pub fn parse_api_json( + json: &str, + keep: Option<&std::collections::BTreeSet<&str>>, +) -> Result { + let raw: BTreeMap = serde_json::from_str(json)?; + let mut catalog = EnrichmentCatalog::new(); + for (pid, value) in raw { + if pid.starts_with('_') { + continue; + } + if let Some(keep) = keep + && !keep.contains(pid.as_str()) + { + continue; + } + let provider: RawProvider = match serde_json::from_value(value) { + Ok(p) => p, + Err(e) => { + tracing::warn!(provider = %pid, error = %e, + "models.dev provider entry malformed; skipping (models fall to defaults)"); + continue; + } + }; + let models = provider + .models + .into_iter() + .map(|(mid, m)| { + let efforts = m + .reasoning_options + .into_iter() + .find(|o| o.r#type == "effort" && !o.values.is_empty()) + .map(|o| o.values) + .unwrap_or_default(); + let meta = EnrichmentModel { + context: m.limit.context, + output: m.limit.output, + reasoning: m.reasoning, + efforts, + image_in: m.modalities.input.iter().any(|s| s == "image"), + tool_call: m.tool_call, + name: m.name, + }; + (mid, meta) + }) + .collect(); + catalog.insert(pid, models); + } + Ok(catalog) +} + +/// The compiled-in enrichment catalog. +pub fn bundled_enrichment() -> &'static EnrichmentCatalog { + &BUNDLED +} + +/// Look up one model's metadata. `None` when the provider or model is +/// unknown to the catalog (callers fall through to defaults). +pub fn lookup<'a>( + catalog: &'a EnrichmentCatalog, + models_dev_id: &str, + model_id: &str, +) -> Option<&'a EnrichmentModel> { + catalog.get(models_dev_id)?.get(model_id) +} + +/// Fill metadata gaps on a live listing entry. WIRE WINS: a field the +/// provider served is never overwritten — enrichment only supplies what the +/// wire left absent/zero. Never changes the model id (availability stays +/// wire-truth). +pub fn enrich_wire_model(wire: &mut crate::WireModel, meta: &EnrichmentModel) { + if wire.context_length == 0 && meta.context > 0 { + wire.context_length = meta.context; + } + if meta.reasoning { + wire.supports_reasoning = true; + } + if meta.image_in { + wire.supports_image_in = true; + } + if wire.display_name.is_none() { + wire.display_name = meta.name.clone(); + } + if wire.think_efforts.is_none() && !meta.efforts.is_empty() { + wire.think_efforts = Some(crate::WireThinkEfforts { + support: true, + valid_efforts: meta.efforts.clone(), + // The provider's implicit default applies when the user doesn't + // pick a level; models.dev doesn't record one. + default_effort: None, + }); + } +} + +#[cfg(test)] +mod tests { + use super::*; + + /// The bundled snapshot parses and covers the providers this expansion + /// references; kimi entries cross-check against the live wire values the + /// registry already knows (guards against a corrupted regeneration). + #[test] + fn bundled_snapshot_parses_and_cross_checks_kimi() { + let catalog = bundled_enrichment(); + assert!( + catalog.len() >= 25, + "snapshot lost providers: {}", + catalog.len() + ); + let k3 = lookup(catalog, "kimi-for-coding", "k3").expect("k3 present"); + assert_eq!(k3.context, 1_048_576, "k3 context must match the live wire"); + assert_eq!(k3.efforts, ["low", "high", "max"]); + assert!(k3.reasoning); + let opus = lookup(catalog, "anthropic", "claude-opus-4-8").expect("opus present"); + assert_eq!(opus.context, 1_000_000); + assert_eq!(opus.efforts, ["low", "medium", "high", "xhigh", "max"]); + } + + /// Wire-served fields are never overwritten; absent fields are filled. + #[test] + fn enrich_fills_gaps_and_never_overwrites_wire() { + let meta = EnrichmentModel { + context: 400_000, + reasoning: true, + efforts: vec!["low".into(), "high".into()], + image_in: true, + name: Some("GPT Test".into()), + ..Default::default() + }; + // Bare listing entry (OpenAI-style: id only). + let mut bare: crate::WireModel = + serde_json::from_value(serde_json::json!({ "id": "gpt-test" })).unwrap(); + enrich_wire_model(&mut bare, &meta); + assert_eq!(bare.context_length, 400_000); + assert!(bare.supports_reasoning); + assert!(bare.supports_image_in); + assert_eq!(bare.display_name.as_deref(), Some("GPT Test")); + let efforts = bare.think_efforts.expect("efforts filled"); + assert!(efforts.support); + assert_eq!(efforts.valid_efforts, ["low", "high"]); + assert_eq!(efforts.default_effort, None); + + // Wire-served entry: nothing may change. + let mut served: crate::WireModel = serde_json::from_value(serde_json::json!({ + "id": "gpt-test", + "context_length": 123, + "display_name": "Wire Name", + "think_efforts": { "support": true, "valid_efforts": ["max"] } + })) + .unwrap(); + enrich_wire_model(&mut served, &meta); + assert_eq!(served.context_length, 123, "wire context wins"); + assert_eq!(served.display_name.as_deref(), Some("Wire Name")); + assert_eq!( + served.think_efforts.unwrap().valid_efforts, + ["max"], + "wire efforts win" + ); + } + + /// The runtime refresh parses the FULL api.json (extra fields like cost/ + /// env/doc present) and filters to the registry's provider ids. + #[test] + fn parse_api_json_filters_and_tolerates_unknown_fields() { + let full = serde_json::json!({ + "openai": { + "id": "openai", "env": ["OPENAI_API_KEY"], "doc": "https://x", + "models": { + "gpt-test": { + "name": "GPT Test", + "reasoning": true, + "reasoning_options": [ + {"type": "effort", "values": ["low", "high", "max"]} + ], + "limit": {"context": 400000, "output": 128000}, + "modalities": {"input": ["text", "image"], "output": ["text"]}, + "tool_call": true, + "cost": {"input": 1.25, "output": 10} + } + } + }, + "unwanted-provider": { "models": { "m": {} } } + }) + .to_string(); + let keep: std::collections::BTreeSet<&str> = ["openai"].into(); + let catalog = parse_api_json(&full, Some(&keep)).unwrap(); + assert!(!catalog.contains_key("unwanted-provider")); + let m = lookup(&catalog, "openai", "gpt-test").unwrap(); + assert_eq!(m.context, 400_000); + assert_eq!(m.output, 128_000); + assert_eq!(m.efforts, ["low", "high", "max"]); + assert!(m.reasoning && m.image_in && m.tool_call); + assert_eq!(m.name.as_deref(), Some("GPT Test")); + // Malformed document errors — callers must fall back loudly, never + // proceed with a silently empty catalog. + assert!(parse_api_json("not json", None).is_err()); + } + + /// Every registry `models_dev_id` must be covered by the bundled + /// snapshot — a registry row added without updating the script's + /// TARGETS would silently diverge bundled-vs-refresh behavior. + #[test] + fn bundled_snapshot_covers_every_registry_models_dev_id() { + let catalog = bundled_enrichment(); + for platform in crate::PlatformId::ALL { + if let Some(dev_id) = platform.models_dev_id() { + assert!( + catalog.contains_key(dev_id), + "{}: models_dev_id {dev_id:?} missing from the bundled \ + snapshot — add it to scripts/gen_enrichment_snapshot.py \ + TARGETS and regenerate", + platform.as_str(), + ); + } + } + } + + /// Field-coverage guard against script/parser drift: for every field + /// `RawModel` reads, at least one bundled model must carry a non-default + /// value. A regeneration that dropped a MODEL_KEYS entry (e.g. + /// `modalities`) would zero that field across the whole snapshot and + /// fail here, instead of silently diverging from runtime refreshes. + #[test] + fn bundled_snapshot_carries_every_parsed_field() { + let all: Vec<&EnrichmentModel> = bundled_enrichment() + .values() + .flat_map(|models| models.values()) + .collect(); + assert!(all.iter().any(|m| m.context > 0), "no context anywhere"); + assert!(all.iter().any(|m| m.output > 0), "no output anywhere"); + assert!(all.iter().any(|m| m.reasoning), "no reasoning anywhere"); + assert!( + all.iter().any(|m| !m.efforts.is_empty()), + "no efforts anywhere" + ); + assert!(all.iter().any(|m| m.image_in), "no image_in anywhere"); + assert!(all.iter().any(|m| m.tool_call), "no tool_call anywhere"); + assert!(all.iter().any(|m| m.name.is_some()), "no names anywhere"); + } + + /// One malformed provider (schema drift on models.dev) must not kill + /// the whole refresh — kept siblings still parse; only a non-object + /// document errors. + #[test] + fn malformed_provider_is_skipped_not_fatal() { + let doc = serde_json::json!({ + "good": { "models": { "m": { "limit": {"context": 7} } } }, + "drifted": { "models": "this is not an object" }, + "_meta": { "source": "stamp, must be ignored" } + }) + .to_string(); + let catalog = parse_api_json(&doc, None).expect("document parses"); + assert_eq!( + lookup(&catalog, "good", "m").map(|m| m.context), + Some(7), + "sibling providers must survive one drifted provider" + ); + assert!(!catalog.contains_key("drifted")); + assert!(!catalog.contains_key("_meta")); + } + + #[test] + fn lookup_misses_are_none() { + let catalog = bundled_enrichment(); + assert!(lookup(catalog, "no-such-provider", "x").is_none()); + assert!(lookup(catalog, "openai", "no-such-model").is_none()); + } +} diff --git a/crates/codegen/kigi-models/src/lib.rs b/crates/codegen/kigi-models/src/lib.rs index 6d7ab96..215b1d9 100644 --- a/crates/codegen/kigi-models/src/lib.rs +++ b/crates/codegen/kigi-models/src/lib.rs @@ -16,6 +16,8 @@ use std::sync::LazyLock; +pub mod enrichment; + // ── Platform registry (PRD F2) ────────────────────────────────────────────── /// Env var holding the moonshot-cn API key (wins over the generic name). @@ -82,6 +84,13 @@ struct PlatformSpec { console_host: Option<&'static str>, /// Interactive login-picker label. `None` = fall back to `display_name`. login_label: Option<&'static str>, + /// This platform's provider id on models.dev, for metadata enrichment. + /// `None` = not covered there (enrichment silently skips). + models_dev_id: Option<&'static str>, + /// True when the platform's `/models` listing itself serves context + /// window / thinking metadata — enrichment (and its network refresh) is + /// skipped entirely for such platforms. + wire_serves_metadata: bool, } const KIMI_CODE_SPEC: PlatformSpec = PlatformSpec { @@ -94,6 +103,8 @@ const KIMI_CODE_SPEC: PlatformSpec = PlatformSpec { vendor: "Kimi", console_host: None, login_label: None, + models_dev_id: Some("kimi-for-coding"), + wire_serves_metadata: true, }; const MOONSHOT_CN_SPEC: PlatformSpec = PlatformSpec { @@ -109,6 +120,8 @@ const MOONSHOT_CN_SPEC: PlatformSpec = PlatformSpec { vendor: "Moonshot", console_host: Some("platform.moonshot.cn"), login_label: Some("Moonshot Open Platform (API key \u{b7} moonshot.cn)"), + models_dev_id: Some("moonshotai-cn"), + wire_serves_metadata: true, }; const MOONSHOT_AI_SPEC: PlatformSpec = PlatformSpec { @@ -124,6 +137,8 @@ const MOONSHOT_AI_SPEC: PlatformSpec = PlatformSpec { vendor: "Moonshot", console_host: Some("platform.moonshot.ai"), login_label: Some("Moonshot Open Platform (API key \u{b7} moonshot.ai)"), + models_dev_id: Some("moonshotai"), + wire_serves_metadata: true, }; /// The platform registry. Platforms are compiled-in spec rows; there is no @@ -217,6 +232,17 @@ impl PlatformId { pub fn login_label(self) -> &'static str { self.spec().login_label.unwrap_or(self.spec().display_name) } + + /// This platform's provider id on models.dev (metadata enrichment). + pub fn models_dev_id(self) -> Option<&'static str> { + self.spec().models_dev_id + } + + /// True when the live `/models` wire serves metadata itself — enrichment + /// and its network refresh are skipped for such platforms. + pub fn wire_serves_metadata(self) -> bool { + self.spec().wire_serves_metadata + } } /// Split a managed catalog key `{platform_id}/{model_id}` back into its diff --git a/crates/codegen/kigi-shell/src/agent/enrichment_fetch.rs b/crates/codegen/kigi-shell/src/agent/enrichment_fetch.rs new file mode 100644 index 0000000..a81317e --- /dev/null +++ b/crates/codegen/kigi-shell/src/agent/enrichment_fetch.rs @@ -0,0 +1,417 @@ +//! models.dev enrichment catalog loading (agent-side IO). +//! +//! Providers whose `/models` wire serves no context/thinking metadata get it +//! from models.dev (see `kigi_models::enrichment`). This module owns the IO: +//! a 24h-TTL disk cache under `~/.kigi`, a runtime refresh of +//! `https://models.dev/api.json` (filtered to registry providers before +//! caching), and the bundled-snapshot fallback. NO NETWORK unless some +//! enabled platform actually needs enrichment (`wire_serves_metadata` false) +//! — with only Kimi/Moonshot configured this module never leaves disk. + +use std::collections::BTreeSet; +use std::time::{Duration, SystemTime, UNIX_EPOCH}; + +use kigi_models::enrichment::{EnrichmentCatalog, bundled_enrichment, parse_api_json}; + +/// Override the refresh URL (e2e mock), or disable refresh entirely with +/// `0`/`off` (bundled snapshot + existing cache only). +pub(crate) const MODELS_DEV_URL_ENV: &str = "KIGI_MODELS_DEV_URL"; +const DEFAULT_MODELS_DEV_URL: &str = "https://models.dev/api.json"; +const CACHE_FILE: &str = "models_dev_cache.json"; +const CACHE_TTL: Duration = Duration::from_secs(24 * 60 * 60); + +#[derive(serde::Serialize, serde::Deserialize)] +struct DiskCache { + /// Unix seconds of the successful fetch. + fetched_at: u64, + /// The kigi version that wrote the cache — a different binary (upgrade + /// OR downgrade) refetches rather than trusting old filtering rules. + #[serde(default)] + kigi_version: String, + /// The keep-set the catalog was filtered to. A registry change (new + /// provider row, models_dev_id rename) invalidates the cache instead of + /// silently serving a catalog missing the new provider for up to 24h. + #[serde(default)] + keep_set: Vec, + /// Already filtered + transformed catalog. + catalog: EnrichmentCatalog, +} + +fn current_keep_set() -> Vec { + registry_models_dev_ids() + .into_iter() + .map(str::to_owned) + .collect() +} + +/// Whether any of `platforms` needs enrichment at all. +pub(crate) fn any_platform_needs_enrichment(platforms: &[kigi_models::PlatformId]) -> bool { + platforms.iter().any(|p| !p.wire_serves_metadata()) +} + +/// The registry's models.dev provider ids (the refresh filter). +fn registry_models_dev_ids() -> BTreeSet<&'static str> { + kigi_models::PlatformId::ALL + .into_iter() + .filter_map(|p| p.models_dev_id()) + .collect() +} + +fn cache_path() -> std::path::PathBuf { + crate::util::kigi_home::kigi_home().join(CACHE_FILE) +} + +fn refresh_url() -> Option { + match std::env::var(MODELS_DEV_URL_ENV) { + Ok(v) + if matches!( + v.trim().to_ascii_lowercase().as_str(), + "0" | "off" | "false" + ) => + { + None + } + Ok(v) if !v.trim().is_empty() => Some(v.trim().to_string()), + _ => Some(DEFAULT_MODELS_DEV_URL.to_string()), + } +} + +fn now_unix() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .map(|d| d.as_secs()) + .unwrap_or(0) +} + +/// Load the enrichment catalog for a fetch pass over `enabled` platforms. +/// +/// Fast path: nothing needs enrichment → empty catalog, zero IO (the merge +/// branch is never taken for wire-served platforms, and NOT forcing the +/// bundled parse keeps its cost/panic surface off the kimi/moonshot path). +/// Otherwise: fresh valid disk cache → use it; else refresh over HTTP +/// (filter + transform + best-effort cache write); on refresh failure fall +/// back to a STALE cache, then the bundled snapshot — each step logged, +/// never silent. +pub(crate) fn load_enrichment_catalog( + enabled: &[kigi_models::PlatformId], +) -> std::borrow::Cow<'static, EnrichmentCatalog> { + if !any_platform_needs_enrichment(enabled) { + return std::borrow::Cow::Owned(EnrichmentCatalog::new()); + } + load_enrichment_catalog_at(&cache_path()) +} + +/// Path-injectable core (tests use a tempdir path directly — no env, no +/// `kigi_home()` OnceLock interaction). +fn load_enrichment_catalog_at( + path: &std::path::Path, +) -> std::borrow::Cow<'static, EnrichmentCatalog> { + use std::borrow::Cow; + + let cached: Option = + std::fs::read_to_string(path) + .ok() + .and_then(|s| match serde_json::from_str(&s) { + Ok(c) => Some(c), + Err(e) => { + tracing::warn!(path = %path.display(), error = %e, + "models.dev cache unreadable; refetching"); + None + } + }); + let now = now_unix(); + let cache_is_fresh = cached.as_ref().is_some_and(|c| { + // A future fetched_at (clock jump backwards, corrupt stamp) is + // stale, not fresh-forever; a different binary or keep-set means the + // cache was filtered under other rules — refetch instead of serving + // a catalog that may miss newly-registered providers for 24h. + c.fetched_at <= now + && now - c.fetched_at < CACHE_TTL.as_secs() + && c.kigi_version == kigi_version::VERSION + && c.keep_set == current_keep_set() + }); + if cache_is_fresh { + tracing::debug!("models.dev enrichment: fresh disk cache"); + return Cow::Owned(cached.expect("cache_is_fresh implies Some").catalog); + } + + match refresh_url() { + Some(url) => match fetch_and_filter(&url) { + Ok(catalog) => { + let cache = DiskCache { + fetched_at: now_unix(), + kigi_version: kigi_version::VERSION.to_string(), + keep_set: current_keep_set(), + catalog, + }; + // Best-effort write: a read-only home must not fail the fetch. + match serde_json::to_string(&cache) { + Ok(body) => { + if let Err(e) = crate::util::config::atomic_write_string(path, &body) { + tracing::warn!(path = %path.display(), error = %e, + "models.dev cache write failed; continuing in-memory"); + } + } + Err(e) => { + tracing::warn!(error = %e, "models.dev cache serialize failed") + } + } + tracing::info!("models.dev enrichment refreshed"); + Cow::Owned(cache.catalog) + } + Err(e) => { + if let Some(c) = cached { + tracing::warn!(error = %e, + "models.dev refresh failed; using STALE cache"); + Cow::Owned(c.catalog) + } else { + tracing::warn!(error = %e, + "models.dev refresh failed; using bundled snapshot"); + Cow::Borrowed(bundled_enrichment()) + } + } + }, + None => { + tracing::info!("models.dev refresh disabled; using cache/bundled"); + match cached { + Some(c) => Cow::Owned(c.catalog), + None => Cow::Borrowed(bundled_enrichment()), + } + } + } +} + +fn fetch_and_filter(url: &str) -> anyhow::Result { + let response = crate::http::shared_blocking_client().get(url).send()?; + let status = response.status(); + anyhow::ensure!(status.is_success(), "GET {url}: HTTP {}", status.as_u16()); + let body = response.text()?; + let keep = registry_models_dev_ids(); + Ok(parse_api_json(&body, Some(&keep))?) +} + +#[cfg(test)] +mod tests { + use super::*; + use kigi_test_support::EnvGuard; + use serial_test::serial; + + /// Wire-served-only platform sets never trigger IO — and never force the + /// bundled parse (empty owned catalog; the merge branch is gated off). + #[test] + fn wire_served_platforms_get_empty_catalog_without_io() { + assert!(!any_platform_needs_enrichment( + &kigi_models::PlatformId::ALL + )); + let catalog = load_enrichment_catalog(&kigi_models::PlatformId::ALL); + assert!(catalog.is_empty()); + } + + fn cache_file_in(dir: &tempfile::TempDir) -> std::path::PathBuf { + dir.path().join(CACHE_FILE) + } + + fn write_cache(path: &std::path::Path, fetched_at: u64, versioned: bool) { + let cache = DiskCache { + fetched_at, + kigi_version: if versioned { + kigi_version::VERSION.to_string() + } else { + "0.0.0-other".to_string() + }, + keep_set: current_keep_set(), + catalog: EnrichmentCatalog::from([( + "moonshotai".to_string(), + std::collections::BTreeMap::from([( + "from-cache".to_string(), + kigi_models::enrichment::EnrichmentModel { + context: 111, + ..Default::default() + }, + )]), + )]), + }; + std::fs::write(path, serde_json::to_string(&cache).unwrap()).unwrap(); + } + + /// Fresh valid cache short-circuits — no HTTP (no mock server mounted: + /// a fetch attempt would fail and fall to bundled, failing the assert). + #[test] + #[serial] + fn fresh_valid_cache_is_served_without_refresh() { + let dir = tempfile::tempdir().unwrap(); + let path = cache_file_in(&dir); + write_cache(&path, now_unix(), true); + let _url = EnvGuard::set(MODELS_DEV_URL_ENV, "http://127.0.0.1:1/api.json"); + let catalog = load_enrichment_catalog_at(&path); + assert!( + kigi_models::enrichment::lookup(&catalog, "moonshotai", "from-cache").is_some(), + "fresh cache must be served" + ); + } + + /// Version/keep-set/future-stamp guards: each invalidates a fresh-aged + /// cache. Refresh is disabled here, so invalidation falls through to the + /// STALE cache (resource degradation, not data loss) — proving both the + /// guard firing and the fallback order. + #[test] + #[serial] + fn cache_guards_invalidate_and_fall_back_to_stale() { + let dir = tempfile::tempdir().unwrap(); + let path = cache_file_in(&dir); + let _url = EnvGuard::set(MODELS_DEV_URL_ENV, "0"); + // Wrong binary version → not fresh → (refresh disabled) → stale used. + write_cache(&path, now_unix(), false); + let catalog = load_enrichment_catalog_at(&path); + assert!( + kigi_models::enrichment::lookup(&catalog, "moonshotai", "from-cache").is_some(), + "stale-fallback must still serve the cached data" + ); + // Future fetched_at → same path (guard fired: debug-log absence is + // not observable here; the behavioral pin is refresh-disabled + the + // wiremock test below proving a fired guard refetches). + write_cache(&path, now_unix() + 10_000, true); + let catalog = load_enrichment_catalog_at(&path); + assert!(kigi_models::enrichment::lookup(&catalog, "moonshotai", "from-cache").is_some()); + } + + /// An invalidated cache (wrong version) REFETCHES when refresh is + /// enabled: wiremock expect(1) proves the HTTP call happened; the new + /// cache file carries the current version + keep-set and the fetched + /// content replaces the stale entry. + #[tokio::test(flavor = "multi_thread")] + #[serial] + async fn invalidated_cache_refetches_and_rewrites() { + let _ = tracing_subscriber::fmt() + .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) + .with_test_writer() + .try_init(); + let server = wiremock::MockServer::start().await; + wiremock::Mock::given(wiremock::matchers::method("GET")) + .and(wiremock::matchers::path("/api.json")) + .respond_with( + wiremock::ResponseTemplate::new(200).set_body_json(serde_json::json!({ + "moonshotai": { "models": { "from-refresh": { + "limit": {"context": 222} + }}} + })), + ) + .expect(1) + .mount(&server) + .await; + let dir = tempfile::tempdir().unwrap(); + let path = cache_file_in(&dir); + write_cache(&path, now_unix(), false); + let _url = EnvGuard::set(MODELS_DEV_URL_ENV, format!("{}/api.json", server.uri())); + let path2 = path.clone(); + let catalog = + tokio::task::spawn_blocking(move || load_enrichment_catalog_at(&path2).into_owned()) + .await + .unwrap(); + assert!( + kigi_models::enrichment::lookup(&catalog, "moonshotai", "from-refresh").is_some(), + "guard-invalidated cache must refetch" + ); + let rewritten: DiskCache = + serde_json::from_str(&std::fs::read_to_string(path).unwrap()).unwrap(); + assert_eq!(rewritten.kigi_version, kigi_version::VERSION); + assert_eq!(rewritten.keep_set, current_keep_set()); + assert!(rewritten.catalog.contains_key("moonshotai")); + } + + /// Corrupted cache file → refetch (not a crash, not trust-garbage). + #[tokio::test(flavor = "multi_thread")] + #[serial] + async fn corrupted_cache_refetches() { + let server = wiremock::MockServer::start().await; + wiremock::Mock::given(wiremock::matchers::method("GET")) + .and(wiremock::matchers::path("/api.json")) + .respond_with( + wiremock::ResponseTemplate::new(200) + .set_body_json(serde_json::json!({ "moonshotai": { "models": {} } })), + ) + .expect(1) + .mount(&server) + .await; + let dir = tempfile::tempdir().unwrap(); + let path = cache_file_in(&dir); + std::fs::write(&path, "not json {").unwrap(); + let _url = EnvGuard::set(MODELS_DEV_URL_ENV, format!("{}/api.json", server.uri())); + let path2 = path.clone(); + let catalog = + tokio::task::spawn_blocking(move || load_enrichment_catalog_at(&path2).into_owned()) + .await + .unwrap(); + assert!(catalog.contains_key("moonshotai")); + } + + /// Refresh failure with NO cache → bundled snapshot fallback. + #[test] + #[serial] + fn refresh_failure_without_cache_falls_back_to_bundled() { + let dir = tempfile::tempdir().unwrap(); + let path = cache_file_in(&dir); + let _url = EnvGuard::set(MODELS_DEV_URL_ENV, "http://127.0.0.1:1/api.json"); + let catalog = load_enrichment_catalog_at(&path); + assert!( + kigi_models::enrichment::lookup(&catalog, "kimi-for-coding", "k3").is_some(), + "bundled snapshot must back a total refresh failure" + ); + assert!(!path.exists(), "failed refresh must not write a cache"); + } + + /// Kill switch through the FULL load path (not just refresh_url): no + /// cache + refresh disabled → bundled, no HTTP attempted (an attempt + /// against the sentinel URL would be a hang/refusal, not bundled data). + #[test] + #[serial] + fn kill_switch_full_path_serves_bundled() { + let dir = tempfile::tempdir().unwrap(); + let path = cache_file_in(&dir); + for token in ["0", "off", "FALSE", " Off "] { + let _url = EnvGuard::set(MODELS_DEV_URL_ENV, token); + assert!(refresh_url().is_none(), "token {token:?} must disable"); + let catalog = load_enrichment_catalog_at(&path); + assert!(kigi_models::enrichment::lookup(&catalog, "kimi-for-coding", "k3").is_some()); + } + } + + /// Refresh path: mock server → transform runs and the keep-set filters + /// to registry providers (`moonshotai` is a real registry models_dev id; + /// unknown providers are dropped). + #[tokio::test(flavor = "multi_thread")] + #[serial] + async fn refresh_transforms_and_filters_to_registry_ids() { + let server = wiremock::MockServer::start().await; + wiremock::Mock::given(wiremock::matchers::method("GET")) + .and(wiremock::matchers::path("/api.json")) + .respond_with( + wiremock::ResponseTemplate::new(200).set_body_json(serde_json::json!({ + "moonshotai": { "models": { "kimi-test": { + "limit": {"context": 262144}, + "reasoning": true, + "reasoning_options": [ + {"type": "effort", "values": ["low", "high"]} + ] + }}}, + "not-in-registry": { "models": { "m": {} } } + })), + ) + .expect(1) + .mount(&server) + .await; + let url = format!("{}/api.json", server.uri()); + let catalog = tokio::task::spawn_blocking(move || fetch_and_filter(&url)) + .await + .unwrap() + .expect("fetch must succeed"); + assert!( + !catalog.contains_key("not-in-registry"), + "keep-set must drop providers outside the registry" + ); + let m = kigi_models::enrichment::lookup(&catalog, "moonshotai", "kimi-test") + .expect("registry provider survives the filter"); + assert_eq!(m.context, 262_144); + assert_eq!(m.efforts, ["low", "high"]); + } +} diff --git a/crates/codegen/kigi-shell/src/agent/mod.rs b/crates/codegen/kigi-shell/src/agent/mod.rs index 5d068b6..63d9528 100644 --- a/crates/codegen/kigi-shell/src/agent/mod.rs +++ b/crates/codegen/kigi-shell/src/agent/mod.rs @@ -4,6 +4,7 @@ pub mod auth_method; pub mod chat_modes; pub mod config; pub mod config_model_override_parse; +pub(crate) mod enrichment_fetch; mod ext_parsers; pub(crate) mod feedback_client; pub mod folder_trust; diff --git a/crates/codegen/kigi-shell/src/agent/models_fetch.rs b/crates/codegen/kigi-shell/src/agent/models_fetch.rs index 5763d61..979b72e 100644 --- a/crates/codegen/kigi-shell/src/agent/models_fetch.rs +++ b/crates/codegen/kigi-shell/src/agent/models_fetch.rs @@ -4,9 +4,11 @@ //! (the subscription platform via the OAuth session, the open platforms via //! their API keys), plus the custom-endpoint OpenAI-compatible listing path. //! -//! This is the sole surviving network surface relocated out of the deleted -//! xAI-proxy backend client (`remote/`); it talks only to the configured -//! Kimi/Moonshot model endpoints, never to a proxy backend. +//! This is the network surface relocated out of the deleted xAI-proxy +//! backend client (`remote/`); it talks only to the configured platform +//! model endpoints (plus the models.dev metadata refresh when an enabled +//! platform needs enrichment — see `enrichment_fetch`), never to a proxy +//! backend. use crate::auth::KimiAuth; use indexmap::IndexMap; use serde::Deserialize; @@ -188,6 +190,9 @@ fn fetch_platform_models_blocking( let mut oauth_unauthorized = false; let mut successes = 0usize; let mut last_error: Option = None; + // Loaded once per fetch pass; zero IO while every enabled platform + // serves its own metadata (kimi/moonshot today). + let enrichment = crate::agent::enrichment_fetch::load_enrichment_catalog(&enabled); for platform in &enabled { let bearer = if platform.uses_oauth() { auth.map(|a| a.key.clone()) @@ -198,7 +203,7 @@ fn fetch_platform_models_blocking( .expect("enabled_platforms gated on key presence") .to_owned() }; - match fetch_one_platform_models(*platform, endpoints, &bearer) { + match fetch_one_platform_models(*platform, endpoints, &bearer, &enrichment) { Ok((platform_models, platform_etag)) => { tracing::info!( platform = platform.as_str(), @@ -258,6 +263,7 @@ fn fetch_one_platform_models( platform: kigi_models::PlatformId, endpoints: &crate::agent::config::EndpointsConfig, bearer: &str, + enrichment: &kigi_models::enrichment::EnrichmentCatalog, ) -> Result<(Vec, Option), BackendError> { let client = crate::http::shared_blocking_client(); let url = platform_models_url(platform, endpoints); @@ -294,7 +300,23 @@ fn fetch_one_platform_models( }; let models = filtered .into_iter() - .map(|wire| platform_wire_model_to_entry(platform, wire, &base_url)) + .map(|mut wire| { + // Metadata-poor listings (bare ids) get context window / thinking + // levels from the models.dev catalog; wire-served platforms skip + // this entirely and wire values always win (enrich_wire_model). + if !platform.wire_serves_metadata() + && let Some(dev_id) = platform.models_dev_id() + { + match kigi_models::enrichment::lookup(enrichment, dev_id, &wire.id) { + Some(meta) => kigi_models::enrichment::enrich_wire_model(&mut wire, meta), + None => tracing::debug!( + platform = platform.as_str(), model = %wire.id, + "no enrichment entry; defaults will apply" + ), + } + } + platform_wire_model_to_entry(platform, wire, &base_url) + }) .collect(); Ok((models, etag)) } diff --git a/scripts/gen_enrichment_snapshot.py b/scripts/gen_enrichment_snapshot.py new file mode 100644 index 0000000..bb13e15 --- /dev/null +++ b/scripts/gen_enrichment_snapshot.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +"""Regenerate the bundled models.dev enrichment snapshot. + +Usage: + curl -s https://models.dev/api.json -o /tmp/modelsdev-api.json + python3 scripts/gen_enrichment_snapshot.py /tmp/modelsdev-api.json + +PURE FILTER, NO TRANSFORM: writes the raw models.dev per-provider objects +(only the providers kigi references) to +crates/codegen/kigi-models/enrichment_snapshot.json. All field +interpretation lives in ONE place — `kigi_models::enrichment::parse_api_json` +— which parses this snapshot and runtime refreshes identically. + +Keep TARGETS in sync with the registry's `models_dev_id` values (a registry +test cross-checks coverage). `openrouter` is deliberately absent: its +/models wire serves context_length itself. +""" + +import json +import pathlib +import sys + +TARGETS = [ + "anthropic", "azure", "openai", "deepseek", "nvidia", "google", + "amazon-bedrock", "mistral", "groq", "cerebras", "cloudflare-ai-gateway", + "xai", "togetherai", "fireworks-ai", "opencode", "opencode-go", + "kimi-for-coding", "moonshotai", "moonshotai-cn", "minimax", "minimax-cn", + "alibaba-token-plan", "alibaba-token-plan-cn", "xiaomi", + "xiaomi-token-plan-cn", "zai-coding-plan", "zhipuai-coding-plan", + "github-copilot", "vercel", +] + +# Per-model keys the Rust parser consumes; everything else is dropped to keep +# the bundled file lean (cost/date/experimental fields are dead weight). +MODEL_KEYS = ("name", "reasoning", "reasoning_options", "limit", "modalities", + "tool_call") + + +def main() -> int: + if len(sys.argv) != 2: + print(__doc__, file=sys.stderr) + return 2 + src = json.load(open(sys.argv[1])) + missing = [pid for pid in TARGETS if pid not in src] + if missing: + # Fail fast: a target vanishing from models.dev needs a human look. + print(f"providers missing from api.json: {missing}", file=sys.stderr) + return 1 + out = {} + # Provenance stamp (parse_api_json skips keys starting with "_"). + out["_meta"] = { + "source": "https://models.dev/api.json (github.com/sst/models.dev, MIT)", + "note": "filtered snapshot for kigi model-metadata enrichment; " + "regenerate via scripts/gen_enrichment_snapshot.py", + } + out |= { + pid: { + "models": { + mid: {k: m[k] for k in MODEL_KEYS if k in m} + for mid, m in src[pid]["models"].items() + } + } + for pid in TARGETS + } + dst = pathlib.Path(__file__).resolve().parent.parent / ( + "crates/codegen/kigi-models/enrichment_snapshot.json" + ) + dst.write_text(json.dumps(out, separators=(",", ":"), sort_keys=True) + "\n") + providers = [k for k in out if not k.startswith("_")] + n_models = sum(len(out[p]["models"]) for p in providers) + print(f"wrote {dst}: {len(providers)} providers, {n_models} models, " + f"{dst.stat().st_size} bytes") + return 0 + + +if __name__ == "__main__": + sys.exit(main())