From 7ff8b16ad607b417b001457f06be249d51bcac36 Mon Sep 17 00:00:00 2001 From: Dogyeom Kim Date: Wed, 5 Aug 2026 20:23:14 +0900 Subject: [PATCH 1/2] perf(ai): shard bundled model catalog by provider Parsing the full public catalog for one provider retained every provider in memory. Deterministic internal shards let synchronous access load only the requested provider while the canonical JSON export remains unchanged. Lore-id: 8f0d2c1a Constraint: preserve the full models.json export and GeneratedProvider type Constraint: keep model accessors synchronous and compiled-binary safe Rejected: remove the full JSON catalog | breaks the public package export Confidence: high Scope-risk: medium Reversibility: easy Tested: AI package tests, package check, pack probe, empty-CWD compiled probe, parsed-byte and retained-heap gates --- packages/ai/CHANGELOG.md | 3120 ----------------- packages/ai/scripts/generate-models.ts | 101 +- packages/ai/src/model-shards.generated.ts | 173 + .../src/model-shards/alibaba-token-plan.json | 1 + .../ai/src/model-shards/amazon-bedrock.json | 1 + packages/ai/src/model-shards/anthropic.json | 1 + .../ai/src/model-shards/azure-openai.json | 1 + packages/ai/src/model-shards/bizrouter.json | 1 + packages/ai/src/model-shards/cerebras.json | 1 + .../model-shards/cloudflare-ai-gateway.json | 1 + packages/ai/src/model-shards/cursor.json | 1 + packages/ai/src/model-shards/deepinfra.json | 1 + packages/ai/src/model-shards/deepseek.json | 1 + packages/ai/src/model-shards/firepass.json | 1 + packages/ai/src/model-shards/fireworks.json | 1 + packages/ai/src/model-shards/fugu.json | 1 + .../ai/src/model-shards/github-copilot.json | 1 + packages/ai/src/model-shards/gitlab-duo.json | 1 + packages/ai/src/model-shards/glm-zcode.json | 1 + .../src/model-shards/google-antigravity.json | 1 + .../src/model-shards/google-gemini-cli.json | 1 + .../ai/src/model-shards/google-vertex.json | 1 + packages/ai/src/model-shards/google.json | 1 + packages/ai/src/model-shards/groq.json | 1 + packages/ai/src/model-shards/huggingface.json | 1 + packages/ai/src/model-shards/kilo.json | 1 + packages/ai/src/model-shards/kimi-code.json | 1 + packages/ai/src/model-shards/litellm.json | 1 + packages/ai/src/model-shards/mara.json | 1 + packages/ai/src/model-shards/minimax-cn.json | 1 + .../ai/src/model-shards/minimax-code-cn.json | 1 + .../ai/src/model-shards/minimax-code.json | 1 + packages/ai/src/model-shards/minimax.json | 1 + packages/ai/src/model-shards/mistral.json | 1 + packages/ai/src/model-shards/moonshot.json | 1 + packages/ai/src/model-shards/nanogpt.json | 1 + packages/ai/src/model-shards/nvidia.json | 1 + .../ai/src/model-shards/ollama-cloud.json | 1 + .../ai/src/model-shards/openai-codex.json | 1 + packages/ai/src/model-shards/openai.json | 1 + packages/ai/src/model-shards/opencode-go.json | 1 + .../ai/src/model-shards/opencode-zen.json | 1 + packages/ai/src/model-shards/opencode.json | 1 + packages/ai/src/model-shards/opengateway.json | 1 + packages/ai/src/model-shards/openrouter.json | 1 + packages/ai/src/model-shards/qianfan.json | 1 + packages/ai/src/model-shards/qwen-portal.json | 1 + packages/ai/src/model-shards/synthetic.json | 1 + packages/ai/src/model-shards/together.json | 1 + packages/ai/src/model-shards/venice.json | 1 + .../src/model-shards/vercel-ai-gateway.json | 1 + packages/ai/src/model-shards/xai.json | 1 + .../model-shards/xiaomi-token-plan-ams.json | 1 + .../model-shards/xiaomi-token-plan-cn.json | 1 + .../model-shards/xiaomi-token-plan-sgp.json | 1 + packages/ai/src/model-shards/xiaomi.json | 1 + packages/ai/src/model-shards/zai.json | 1 + packages/ai/src/model-shards/zenmux.json | 1 + packages/ai/src/models.ts | 29 +- packages/ai/test/generate-models.test.ts | 75 +- packages/ai/test/models-lazy.test.ts | 61 +- 61 files changed, 434 insertions(+), 3180 deletions(-) create mode 100644 packages/ai/src/model-shards.generated.ts create mode 100644 packages/ai/src/model-shards/alibaba-token-plan.json create mode 100644 packages/ai/src/model-shards/amazon-bedrock.json create mode 100644 packages/ai/src/model-shards/anthropic.json create mode 100644 packages/ai/src/model-shards/azure-openai.json create mode 100644 packages/ai/src/model-shards/bizrouter.json create mode 100644 packages/ai/src/model-shards/cerebras.json create mode 100644 packages/ai/src/model-shards/cloudflare-ai-gateway.json create mode 100644 packages/ai/src/model-shards/cursor.json create mode 100644 packages/ai/src/model-shards/deepinfra.json create mode 100644 packages/ai/src/model-shards/deepseek.json create mode 100644 packages/ai/src/model-shards/firepass.json create mode 100644 packages/ai/src/model-shards/fireworks.json create mode 100644 packages/ai/src/model-shards/fugu.json create mode 100644 packages/ai/src/model-shards/github-copilot.json create mode 100644 packages/ai/src/model-shards/gitlab-duo.json create mode 100644 packages/ai/src/model-shards/glm-zcode.json create mode 100644 packages/ai/src/model-shards/google-antigravity.json create mode 100644 packages/ai/src/model-shards/google-gemini-cli.json create mode 100644 packages/ai/src/model-shards/google-vertex.json create mode 100644 packages/ai/src/model-shards/google.json create mode 100644 packages/ai/src/model-shards/groq.json create mode 100644 packages/ai/src/model-shards/huggingface.json create mode 100644 packages/ai/src/model-shards/kilo.json create mode 100644 packages/ai/src/model-shards/kimi-code.json create mode 100644 packages/ai/src/model-shards/litellm.json create mode 100644 packages/ai/src/model-shards/mara.json create mode 100644 packages/ai/src/model-shards/minimax-cn.json create mode 100644 packages/ai/src/model-shards/minimax-code-cn.json create mode 100644 packages/ai/src/model-shards/minimax-code.json create mode 100644 packages/ai/src/model-shards/minimax.json create mode 100644 packages/ai/src/model-shards/mistral.json create mode 100644 packages/ai/src/model-shards/moonshot.json create mode 100644 packages/ai/src/model-shards/nanogpt.json create mode 100644 packages/ai/src/model-shards/nvidia.json create mode 100644 packages/ai/src/model-shards/ollama-cloud.json create mode 100644 packages/ai/src/model-shards/openai-codex.json create mode 100644 packages/ai/src/model-shards/openai.json create mode 100644 packages/ai/src/model-shards/opencode-go.json create mode 100644 packages/ai/src/model-shards/opencode-zen.json create mode 100644 packages/ai/src/model-shards/opencode.json create mode 100644 packages/ai/src/model-shards/opengateway.json create mode 100644 packages/ai/src/model-shards/openrouter.json create mode 100644 packages/ai/src/model-shards/qianfan.json create mode 100644 packages/ai/src/model-shards/qwen-portal.json create mode 100644 packages/ai/src/model-shards/synthetic.json create mode 100644 packages/ai/src/model-shards/together.json create mode 100644 packages/ai/src/model-shards/venice.json create mode 100644 packages/ai/src/model-shards/vercel-ai-gateway.json create mode 100644 packages/ai/src/model-shards/xai.json create mode 100644 packages/ai/src/model-shards/xiaomi-token-plan-ams.json create mode 100644 packages/ai/src/model-shards/xiaomi-token-plan-cn.json create mode 100644 packages/ai/src/model-shards/xiaomi-token-plan-sgp.json create mode 100644 packages/ai/src/model-shards/xiaomi.json create mode 100644 packages/ai/src/model-shards/zai.json create mode 100644 packages/ai/src/model-shards/zenmux.json diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 6f4d842c10..8b13789179 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -1,3121 +1 @@ -# Changelog -## [Unreleased] - -### Changed - -- Anthropic prompt caching now defaults to top-level automatic caching (`cache_control: { type: "ephemeral" }`) on the canonical Anthropic API and explicit block-level caching for Claude-family models on non-canonical Anthropic-compatible gateways (Cloudflare AI Gateway, GitHub Copilot, GitLab Duo, Vercel AI Gateway, zenmux, CLIProxyAPI, etc.). Explicit mode is the safer compatible default because gateways commonly inject, rewrite, or reject the top-level field; verified gateways can opt into it with `compat.promptCacheMode: "automatic"`. Non-Claude models on unknown compatible endpoints keep the no-cache default; `promptCacheMode: "none"` and configured or per-request `cacheRetention: "none"` still opt out. Non-canonical Claude models get the default ~5m lifetime unless the endpoint sets `compat.supportsLongCacheRetention: true`. - -### Fixed - -- `todo_write` raw argument rejections now carry bounded, authority-controlled correction codes for each rejected shape: unknown root keys, unknown operation-entry keys, done/drop entries missing a task or phase target, and unknown init list-entry keys. Each code maps to a fixed correction message naming the accepted shape (never echoing the offending input), so invalid calls surface specific guidance while valid payloads keep the existing passthrough/coercion path (#3916). -- Anthropic Sonnet 5 now exposes Anthropic's real `xhigh` and `max` thinking efforts on the Messages API (`minimal`/`low`/`medium`/`high`/`xhigh`/`max`), matching official support. The previous generic `kind === opus` gate excluded it from the full preset range; the capability predicate is now an explicit version-scoped list (Opus 4.7+, Sonnet 5+), so older Sonnet generations and Bedrock Converse routes stay fail-closed at their previously advertised levels (issue #3913). -- Alibaba Token Plan now exposes Qwen 3.8 Max under the provider-supported `qwen3.8-max` wire id instead of the rejected `qwen-3.8-max` spelling; catalog regeneration canonicalizes a legacy discovered alias rather than retaining a broken duplicate (#3909). -- Canonicalized first-class MiniMax M3 catalog ids (issue #3896). The bundled catalog previously shipped stale lowercase `minimax-m3` duplicates (512K) next to the canonical `MiniMax-M3` (1M) on all four first-class MiniMax providers, plus a non-official `minimax-v3` entry under `minimax-code`. The lowercase `minimax-m3` entries and `minimax-v3` are removed; `MiniMax-M3` is the single canonical first-class id (the regen-safe 1M pin in `applyGeneratedModelPolicy` now keys on `MiniMax-M3` / `MiniMax-M3[1m]` instead of the removed lowercase id), `DEFAULT_MODEL_PER_PROVIDER` points at `MiniMax-M3`, and the official Anthropic Token Plan id `MiniMax-M3[1m]` is first-class on the `minimax` / `minimax-cn` Anthropic routes with 1M context semantics. Unrelated catalog providers keep their own `minimax-m3` contracts. -- Anthropic thinking-replay repair now also triggers when the mutation/signature `invalid_request_error` arrives as a statusless in-stream SSE `error` event (issue #3900). Proxies such as CLIProxyAPI forward the upstream 400 body over an HTTP 200 SSE stream, so the thrown error carries no HTTP status; the classifiers previously required `status === 400` and let the session loop on an unrecoverable replay rejection. Statusless errors still require the full `invalid_request_error` thinking wording, so unrelated transport failures never claim the one-shot repair. -- Anthropic thinking-replay repair now also recovers when a proxy masks the rejection entirely (issue #3900). Live CLIProxyAPI captures replace the upstream 400 body with a generic `{"type":"api_error","message":"An error occurred while processing the request."}` SSE event on an HTTP 200 response, which names no cause and matches no transient phrase, so the turn died on the first attempt. Such a masked rejection now takes the same one-shot latest-then-full-history repair, but only before the first token and only while the request actually replays signed `thinking`/`redacted_thinking` blocks; masked failures on requests without replayed thinking still surface immediately. The classifier is exported as `isAnthropicMaskedProxyRejection`. - -- Anthropic cache-control resolution now falls back to `model.cacheRetention` at the provider boundary, preserving configured retention and request-over-model precedence through special dispatch wrappers such as GitLab Duo. A configured `cacheRetention: "none"` can no longer be dropped and replaced by the new automatic Claude-family cache marker. -- Anthropic explicit prompt caching now advances its conversation breakpoint during tool-use loops by marking the latest completed assistant tool-use turn while leaving the newest tool result uncached. Previously it kept refreshing only the original human message until another human turn arrived, pinning proxy cache reads to the static tools/system prefix throughout long agentic runs. -## [0.12.12] - 2026-08-05 - -### Fixed - -- OpenAI Responses and Azure OpenAI Responses now map the first-event timeout into the SDK request/setup timeout the same way Completions does, so a never-resolving pre-headers fetch on a provider-owned lazy stream cannot wait the SDK's 10-minute default before any transport watchdog exists. Alibaba Responses honors an explicit shorter first-event override before headers; Azure/env-pinned setup timeouts normalize to the typed `stream_first_event_timeout` failure. -- OpenAI Codex cost estimates now treat an explicit response `service_tier` as authoritative, so a request for priority processing that the provider serves at the default tier is no longer charged the priority multiplier; the requested tier remains the fallback when the terminal response omits the field. -- Added shared `isReasoningContentReplayError` classifier and `stripUnusableReasoningItems` repair for the DeepSeek-family reasoning-content replay rejection ("The `reasoning_content` in the thinking mode must be passed back to the API"). The classifier detects the error across message carrier shapes; the repair removes only `reasoning` items whose `encrypted_content` a proxy stripped to empty, preserving all non-reasoning history (text, tool calls, tool outputs). The agent loop consumes both for a bounded repair-and-resend circuit breaker. -- Codex statusless HTTP 200 SSE `invalid_request_error` events retry once without a forced named function choice only when the exact rejected name is still present in the request's serialized tools, before any output is emitted (#3669). - -## [0.12.11] - 2026-08-03 - -## [0.12.10] - 2026-08-03 -### Added - -- Anthropic OAuth can now pair by pasting the authorization code Anthropic displays (`https://platform.claude.com/oauth/code/callback`) instead of waiting on `http://localhost:54545/callback`, so a browser with no network route back to the machine running gjc can complete the login. Opt in per login with `OAuthLoginOptions.manualCode`; the loopback flow stays the default and is unchanged. Callback flows can now opt out of binding a local listener entirely (`OAuthCallbackFlowOptions.skipCallbackServer`), which fails fast when no manual code handler is supplied instead of idling until the five-minute timeout. The hosted redirect is a hard-coded constant with no env or config override, so it cannot be repointed at an attacker-controlled collector. - -### Fixed - -- Composer shell-policy failures now expose a stable structured marker plus provider-specific recovery guidance, while retaining recognition of prefix-only errors from older sessions. Cursor Composer requests use a native `read`/`grep`/`write`/`delete` discipline prompt rather than the generic hashline-tool vocabulary. -- Alibaba Token Plan streams now allow 600 seconds for the first semantic event, matching observed long-context TTFT above the previous 300-second cutoff. The outer lazy watchdog and both OpenAI transports share one provider fallback; OpenAI Completions also applies it before response headers, and Alibaba SDK connection timeouts from that pre-stream phase are normalized to the typed first-event failure so session retry policy does not replay the request as an unknown timeout. -- A plain `forbidden` failure no longer mutates credential state. `classifyFallbackTrigger` still returns the same `auth` class for HTTP 401 and 403, but now carries an `authDisposition` refinement of `"credential"` or `"forbidden"`. The refinement reads every code field (`openaiErrorCode`, `anthropicErrorType`, `providerCode`) and orders by specificity: a concrete credential fault wins, a `forbidden` in any field is otherwise terminal (so `{status: 401, providerCode: "forbidden"}` does not rotate), and the status decides only when no auth code is present. `transportFailureFacts` also reads `anthropicErrorType` back from its own key so re-normalizing already-built facts no longer drops it. `streamSimple` consults the disposition at both auth-capture exits — the error-event path and the thrown-error path, the latter unwrapping a nested `error.transportFailure` carrier that the shared `transportFailureFacts` extractor does not dereference — so a forbidden failure never reaches `onAuthError`, and `createAssistantAuthError` now preserves the structured transport facts on the callback error instead of reducing it to a status. The auth gateway's managed-failure bookkeeping likewise stops invalidating a credential on a forbidden response. Previously a single 403 could block an otherwise-healthy credential, and in a multi-credential pool could cycle through and block every row. -- `AuthStorage` gains `hasRuntimeCredentialSelector()` and `getSessionCredentialRowId()`. The first reports the `--credential` runtime pin, which lives in a different map from the `--api-key` override and previously had no accessor, so callers that must not rotate away from a pinned credential could not see it. The second returns the opaque stored row id for a session's current credential — never an email, account, project, or key material. - -## [0.12.8] - 2026-08-02 -### Added - -- Added read-only OpenCodex provider discovery with runtime-port resolution, identity-checked health probing, cached `/api/models` catalogs, raw wire model ids, and `/login opencodex` status reprobes without credential persistence. -- Added the Alibaba Token Plan `deepseek-v4-flash-0731` model with its 1M context, 384K output limit, OpenAI Completions routing, and documented low/high/max reasoning efforts. - -### Changed - -- OpenAI-compatible discovery and OpenAI Completions/Responses transports now preserve query-bearing endpoint routing, including repeated query parameters. Model resolution records whether a provider discovery result was fetched so consumers can distinguish current discovery evidence from cached data. - -### Fixed - -- Closed the two remaining ingress holes behind bare `Request Blocked` failures on OpenAI codex models. (1) The chatgpt.com/backend-api pre-model gate rejects with an HTTP 400 bare-`detail` body (`{"detail": "Request blocked."}`) carrying no `error.*` envelope and no `code=invalid_prompt`, so `parseCodexError` surfaced an unexplained message, `isInvalidPromptError` and the codex non-retryable classification missed it, and the session-level `invalid_prompt` circuit breaker never attempted a repaired resend. `parseCodexError` now reads top-level `detail` (string or `{message}`) bodies and classifies a leading `Request blocked` message without an explicit provider code as `invalid_prompt`, surfacing `Request blocked (code=invalid_prompt)` so every existing invalid_prompt contract engages. (2) Outgoing tool definitions (descriptions and JSON-schema strings) bypassed every request-boundary sanitizer on both the OpenAI Responses and OpenAI-codex-responses transports, so a `<|channel|>`-quoting MCP/skill tool description poisoned every request on the session in a way no history repair could fix. Both `convertTools` paths now neutralize reserved control tokens across the whole tool payload via the shared idempotent zero-width-space insertion (ref openai/codex#35838). -- Lazy built-in streams no longer place a normalized-event watchdog in front of providers that already monitor raw transport progress. This prevents active Anthropic, Azure OpenAI, and OpenAI-family streams from being replaced by a blank `Provider stream stalled while waiting for the next event` error when transport-only events refresh the provider watchdog; providers without their own watchdog keep the shared lazy-stream protection. - -### Fixed - -- Updated GPT-5.6 Sol, Terra, and Luna to current OpenAI Standard pricing, including Responses API cache-write attribution and full-request long-context pricing above 272K input tokens. - -## [0.12.7] - 2026-07-31 - -## [0.12.6] - 2026-07-31 - -## [0.12.5] - 2026-07-30 -### Fixed - -- Alibaba Token Plan requests now carry Qwen Code's canonical DashScope request fingerprint on both transports. The built-in `alibaba-token-plan` provider (openai-responses `qwen3.8-max-preview` and openai-completions `glm-5.2`/`deepseek-v4-pro`) now emits the four upstream identity/cache/auth headers (`User-Agent`, `X-DashScope-CacheControl: enable`, `X-DashScope-UserAgent`, `X-DashScope-AuthType: openai`) matching `QwenLM/qwen-code` v0.21.1 (commit `f4cd6e1`) exactly, via a shared helper. DashScope is compatibility-sensitive to this client fingerprint, so a non-identical set can cause request instability and affect first-event latency. Caller headers still win per key (upstream `{...default, ...customHeaders}` precedence); non-Alibaba providers are byte-unchanged (#3557). - -### Added - -- Reproducible Alibaba Token Plan header-parity A/B latency benchmark (`packages/ai/scripts/alibaba-token-plan-latency-ab.ts`): a fixed-seed interleaved A/B comparison of legacy vs Qwen-identical headers against a deterministic local HTTP server, reporting n/success/error/timeout and TTFT/total latency median/p90/p95/mean/stddev. No live credentials are required; a public-safe blocked-live-data receipt is included (`packages/ai/test/fixtures/alibaba-token-plan-latency-blocked-receipt.md`) (#3557). - - -## [0.12.4] - 2026-07-30 - -### Fixed - -- Mara Cloud login now validates pasted credentials against the authenticated chat-completions endpoint instead of the public `/v1/models` catalog. The catalog returns `200` even for random invalid bearer tokens, so the previous check could persist unusable keys. - -## [0.12.3] - 2026-07-30 - -### Added - -- Added first-class support for **Mara Cloud**, an OpenAI-compatible enterprise AI inference platform. Registers the `mara` provider descriptor, `/login` entry (API-key paste validated against `https://api.cloud.mara.com/v1/models`), `MARA_API_KEY` environment resolution, and bundled `models.json` seed models. Models are discovered dynamically from `GET /v1/models` (base URL `https://api.cloud.mara.com/v1`). - -## [0.12.2] - 2026-07-30 - -## [0.12.1] - 2026-07-29 - -### Fixed - -- Lazy-stream first-event timeouts now abort with `FirstEventTimeoutError` so `transportFailure.providerCode` is `stream_first_event_timeout` on the outer watchdog path shared by all bundled providers via `createLazyStream`. Idle stalls remain bare `Error`s (distinct class intentionally) (#3496). - -- Provider streams now surface first-event watchdog expiry as a typed timeout so callers can apply bounded retry policy without parsing error prose. -- Codex websocket first-event timeouts now discard the timed-out connection before the outer retry/fallback layer handles the typed failure, preventing late frames from the abandoned request from being consumed by the replayed turn. -- Codex named-tool requests now recognize provider `Tool choice '' not found in 'tools' parameter` errors as runtime capability failures and retry once without forcing the choice. -- The Kimi OAuth host (`KIMI_CODE_OAUTH_HOST` / `KIMI_OAUTH_HOST`) is now resolved from trusted environment sources only. That host receives the device-authorization request, the authorization-code exchange, and the refresh call that carries the existing refresh token, so reading it through the merged view that includes the caller's `cwd/.env` let a repository redirect the login flow and collect the user's Kimi credentials. Resolution now uses the non-project resolver; shell and user-level configuration is unchanged. -- The documented `GJC_NO_STRICT` environment variable now takes effect. `adaptSchemaForStrict` read only the legacy `PI_NO_STRICT`, so an operator hitting a provider that rejects strict function schemas set the documented name and strict mode stayed on. Both names are honoured, canonical name first, and `GJC_NO_STRICT` is now listed in the environment-variable reference rather than only in the schema-normalisation note. -- The documented `GJC_AUTH_NO_BORROW` environment variable now takes effect. Only the legacy `PI_AUTH_NO_BORROW` was read, so an operator who followed the documentation to disable macOS native-app token borrowing still had a JWT read out of the Perplexity desktop application during login. Both names are now honoured, and the contract stays presence-based as documented so that setting it to `0` cannot silently re-enable borrowing. -- The Azure client's `AZURE_OPENAI_API_KEY` fallback is now resolved from trusted environment sources only. It read the merged view that includes the caller's `cwd/.env`, so a repository could supply the credential the client authenticates with; provider credential resolution is documented as excluding the project `.env`, and this fallback now matches. An explicit caller-supplied key still takes precedence, and shell / user-level configuration is unchanged. -- Anthropic and Ollama tool calls cut off by an output-token limit are now marked incomplete before dispatch, so repaired partial JSON is rejected instead of executing with truncated arguments. -- The Anthropic "thinking blocks in the latest assistant message cannot be modified" 400 now escalates its one-shot replay repair. The error names the latest assistant message but its cited `messages.N.content.M` path can point at an earlier replayed turn, so the latest-only repair was rejected identically and killed the turn; recovery now retries once more with thinking dropped from every replayed assistant message. -- Anthropic adaptive-thinking `display` support is now decided by the canonical model-version parser instead of a provider-local `claude-opus-(\d+)-(\d+)` regex. The regex only matched two-component ids, so a single-component alias such as `claude-opus-5` was classified as pre-4.7 while its dated snapshot `claude-opus-5-20260101` was not: the alias sent `thinking: { type: "adaptive" }` without `display: "summarized"`, additionally requested the `interleaved-thinking-2025-05-14` beta, and had its returned thinking blocks recorded as raw rather than summarized. Both Anthropic and Bedrock providers now share `supportsAnthropicAdaptiveThinkingDisplay`, so alias and dated ids of the same model send an identical request shape. -- Anthropic requests that force a tool choice no longer replay signed thinking blocks. Forcing `tool_choice` strips `thinking` from the request (the API rejects the combination), but the converted history still carried native `thinking`/`redacted_thinking` blocks from thinking-enabled turns, so eager tool-forcing turns (e.g. the todo bootstrap) sent a request whose history contradicted its own thinking setting and drew a 400. The replay now degrades in the same rebuild; the forced request trades its prompt-cache prefix for a shape the API accepts. -- A definitively failed OAuth refresh can no longer loop forever instead of disabling the credential. The refresh-failure path disables the row with a CAS conditioned on its serialized `data`, and treated a lost CAS as proof that a peer had rotated the token: it reloaded the store and re-resolved, without bound. That predicate also misses when nothing was rotated — an account switcher that replaces the provider's rows leaves the attempted id gone, and an unrelated identity-metadata write leaves the row byte-different — so a revoked credential was never disabled and every subsequent request re-issued the same `invalid_grant` refresh (observed in the wild as ~3k `OAuth token refresh failed` / `disable lost CAS` log pairs in 3.5 hours, one wasted refresh round-trip per request). When the row still holds the refresh token that just failed, it is now disabled by id (no peer rotation exists to clobber); otherwise the reload-and-retry recovery is capped, so resolution terminates instead of recursing until the runtime dies. - -## [0.12.0] - 2026-07-28 - -### Added - -- Added first-class support for **BizRouter**, an OpenAI-compatible Korean enterprise LLM gateway. Registers the `bizrouter` provider descriptor, `/login` entry (API-key paste validated against `https://api.bizrouter.ai/v1/models`), `BIZROUTER_API_KEY` environment resolution, and bundled `models.json` seed models. Models are discovered dynamically from `GET /v1/models` (base URL `https://api.bizrouter.ai/v1`). -### Fixed - -- Anthropic subscription OAuth requests now use the current Claude Code compatibility attribution (`2.1.219`, `sdk-cli`) instead of the stale `2.1.63` CLI fingerprint that Anthropic can misclassify as extra usage. -- Connection failures now name the transport code and the target URL. Bun reports DNS and socket failures as a bare `Error` whose message is a standalone hint ("Was there a typo in the url or port?", "Unable to connect. Is the computer able to access the url?") and keeps the actionable facts on `code` and `path`, but only `message` reached the assistant message. A provider outage, a local DNS failure, and a mistyped custom base URL therefore all rendered as the same context-free sentence with no host in it. Such failures now read `... (transport=FailedToOpenSocket url=https://chatgpt.com/backend-api/codex/responses)`; the URL is reduced to origin and path so a key carried in the query string is not surfaced. - -### Documentation - -- `docs/environment-variables.md` now names the Anthropic Foundry gateway variables that are actually read: `CLAUDE_CODE_USE_FOUNDRY`, `CLAUDE_CODE_CLIENT_CERT`, and `CLAUDE_CODE_CLIENT_KEY`. The page advertised `ANTHROPIC_MODEL_CODE_*` spellings that no code path reads, so an operator following it could not enable Foundry mode at all, and the mTLS client material was silently ignored. - -## [0.11.11] - 2026-07-26 - -### Fixed - -- The Kimi usage endpoint base (`KIMI_CODE_BASE_URL`) is now resolved from trusted environment sources only. That base becomes the URL the usage request sends `Authorization: Bearer ` to, so reading it through the merged view that includes the caller's `cwd/.env` let a repository collect the user's Kimi access token. An explicit caller-supplied base URL still takes precedence, and shell / user-level configuration is unchanged. -- The Gemini CLI compatibility version used in the outbound `User-Agent` is refreshed from `0.50.0` to `0.52.0`, matching the current upstream release. The repository ships `check-spoofed-versions` for exactly this, but that check is not wired into CI, so the value had drifted two minor releases behind. -- The OpenAI and Azure endpoint decisions are now resolved from trusted environment sources only: `OPENAI_BASE_URL` (streaming responses, completions, and the model manager) and `AZURE_OPENAI_BASE_URL`. `Bun.env` is `process.env` and the env module merges the caller's `cwd/.env` into it, so a repository could previously plant a `.env` that redirected authenticated requests; the two provider paths already reached for `$inheritedEnv` but re-admitted the project `.env` through a fallback. Resolution now goes through the non-project resolver (launching shell plus GJC/user-owned `.env` files); shell and user-level configuration is unchanged. -- The OpenAI and Azure endpoint decisions are now resolved from trusted environment sources only: `OPENAI_BASE_URL` (streaming responses, completions, and the model manager), `AZURE_OPENAI_BASE_URL`, and `AZURE_OPENAI_RESOURCE_NAME` (the alternate constructor for the same Azure host). `Bun.env` is `process.env` and the env module merges the caller's `cwd/.env` into it, so a repository could previously plant a `.env` that redirected authenticated requests; the two provider paths already reached for `$inheritedEnv` but re-admitted the project `.env` through a fallback. Resolution now goes through the non-project resolver (launching shell plus GJC/user-owned `.env` files); shell and user-level configuration is unchanged. -- Google credential material is now resolved from trusted environment sources only: the `GOOGLE_APPLICATION_CREDENTIALS` service-account / authorized-user file path used by the ADC loader, and `GOOGLE_CLOUD_API_KEY` used as the Vertex API key. Both were read through the merged view that includes the caller's `cwd/.env`, so a repository could ship a key file and point the agent at it, making it authenticate to Google as an identity the repository chose. `stream.ts` already resolved the same ADC variable through the non-project resolver; the two now agree. An explicit caller-supplied API key still takes precedence. -- The Grok usage token fallback (`GROK_CLI_OAUTH_TOKEN`) is now resolved from trusted environment sources only. It authenticates the billing/usage call, and reading it through the merged view that includes the caller's `cwd/.env` let a repository decide which account that call ran against. Stored credentials keep precedence, and shell / user-level configuration is unchanged. -- The Vertex AI location (`GOOGLE_CLOUD_LOCATION`) can no longer redirect authenticated requests off Google. It is interpolated into the request host (`${location}-aiplatform.googleapis.com`), so a value containing `/` terminated the authority component and sent the Google access token to an arbitrary origin — and it was read through the merged view that includes the caller's `cwd/.env`. It now resolves from trusted sources only and must be a region label; `GOOGLE_CLOUD_PROJECT` / `GCLOUD_PROJECT` moved to the same trusted resolver. -- HTTP 400 request dumps are now bounded. Every 400 wrote a file containing the full sanitized request body and nothing ever removed one, so the directory grew without limit — a developer machine reached 27,249 files totalling 7.0 GB, which was 96% of everything under `~/.gjc`. The newest 50 are retained, matching the bounded retention the rotating application log already uses, and pruning stays best-effort so diagnostics never turn a request failure into a second failure. -- Anthropic `ping` keepalives no longer reset stream progress, so responses that stop producing content now reach the idle timeout instead of hanging indefinitely. -- The Anthropic endpoint decision is now resolved from trusted environment sources only: `ANTHROPIC_BASE_URL`, `FOUNDRY_BASE_URL`, `ZCODE_PLAN_ANTHROPIC_BASE_URL`, and the `CLAUDE_CODE_USE_FOUNDRY` mode switch. `Bun.env` is `process.env` and the env module merges the caller's `cwd/.env` into it, so a repository could previously plant a `.env` that redirected authenticated Anthropic requests — the resolved base URL becomes `${baseUrl}/v1/messages` while the headers carry the API key or OAuth token. Resolution now goes through the non-project resolver (launching shell plus GJC/user-owned `.env` files); shell and user-level configuration is unchanged. -- The documented `GJC_OPENAI_STREAM_IDLE_TIMEOUT_MS` environment variable now takes effect: the stream-watchdog idle-timeout helpers resolve it GJC-first before the legacy `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` / `PI_STREAM_IDLE_TIMEOUT_MS` aliases (previously only the `PI_`-prefixed names were read, so setting the documented GJC name was a silent no-op). -- The documented OpenAI-code provider knobs now take effect: `GJC_OPENAI_CODE_DEBUG`, `GJC_OPENAI_CODE_WEBSOCKET`, `GJC_OPENAI_CODE_WEBSOCKET_IDLE_TIMEOUT_MS`, `GJC_OPENAI_CODE_WEBSOCKET_RETRY_BUDGET`, and `GJC_OPENAI_CODE_WEBSOCKET_RETRY_DELAY_MS` are resolved GJC-first ahead of the legacy `PI_CODEX_*` names. The Codex → OpenAI-code rename had updated the documentation but not the reads, so every documented name was a silent no-op. - -## [0.11.9] - 2026-07-24 -### Fixed - -- Credential selection and aggregate usage callers now stop awaiting immediately when their own signal aborts without cancelling shared usage fetches, and ranking deadlines no longer re-await the same stalled usage request during credential resolution. -- Kimi Code now allows one continuous 300-second first-event wait before aborting, while preserving explicit caller and environment timeout overrides and the existing inter-event idle timeout. - -### Added - -- Added first-class support for **OpenGateway by Sionic AI**, an OpenAI-compatible gateway. Registers the `opengateway` provider descriptor, `/login` OAuth entry (API-key paste validated against `https://apis.opengateway.ai/v1/models`), `OPENGATEWAY_API_KEY` environment resolution, and bundled `models.json` seed models. Models are discovered dynamically from the OpenAI-compatible `/v1/models` endpoint (base URL `https://apis.opengateway.ai/v1`). - -## [0.11.8] - 2026-07-23 - -### Fixed - -- OpenAI Responses / Codex native history replay no longer submits missing resident-image placeholders as `input_image.image_url`. Invalid values (including `[Session resident imageUrl blob missing: …]`) are dropped, or retained as `file_id`-only parts when a non-empty `file_id` is present, so a single unavailable historical image cannot brick `/retry` (#2924). -- Raised the first-event stream timeout floor to five minutes for `alibaba-token-plan` models at both the OpenAI provider and outer lazy-stream watchdogs, while preserving caller and environment overrides and the existing inter-event idle timeout. -- OAuth refresh peer-rotation recovery now runs before failure classification instead of only on the definitive-failure path, and the definitive matcher recognizes the "grant is invalid" phrasing. Providers whose invalid-grant response does not contain the literal `invalid_grant` (e.g. Kimi's 400 "The provided authorization grant is invalid") previously had rotation races misclassified as transient, temp-blocking a healthy credential for five minutes on every race; with Kimi's ~12-minute access tokens and multiple processes sharing the credential store this surfaced as repeated logouts. Genuine revocations are now disabled with a cause instead of looping temp-blocks. -- Anthropic 400 `Invalid \`signature\` in \`thinking\` block` responses now trigger the one-shot thinking replay repair instead of failing the turn. The existing repair matcher only recognized the "latest assistant message ... cannot be modified" wording, so the signature-validation variant — which can cite a `thinking`/`redacted_thinking` block anywhere in the replayed history (e.g. after compaction/pruning rewrote an earlier turn) — was treated as a fatal request error. The retry now rebuilds the request with thinking blocks dropped from every replayed assistant message (`repairAllAssistantThinking`), while the latest-message mutation variant keeps the targeted latest-only repair. - -### Changed - -- Raw tool-argument rejection hooks can now select from bounded, authority-controlled correction codes. Unknown or extension-supplied values retain the byte-for-byte generic rejection instead of reaching model-visible validation errors. - -## [0.11.7] - 2026-07-22 - -### Changed - -- Replaced the `alibaba-coding-plan` provider with first-class `alibaba-token-plan` support. The `/login` OAuth list, provider descriptor, model manager, models.dev descriptor, and bundled `models.json` now target the maintained Alibaba Token Plan endpoint (`https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1`, env `ALIBABA_TOKEN_PLAN_API_KEY`) and validate logins against `deepseek-v4-pro`. The retired `alibaba-coding-plan` provider pointed at `coding-intl.dashscope.aliyuncs.com`, which rejected real token-plan keys with 401 and was the only Alibaba entry exposed in `/login`. - -## [0.11.4] - 2026-07-20 - -### Added - -- Added the native Kimi Code `k3` catalog entry with its 1M-token context window, multimodal input, and reasoning support. - -## [0.11.2] - 2026-07-19 - -### Fixed - -- `transportFailureFacts` now reduces transport headers to a plain record containing only the retained retry signals (`retry-after`, `retry-after-ms`). Providers attach these facts to error `AssistantMessage`s, and the previous shape carried the live fetch/SDK `Headers` instance — which is not structured-cloneable (`structuredClone` throws `DataCloneError`, "The object can not be cloned." under Bun) and not JSON-serializable (persisted as `{}` in session files, silently dropping the retry hint). Under a managed model fallback chain, snapshotting such an error message replaced the real provider failure with the local clone error and exhausted the whole chain. Normalization is idempotent (re-running facts on facts is structurally stable; errors carrying only unretained headers with no status/code now yield no facts instead of an empty facts object), Retry-After classification (`classifyFallbackTrigger`) is unchanged, and arbitrary response headers no longer reach persisted facts. - -## [0.11.0] - 2026-07-15 -### Added - -- Exported the canonical thinking-control mode runtime vocabulary so packed SDK consumers can validate provider metadata against the same public `@gajae-code/ai` contract. - -### Fixed - -- Fixed frequent `Request blocked (code=invalid_prompt)` failures on gpt-5.6 (Sol/Terra/Luna) subagent, default-agent, and compaction turns (ref openai/codex#32028, oh-my-pi#5184). Leaked Harmony control-token markers (e.g. `<|channel|>analysis`) were only neutralized on the replayed-history payload path, so markers in assistant reasoning summaries, live-converted message/tool-output text, and user-authored content reached the OpenAI Responses and OpenAI-codex-responses transports verbatim and wedged the session (the poisoned item was re-sent every turn). Both transports now neutralize reserved control tokens across the entire outgoing `input` array at the request boundary via an idempotent zero-width-space insertion that keeps the text human-readable. - -- Closed the remaining `Request blocked (code=invalid_prompt)` wedge on gpt-5.6 caused by header-form leaked Harmony markers. The reserved-control-token sanitizer only matched the simple `<|ident|>` shape, so a header-form marker carrying a recipient (e.g. `<|assistant to=functions.bash|>`) survived every sanitizer path (replay, request boundary, compaction) and kept re-poisoning history even after the earlier fixes. The pattern now also matches the scoped header grammar — a known Harmony role (`system`/`developer`/`user`/`assistant`/`tool`) plus a `to=` assignment with unbounded recipient length — while leaving ordinary delimiter/pipe text untouched (arbitrary `<|foo bar=baz|>`, F# `value <| f |> g`, compact `sum<|a+b|>c`, and multi-line bodies never match). The simple branch remains a strict superset of the prior identifier-only pattern (#2267). - -- Made the `Request blocked (code=invalid_prompt)` classification explicit and shared across transports (#2282). `invalid_prompt` was only non-retryable by omission — it appeared in neither the codex retryable nor non-retryable event set, and the plain OpenAI Responses transport surfaced it as a generic error with no durable marker. It is now in the codex `CODEX_NON_RETRYABLE_EVENT_CODES` set (code and message forms), the Responses error path tags `transportFailure.providerCode = "invalid_prompt"`, and a new exported `isInvalidPromptError` predicate is the single contract both transports and the session-level circuit breaker key on. Ordinary control-token / pipe text (F# `value <| f |> g`, `sum<|a+b|>c`, `<|foo bar=baz|>`) is unaffected; genuinely transient errors (`server_error`, `model_error`) stay retryable. - -## [0.10.2] - 2026-07-14 - -### Fixed - -- Fixed frequent `Request blocked (code=invalid_prompt)` failures on gpt-5.6 (Sol/Terra/Luna) subagent, default-agent, and compaction turns (ref openai/codex#32028, oh-my-pi#5184). Leaked Harmony control-token markers (e.g. `<|channel|>analysis`) were only neutralized on the replayed-history payload path, so markers in assistant reasoning summaries, live-converted message/tool-output text, and user-authored content reached the OpenAI Responses and OpenAI-codex-responses transports verbatim and wedged the session (the poisoned item was re-sent every turn). Both transports now neutralize reserved control tokens across the entire outgoing `input` array at the request boundary via an idempotent zero-width-space insertion that keeps the text human-readable. -### Fixed - -- Fixed Fable 5 adaptive thinking being billed but never displayed: model discovery now classifies `claude-fable-*` as `anthropic-adaptive` (was cached as `budget`, sending `enabled`+`budget_tokens` that Fable answers with signature-only thinking), and `supportsAdaptiveThinkingDisplay` opts Fable into `display: "summarized"` on both Anthropic Messages and Bedrock Converse transports (#2791). - -## [0.10.0] - 2026-07-12 -### Fixed - -- Made Bedrock model visibility reflect credential-only static/shared AWS sources with supported profile shapes, authenticated real bearer-token requests, and stopped advertising unsupported ECS/IRSA sources (#1934). -- Added a typed provider safety-stop classification across Anthropic, OpenAI-compatible, and Google streams so callers can distinguish policy terminations from generic provider errors without parsing display text. - -## [0.9.6] - 2026-07-10 -### Fixed - -- Normalized the GPT-5.6 Sol/Terra/Luna context window to the 373K usable prompt budget on both OpenAI and OpenAI code transports (was 1,050K / 272K), matching the live openai-codex catalog. - -## [0.9.5] - 2026-07-09 -### Added - -- Added GPT-5.6 Sol, Terra, and Luna catalog/parser support for OpenAI and OpenAI code transports, including `low` through canonical `max` reasoning efforts, verified pricing/limits, and GPT-5.6 cache-write pricing (#1925; OmX #3103). - -### Fixed - -- Stopped requesting `strict: true` tool use on Anthropic OAuth requests: the Claude Code OAuth surface mishandles strict tools, returning tool calls with empty/undefined arguments and occasionally corrupted tool names. API-key requests keep strict tool use; `PI_NO_STRICT=1` is no longer needed as a workaround. - -## [0.9.4] - 2026-07-09 -### Fixed - -- Preserved Anthropic OAuth tool-call names and streamed arguments across interleaved tool-use blocks, preventing prefixed tool names and partial JSON deltas from being dropped or misattributed. -- Embedded `models.json` via a `with { type: "file" }` import so compiled release binaries load the bundled model catalog from bunfs instead of crashing at startup with `Cannot find module './packages/ai/src/models.json'` (v0.9.3 regression, #1914). - -## [0.9.2] - 2026-07-09 -### Added - -- Added runtime credential selectors so callers can pin stored multi-account credentials by id, email, account id, or project id instead of using automatic rotation/ranking. - -### Fixed - -- Refreshed the default Gemini CLI impersonation version to 0.50.0 so the spoofed User-Agent freshness gate passes for the 0.9.2 release. -- Hid the non-callable `google-antigravity/gemini-3.1-pro-high` selector from bundled, dynamic, and cached Antigravity catalogs after live Cloud Code Assist calls returned HTTP 400; `google-antigravity/gemini-3.1-pro-low:high` remains the working high-thinking path. -- Preserved Anthropic tool-use arguments supplied on `content_block_start` when no `input_json_delta` chunks follow, preventing finished tool calls from collapsing back to `{}`. -- Refreshed the default Gemini CLI impersonation version to 0.50.0 so the spoofed User-Agent freshness gate passes for the 0.9.2 release. - -## [0.9.1] - 2026-07-08 - -### Fixed - -- Unified the Cursor client version used across provider requests and discovery. -- Detected ZAI weekly limit exhaustion as a structured rate-limit condition. -- Pointed Sakana Fugu OAuth/login guidance at the Sakana platform console and documented the `fish_` key prefix expectation. - -## [0.9.0] - 2026-07-07 - -### Fixed - -- Capped OpenCode Go Kimi reasoning efforts that the Go chat-completions endpoint rejects (`kimi-k2.5:minimal` → `low`, `kimi-k2.7-code:xhigh|max` → `high`) and degraded forced `tool_choice` for those models so Kimi Go sessions and title-generation turns no longer fail with generic upstream 400s. - -## [0.8.2] - 2026-07-06 - -### Fixed - -- Refreshed matching existing OAuth credentials during `importCredentialIfAbsent` and cleared provider usage caches after the write, so external credential import no longer keeps stale tokens or stale usage-limit reports for the same account. - -## [0.7.9] - 2026-07-01 - -### Fixed - -- Mapped DeepSeek-style `prompt_cache_hit_tokens` and `prompt_cache_miss_tokens` usage fields into OpenAI-compatible prompt-cache accounting (#1329). - -## [0.7.5] - 2026-06-27 - -### Fixed - -- Sanitized Codex history replay text fields so malformed/non-string replay text no longer corrupts the rebuilt request payload (#1199). -- Preserved object-valued tool replay fields when rebuilding Codex history payloads instead of coercing them to strings (#1200). - -## [0.7.4] - 2026-06-27 - -### Fixed - -- Treated `openai-codex-device` as an auth-storage alias for `openai-codex`, so headless/device Codex logins show as authenticated and logout/remove the stored Codex credential instead of appearing unsaved (#1151). -- Disabled thinking for OpenCode Go forced tool calls so forced-tool turns no longer emit unsupported thinking content (#1185). -- Restored the GPT-5.5 context window to its correct size (#1186). - -## [0.7.3] - 2026-06-25 -### Added - -- Added the Sakana Fugu provider (`fugu`) with API-key auth (`FUGU_API_KEY`) and bundled catalog models (#1086). - -### Fixed - -- Wired Fugu API-key auth login so `gjc login fugu` stores a reusable `FUGU_API_KEY` credential instead of the provider having no supported login flow (#1090). -- Matched the real google-antigravity IDE request headers, system prompt, and preamble config so requests are accepted by Cloud Code Assist (#1080). -- `isContextOverflow` now detects a third proxy-level overflow case — an empty response with `stopReason: "stop"` and anomalously low usage (input + output ≤ 5 tokens), as emitted by some proxies (notably LiteLLM) when the upstream context window is exceeded — so callers surface overflow instead of treating it as a clean completion (#1102). - -### Security - -- In no-auth (tokenless) auth-gateway mode, requests carrying a browser `Origin` header are now rejected before CORS preflight handling or route dispatch, while local non-browser CLI clients keep the existing tokenless flow and token-configured browser clients keep the bearer-token/preflight flow (#1115). - -## [0.7.2] - 2026-06-24 - -### Fixed - -- Reject truncated or incomplete streamed tool calls instead of executing them with partial arguments, so a cut-off tool-call payload fails fast rather than running against a mismatched schema. - -## [0.7.1] - 2026-06-23 - -### Changed - -- Reworked the unofficial, opt-in `glm-zcode` provider to mirror how the ZCode desktop app actually reaches GLM: after the ZCode OAuth handshake it now auto-provisions a real Z.AI API key and calls `api.z.ai/api/anthropic` directly, instead of the `zcode.z.ai` coding-plan gateway that required an Aliyun captcha and a ZCode-JWT-bound plan entitlement. Requests also carry ZCode client source headers (`User-Agent: ZCode/`, `X-ZCode-Agent: glm`, plus platform/locale/timezone), so Z.AI recognizes the caller as the ZCode client (#1013, #1016, #1017). - -## [0.7.0] - 2026-06-22 - -### Added - -- Added the bundled `google-gemini-cli/gemini-3.5-flash` model entry so Gemini CLI users can select the model from the static registry (#965). - -## [0.6.4] - 2026-06-20 - -### Fixed - -- Fixed argument mis-attribution in the OpenAI-compatible Responses API streaming decoder when a single response emits multiple tool-call items. The decoder buffered streamed argument deltas against a single most-recent item/block slot, so interleaved or back-to-back `function_call`/`custom_tool_call` argument deltas could be applied to the wrong item — finalizing a tool call with another call's arguments (e.g. one tool's payload landing on a different tool's schema and tripping validation). Streamed deltas now accumulate against a per-item buffer keyed on stable item identity (`item_id` primary; positional `output_index` only when finite), each block records its content index at registration time, and finalization writes onto the same block stored in the message content while reading only the matching item's buffer. Single-tool-call streams, reasoning/text streaming, and the Chat Completions path are unchanged. - -## [0.6.2] - 2026-06-19 -### Added - -- Added opt-in `compat.sendSessionHeaders` for the `openai-completions` provider. When enabled (default off), the agent session id is forwarded as vendor-neutral `session_id` and `x-session-id` request headers to any OpenAI-compatible endpoint, letting relays/proxies do session-affinity routing and reuse a server-side prompt cache keyed by the session. Previously only the `openai-responses` provider injected session headers, and only against a first-party OpenAI base URL. Injection runs after the caller's `headers`/`extraHeaders` are merged and before `requestTransform`, and uses `??=` so any header the caller already set always wins; it is skipped entirely when the flag is off or no session id is available, leaving existing provider behavior byte-identical. The first-party `openai-responses` gating is unchanged. - -### Fixed - -- Prevented OpenAI Codex Responses `invalid_function_parameters` / tool-schema validation error events from being treated as retryable `server_error`s, so malformed request schemas fail fast instead of burning the full retry budget. -- Read LM Studio `/v1/models` nested metadata such as `meta.n_ctx`, `meta.n_ctx_train`, and `details.max_tokens` when normalizing dynamically discovered GGUF-backed local models. -- Corrected the bundled `openai-codex/gpt-5.5` context window from an overstated 400K back to its true 272K (272,000-token) window, so context-cap / auto-compaction thresholds no longer let gpt-5.5 sessions overrun the model's real limit before compaction (#873). - -## [0.6.1] - 2026-06-18 - -### Fixed - -- Generalized tool `input_schema` root-combinator flattening across providers so discriminated-union tool inputs (e.g. the `computer` tool, a `z.union`) no longer ship a bare top-level `anyOf`/`oneOf`/`allOf` root that strict validators reject. The Anthropic-only fix from 0.5.4 is now the shared, provider-agnostic `flattenToolRootCombinators` (in `utils/schema`) and is applied by Amazon Bedrock, OpenAI Chat Completions / Responses / Codex-Responses / Azure-Responses, Ollama, and Cursor. Previously only Anthropic flattened the root, so those providers forwarded the union root verbatim and a union-root tool failed upstream — Bedrock Converse (including via Kiro/CodeWhisperer relays) returned `400 TOOL_SCHEMA_INVALID: The value at toolConfig.tools.N.toolSpec.inputSchema.json.type must be one of the following: object`. Anthropic behavior is unchanged (it now calls the shared util), Google / Cloud Code Assist keep their own object-merge, and object-root tools, nested combinators, and runtime Zod validation are all untouched. - -## [0.6.0] - 2026-06-18 -### Fixed - -- Corrected the bundled `zai/glm-5.2` context window from 200K to its true 1M (1,000,000-token) lossless window. GLM-5.2 was added in #579 by copying GLM-5.1's 200K entry, and that stale value survived every `generate-models` run because provider-scoped models bypass the models.dev refresh in `applyGlobalModelsDevFallback`. Added a regen-safe pin in `applyGeneratedModelPolicy` (mirroring the Bedrock-Opus-4.6 precedent) so the 1M value persists, and updated the bundled catalog entry. The wrong 200K tripped auto-compaction / context-cap thresholds ~5x early for GLM-5.2 sessions. -- Corrected the bundled `minimax-m3` context window from 512K to its true 1M (1,000,000-token) window per the official MiniMax docs (platform.minimax.io documents MiniMax-M3 as a 1M-context frontier coding model). All four provider copies (`minimax`, `minimax-cn`, `minimax-code`, `minimax-code-cn`) carried the stale 512K, which survived `generate-models` (provider-scoped models bypass the models.dev refresh in `applyGlobalModelsDevFallback`) and tripped auto-compaction / context-cap thresholds 2x early on MiniMax sessions. Added a regen-safe pin in `applyGeneratedModelPolicy` keyed on `model.id === "minimax-m3"` and updated the bundled entries. `minimax-v3` (an undocumented catalog alias) is intentionally left untouched. - -## [0.5.4] - 2026-06-17 - -### Fixed - -- Fixed Anthropic tool schema compatibility for discriminated-union tool inputs by flattening only the model-facing input-schema root, avoiding top-level `oneOf`/`anyOf`/`allOf` request rejections while preserving nested combinators and runtime validation authority. - -- Made the "No API key for provider" error from `stream`/`complete` actionable for OpenCode Go/Zen subscription providers in headless runs (#755). The subscription is itself an API key (`OPENCODE_API_KEY`, created at https://opencode.ai/auth), not a separate OAuth/session token; the new `formatProviderCredentialHint` helper (composed into `formatMissingApiKeyError`) names the env var GJC reads, warns that a project `.env` is intentionally ignored for provider credentials, and points OpenCode users at the one-time interactive `gjc auth-broker login ` credential capture to run before headless/print mode. No auth behavior changed. - -## [0.5.3] - 2026-06-16 - -### Added - -- Added opt-in `AuthStorageOptions.credentialRankingMode` (`balanced` (default) | `earliest-reset`) for multi-account OAuth credential selection. `earliest-reset` ranks non-blocked credentials earliest-expiry-first — draining the soonest-to-reset account before its perishable tumbling-window quota (e.g. Claude 5h/7d) is lost at reset — keeping the existing drain-rate/used-fraction metrics as tiebreakers. `balanced` is byte-identical to prior behavior, and ranking only runs at session start (or when the session's preferred credential is blocked), so this never thrashes accounts mid-session. - -### Fixed - -- Allowed `openai-codex-responses` custom backends to use opaque `apiKey` bearer tokens by omitting `chatgpt-account-id` when the token does not expose a Codex account id. -- Fixed OpenAI code websocket continuations to treat codex-lb's `codex_previous_response_stale` response failures as expired `previous_response_id` anchors and retry with full context instead of surfacing the transient failure. -- Bounded the Cursor provider's conversation cache with an LRU(64) + 1h TTL and added `disposeCursorConversation`, so long-running sessions no longer retain Cursor conversation state without limit (#717). - -## [0.5.2] - 2026-06-15 - -### Changed - -- Changed the Anthropic provider's default prompt-cache retention to `long` (`ttl: "1h"`) when a request and model omit `cacheRetention`. The previous default (~5m) was too fragile for long-running Codex/Gajae-Code subagent workflows, where the cached prefix was frequently evicted between turns. The 1h `ttl` marker is only emitted on the canonical Anthropic API (`api.anthropic.com`) for models advertising `supportsLongCacheRetention`; proxies, gateways, and models without that capability still fall back to the default ephemeral breakpoint (Anthropic services it at ~5m). Explicit request/model `cacheRetention` and the `GJC_CACHE_RETENTION`/`PI_CACHE_RETENTION` env overrides continue to win, and `resolveCacheRetention` now accepts a `fallback` argument (defaulting to `"short"`) so non-Anthropic providers are unaffected. - -## [0.5.1] - 2026-06-14 - -### Fixed - -- Classified model/message limit exhaustion as persistent usage-limit errors so hosts fail fast or switch credentials instead of leaving sessions in an unbounded retry/working state. - -## [0.5.0] - 2026-06-13 - -### Added - -- Added a generic tool-choice capability model: `toolChoiceSupport` compat enum (`none`/`auto`/`required`/`named`) available on every forced-choice-capable API, derived from the legacy `supportsToolChoice`/`supportsForcedToolChoice` booleans when absent, with a shared `resolveToolChoice` helper that clamps requested tool choices (`named` → `required` → omit) and returns structured degradation metadata. -- Added a transparent one-shot fallback for forced `tool_choice` 400s ("tool_choice forces tool use is not compatible with this model" and equivalents): transports retry once without the forced field at a pre-content streaming boundary, record the discovery in an in-memory per-process incapability registry, and emit an internal non-rendered `toolChoiceIncapability` event. Applies to Anthropic, OpenAI Completions/Responses, Azure Responses, OpenAI code Responses, Bedrock (including event-stream `validationException`), Ollama, Google, and Gemini CLI transports. -- Added bundled catalog entries for `kimi-code/kimi-k2.7-code`, `minimax-code/minimax-v3`, and `xai/grok-composer-2.5-fast`. -- Added composer-harness anchor/edit discipline injection for Cursor Composer and Grok Composer models so provider-specific coding harness priors do not override GJC hashline/edit contracts. - -### Removed - -- Removed the retired `anthropic/claude-fable-5` bundled catalog entry. - -### Changed - -- Moved the Claude Mythos forced-tool-use incapability knowledge out of Anthropic request code into catalog compat defaults (`toolChoiceSupport: "auto"`), applied during catalog generation, dynamic discovery, and bundled-model loading via a shared predicate. -- Google `toolConfig` mapping now sends `FunctionCallingConfig` mode `ANY` for both `required` and `any` requests instead of silently relaxing `required` to `AUTO`. -- Optimized `EventStream` queue draining with a head-indexed queue to avoid repeated array shifts in hot streaming paths. -- Clarified lazy builtin provider registration as the main provider loading path. - -### Fixed - -- Stripped `OpenAI-Beta` in the `openai-proxy` request transform profile so OpenAI-compatible proxies do not receive SDK beta headers. - -## [0.4.5] - 2026-06-12 - -### Changed - -- Bumped the spoofed Gemini CLI User-Agent version to 0.46.0 to track the upstream release. - -### Fixed - -- Fixed direct Anthropic requests for Claude Mythos-style models that support tools but reject forced tool use by omitting forced `tool_choice` while preserving `auto`/`none` choices. -- Preserved catalog transport metadata for opencode-go `qwen3.7-max` model resolution. -- Set SQLite auth-store `busy_timeout` before enabling WAL so initialization is reliable under contention. -- Resolved provider credentials from inherited or GJC-owned environment sources instead of trusting the caller project's `.env` overlays. -- Rendered and executed Cursor-native tool calls without dropping provider-specific call details. - -## [0.4.4] - 2026-06-10 - -- Version aligned with the 0.4.4 monorepo release; no functional changes in this package. - -## [0.4.2] - 2026-06-09 - -### Fixed - -- Treated `gpt-5.5` as a 400K-context model wherever context caps / auto-promote thresholds are resolved, so a ~272K session is no longer considered over-cap and no longer demotes to `gpt-5.4`. Pinned the OpenAI Codex `gpt-5.5` context window to 400K and removed its `gpt-5.4` promotion target (the smaller window made it a demotion) ([#428](https://github.com/Yeachan-Heo/gajae-code/issues/428)). - -## [0.4.0] - 2026-06-06 - -### Added - -- Added minimax-m3 model support across MiniMax providers. -- Honored the `GJC_CACHE_RETENTION` environment variable and `cacheRetention` model config so hosts can control provider prompt-cache retention (#379/#381). -- Added an Opus max reasoning preset to the model thinking presets (#372). -- Refreshed the generated models schema for the new model/config surface (#382). - -### Changed - -- Pinned the OpenAI Codex provider default to GPT-5.5 at `xhigh` reasoning effort (#352). This changes the default model and effort for Codex users (latency/cost/quality impact) and is a behavior change, not an API break; pass an explicit model/effort to override. -- Bumped the spoofed Gemini CLI user-agent version to 0.45.2 to track the upstream release. - -## [0.3.0] - 2026-06-03 - -### Added - -- Added xAI to the `/login` provider catalog as a Grok OAuth login with PKCE, refresh-token storage, and mocked login/refresh coverage. - -## [0.2.4] - 2026-06-02 - -### Added - -- Added configurable provider request and stream retry budgets so hosts can bound transient upstream/server retry behavior separately from session-level retries. - -## [0.2.2] - 2026-05-31 - -### Fixed - -- Fixed Anthropic extended-thinking replay after aborted turns by dropping partial `thinking`/`redacted_thinking` blocks before the next request, preserving/synthesizing matching tool results, and retrying once with repaired latest-assistant thinking when Anthropic rejects a replay with the immutable-thinking HTTP 400 ([#107](https://github.com/Yeachan-Heo/gajae-code/issues/107)). -- Fixed first-class `azure-openai` catalog models so normal provider auth resolution reads `AZURE_OPENAI_API_KEY` when streaming `azure-openai/gpt-*` models. - -## [0.2.1] - 2026-05-30 - -### Changed - -- Refreshed AI package metadata for the GJC 0.2.1 release. - -## [0.2.0] - 2026-05-28 - -### Fixed - -- Fixed OpenAI-compatible base URL handling so configured proxy URLs and inherited environment overrides are respected at model discovery, completions, responses, and streaming call sites. -- Fixed OpenAI direct-provider feature gates so prompt-cache/session behavior uses the resolved Responses base URL and only treats exact default `api.openai.com` hosts/paths as direct OpenAI. - -## [0.1.3] - 2026-05-28 - -### Changed - -- Released the current dev branch fixes with refreshed 0.1.3 package metadata. - -## [0.1.2] - 2026-05-28 - -### Changed - -- Updated package metadata for the Gajae Code npm publication. - -## [0.1.1] - 2026-05-28 -### Breaking Changes - -- Removed `findAnthropicAuth` from `anthropic-auth` and replaced store-driven auth discovery with `buildAnthropicAuthConfig`, requiring callers to provide an already-resolved API key before building Anthropic auth config - -### Added - -- Added `AuthStorage.getOAuthAccess` to return a refreshed OAuth access token with identity metadata (`accountId`, `email`, `projectId`, `enterpriseUrl`) for callers that need bearer-token headers together - -### Changed - -- Changed OAuth selection in `AuthStorage` to treat credentials as stale when they are within 60 seconds of expiry and rotate them preemptively -- Changed Google Gemini CLI, Google Gemini usage, Antigravity usage, and Kimi usage flows to stop refreshing OAuth tokens directly and rely on `AuthStorage` for token rotation - -### Removed - -- Removed provider-local OAuth refresh helpers from Google Gemini CLI and Google/Kimi/Antigravity usage probes, preventing direct refresh calls from those usage paths - -### Fixed - -- Fixed expired OAuth handling so provider-level paths no longer attempt direct token refresh calls for expired credentials and instead rely on `AuthStorage` for rotation -- Fixed `google-gemini-cli` / `google-antigravity` aborting heavy reasoning runs with "Provider stream timed out while waiting for the first event" before the upstream had a chance to emit its first SSE frame. Cloud Code Assist routinely takes >100s on Gemini 3.x Pro at high thinking levels; the lazy-stream wrapper now floors the first-event watchdog at 5 minutes for these two providers when neither `StreamOptions.streamFirstEventTimeoutMs` nor `PI_STREAM_FIRST_EVENT_TIMEOUT_MS` pins a value. Other providers keep the 100s default. Internally, `getStreamIdleTimeoutMs` and `getStreamFirstEventTimeoutMs` now accept an optional per-provider `fallbackMs` so other slow-first-token providers can opt into the same widening without leaking through to the global default. -- Fixed Anthropic model Opus 4.7 on Amazon Bedrock streaming no reasoning output (and appearing to hang on long reasoning runs) because Anthropic silently switched the adaptive-thinking display default to `"omitted"`. The Bedrock provider now sends `thinking.display = "summarized"` by default on Opus 4.7+ adaptive models and on budget-based Anthropic model models, mirroring the existing direct-Anthropic behavior. `BedrockOptions.thinkingDisplay` (`"summarized" | "omitted"`) is exposed for callers that want to opt out, and `hideThinkingSummary` now wires through to the Bedrock case ([#1373](https://github.com/can1357/gajae-code/issues/1373)). -- Fixed Cursor Composer resume/tool-continuation turns failing with `Cannot send empty user message to Cursor API`. Empty current user turns now use Cursor's `resumeAction` instead of constructing an invalid `userMessageAction` ([#1376](https://github.com/can1357/gajae-code/issues/1376)). - -## [15.3.2] - 2026-05-25 -### Added - -- Added `GET /v1/snapshot/stream` for live auth-broker snapshot updates via SSE with `snapshot`, `entry`, and `removed` event frames -- Added `AuthBrokerClient.openSnapshotStream()` for consuming SSE snapshot streams from `/v1/snapshot/stream` -- Added `streamSnapshots` option to `RemoteAuthCredentialStore` (default `true`) to enable or disable SSE-based snapshot synchronization -- Added `streamKeepaliveMs` to `startAuthBroker()` to tune heartbeat frequency for the SSE stream -- Added `AuthStorage.checkCredentials({ signal?, timeoutMs?, baseUrlResolver? })` that returns a per-credential `CredentialHealthResult` with tri-state `ok` (`true` / `false` / `null`-unverifiable), the credential's identity (provider, type, email/accountId, broker-refresh flag), and the upstream error string when the probe fails. Iterates sequentially over `listAuthCredentials()`, exercises OAuth refresh on expiry, then calls the per-provider `UsageProvider.fetchUsage` without swallowing errors — so callers can identify which row in a multi-account broker is producing 401s instead of getting a silently-deduplicated `fetchUsageReports` list. -- Added `GET /v1/credentials/check` to `startAuthGateway()` that forwards to `AuthStorage.checkCredentials` and returns `{ generatedAt, credentials }`. Gated by the same bearer as the rest of the gateway. - -### Changed - -- Changed `RemoteAuthCredentialStore` to prefer SSE snapshot streaming and automatically fall back to long-polling when a broker returns 404 for `/v1/snapshot/stream` -- Changed snapshot write-refresh flow so `RemoteAuthCredentialStore` skips immediate `/v1/snapshot` refreshes when SSE streaming is active -- Changed broker SSE stream behavior to keep connections open with periodic keepalives and an increased server idle timeout - -## [15.3.0] - 2026-05-25 - -### Added - -- Added DeepSeek to the built-in API-key login provider catalog so `gjc login deepseek` stores a reusable `DEEPSEEK_API_KEY` credential for the bundled DeepSeek models. - -### Fixed - -- Fixed `openai-responses` requests intermittently 400ing with `No tool call found for function call output with call_id …` after an aborted turn or a locally-rejected tool call (e.g. argument-validation failure). `convertConversationMessages` now folds orphan `function_call_output` / `custom_tool_call_output` items — those whose matching `function_call` was wiped by an earlier `dt: false` snapshot splice or never landed in any persisted provider payload — into assistant text notes, preserving the payload while keeping the request grammatically valid ([#1351](https://github.com/can1357/gajae-code/issues/1351)). - -## [15.2.4] - 2026-05-22 - -### Fixed - -- Fixed ChatGPT Plus/Pro (OpenAI code) OAuth login returning `Token exchange failed: 403` on Windows. When port 1455 was in use, the callback server silently fell back to a random port; OpenAI's authorization endpoint accepts any localhost redirect URI (loose validation), so the browser callback succeeds and shows "Authentication Successful", but the token endpoint rejects the non-registered port with 403. The `OpenAIOpenAI codeOAuthFlow` now enforces a fixed `redirectUri` option so a busy port immediately surfaces as "port unavailable" instead of producing a confusing 403 ([#1277](https://github.com/can1357/gajae-code/issues/1277)). -- Improved `exchangeCodeForToken` error diagnostics: the 403 response body (`error` / `error_description` fields) is now included in the thrown message, matching the existing `refreshOpenAIOpenAI codeToken` behaviour. - -### Added - -- Added `ChatGPT Plus/Pro (OpenAI code, headless/device)` (`openai-code-device`) as an alternative login method for the OpenAI code provider. Uses OpenAI's device-code flow (`/api/accounts/deviceauth/usercode` → poll `/api/accounts/deviceauth/token`), which avoids a local callback server and port 1455 entirely. Credentials are stored under the existing `openai-code` provider key so all models and tooling continue to work without reconfiguration ([#1277](https://github.com/can1357/gajae-code/issues/1277)). - -## [15.2.2] - 2026-05-22 - -### Fixed - -- Fixed `gemini-3.1-pro-high` and `gemini-3.1-pro-low` on the `google-antigravity` provider always returning HTTP 400 from Cloud Code Assist. The `ANTIGRAVITY_SYSTEM_INSTRUCTION` identity header was not injected for these models because the internal check matched the string `"gemini-3-pro-high"` (hyphen) instead of the versioned `"gemini-3.1-pro-..."` form. The guard now matches all `gemini-3` model variants ([#1274](https://github.com/can1357/gajae-code/issues/1274)). - -## [15.2.0] - 2026-05-21 - -### Fixed - -- Fixed `/login` (and `/logout`, plus any `AuthStorage.set` / `remove` call) against a remote auth-broker throwing `RemoteAuthCredentialStore is read-only on the client. Use 'gjc auth-broker login ' to mutate credentials.` Added three optional async write hooks to `AuthCredentialStore` (`upsertAuthCredentialRemote`, `replaceAuthCredentialsRemote`, `deleteAuthCredentialsRemote`); `RemoteAuthCredentialStore` implements them via the broker's `POST /v1/credential` and `POST /v1/credential/:id/disable` endpoints and applies the broker's authoritative post-write entries to the local snapshot. `AuthStorage` routes through the hooks when present, so OAuth and API-key logins (and logouts) initiated from a broker-backed client now persist server-side and surface immediately without waiting for the long-poll snapshot tick. - -## [15.1.9] - 2026-05-21 - -### Fixed - -- Fixed Ollama named tool forcing to send only the requested tool when the caller passes a named `toolChoice`, preserving `tool_choice: "required"` while preventing local models from selecting a different tool. ([#1236](https://github.com/can1357/gajae-code/issues/1236)) -- Fixed `/btw` (and IRC background replies) returning a `BedrockException` 400 (`The toolConfig field must be defined when using toolUse and toolResult content blocks.`) on LiteLLM → Bedrock once the session has tool-call history. Two source fixes in `buildParams`: (1) `if (context.tools)` → `if (context.tools?.length)` so an explicit `context.tools = []` (the /btw opt-out) never routes through `convertTools` and never emits an empty `"tools"` array; (2) `else if (hasToolHistory(...))` → `else if (context.tools === undefined && hasToolHistory(...))` so the Anthropic-proxy sentinel that injects `tools: []` for tool-history turns is suppressed when the caller explicitly opted out, preventing it from re-introducing the empty array. As defence-in-depth, `tool_choice: "none"` is also dropped when the resolved tools list is missing or empty. ([#1227](https://github.com/can1357/gajae-code/issues/1227)) - -## [15.1.8] - 2026-05-20 -### Added - -- Added Fireworks Fire Pass as a separate `firepass` provider with API-key login flow, bundled `kimi-k2.6-turbo` model entry (Kimi K2.6 Turbo), and wire-id translation from the friendly catalog id to the `accounts/fireworks/routers/kimi-k2p6-turbo` router endpoint. Fire Pass keys (`fpk_…`) authorize only the dedicated router and reject `/v1/models`, so login validation pings chat completions against the router id directly. Extended the openai-completions Kimi-family safety net so the firepass entry inherits the per-Fireworks-docs "always send `max_tokens`" default ([Kimi K2 guide](https://docs.fireworks.ai/models/kimi-k2)); the router's accepted `reasoning_effort` set includes `xhigh`, so it is forwarded verbatim rather than remapped. See https://docs.fireworks.ai/firepass. - -### Fixed - -- Fixed DeepSeek V4 direct API requests with tools to keep documented thinking mode instead of dropping reasoning: lower GJC efforts now map to DeepSeek's supported `high`, `tool_choice` is omitted, `thinking: { type: "enabled" }` and `max_tokens` are sent, and partial user `reasoningEffortMap` overrides merge with DeepSeek defaults. ([#1207](https://github.com/can1357/gajae-code/issues/1207)) -- Fixed model cache schema v2 databases so offline refreshes preserve cached provider discoveries after upgrading to schema v3 and subsequent online refreshes can overwrite the cache. ([#1219](https://github.com/can1357/gajae-code/issues/1219)) -- Fixed Perplexity OAuth credentials being treated as expired one hour after login. `getJwtExpiry` was fabricating `expires = now + 1h` whenever the JWT had no `exp` claim (the common case — Perplexity sessions are server-side). Once the hour elapsed, `getOAuthApiKey` would mark the cred expired and the search provider's loader would silently skip it, surfacing as "logged out". Logins with no `exp` now persist a far-future sentinel; `getOAuthApiKey` also normalizes any stale `expires` written by older builds. - -## [15.1.7] - 2026-05-19 -### Added - -- Added Anthropic realization of `serviceTier: "priority"`. The anthropic-messages provider now sets `speed: "fast"` on the request and appends the `fast-mode-2026-02-01` beta to `Anthropic-Beta` whenever the caller passes `serviceTier: "priority"`. When the server rejects an unsupported model with `invalid_request_error`, the provider transparently retries the same turn without the fast-mode signal (mirroring the strict-tools fallback pattern), persists the disable via a new `providerSessionState.fastModeDisabled` flag so subsequent requests in the session skip the field, and surfaces the action via the new `AssistantMessage.disabledFeatures` array (id `"priority"`) so callers can sync user-facing toggles. A new `clearAnthropicFastModeFallback(providerSessionState)` helper lets callers re-arm priority after the auto-fallback fired. -- Added scoped `ServiceTier` values: `"openai-only"` (priority on `openai`/`openai-code`, ignored elsewhere) and `"anthropic-model-only"` (priority on direct `anthropic`, ignored on Bedrock/Vertex Anthropic model and elsewhere). A new `resolveServiceTier(serviceTier, provider)` helper computes the effective tier for the provider; existing OpenAI/Anthropic provider code routes through it, so `service_tier` and Anthropic fast-mode emission both respect scope. `getPriorityPremiumRequests` now counts Anthropic+priority as one premium request (previously zero) and continues to ignore providers that drop the field on the wire. - -### Fixed - -- Fixed Anthropic fast mode (`serviceTier: "priority"`) looping on 429 `rate_limit_error: "Extra usage is required for fast mode."` for accounts without the extra-usage entitlement. `isAnthropicFastModeUnsupportedError` now matches the 429 phrasing in addition to the 400 `invalid_request_error` "does not support the `speed` parameter" case, so the provider drops `speed: "fast"` on the in-turn retry, sets `providerSessionState.fastModeDisabled` for the remainder of the session, and surfaces `disabledFeatures: ["priority"]` to the caller instead of retrying with the same payload until `PROVIDER_MAX_RETRIES` is exhausted. -- Fixed MiniMax Coding Plan CN streaming `...` reasoning as visible assistant text. The OpenAI-compatible stream parser now enables the existing MiniMax tag parser for both `minimax-code` and `minimax-code-cn`, so CN responses become structured `thinking` blocks instead of raw text. ([#1203](https://github.com/can1357/gajae-code/issues/1203)) - -## [15.1.6] - 2026-05-19 - -### Fixed - -- Fixed `{}` (empty JSON Schema, the wire representation of `z.unknown()`) being passed verbatim to grammar-constrained samplers (llama.cpp, etc.) in `additionalProperties`, `items`, and other schema-valued positions across **every provider** (OpenAI, Anthropic, Google, Ollama, Bedrock, Cursor). Grammar builders treat `{}` as "generate an empty object" rather than "any JSON value", causing open-typed fields (e.g. `extra.title` from `z.record(z.string(), z.unknown())`) to always emit `{}` instead of the intended string/number/etc. `toolWireSchema` now applies a new `normalizeEmptySchemas` pass (exported) to both the Zod and TypeBox/raw-JSON-Schema branches, converting `{}` → `true` (semantically identical per JSON Schema draft 2020-12 §4.3.1) in all schema-valued positions. Strict-mode opt-out is preserved across all providers: OpenAI's `hasUnrepresentableStrictObjectMap` hits the `=== true` branch instead of the `isJsonObject({})` branch (same result); Anthropic's `normalizeAnthropicStrictSchemaNode` opts out via `additionalProperties !== false` (still true for `true`); Google's `normalizeSchemaForGoogle` strips `additionalProperties` regardless (pre-existing). ([#1179](https://github.com/can1357/gajae-code/issues/1179)) -- Fixed `pi-ai login ` crashing with `Unknown provider` for providers that only the `auth-storage` `login()` switch knew about (perplexity, alibaba-coding-plan, gitlab-duo, huggingface, opencode-zen/go, lm-studio, ollama, cerebras, fireworks, qianfan, synthetic, venice, litellm, moonshot, together, cloudflare/vercel ai gateways, vllm, qwen-portal, nvidia, xiaomi, and any custom OAuth provider). The CLI now delegates to `SqliteAuthCredentialStore.login()` instead of duplicating a smaller switch, so the auth-broker `gjc auth-broker login ` flow works for every registered OAuth provider. - -## [15.1.4] - 2026-05-19 -### Changed - -- Updated auth-gateway format and pi-native request handling to invalidate the failed API key and retry the provider request with a replacement key when authentication fails - -### Fixed - -- Fixed OpenCode-Go and OpenCode-Zen chat-completions replay to omit stored reasoning fields on Kimi assistant tool-call messages, avoiding provider 400s for rejected `messages[].reasoning` payloads. ([#1157](https://github.com/can1357/gajae-code/issues/1157)) -- Fixed OpenAI Responses and OpenAI code tool schema normalization to emit `properties: {}` for no-argument object schemas without rewriting literal payloads. ([#1147](https://github.com/can1357/gajae-code/issues/1147)) -- Fixed Anthropic 400 (`unexpected tool_use_id found in tool_result blocks ... Each tool_result block must have a corresponding tool_use block in the previous message`) when handoff/compaction folds an assistant `tool_use` into the handoff summary string but leaves the matching user-side `tool_result` message in the history. `transformMessages` now indexes every `tool_use` id surviving the first pass and drops orphan `tool_result` messages whose originator was compacted away, preserving the text payload as a user-level `` note so the model still sees what the tool returned. The note is emitted with `role: "user"` rather than `role: "developer"` so providers that elevate developer-role messages (Ollama: `developer` → `system`; OpenAI chat-completions reasoning models: `developer` → `developer`) cannot lift stale tool output to an instruction-priority tier above the surrounding user/developer messages. -- Fixed streaming authentication retry to trigger when a provider emits a 401 `error` event after a `start` event but before any replay-unsafe content is emitted -- Added `credential_process` support to the Bedrock provider's AWS credential resolver so profiles delegating to external brokers (`aws-vault`, `granted`, in-house tools) resolve instead of falling through to `Unable to resolve AWS credentials`. Parses the AWS SDK `Version: 1` JSON envelope, honors `Expiration` in the per-profile cache, propagates `AbortSignal` to the spawned helper, routes Windows `.cmd`/`.bat` helpers through `cmd.exe /c`, and ships a POSIX-shell-style tokenizer that preserves backslashes inside double quotes so Windows paths survive ([#1142](https://github.com/can1357/gajae-code/issues/1142)) - -## [15.1.3] - 2026-05-17 -### Breaking Changes - -- Changed `AuthBrokerClient.fetchSnapshot()` to return status-based results (`200` or `304`) instead of always returning a raw snapshot body, so callers now need to branch on `status` -- Renamed public schema utilities in `@gajae-code/ai/utils/schema` by replacing `sanitizeSchemaForGoogle`, `sanitizeSchemaForCCA`, `prepareSchemaForCCA`, and `sanitizeSchemaForMCP` with `normalizeSchemaForGoogle`, `normalizeSchemaForCCA`, and `normalizeSchemaForMCP` -- Added MCP schema normalization via `normalizeSchemaForMCP` for compatibility checks -- Removed the `StringEnum` helper from `@gajae-code/ai/utils/schema`. Use `z.enum([...])` directly; Zod's emitted JSON Schema is already wire-compatible with Google and other providers. -- Renamed the concrete SQLite credential store class from `AuthCredentialStore` to `SqliteAuthCredentialStore`. `AuthCredentialStore` is now the persistence interface implemented by both the SQLite store and the new `RemoteAuthCredentialStore`. Update `new AuthCredentialStore(db)` / `AuthCredentialStore.open(...)` call-sites to `SqliteAuthCredentialStore`; type-position uses (`store: AuthCredentialStore`) continue to work unchanged. - -### Added - -- Added `onAuthError` to `StreamOptions` and wired `streamSimple()` to retry once with a replacement API key when the first provider response is a 401 before any assistant events are emitted -- Added generation-aware snapshot metadata (`generation`, `serverNowMs`, `refresher`, and `rotatesInMs`) to auth-broker snapshot responses to support client-side credential-rotation planning -- Added `transport: "pi-native"` on `Model` and the matching `streamPiNative` client. When `model.transport === "pi-native"`, `streamSimple` short-circuits the per-provider dispatch and POSTs the canonical `Context` to the auth-gateway's `POST /v1/pi/stream` endpoint. The response is SSE-framed `AssistantMessageEvent`s parsed by `readSseJson` and pushed verbatim into the local `AssistantMessageEventStream` — no wire-format translation, no partial-stripping reconstruction. Used by containerized GJC deployments and swarm extensions to route every LLM call through a credential-holding sidecar; the container never sees the real provider tokens. Server-controlled fields (`apiKey`, `signal`, `fetch`, lifecycle callbacks, the provider-session map) are stripped from the wire body — `apiKey` rides in the `Authorization` header as the gateway bearer. -- Added `POST /v1/pi/stream` to the auth-gateway. Same auth + abort + model-resolution + openai-code-compat + prefix-cache plumbing as the foreign-wire routes; only the wire-format translation is skipped. Request body is `{ modelId, context, options?, stream? }` where `context` is the canonical pi-ai `Context` and `options` is `SimpleStreamOptions` with non-serializable fields stripped. Response is SSE-framed `AssistantMessageEvent` (terminated by `data: [DONE]`) when streaming, or `{ message: AssistantMessage }` JSON when `stream: false`. -- Added Vertex AI authentication via Google Application Default Credentials from `GOOGLE_APPLICATION_CREDENTIALS`, `~/.config/gcloud/application_default_credentials.json`, or metadata server tokens, with token caching and refresh skew control via `GOOGLE_VERTEX_REFRESH_SKEW_MS` -- Added support for Anthropic image message parts with `type: "url"` and `type: "file"` sources -- Added `stopSequences` and `frequencyPenalty` to shared stream options and wired them through to OpenAI request translation -- Added optional request cancellation support to auth-broker interactions by propagating `AbortSignal` into health, snapshot, usage, and refresh calls -- Added `AuthStorage.setConfigApiKey` / `removeConfigApiKey` / `clearConfigApiKeys` for config-sourced per-provider bearers (e.g. `models.yml` `providers..apiKey`). The new tier sits between runtime `--api-key` and stored credentials in `getApiKey`/`peekApiKey` resolution, so a bearer pinned in config now beats the broker's OAuth access token. Also suppresses OAuth `account_uuid` attribution when active, since outbound auth is the explicit config bearer, not OAuth. `describeCredentialSource` reports `"config override (models.yml)"` for visibility. -- Added per-model `additional_rate_limits` parsing to `openaiOpenAI codeUsageProvider`. The OpenAI code `wham/usage` endpoint surfaces a separate `GPT-5.3-OpenAI code-Spark` rate limit (`metered_feature: openai-code_bengalfox`) on Pro accounts; these now emit dedicated `openai-code:spark:{primary,secondary}` `UsageLimit` entries with `scope.tier = "spark"`, mirroring how Anthropic exposes `anthropic:7d:sonnet` separately from the umbrella `anthropic:7d` bucket. The osx-widgets client already keyed spark detection off `limit.id.includes("spark")`; this populates that contract end-to-end. -- Added `GET /v1/usage` to the auth-broker API to expose aggregated usage reports from `AuthStorage.fetchUsageReports` -- Added auth-broker usage polling response handling that returns normalized usage reports plus generation timestamp for clients (5-min per-credential cache via `AuthStorage`) -- Added the auth-broker subsystem (`@gajae-code/ai/auth-broker`) for sharing OAuth credentials across machines without leaking refresh tokens. -- `startAuthBroker(...)` boots a `Bun.serve` HTTP server exposing `GET /v1/healthz`, `GET /v1/snapshot`, `POST /v1/credential` (upsert), `POST /v1/credential/:id/refresh`, and `POST /v1/credential/:id/disable`. -- `AuthBrokerClient` is the matching HTTP client used by remote clients. -- `RemoteAuthCredentialStore` is a client-side `AuthCredentialStore` that mirrors a broker snapshot in memory; mutating methods (`replace*`, `upsert*`, `delete*ForProvider`) throw because writes are server-side only. -- `AuthBrokerRefresher` is the background refresh loop that pre-refreshes credentials within `refreshSkewMs` and disables on definitive failure (`invalid_grant` / non-network 401-403). -- Added `AuthStorage.exportSnapshot()`, `AuthStorage.upsertCredential(provider, credential)`, `AuthStorage.forceRefreshCredentialById(id)`, and `AuthStorage.disableCredentialById(id, cause)` public methods consumed by the auth-broker server. -- Added `AuthStorageOptions.refreshOAuthCredential` override so a remote-store client can route every OAuth refresh through the broker instead of the local OAuth endpoint. -- Added `REMOTE_REFRESH_SENTINEL` (`"__remote__"`) — the wire placeholder substituted for OAuth refresh tokens in broker snapshots; clients never see the real refresh token. -- Exposed the OAuth provider catalog (`getOAuthProviders`, `OAuthProvider`, `OAuthProviderInfo`) and `refreshOAuthToken` through the package barrel so the coding-agent CLI can target them without reaching into `utils/oauth`. -- Added the auth-gateway subsystem (`@gajae-code/ai/auth-gateway`) — a forward-proxy that sits between unauthenticated clients (the macOS usage widget, llm-git, containerized GJC deployments, …) and the broker. Clients send standard provider-format requests; the gateway parses them into gjc's canonical `Context`, dispatches through pi-ai's `streamSimple()`, and translates the canonical event stream back to the matching wire format. `Authorization` is injected server-side so access tokens never leave the gateway host. Wire surface: -- `GET /healthz` — unauth liveness. -- `GET /v1/usage` — aggregated provider usage; 5-min per-credential cache via `AuthStorage.fetchUsageReports`. -- `GET /v1/models` — model catalog (scoped to providers with credentials). -- `POST /v1/chat/completions` — OpenAI chat-completions in/out. -- `POST /v1/messages` — Anthropic messages in/out (text + thinking + tool_use blocks, SSE event taxonomy preserved). -- `POST /v1/responses` — OpenAI Responses in/out (reasoning items + function_call output items, SSE pass-through). -- Added exports from `@gajae-code/ai/auth-gateway`: `startAuthGateway`, `AuthGatewayServerOptions`, `AuthGatewayBootOptions`, `AuthGatewayServerHandle`, `ModelResolver`, `DEFAULT_AUTH_GATEWAY_BIND`. Per-format `parseRequest` / `encodeResponse` / `encodeStream` triples are reachable via the `./providers/*` subpath as `openai-chat-server`, `anthropic-messages-server`, and `openai-responses-server`. -- Added `listProvidersWithEnvKey()` to enumerate every provider with an env-var fallback (used by the new migrate command in coding-agent). - -### Changed - -- Changed `GET /v1/snapshot` to support generation-based polling with `If-None-Match` and `wait` for long-poll updates and to return `304` when no snapshot changes are available -- Changed Bedrock credential resolution for streaming calls to prefer environment keys, AWS profile/SSO credentials, and IMDSv2 fallback when available -- Changed auth-gateway parsing for OpenAI chat-completions and Responses to ignore unsupported SDK-only fields instead of rejecting requests -- Changed auth-gateway protocol handling to include CORS headers on responses and support browser-origin requests -- Changed prompt-cache handling to resolve cache keys from request metadata and headers and preserve them through protocol translation -- Changed Anthropic messages parsing to forward request `metadata` through to downstream execution -- Changed usage report caching to use a 5-minute per-credential TTL with jittered refresh timing to reduce usage endpoint rate-limit collisions -- Changed usage polling failure handling so transient errors continue serving the last known report instead of returning null and dropping the credential from usage aggregates after cache expiry -- Changed `sanitizeSchemaForGoogle` to normalize snake_case schema keys (such as `any_of` and `additional_properties`) to camelCase and auto-generate `propertyOrdering` for multi-property objects -- Changed strict-mode sanitization to resolve `$ref` nodes with sibling keys by inlining and merging referenced local definitions -- Changed strict-mode sanitization to flatten single-entry `allOf` nodes and remove the `allOf` wrapper -- Changed Anthropic tool schema normalization to preserve supported metadata keywords such as `$ref`, `$defs`, `$schema`, `enum`, `const`, `default`, `title`, and `nullable` instead of stripping them -- Changed string schema processing to retain only supported `format` values (`date-time`, `time`, `date`, `duration`, `email`, `hostname`, `uri`, `ipv4`, `ipv6`, `uuid`) and demote unsupported `format` values to `description` hints - -### Fixed - -- Fixed OAuth credential refresh flow so concurrent manual and background refreshes now share one in-flight attempt per credential, and `RemoteAuthCredentialStore` now re-synchronizes before using near-expiring OAuth credentials -- Fixed stale-credential handling after auth failures by waiting for updated broker snapshots and refreshing suspect credentials through broker endpoints before continuing -- Fixed Google Generative AI startup behavior to throw a clear API-key-required error when no key is configured -- Fixed AWS Bedrock image message serialization to preserve base64 `source.bytes` payloads instead of decoding and rebuilding them -- Fixed Google provider error handling to extract the API-reported `error.message` from JSON response bodies when available -- Fixed `RemoteAuthCredentialStore.getUsageReport` to return the matching credential-specific usage report and coalesce parallel callers into one broker `/v1/usage` fetch -- Fixed auth-broker credential upload validation to reject the remote refresh-token sentinel and prevent storing a non-refresh value -- Fixed OpenAI Responses streaming output to emit `reasoning_summary_text` events and parse/send `summary_text` reasoning payloads -- Fixed Anthropic stop-sequence handling by trimming requests to the API limit of four entries before forwarding -- Fixed prompt caching behavior across protocol translations so cached-token usage is preserved when Anthropic and OpenAI requests are routed through each other -- Fixed Anthropic model usage fetching to retry transient `429` and `5xx` responses with exponential backoff, respecting `Retry-After` before returning failure -- Fixed auth-gateway request translation to preserve OpenAI Responses string/system message content, reasoning replay payloads, completed item text in stream item-done events, Anthropic tool-result ordering, and OpenAI Chat/Responses cached-token usage totals -- Fixed auth-gateway failure handling so unsupported request controls, upstream terminal errors, non-streaming aborts, and already-aborted client requests fail explicitly instead of being accepted, ignored, or encoded as successful HTTP 200 responses -- Fixed Gemini CLI / Antigravity tool schema normalization to run the full Cloud Code Assist pipeline, matching shared Google schema handling for union/object merging and nullable extraction -- Fixed stripped validation hints to be preserved as description spill text (`{key: value}` blocks) when `normalizeSchemaForGoogle` and `normalizeSchemaForCCA` drop unsupported schema keywords -- Fixed `sanitizeSchemaForGoogle` to collapse nullability forms (`type:'null'` and null-bearing `anyOf` variants) into `nullable` while preserving remaining variants -- Fixed `sanitizeSchemaForGoogle` to inline local `$defs` references instead of dropping `$ref`/`$defs` structure during Google schema sanitization -- Fixed `normalizeAnthropicToolSchema` to handle self-referential schemas without infinite recursion -- Fixed object schema normalization so explicit open-map declarations (`additionalProperties: true` and schema-valued `additionalProperties`) are preserved instead of being converted to closed objects -- Fixed unsupported schema constraints on arrays and strings (`maxItems`, `uniqueItems`, `pattern`, `minLength`, `maxLength`, and `minItems` when greater than 1) by demoting them into `description` rather than dropping them - -### Security - -- Hardened auth-gateway bearer-token checks with constant-time comparison to avoid timing-side-channel leaks - -## [15.1.2] - 2026-05-15 -### Breaking Changes - -- Rejected draft-07 tuple and dependency keywords (`items` arrays, `dependencies`, `additionalItems`) in JSON Schema validation - -### Added - -- Added `responseHeaders`, `responseStatus`, and `responseRequestId` fields to `MockResponse` so mock providers can provide synthetic `ProviderResponseMetadata` -- Added `onResponse` metadata emission for mocks that sends lowercased headers and a default status of 200 before streaming when response headers are configured -- Added recursive strict-mode sanitization for array `prefixItems` entries so tuple schemas now enforce object constraints per item - -### Changed - -- Normalized legacy draft-07 JSON Schema constructs used in tool parameters (`items` arrays, `additionalItems`, `definitions`, `dependencies`) to draft 2020-12 before OpenAI/Google/CCA sanitization, wire conversion, and argument validation -- Reworked OpenAI response schema adaptation to rewrite `oneOf` into `anyOf` while preserving existing `anyOf` branches -- Changed tuple array validation to validate per-index schemas from `prefixItems` and apply `items` only to remaining elements - -### Fixed - -- Fixed validation of plain JSON Schema tool arguments that omitted a `$schema` URI so draft-07-shaped schemas now pass validation instead of being rejected -- Fixed tuple-array validation for legacy JSON Schema tool schemas to enforce `additionalItems: false` and per-position constraints after automatic draft upgrade -- Fixed Anthropic tool schema normalization to recurse into `prefixItems` so unsupported constraints inside tuple items are stripped in the generated input schema -- Fixed Anthropic tool-schema normalization stripping the body of explicit open `additionalProperties` (e.g. Zod's `z.record(z.string(), z.unknown())` compiling to `additionalProperties: {}`) by unconditionally overwriting it with `false`, which closed record-style fields and prevented models from supplying any key. The coding-agent's `resolve` tool exposes plan-approval titles via such a field, so Kimi K2 (and any other Anthropic-shaped provider) could not pass `extra: { title }`, blocking plan mode entirely ([#1104](https://github.com/can1357/gajae-code/issues/1104)) -- Fixed Anthropic strict tool planning to leave tools with open `additionalProperties` maps non-strict instead of sending schemas Anthropic rejects. - -## [15.1.0] - 2026-05-15 - -### Breaking Changes - -- Removed TypeBox root exports (`Type`, `Static`, and `TSchema`) from the package entrypoint, so callers importing those symbols from `@gajae-code/ai` must migrate to `zod` or `@gajae-code/ai/types` - -### Added - -- Added support for defining tool schemas with Zod (`z.object`, `z.string`, etc.) by allowing `Tool.parameters` to be either Zod schemas or legacy JSON Schema objects and converting them to provider wire format automatically -- Added package-level schema helpers in the `zod/v4` style by exporting `z` and `ZodType` from the root entrypoint -- Added a `mock` API provider via `createMockModel` to build `Model<"mock">` instances for fully in-memory, deterministic assistant streams in tests -- Added `streamMock` and `registerMockApi` so mock responses can be consumed through `stream()` and the global custom API registry without an external model backend -- Added async/sync response scripting with optional context-based handlers, and new `push()`/`reset()` controls to drive multi-turn mock interactions and inspect per-call invocation state -- Added support in mock responses for simulating tool calls, usage metadata, custom stop reasons, delayed emissions, and terminal error/aborted outcomes - -### Changed - -- Changed Azure OpenAI Responses tool schema conversion to sanitize tool parameter schemas and rewrite `oneOf` branches as `anyOf` so tool calls remain compatible with Azure's schema expectations -- Changed `Static` to extract a schema object’s `static` type when present, improving inferred tool argument types for non-Zod parameter definitions -- Changed `Static` typing behavior so it now infers argument types from Zod schemas and defaults to `unknown` for non-Zod JSON Schema parameter definitions -- Restored the default steady-state stream idle timeout to 120s (regressed in 15.0.0). 30s was too aggressive for reasoning models, slow proxies, and tool-call planning gaps, surfacing as repeated `Provider stream stalled while waiting for the next event` errors. Existing `PI_STREAM_IDLE_TIMEOUT_MS` / `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` overrides are unchanged. - -### Fixed - -- Preserved top-level unknown fields in validated tool-call arguments so extra root properties are retained after schema coercion -- Fixed coercion for Zod `record` fields by parsing JSON-stringified record arguments into objects -- Validated legacy draft-07 JSON Schema tool parameters directly instead of converting through Zod, improving support for features like `$ref`, `definitions`, `nullable`, and `uniqueItems` -- Fixed Cloud Code Assist schema preparation to strip unsupported `propertyNames` and fall back to a minimal tool schema when schema meta-validation detects malformed keywords -- Fixed OpenAI Completions streaming to avoid treating non-output chunks (including role-only preambles) as progress events so idle-timeout watchdog behavior no longer hangs on no-op streamed chunks -- Fixed Cloud Code Assist schema compatibility checks by replacing strict AJV meta-schema validation with structural JSON Schema validation to avoid rejecting structurally valid tool schemas -- Fixed lazy built-in provider streams (`anthropic-messages`, `bedrock-converse-stream`, `cursor-agent`, `google-*`, `ollama-chat`, `openai-*`) prematurely aborting slow first-token responses with `Provider stream stalled while waiting for the next event`. The lazy-stream watchdog wrapper was treating the synthetic `start` event (yielded immediately by every provider before the model emits any tokens) as the first real item, which caused the watchdog to drop from `firstItemTimeoutMs` (100s) to `idleTimeoutMs` (30s) before the upstream model had produced anything. The shared `iterateWithIdleTimeout` now keeps `awaitingFirstItem` true until a real progress item arrives, and the lazy-stream wrapper marks `start` as a non-progress keepalive ([#1073](https://github.com/can1357/gajae-code/pull/1073) regression). -- Heal leaked Kimi K2 chat-template tool-call tokens (`<|tool_calls_section_begin|>` … `<|tool_call_argument_begin|>` … `<|tool_calls_section_end|>`) that some hosts (native `kimi-code` API, OpenRouter, Fireworks, etc.) emit into `delta.content` instead of structured `tool_calls`. The OpenAI-completions stream consumer now strips the markers from visible text, reconstructs the embedded calls as proper `toolCall` content blocks (stream-aware, token-boundary-safe), and promotes `finish_reason: stop` to `toolUse` when calls were healed. -- Fixed OpenAI-completions Kimi K2 healed-call promotion clobbering non-stop terminal finish reasons (`error`, `length`, `aborted`); promotion now only fires when the prior stop reason is the natural-completion `stop` -- Fixed OpenAI-completions duplicate Kimi tool calls when a single chunk delivers both leaked markers and a structured `delta.tool_calls`; the healer now strips visible markers but discards its synthesized calls so structured payloads remain the single source of truth -- Fixed Kimi tool-call healer synthesizing a bogus empty call when assistant text mentions a literal `<|tool_call_end|>` (or `<|tool_call_begin|>` / `<|tool_call_argument_begin|>`) outside an active `<|tool_calls_section_begin|>…<|tool_calls_section_end|>` section; the tokens now survive as text -- Fixed OpenAI-completions ignoring per-request `StreamOptions.streamFirstEventTimeoutMs` when configuring the underlying OpenAI SDK HTTP timeout, causing slow-before-headers providers to be aborted at the env default before the wrapping watchdog armed -- Fixed JSON Schema validator silently accepting values that violate `propertyNames`, `patternProperties`, `dependentRequired`, `dependencies`, `if`/`then`/`else`, `contains`, and `prefixItems`; the in-tree validator now enforces these keywords instead of falling through. `unevaluatedProperties`/`unevaluatedItems` remain permissive but log a one-time warning so tool authors are not surprised. -- Fixed recursive `$ref` schemas being treated as universally valid: the validator previously short-circuited on the second occurrence of any ref it had already seen, so nested values violating the referenced sub-schema passed. Cycle detection now keys on (ref, value-identity) pairs with a depth cap for primitive values, so genuine sub-tree violations are still caught. -- Fixed JSON Schema meta-validator accepting malformed `if`/`then`/`else` and `dependencies` keywords; each conditional sub-schema is now structurally validated and draft-07 `dependencies` accepts either a schema or a string array of dependent keys. -- Fixed Zod-emitted wire schemas dropping null-valued unknown root fields before `preserveUnknownRootFields` could snapshot them, so callers like `task.simple` no longer lose a `schema: null` argument and downstream rejection paths fire as intended. -- Fixed mock provider partial `Usage` to recompute `totalTokens` (and `cost.total` when cost components are supplied) when omitted, instead of reporting 0 -- Fixed mock provider auto-generated tool-call IDs to use a per-instance counter (now reset by `reset()`), so test order no longer affects IDs across `createMockModel()` instances - -## [15.0.2] - 2026-05-15 -### Fixed - -- Fixed `StreamOptions.fetch` typing to accept fetch-compatible override functions that do not expose `preconnect`, allowing custom fetch implementations to be used without type errors across runtimes -- Fixed Moonshot Kimi K2.6 forced tool calls to send `thinking: { type: "disabled" }`, avoiding `tool_choice 'specified' is incompatible with thinking enabled` 400s while preserving the requested named tool ([#1077](https://github.com/can1357/gajae-code/issues/1077)). - -## [15.0.1] - 2026-05-14 -### Breaking Changes - -- Increased the minimum Bun runtime version to `>=1.3.14` for the `@aws-?` package - -### Added - -- Added `installH2Fetch` to patch `globalThis.fetch` so HTTPS requests attempt HTTP/2 over ALPN with automatic HTTP/1.1 fallback when HTTP/2 is unsupported -- Added priority service-tier traffic to the `premiumRequests` accounting on OpenAI and OpenAI code provider providers. Sending `serviceTier: "priority"` now increments `usage.premiumRequests` by 1 per request, matching the existing GitHub Copilot premium-request budget semantics so downstream consumers (e.g. the `gjc stats` "Premium Reqs" card and `/usage`) reflect priority traffic alongside Copilot premium calls. - -## [15.0.0] - 2026-05-13 - -### Added - -- Added `AuthStorage.onCredentialDisabled(listener)` — a multi-subscriber `on/off` API for `credential_disabled` events. Returns an unsubscribe function; calling it more than once is a no-op. Multiple subscribers all receive every disable event, with synchronous and async exceptions isolated per-listener so a misbehaving subscriber cannot starve the rest of the chain. Buffer-and-replay semantics are preserved: events emitted while no listener is subscribed are buffered (FIFO, capped at 32) and replayed once to the listener that triggers the empty→non-empty transition. After every subscriber unsubscribes, subsequent disable events buffer again until the next subscribe. - -### Fixed - -- Fixed OAuth credentials being silently disabled when two gjc processes (or any two `AuthStorage` instances sharing a `agent.db`) race on token refresh. Anthropic rotates refresh tokens on every use, so the loser's `invalid_grant` response previously soft-deleted the row that the winner just rotated, forcing the user to `/login` again. `#tryOAuthCredential` now re-reads the row from disk before declaring a definitive failure: if the persisted `refresh` differs from the snapshot it tried, the peer-rotated credential is reloaded and the request retries against the fresh token instead of disabling the live row. -- Closed a remaining race window in OAuth refresh-failure handling: between re-reading the credential row to check for peer rotation and the subsequent soft-delete, another process could still complete a refresh and rotate the row, leaving us to disable the freshly-rotated credential by `id`. The disable now runs as a single CAS update conditioned on the row's `data` still matching the snapshot we tried to refresh, and on `disabled_cause IS NULL`. If the CAS reports 0 rows changed (peer rotation, or row already disabled by a concurrent failure on the same snapshot), we reload from disk and retry instead of mutating the wrong row or emitting a spurious `credential_disabled` event. -### Changed -- Lowered the default steady-state stream idle timeout from 120s to 30s while preserving the existing environment overrides. - -### Fixed -- Lazy built-in provider streams now enforce the shared idle watchdog and abort stalled provider requests, so session auto-retry can continue after transient network drops instead of remaining stuck. Caller aborts still terminate as aborted. - -## [14.9.3] - 2026-05-10 - -### Fixed -- Anthropic provider now retries generic transient connect failures (`unable to connect`, `fetch failed`, `connection error`, etc.) by falling back to the shared `isRetryableError` allowlist after the provider-specific patterns. Previously these errors bypassed the hand-curated regex in `isProviderRetryableError` and aborted the stream on the first attempt, while the OpenAI SDK and OpenAI code `fetchWithRetry` paths already handled them. - -## [14.9.0] - 2026-05-10 - -### Added - -### Fixed -- Fixed silent forwarding of image content (for example Python plot output rendered in the terminal) to models without vision support, which produced opaque 404 errors from upstream. Image blocks are now stripped and replaced with a `[image omitted: model does not support vision]` placeholder for non-vision models, including tool-result payloads ([#967](https://github.com/can1357/gajae-code/issues/967), [#968](https://github.com/can1357/gajae-code/issues/968)). - -- Added `AuthStorage` `onCredentialDisabled` callback (sync or async) so embedders can react when a credential is automatically disabled (e.g. OAuth refresh fails with `invalid_grant`) — useful for surfacing a banner or auto-launching a re-login flow instead of letting the credential silently disappear. Sync throws and async rejections are both caught and logged so a misbehaving subscriber cannot break the disable path. -- Added Anthropic OAuth `account.uuid` and `account.email_address` extraction from the `/v1/oauth/token` exchange and refresh responses; both `AnthropicOAuthFlow.exchangeToken()` and `refreshAnthropicToken()` now populate `OAuthCredentials.{accountId, email}` so downstream consumers can attribute requests to the authenticated account without a separate `/api/oauth/profile` round-trip. -- Added `onSseEvent` stream diagnostics so HTTP SSE providers can expose raw SSE frames without changing parsed model output. -- Added `streamIdleTimeoutMs` option (and `PI_STREAM_IDLE_TIMEOUT_MS` env override; `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` remains a backward-compatible alias) for a steady-state inter-event watchdog. Set to `0` to disable. -- Added a semantic-progress predicate to OpenAI Responses and OpenAI code SSE/WebSocket transports so `response.in_progress`-style keepalives no longer reset the idle deadline on stalled tool calls. - -### Changed - -- Anthropic streams now enforce a steady-state idle timeout (defaults to 120s, same control as `PI_STREAM_IDLE_TIMEOUT_MS`) in addition to the first-event watchdog. Long-running responses that go fully silent between events will now surface as `Anthropic stream stalled while waiting for the next event` instead of hanging. -- Fixed `resolveAnthropicMetadataUserId()` to accept JSON-format `user_id` values that match real Anthropic Code's payload shape (`{ device_id, account_uuid, session_id, ... }` from `services/api/anthropic-model.ts:getAPIMetadata`). Previously only the synthetic `user__account__session_` cloaking format was accepted on OAuth, which caused stable session-keyed metadata supplied by callers to be discarded and replaced with fresh random entropy on every request — defeating session-count attribution on the Anthropic model OAuth path. - -## [14.8.0] - 2026-05-09 - -### Fixed -- Fixed Gemini 3 Pro thinking metadata so `medium` effort is rejected with the expected error instead of being silently accepted: `ThinkingConfig` now carries an optional explicit `levels` list that survives `expandEffortRange`, letting non-contiguous supported sets (e.g. `[low, high]`) round-trip through enrichment. -- Fixed Kimi Code OAuth expiry handling to refresh access tokens 5 minutes before server expiry, avoiding daily 401s from using tokens right up to the cutoff. -- Fixed OpenAI Responses custom tool replay to preserve custom tool call item IDs with the `ctc_` prefix instead of rewriting them as `fc_` function-call IDs ([#977](https://github.com/can1357/gajae-code/issues/977)). - -## [14.7.6] - 2026-05-07 - -### Added - -- Added `hideThinkingSummary` option to `SimpleStreamOptions`. When true, `streamSimple` requests that the underlying provider omit reasoning/thinking summaries: Anthropic receives `thinking.display = "omitted"` (where supported), and OpenAI Responses / Azure / OpenAI code providers leave `reasoning.summary` unset so the server skips emitting the human-readable summary stream entirely. - -### Changed - -- Changed OpenAI Responses, Azure OpenAI Responses, and OpenAI code provider providers to omit `reasoning.summary` from requests when `reasoningSummary` is explicitly `null` (previously fell back to `"auto"`). -## [14.7.5] - 2026-05-07 - -### Added - -- Added `OpenAICompat.supportsMultipleSystemMessages` so chat-completions hosts can opt out of separate leading system blocks. Auto-detected as `true` for OpenAI, Azure, OpenRouter, Cerebras, Together, Fireworks, Groq, DeepSeek, Mistral, xAI, Z.ai, GitHub Copilot, and Zenmux; `false` for MiniMax, Alibaba Dashscope, and Qwen Portal whose chat templates reject follow-up system messages. Unknown OpenAI-compatible hosts (custom vLLM/local) default to `false`; users can opt back in via `compat.supportsMultipleSystemMessages: true`. - -### Fixed - -- Fixed strict-template OpenAI-compatible hosts (e.g. Qwen 3.5+ via vLLM, MiniMax) rejecting follow-up `system`/`developer` messages by coalescing ordered system prompts into a single block joined by `\n\n` when `compat.supportsMultipleSystemMessages` is false. Canonical hosts continue to receive separate blocks so KV-cache reuse stays effective when only the trailing prompt changes ([#958](https://github.com/can1357/gajae-code/issues/958)). - -## [14.7.2] - 2026-05-06 - -### Fixed - -- Fixed VLLM model discovery to use `max_model_len` as the context window when the endpoint reports it. -- Fixed custom Ollama Cloud/local-proxy model aliases (for example `deepseek-v4-pro:cloud`) to inherit bundled cache-pricing metadata when the upstream model is known ([#937](https://github.com/can1357/gajae-code/issues/937)). -- Fixed local Ollama model discovery to apply `/api/show` thinking and vision capabilities in addition to native context windows ([#928](https://github.com/can1357/gajae-code/issues/928)). - -## [14.7.0] - 2026-05-04 -### Breaking Changes - -- Changed `Context.systemPrompt` from a string to `string[]`, so callers must now pass an array of prompts instead of a single string -- Changed behavior will throw at runtime for non-array system prompts because request builders now normalize system prompts as an array - -### Added - -- Added support for multiple system prompts by changing `Context.systemPrompt` to an ordered string array and preserving provider-appropriate instruction precedence - -### Changed - -- Changed request builders for Anthropic, OpenAI, Bedrock, Azure, Cursor, Google, and Ollama to propagate every non-empty system prompt entry without demoting durable instructions into ordinary conversation turns - -### Fixed - -- Filtered out empty normalized system prompts so blank entries are no longer sent to providers -- Removed blank system prompt strings from provider payloads to avoid unnecessary empty instruction messages - -## [14.6.6] - 2026-05-04 - -### Added - -- Added always-on OpenRouter response caching (1h TTL) by sending `X-OpenRouter-Cache: true` and `X-OpenRouter-Cache-TTL: 3600` on every OpenRouter request — identical requests replay from OpenRouter's edge cache for free. https://openrouter.ai/docs/features/response-caching - -## [14.6.4] - 2026-05-03 - -### Fixed - -- Fixed OpenAI code provider websocket continuations to retry with full context when `previous_response_id` expires server-side instead of surfacing `previous_response_not_found`. - -## [14.6.2] - 2026-05-03 -### Added - -- Added `EventStream.fail(err)` method to terminate the async iterator with an error, enabling consumers to catch stream-level failures via `for await` without hanging - -### Fixed - -- Fixed OpenAI Responses tool schema conversion to rewrite non-strict `oneOf` unions to `anyOf` before sending tools to the Responses API ([#920](https://github.com/can1357/gajae-code/issues/920)) - -## [14.6.0] - 2026-05-02 - -### Added - -- Added `disableReasoning` to stream and OpenAI completion options to force reasoning off for models that support it, sending `reasoning: { enabled: false }` for OpenRouter-compatible requests -- Added `thinkingDisplay` option to Anthropic options to control whether adaptive and explicit reasoning is returned as `summarized` or `omitted` -- Added Anthropic model compatibility flags `supportsEagerToolInputStreaming` and `supportsLongCacheRetention` for API-capability-specific request behavior - -### Changed - -- Changed Anthropic request payloads to send `thinking: { type: "disabled" }` when `thinkingEnabled` is explicitly `false` on reasoning-enabled models -- Changed Anthropic cache retention handling so `cacheRetention: "long"` now uses `ttl: "1h"` only for canonical Anthropic endpoints with long-cache support -- Changed Anthropic tool schema generation to include `eager_input_streaming` only on models that advertise support -- Changed Anthropic OAuth login flow to include browser fallback guidance and richer error context when token exchange or refresh fails - -### Fixed - -- Fixed Anthropic non-thinking requests to include the caller-provided `temperature` value in request payloads -- Fixed Anthropic `anthropic-model-opus-4-7` non-thinking payloads to omit sampling fields (`temperature`, `top_p`, and `top_k`) -- Fixed OpenAI code provider base URL normalization so configured base URLs with or without `/openai-code` or `/openai-code/responses` now resolve to `/openai-code/responses` -- Fixed OpenAI code provider websocket handling to parse JSON from non-string message payloads including `ArrayBuffer`, typed arrays, and `Blob` values -- Fixed OpenAI code provider websocket handshakes to replace stale `openai-beta` values with the websocket beta and avoid sending request-body headers over websocket transport -- Fixed abort tracking so caller-initiated cancellations are treated as user aborts even after local watchdog timeouts, preventing unintended automatic retries -- Fixed Anthropic stream handling to parse raw SSE envelopes directly, ignore unrelated events, and repair malformed JSON in SSE payloads -- Fixed Anthropic streaming to emit an explicit error when the SSE stream ends without a `message_stop` event -- Fixed OpenAI code provider websocket continuations to send true `previous_response_id` deltas for `store: false` transcripts, expose request stats, and default text verbosity to `low` unless explicitly overridden. -- Fixed OpenAI code provider websocket append reuse after `response.completed` terminal events. - -## [14.5.14] - 2026-05-01 -### Added - -- Added package-level `google-gemini-headers` exports (`getGeminiCliHeaders`, `getGeminiCliUserAgent`, `getAntigravityHeaders`, `extractRetryDelay`, and `ANTIGRAVITY_SYSTEM_INSTRUCTION`) for header and retry handling reuse without importing full Google providers - -### Changed - -- Changed package exports and streaming/provider wiring to load heavy Google/Kimi/GitLab/synthetic provider modules lazily through `register-builtins`, reducing startup import overhead from optional provider SDKs - -### Fixed - -- Fixed DeepSeek V4 tool-call follow-up 400 errors from three root causes: - - Mapped `reasoning_effort` "xhigh" to "max" for DeepSeek-family models on any provider (NVIDIA, OpenCode-Go, etc.), not just `deepseek` - - Recovered `reasoning_content` from thinking blocks with valid signatures that were filtered by the non-empty-text check -- Added empty-string fallback when `reasoning_content` is genuinely absent (e.g. proxy-stripped) but the provider requires the field - -## [14.5.13] - 2026-05-01 - -### Breaking Changes - -- Removed `utils/oauth` re-exports from the package entrypoint, so OAuth helper imports from the root module must be updated - -## [14.5.10] - 2026-04-30 - -### Added - -- Added provider response metadata callbacks for Anthropic and OpenAI streaming requests. - -## [14.5.9] - 2026-04-30 - -### Added - -- Added `usage.reasoningTokens` to OpenAI and Google usage output when providers report reasoning/thinking tokens -- Added `usage.cttl.ephemeral5m` and `usage.cttl.ephemeral1h` to report Anthropic cache-write TTL token buckets -- Added `usage.server.webSearch` and `usage.server.webFetch` to report Anthropic server tool-call request counts - -### Fixed - -- Fixed OpenAI usage attribution to avoid double-counting `reasoning_tokens` in output totals -- Fixed Anthropic streaming usage handling so a previously populated cache TTL breakdown is preserved when later events omit `cache_creation` - -## [14.5.4] - 2026-04-28 - -### Changed - -- Changed OpenAI custom Lark grammar payloads to strip comments and blank lines before sending provider requests. - -### Fixed - -- Fixed OpenAI code provider GPT model pricing by inheriting matching OpenAI catalog rates for zero-priced discovered OpenAI code entries. - -## [14.5.3] - 2026-04-27 - -### Added - -- Added `fireworks` as a supported provider with API key login flow and credential storage -- Added Fireworks model catalog support with `fireworks`-scoped openai-completions models `glm-5`, `glm-5.1`, `kimi-k2.5`, `kimi-k2.6`, and `minimax-m2.7` -- Added built-in discovery wiring so providers with base URL `api.fireworks.ai` are recognized as OpenAI-compatible and can use streaming token control - -### Changed - -- Updated the built-in model catalog to use corrected `contextWindow` and `maxTokens` values for many existing models instead of placeholder limits -- Updated several model cost entries, including cache-read pricing, to corrected values - -### Fixed - -- Fixed Fireworks request formatting by translating between public model IDs and API wire IDs when sending OpenAI-completions requests -- Fixed OpenAI-compatible model parameter handling for Fireworks by allowing `max_tokens` to be sent during requests - -## [14.5.1] - 2026-04-26 - -### Fixed - -- Fixed NVIDIA NIM DeepSeek-V4 models leaking chat-template tool-call markers (e.g. `<|DSML|tool_calls|>`) into visible response text by stripping the special tokens from streamed `delta.content` ([#798](https://github.com/can1357/gajae-code/issues/798)) - -## [14.4.0] - 2026-04-26 - -### Added - -- Added an `examples` option to `StringEnum` to include example values in the generated schema - -### Changed - -- Changed Anthropic tool schema generation to strip unsupported schema fields (including `patternProperties`), add `additionalProperties: false` for object types, and apply Anthropic strict-mode limits when marking tools as strict -- Changed Anthropic strict tool planning to cap strict `tools` at twenty entries and convert excess optional/union parameters to nullable schemas to stay within provider constraints - -### Fixed - -- Fixed Anthropic tool schema compilation failures by keeping the `write` tool out of the strict-tool allowlist when the full coding-agent tool set is active -- Fixed Anthropic 400 `tools.*.custom: For 'object' type, property 'minItems' is not supported` by stripping `minItems` from object-shaped JSON schema nodes (array nodes still keep supported `minItems` values) -- Fixed Anthropic tool schemas that used tuple-style arrays by stripping unsupported `maxItems` and only preserving provider-supported `minItems` values -- Fixed Anthropic and OpenRouter Anthropic tool calls that previously failed with `compiled grammar is too large` by retrying automatically without strict tool schemas and reusing non-strict mode for subsequent requests in the same provider session -- Fixed parsing of JSON tool arguments containing raw control characters inside string values (such as embedded newlines) by escaping them before JSON parsing -- Fixed `validateToolArguments` to accept stringified objects and arrays that include literal control characters inside string fields -- Fixed OpenAI code provider Spark OAuth selection to fall back to non-Pro accounts when no ChatGPT Pro account is connected, so users without a Pro account can still attempt Spark requests in case the server permits access. - -## [14.3.0] - 2026-04-25 - -### Added - -- Added support for Anthropic model Opus 4.7 (`anthropic-model-opus-4-7`) model ([#726](https://github.com/can1357/gajae-code/issues/726)) - - Suppresses sampling parameters (temperature/top_p/top_k) that Opus 4.7 rejects - - Enables `display: "summarized"` for adaptive thinking to restore visible thinking content - -### Fixed - -- Fixed Cursor provider losing conversation history on follow-up turns (model responding "this appears to be the start of our session") by populating `ConversationStateStructure.rootPromptMessagesJson` with JSON blob IDs for the system prompt plus prior user/assistant/tool-result messages. Cursor's server builds the model prompt from `rootPromptMessagesJson`, not from the protobuf `turns[]` tree, so sending only the system prompt there caused prior turns to be dropped -- Fixed Cursor provider multi-turn conversations failing with `Connect error internal: Blob not found` on the second message by storing `ConversationStateStructure.turns`, `AgentConversationTurnStructure.user_message`, and `AgentConversationTurnStructure.steps` as content-addressed blob IDs in the KV store (matching the existing handling for `rootPromptMessagesJson`) rather than sending the raw serialized bytes inline ([#678](https://github.com/can1357/gajae-code/issues/678)) - -## [14.2.1] - 2026-04-24 - -### Fixed - -- Fixed OpenAI code provider Spark OAuth selection to require a verified ChatGPT Pro account instead of falling back to Plus or unknown-plan accounts. - -## [14.2.0] - 2026-04-23 - -### Added - -- Added `gpt-5.5` to the built-in model catalog for both OpenAI Responses (`openai`) and local `litellm` (`openai-completions`) providers -- Added `gpt-image-2` to the `litellm` built-in model catalog -- Added `isCopilotTransientModelError()` and `callWithCopilotModelRetry()` helpers in `utils/retry` that detect GitHub Copilot's intermittent `HTTP 400 model_not_supported` responses for preview models (`gpt-5.3-openai-code`, `gpt-5.4`, `gpt-5.4-mini`, ...) and retry the request up to three times with backoff. OpenAI Responses, OpenAI Completions, and Anthropic provider paths now participate in this retry when the model is served through Copilot. -- Added OpenAI Responses custom-tool grammar support for patch-envelope `apply_patch` calls, including freeform streaming, history replay, and forced tool-choice mapping to the custom wire name. - -### Changed - -- Updated built-in model metadata with revised `contextWindow`, `maxTokens`, and pricing values for existing entries -- Changed generated model policies to assign `applyPatchToolType: "freeform"` for first-party GPT-5 OpenAI Responses and OpenAI code models, so regenerated `models.json` preserves the `apply_patch` custom-tool metadata. -- Renamed `rewriteCopilotAuthError` to `rewriteCopilotError` and extended it to rewrite `HTTP 400 model_not_supported` after retries are exhausted with guidance about Copilot's OAuth-client-specific rollout gap (see opencode#13313). - -### Fixed - -- Fixed Amazon Bedrock proxy handling to honor lowercase `http_proxy`, `https_proxy`, and `all_proxy` environment variables when using HTTP/1 fallback -- Fixed Amazon Bedrock streaming behind corporate HTTP proxies by using a proxy-aware HTTP/1 transport when `HTTPS_PROXY`, `HTTP_PROXY`, or `ALL_PROXY` is configured, including AWS SSO credential calls. -- Fixed Amazon Bedrock requests to retry once with HTTP/1 when the AWS SDK's default HTTP/2 transport fails before streaming begins. -- Fixed OpenAI Responses streaming to display thinking tokens from local providers (llama.cpp, etc.) that send raw `reasoning_text.delta` events and empty `summary` arrays in `output_item.done`. Previously, thinking content was silently dropped during streaming while non-streaming mode worked correctly. -- Synced the bundled OpenCode Go catalog with the current docs so `kimi-k2.6`, `mimo-v2.5`, and `mimo-v2.5-pro` appear in offline/default model lists. - -## [14.1.3] - 2026-04-17 - -### Fixed - -- Preserved user-provided `session_id` and `x-client-request-id` headers in OpenAI Responses requests instead of overriding them with automatic session-derived values -- Stopped sending `session_id` and `x-client-request-id` headers for OpenAI Responses requests when `cacheRetention` is set to `none` -- Fixed direct OpenAI Responses requests to send `session_id` and `x-client-request-id` from the same session-derived value as `prompt_cache_key`, improving prompt cache affinity for append-only sessions - -## [14.1.1] - 2026-04-14 - -### Added - -- Added `toolStrictMode` compatibility option (`"all_strict"` or `"none"`) to OpenAI-compatible model config to force tool schemas to be sent uniformly strict, uniformly non-strict, or keep mixed per-tool behavior - -### Changed - -- Changed Cerebras OpenAI-compatible providers to default `toolStrictMode` to `"all_strict"` unless explicitly overridden - -### Fixed - -- Fixed OpenAI Completions handling for providers that reject mixed `strict` flags by automatically retrying with non-strict tool schemas when an initial all-strict tool request fails with strict-format 400/422 errors -- Fixed OpenAI-completions error reporting by including captured JSON error body details such as type, param, and code when a request fails without a body in the thrown SDK error -- Fixed shell execution failure responses to preserve all result fields when sanitizing, preventing truncated metadata in stream results -- Fixed context overflow detection to recognize `model_context_window_exceeded` from z.ai / GLM providers, preventing infinite retry loops when context window is exceeded ([#638](https://github.com/can1357/gajae-code/issues/638)) -- Fixed strict tool schema enforcement to preserve `additionalProperties: false` and required keys for reused nested object schemas, preventing invalid `todo_write` function schemas in OpenAI code/OpenAI requests -- Fixed GitHub Copilot reasoning regressions by preserving GPT-5.x / Anthropic model 4.x reasoning controls instead of stripping them from requests ([#773](https://github.com/can1357/gajae-code/issues/773)) - -## [14.1.0] - 2026-04-11 - -### Added - -- Added `accountId` to usage report metadata - -### Changed - -- Changed usage parsing to emit a usage report with available fields when parsing fails, rather than returning null - -### Fixed - -- Fixed `planType` resolution to fall back to the raw payload `plan_type` when parsed value is absent -- Fixed usage metadata `raw` fallback to preserve the original payload when parsed raw output is missing - -## [14.0.5] - 2026-04-11 - -### Changed - -- Replaced GitHub Copilot authentication from VSCode extension impersonation to the opencode OAuth flow, eliminating TOS concerns. Existing users will need to re-authenticate once with `/login github-copilot`. -- Simplified Copilot token handling: GitHub OAuth token is used directly for all API requests (no JWT exchange or refresh cycle). -- Changed GitHub Copilot API base URL from `api.individual.githubcopilot.com` to `api.githubcopilot.com`. -- Updated default OpenAI stream idle timeout to 120,000 milliseconds to keep stream generation alive longer - -### Fixed - -- Fixed duplicate synthetic tool results being generated when a real tool result appears later in message history -- Fixed GitHub Copilot `/models` discovery to unwrap structured OAuth credentials before sending the bearer token, preserving dynamic catalog refresh for OAuth-backed callers. - -### Removed - -- Removed Copilot JWT proxy-ep base URL resolution (no longer needed with opencode auth). - -## [14.0.3] - 2026-04-09 - -### Fixed - -- Fixed Ollama discovery cache normalization so cached models upgrade to the OpenAI Responses transport after the provider change - -## [14.0.0] - 2026-04-08 - -### Breaking Changes - -- Removed `coerceNullStrings` function and its automatic null-string coercion behavior from JSON parsing - -### Added - -- Added support for OpenRouter provider with strict mode detection -- Added automatic cleaning of literal escape sequences (`\n`, `\t`, `\r`) in JSON parsing to handle LLM encoding confusion -- Added support for healing JSON with trailing junk after balanced containers (e.g., `]\n`) -- Added `OPENAI_CODE_STARTUP_EVENT_CHANNEL` constant and `OpenAI codeStartupEvent` type for monitoring OpenAI code provider initialization status -- Added automatic healing of malformed JSON with single-character bracket errors at the end of strings, improving LLM tool argument parsing robustness - -## [13.19.0] - 2026-04-05 - -### Fixed - -- Fixed GitHub Copilot model context window detection by correcting fallback priority for maxContextWindowTokens and maxPromptTokens -- Fixed Gemini 2.5 Pro context window detection in GitHub Copilot model limits test -- Fixed Anthropic model Opus 4.6 context window detection in GitHub Copilot model limits test -- Fixed Anthropic streaming to suppress transient SDK console errors for malformed SSE keep-alive frames so the TUI only shows surfaced provider errors - -- Added environment-based credential fallback for the OpenAI code provider provider. - -## [13.17.6] - 2026-04-01 - -### Fixed - -- Fixed Anthropic first-event timeouts to exclude stream connection setup from the watchdog, preserve timeout-specific retry classification after local aborts, and reset retry state cleanly between attempts - -## [13.17.5] - 2026-04-01 - -### Changed - -- Increased default first-event timeout from 15s to 45s to better accommodate longer request setup times -- Modified first-event watchdog to inherit idle timeout when it exceeds the default, ensuring consistent timeout behavior across different configurations - -### Fixed - -- Fixed first-event watchdog initialization timing so it no longer starts before the actual stream request is created, preventing premature timeouts during request setup -- Fixed first-event watchdog timing so OpenAI-family providers no longer count slow request setup against the first streamed event timeout, and raised the default first-event timeout to avoid false aborts after long tool turns - -## [13.17.2] - 2026-04-01 - -### Fixed - -- Fixed OpenAI-family first-event timeouts to preserve provider-specific timeout errors for retry classification instead of flattening them to generic aborts ([#591](https://github.com/can1357/gajae-code/issues/591)) - -## [13.17.1] - 2026-04-01 - -### Added - -- Added `thinkingSignature` field to thinking content blocks to preserve the original reasoning field name (e.g., `reasoning_text`, `reasoning_content`) for accurate follow-up requests -- Added first-event timeout detection for streaming responses to abort stuck requests before user-visible content arrives -- Added `PI_STREAM_FIRST_EVENT_TIMEOUT_MS` environment variable to configure first-event timeout (defaults to 15 seconds or idle timeout, whichever is lower) - -### Changed - -- Changed thinking block handling to track and distinguish between different reasoning field types, enabling proper field name preservation across multiple turns - -### Fixed - -- Fixed Anthropic stream timeout errors to be properly retried by recognizing first-event timeout messages -- Fixed stream stall detection to distinguish between first-event timeouts and idle timeouts, enabling faster recovery for stuck connections - -### Added - -- Added Vercel AI Gateway to `/login` providers for interactive API key setup - -### Fixed - -- Fixed `gjc commit` failing with HTTP 400 errors when using reasoning-enabled models on OpenAI-compatible endpoints that don't support the `developer` role (e.g., GitHub Copilot, custom proxies). Now falls back to `system` role when `developer` is unsupported. - -## [13.17.0] - 2026-03-30 - -### Changed - -- Bumped zai provider default model from glm-4.6 to glm-5.1 - -## [13.16.5] - 2026-03-29 - -### Added - -- Added Gemma 3 27B model support for Google Generative AI - -### Changed - -- Updated Kwaipilot KAT-Coder-Pro V2 model display name and pricing information -- Updated Kwaipilot KAT-Coder-Pro V2 context window from 222,222 to 256,000 tokens and max tokens from 8,888 to 80,000 - -### Fixed - -- Fixed normalizeAnthropicBaseUrl returning empty string instead of undefined when baseUrl is empty - -## [13.16.4] - 2026-03-28 - -### Added - -- Added support for Groq Compound and Compound Mini models with extended context window (131K tokens) and configurable thinking levels -- Added support for OpenAI GPT-OSS-Safeguard-20B model with reasoning capabilities across multiple providers -- Added support for Kwaipilot KAT-Coder-Pro V2 model across Kilo, NanoGPT, and OpenRouter providers -- Added support for GLM-5.1 model with extended context window (200K tokens) and max output of 131K tokens -- Added support for Qwen3.5-27B-Musica-v1 model -- Added support for zai-org/glm-5.1 model with reasoning capabilities -- Added support for Sapiens AI Agnes-1.5-Lite model with multimodal input (text and image) and reasoning -- Added support for Venice openai-gpt-54-mini model - -### Changed - -- Updated Qwen QwQ 32B max tokens from 16,384 to 40,960 across multiple providers -- Updated OpenAI GPT-OSS-Safeguard-20B model name to 'Safety GPT OSS 20B' and enabled reasoning capabilities -- Updated OpenAI GPT-OSS-Safeguard-20B context window from 222,222 to 131,072 tokens and max tokens from 8,888 to 65,536 -- Updated OpenRouter Qwen QwQ 32B pricing: input from 0.2 to 0.19, output from 1.17 to 1.15, cache read from 0.1 to 0.095 -- Updated OpenRouter Anthropic model 3.5 Sonnet pricing: input from 0.45 to 0.42, cache read from 0.225 to 0.21 - -## [13.16.3] - 2026-03-28 - -### Changed - -- Modified OAuth credential saving to preserve unrelated identities instead of replacing all credentials for a provider -- Updated credential identity resolution to use provider context for more accurate email deduplication - -### Fixed - -- Fixed OAuth credential updates to replace matching credentials in-place rather than creating disabled rows, preventing unbounded accumulation of soft-deleted credentials - -## [13.15.0] - 2026-03-23 - -### Added - -- Added `isUsageLimitError()` to `rate-limit-utils` as a single source of truth for detecting usage/quota limit errors across all providers - -### Fixed - -- Fixed lazy stream forwarding to properly handle final results from source streams with `result()` methods -- Fixed lazy stream error handling to convert iterator failures into terminal error results instead of silently failing -- Fixed `parseRateLimitReason` to recognize "usage limit" in error messages and correctly classify them as `QUOTA_EXHAUSTED` -- Fixed OpenAI code `fetchWithRetry` retrying 429 responses for `usage_limit_reached` errors for up to 5 minutes instead of returning immediately for credential switching -- Removed `usage.?limit` from `TRANSIENT_MESSAGE_PATTERN` in retry utils since usage limits are not transient and require credential rotation -- Fixed `parseRateLimitReason` not recognizing "usage limit" in OpenAI code error messages, causing incorrect fallback to `UNKNOWN` classification instead of `QUOTA_EXHAUSTED` - -## [13.14.2] - 2026-03-21 - -### Changed - -- Updated thinking configuration format from `levels` array to `minLevel` and `maxLevel` properties for improved clarity -- Corrected context window from 400000 to 272000 tokens for GPT-5.4 mini and nano variants on OpenAI code transport -- Normalized GPT-5.4 variant priority handling to use parsed variant instead of special-casing raw model IDs -- Added support for `mini` variant in OpenAI model parsing regex - -### Fixed - -- Fixed inconsistent thinking level configuration across multiple model definitions - -## [13.14.0] - 2026-03-20 - -### Fixed - -- Fixed resumed OpenAI Responses sessions to avoid replaying stale same-provider native history on the first follow-up after process restart ([#488](https://github.com/can1357/gajae-code/issues/488)) - -### Added - -- Added bundled GPT-5.4 mini model metadata for OpenAI, OpenAI code provider, and GitHub Copilot, including low-to-xhigh thinking support and GitHub Copilot premium multiplier metadata -- Added bundled GPT-5.4 nano model metadata for OpenAI and OpenAI code provider, including low-to-xhigh thinking support - -## [13.13.2] - 2026-03-18 - -### Changed - -- Modified tool result handling for aborted assistant messages to preserve existing tool results when already recorded, instead of always replacing them with synthetic 'aborted' results - -## [13.13.0] - 2026-03-18 - -### Changed - -- Changed tool argument validation to always normalize optional null values before type coercion, ensuring consistent handling of LLM-generated 'null' strings - -### Fixed - -- Fixed tool argument validation to properly handle string 'null' values from LLMs on optional fields by stripping them during normalization -- Improved type safety of `validateToolCall` and `validateToolArguments` functions by returning properly typed `ToolCall["arguments"]` instead of `any` - -## [13.12.9] - 2026-03-17 - -### Changed - -- Extracted OpenAI compatibility detection and resolution logic into dedicated `openai-completions-compat` module for improved maintainability and reusability - -### Fixed - -- Fixed `openai-responses` manual history replay to strip replay-only item IDs and preserve normalized tool `call_id` values for GitHub Copilot follow-up turns ([#457](https://github.com/can1357/gajae-code/issues/457)) - -## [13.12.0] - 2026-03-14 - -### Added - -- Added support for `qwen-chat-template` thinking format to enable reasoning via `chat_template_kwargs.enable_thinking` -- Added `reasoningEffortMap` option to `OpenAICompat` for mapping pi-ai reasoning levels to provider-specific `reasoning_effort` values -- Added `extraBody` to `OpenAICompat` to support provider-specific request body routing fields in OpenAI-completions requests -- Added support for reading token usage from choice-level `usage` field as fallback when root-level usage is unavailable -- Added new models: DeepSeek-V3.2 (Bedrock), Llama 3.1 405B Instruct, Magistral Small 1.2, Ministral 3 3B, Mistral Large 3, Pixtral Large (25.02), NVIDIA Nemotron Nano 3 30B, and Qwen3-5-9b -- Added `close()` method to `AuthStorage` for properly closing the underlying credential store -- Added `initiatorOverride` option in OpenAI and Anthropic providers to customize message attribution - -### Changed - -- Changed assistant message content serialization to always use plain string format instead of text block arrays to prevent recursive nesting in OpenAI-compatible backends -- Changed Bedrock Opus 4.6 context window from 1M to 1M and added max tokens limit of 128K -- Changed OpenCode Zen/Go Sonnet 4.0/4.5 context window from 1M to 200K -- Changed GitHub Copilot context windows from 200K to 128K for both gpt-4o and gpt-4o-mini -- Changed Anthropic model 3.5 Sonnet (Anthropic API) pricing: input from $0.5 to $0.25, output from $3 to $1.5, cache read from $0.05 to $0.025, cache write from $0 to $1 -- Changed Devstral 2 model name from '135B' to '123B' -- Changed ByteDance Seed 2.0-Lite to support reasoning with effort-based thinking mode and image inputs -- Changed Qwen3-32b (Groq) reasoning effort mapping to normalize all levels to 'default' -- Changed finish_reason 'end' to map to 'stop' for improved compatibility with additional providers -- Changed Anthropic reference model merging to prioritize bundled metadata for known models while using models.dev for newly discovered IDs - -### Fixed - -- Fixed reasoning_effort parameter handling to use provider-specific mappings instead of raw effort values -- Fixed assistant content serialization for GitHub Copilot and other OpenAI-compatible backends that mirror array payloads -- Fixed token usage calculation to properly extract cached tokens from both root and nested `prompt_tokens_details` fields -- Fixed stop reason mapping to handle string values and unknown finish reasons gracefully -- Fixed resource cleanup in `AuthCredentialStore.close()` to properly finalize all prepared statements before closing the database - -## [13.11.1] - 2026-03-13 - -### Fixed - -- Added `llama.cpp` as local provider -- Fixed auth schema V0-to-V1 migration crash when the V0 table lacks a `disabled` column - -## [13.11.0] - 2026-03-12 - -### Added - -- Added support for Parallel AI provider with API key authentication -- Added `PARALLEL_API_KEY` environment variable support for Parallel provider configuration -- Added automatic websocket reconnection handling for connection limit errors, with fallback to SSE replay when content has already been emitted - -### Changed - -- Enhanced `OpenAI codeProviderStreamError` to include an optional error code field for better error categorization and handling - -### Fixed - -- Improved retry logic to handle HTTP/2 stream errors and internal_error responses from Anthropic API - -## [13.9.16] - 2026-03-10 - -### Added - -- Support for `onPayload` callback to replace provider request payloads before sending, enabling request interception and modification -- Support for structured text signature metadata with phase information (commentary/final_answer) in OpenAI and Azure OpenAI Responses providers -- Support for OpenAI code provider Spark model selection with plan-based account prioritization -- Added `modelId` option to `getApiKey()` to enable model-specific credential ranking - -### Changed - -- Enhanced `onPayload` callback signature to accept model parameter and support async payload replacement -- Improved error messages for `response.failed` events to include detailed error codes, messages, and incomplete reasons -- Refactored OpenAI code provider response streaming to improve code organization and maintainability with extracted helper functions and type definitions -- Enhanced websocket fallback logic to safely replay buffered output over SSE when websocket connections fail mid-stream -- Improved error recovery for websocket streams by distinguishing between fatal connection errors and retryable stream errors -- Updated credential ranking strategy to prioritize Pro plan accounts when requesting OpenAI code provider Spark models - -### Fixed - -- Fixed websocket stream recovery to properly reset output state and clear buffered items when falling back to SSE after partial output -- Fixed handling of malformed JSON messages in websocket streams to trigger immediate fallback to SSE without retry attempts - -## [13.9.13] - 2026-03-10 - -### Added - -- Added `isSpecialServiceTier` utility function to validate OpenAI service tier values - -## [13.9.12] - 2026-03-09 - -### Added - -- Added Tavily web search provider support with API key authentication - -### Fixed - -- Fixed OpenAI-family streaming transports to fail with an explicit idle-timeout error instead of hanging indefinitely when the provider stops sending events mid-response -- Fixed OpenAI code provider OAuth refresh and usage-limit lookups to respect request timeouts instead of waiting indefinitely during account selection or rotation -- Fixed OpenAI code provider prewarmed websocket requests to fall back quickly when the socket connects but never starts the response stream - -## [13.9.10] - 2026-03-08 - -### Added - -- Added `identity_key` column to auth credentials storage for improved credential deduplication -- Added schema versioning system to auth credentials database for safer migrations -- Added automatic backfilling of identity keys during database schema migrations - -### Changed - -- Changed credential deduplication logic to use single identity key instead of multiple identifiers for better performance -- Changed database schema to store normalized identity keys alongside credentials -- Changed auth schema migration to support upgrading from legacy database versions with automatic data backfill - -### Fixed - -- Fixed API key credential matching to correctly identify when the same key is re-stored, preventing unnecessary row duplication on re-login -- Fixed credential deduplication to correctly handle OAuth accounts with matching emails but different account IDs -- Fixed API key replacement to reuse existing stored rows instead of accumulating disabled duplicates -- Fixed auth storage to preserve newer recorded schema versions when opened by older binaries - -## [13.9.8] - 2026-03-08 - -### Fixed - -- Fixed WebSocket stream fallback logic to safely replay buffered output over SSE when WebSocket fails after partial content has been streamed - -## [13.9.4] - 2026-03-07 - -### Changed - -- Simplified API key credential storage to always replace existing credentials on re-login instead of accumulating multiple keys -- Updated Kagi API key placeholder from `kagi_...` to `KG_...` to match current API key format -- Updated Kagi login instructions to clarify Search API access is beta-only and provide support contact -- Disabled usage reporting in streaming responses for Cerebras models due to compatibility issues - -### Fixed - -- Fixed Cerebras model compatibility by preventing `stream_options` usage requests in chat completions - -## [13.9.3] - 2026-03-07 - -### Breaking Changes - -- Changed `reasoning` parameter from `ThinkingLevel | undefined` to `Effort | undefined` in `SimpleStreamOptions`; 'off' is no longer valid (omit the field instead) -- Removed `supportsXhigh()` function; check `model.thinking?.maxLevel` instead -- Removed `ThinkingLevel` and `ThinkingEffort` types; use `Effort` enum -- Removed `getAvailableThinkingLevels()` and `getAvailableThinkingEfforts()` functions -- Changed `transformRequestBody()` signature to require `Model` parameter as second argument for effort validation -- Removed `thinking.ts` module export; import from `model-thinking.ts` instead - -### Added - -- Added `incremental` flag to `OpenAIResponsesHistoryPayload` to support building conversation history from multiple assistant messages instead of replacing it -- Added `dt` flag to `OpenAIResponsesHistoryPayload` for transport-level metadata -- Added `ThinkingConfig` interface to models for canonical thinking transport metadata with min/max effort levels and provider-specific mode -- Added `thinking` field to `Model` type containing per-model thinking capabilities used to clamp and map user-facing effort levels -- Added `Effort` enum (minimal, low, medium, high, xhigh) as canonical user-facing thinking levels replacing `ThinkingLevel` -- Added `enrichModelThinking()` function to automatically populate thinking metadata on models based on their capabilities -- Added `mapEffortToAnthropicAdaptiveEffort()` function to map user effort levels to Anthropic adaptive thinking effort -- Added `mapEffortToGoogleThinkingLevel()` function to map user effort levels to Google thinking levels -- Added `requireSupportedEffort()` function to validate and clamp effort levels per model, throwing errors for unsupported combinations -- Added `clampThinkingLevelForModel()` function to clamp thinking levels to model-supported range -- Added `applyGeneratedModelPolicies()` and `linkSparkPromotionTargets()` exports from model-thinking module -- Added `serviceTier` option to control OpenAI processing priority and cost (auto, default, flex, scale, priority) -- Added `providerPayload` field to messages and responses for reconstructing transport-native history -- Added Gemini usage provider for tracking quota and tier information -- Added `getOpenAI codeAccountId()` utility to extract account ID from OpenAI code JWT tokens -- Added email extraction from OpenAI code provider OAuth tokens for credential deduplication - -### Changed - -- Changed credential disabling mechanism from boolean `disabled` flag to `disabled_cause` text field for tracking why credentials were disabled -- Changed `deleteAuthCredential()` and `deleteAuthCredentialsForProvider()` methods to require a `disabledCause` parameter explaining the reason for disabling -- Changed Gemini model parsing to strip `-preview` suffix for consistent model identification -- Changed OpenAI code provider websocket error handling to detect fatal connection errors and immediately fall back to SSE without retrying -- Changed OpenAI code provider to always use websockets v2 protocol (removed v1 support) -- Changed `reasoning` parameter type from `ThinkingLevel` to `Effort` in `SimpleStreamOptions`, removing 'off' value (callers should omit the field instead) -- Changed thinking configuration to use model-specific metadata instead of hardcoded provider logic for effort mapping -- Changed OpenAI code provider request transformer to accept `Model` parameter for effort validation instead of string model ID -- Changed Anthropic provider to use model thinking metadata for determining adaptive thinking support instead of model ID pattern matching -- Changed Google Vertex and Google providers to use shorter variable names for thinking config construction -- Moved thinking-related utilities from `thinking.ts` to new `model-thinking.ts` module with expanded functionality -- Moved model policy functions from `provider-models/model-policies.ts` to `model-thinking.ts` -- Moved `googleGeminiCliUsageProvider` from `providers/google-gemini-cli-usage.ts` to `usage/gemini.ts` -- Changed default OpenAI model from gpt-5.1-openai-code to gpt-5.4 across all providers -- Changed `UsageFetchContext` to remove cache and now() dependencies—usage fetchers now use Date.now() directly -- Removed `resetInMs` field from usage windows; consumers should calculate from `resetsAt` timestamp -- Changed OpenAI code provider credential ranking to deduplicate by email when accountId matches -- Improved OpenAI code provider error handling with retryable error detection - -### Removed - -- Removed `thinking.ts` module; use `model-thinking.ts` instead -- Removed `provider-models/model-policies.ts` module; functionality moved to `model-thinking.ts` -- Removed `supportsXhigh()` function from models.ts; use model.thinking metadata instead -- Removed `ThinkingLevel` and `ThinkingEffort` types; use `Effort` enum instead -- Removed `getAvailableThinkingLevels()` and `getAvailableThinkingEfforts()` functions -- Removed `model-policies` export from `provider-models/index.ts` -- Removed hardcoded thinking level clamping logic from OpenAI code provider request transformer; now uses model metadata -- Removed `UsageCache` and `UsageCacheEntry` interfaces—caching is now handled internally by AuthStorage -- Removed `google-gemini-cli-usage` export; use new `gemini` usage provider instead -- Removed `resetInMs` computation from all usage providers -- Removed cache TTL constants and cache management from usage fetchers (anthropic-model, github-copilot, google-antigravity, kimi, openai-code, zai) - -### Fixed - -- Fixed credential purging to respect disabled credentials when deduplicating by email, preventing re-enablement of intentionally disabled credentials -- Fixed OpenAI code provider websocket error reporting to include detailed error messages from error events -- Fixed conversation history reconstruction to support incremental updates from multiple assistant messages while maintaining backward compatibility with full-snapshot payloads -- Fixed OpenAI code provider to reject unsupported effort levels instead of silently clamping them, providing clear error messages about supported efforts -- Fixed model cache normalization to properly apply thinking enrichment when loading cached models -- Fixed dynamic model merging to apply thinking enrichment to merged model results -- Fixed OpenAI code provider streaming to properly include service_tier in SSE payloads -- Fixed type safety in OpenAI responses by removing unsafe type casts on image content blocks -- Fixed credential purging to respect disabled credentials when deduplicating by email -- Fixed API-key provider re-login to replace the active stored key instead of appending stale credentials that were still selected first -- Fixed Kagi login guidance to use the correct `KG_...` key format and mention Search API beta access requirements - -## [13.9.2] - 2026-03-05 - -### Added - -- Support for redacted thinking blocks in Anthropic messages, enabling secure handling of encrypted reasoning content -- Preservation of latest Anthropic thinking blocks and redacted thinking content during message transformation, even when switching between Anthropic models - -### Changed - -- Assistant message content now includes `RedactedThinkingContent` type alongside existing text, thinking, and tool call blocks -- Message transformation logic now preserves signed thinking blocks and redacted thinking for the latest assistant message in Anthropic conversations - -### Fixed - -- Fixed Unicode normalization to consistently apply `toWellFormed()` to all text content, including thinking blocks, ensuring proper handling of malformed UTF-16 sequences - -## [13.9.1] - 2026-03-05 - -### Breaking Changes - -- Removed `THINKING_LEVELS`, `ALL_THINKING_LEVELS`, `ALL_THINKING_MODES`, `THINKING_MODE_DESCRIPTIONS`, and `THINKING_MODE_LABELS` exports -- Renamed `formatThinking()` to `getThinkingMetadata()` with changed return type from string to `ThinkingMetadata` object -- Renamed `getAvailableThinkingLevel()` to `getAvailableThinkingLevels()` and added default parameter -- Renamed `getAvailableEffort()` to `getAvailableEfforts()` and added default parameter - -### Added - -- Added `ThinkingMetadata` type to provide structured access to thinking mode information (value, label, description) - -## [13.9.0] - 2026-03-05 - -### Added - -- Exported new thinking module with `Effort`, `ThinkingLevel`, and `ThinkingMode` types for managing reasoning effort levels -- Added `getAvailableEffort()` function to determine supported thinking effort levels based on model capabilities -- Added `parseEffort()`, `parseThinkingLevel()`, and `parseThinkingMode()` functions for parsing thinking configuration strings -- Added `THINKING_LEVELS`, `ALL_THINKING_LEVELS`, and `ALL_THINKING_MODES` constants for iterating over available thinking options -- Added `THINKING_MODE_DESCRIPTIONS` and `THINKING_MODE_LABELS` for displaying thinking modes in user interfaces -- Added `formatThinking()` function to format thinking modes as compact display labels - -### Changed - -- Refactored thinking level handling to distinguish between `Effort` (provider-level, no "off") and `ThinkingLevel` (user-facing, includes "off") -- Updated `ThinkingBudgets` type to use `Effort` instead of `ThinkingLevel` for more precise token budget configuration -- Improved reasoning option handling to explicitly support "off" value for disabling reasoning across all providers -- Simplified thinking effort mapping logic by centralizing provider-specific clamping behavior - -## [13.7.8] - 2026-03-04 - -### Added - -- Added ZenMux provider support with mixed API routing: Anthropic-owned models discovered from `https://zenmux.ai/api/v1/models` now use the Anthropic transport (`https://zenmux.ai/api/anthropic`), while other ZenMux models use the OpenAI-compatible transport. - -## [13.7.7] - 2026-03-04 - -### Changed - -- Modified response ID normalization to preserve existing item ID prefixes when truncating oversized IDs -- Updated tool call ID normalization to use `fc_` prefix for generated item IDs instead of `item_` prefix - -### Fixed - -- Fixed handling of reasoning item IDs to remain untouched during response normalization while function call IDs are properly normalized - -## [13.7.2] - 2026-03-04 - -### Added - -- Added support for Kagi API key authentication via `login kagi` command -- Added Kagi to the list of available OAuth providers - -### Fixed - -- MCP tool schemas with `$ref`/`$defs` are now dereferenced before being sent to LLM providers, fixing dangling references that left models without type definitions -- Ajv schema validation no longer emits `console.warn()` for non-standard format keywords (e.g. `"uint"`) from MCP servers, preventing TUI corruption -- Tool schema compilation is now cached per schema identity, eliminating redundant recompilation on every tool call - -## [13.6.0] - 2026-03-03 - -### Added - -- Added Anthropic Foundry gateway mode controlled by `ANTHROPIC_MODEL_CODE_USE_FOUNDRY`, with support for `FOUNDRY_BASE_URL`, `ANTHROPIC_FOUNDRY_API_KEY`, `ANTHROPIC_CUSTOM_HEADERS`, and optional mTLS material (`ANTHROPIC_MODEL_CODE_CLIENT_CERT`, `ANTHROPIC_MODEL_CODE_CLIENT_KEY`, `NODE_EXTRA_CA_CERTS`) -- Added LM Studio provider support with OpenAI-compatible model discovery and OAuth login. -- Added support for `LM_STUDIO_API_KEY` and `LM_STUDIO_BASE_URL` environment variables for authentication and custom host configuration. - -### Changed - -- Anthropic key resolution now prefers `ANTHROPIC_FOUNDRY_API_KEY` over `ANTHROPIC_OAUTH_TOKEN` and `ANTHROPIC_API_KEY` when Foundry mode is enabled -- Anthropic auth base-URL fallback now prefers `FOUNDRY_BASE_URL` when `ANTHROPIC_MODEL_CODE_USE_FOUNDRY` is enabled - -## [13.5.8] - 2026-03-02 - -### Fixed - -- Fixed schema compatibility issue where patternProperties in tool parameters caused failures when converting to legacy Antigravity format - -## [13.5.5] - 2026-03-01 - -### Changed - -- Anthropic Anthropic model system-block cloaking now leaves the agent identity block uncached and applies `cache_control: { type: "ephemeral" }` to injected user system blocks without forcing `ttl: "1h"` - -### Fixed - -- Anthropic request payload construction now enforces a maximum of 4 `cache_control` breakpoints (tools/system/messages priority order) before dispatch -- Anthropic cache-control normalization now removes later `ttl: "1h"` entries when a default/5m block has already appeared earlier in evaluation order - -## [13.5.3] - 2026-03-01 - -### Fixed - -- Fixed tool argument coercion to handle malformed JSON with trailing wrapper braces by parsing leading JSON containers - -## [13.4.0] - 2026-03-01 - -### Breaking Changes - -- Removed `TInput` generic parameter from `ToolResultMessage` interface and removed `$normative` property - -### Added - -- `hasUnrepresentableStrictObjectMap()` pre-flight check in `tryEnforceStrictSchema`: schemas with `patternProperties` or schema-valued `additionalProperties` now degrade gracefully to non-strict mode instead of throwing during enforcement -- `generateAnthropic modelCloakingUserId()` generates structured user IDs for Anthropic OAuth metadata (`user_{hex64}_account_{uuid}_session_{uuid}`) -- `isAnthropic modelCloakingUserId()` validates whether a string matches the cloaking user-ID format -- `mapStainlessOs()` and `mapStainlessArch()` map `process.platform`/`process.arch` to Stainless header values; X-Stainless-Os and X-Stainless-Arch in `anthropic-modelCodeHeaders` are now runtime-computed -- `buildAnthropic modelCodeTlsFetchOptions()` attaches SNI and default TLS ciphers for direct `api.anthropic.com` connections -- `createAnthropic modelBillingHeader()` generates the `x-anthropic-billing-header` block (SHA-256 payload fingerprint + random build hash) -- `buildAnthropicSystemBlocks()` now injects a billing header block and the Anthropic model Agent SDK identity block with `ephemeral` 1h cache-control when `includeAnthropic modelCodeInstruction` is set -- `resolveAnthropicMetadataUserId()` auto-generates a cloaking user ID for OAuth requests when `metadata.user_id` is absent or invalid -- `AnthropicOAuthFlow` is now exported for direct use -- OAuth callback server timeout extended from 2 min to 5 min -- `parseGeminiCliCredentials()` parses Google Cloud credential JSON with support for legacy (`{token,projectId}`), alias (`project_id`/`refresh`/`expires`), and enriched formats -- `shouldRefreshGeminiCliCredentials()` and proactive token refresh before requests for both Gemini CLI and Antigravity providers (60s pre-expiry buffer) -- `normalizeAntigravityTools()` converts `parametersJsonSchema` → `parameters` in function declarations for Antigravity compatibility -- `ANTIGRAVITY_SYSTEM_INSTRUCTION` is now exported for use by search and other consumers -- `ANTIGRAVITY_LOAD_CODE_ASSIST_METADATA` constant exported from OAuth module with `ANTIGRAVITY` ideType -- Antigravity project onboarding: `onboardProjectWithRetries()` provisions a new project via `onboardUser` LRO when `loadCodeAssist` returns no existing project (up to 5 attempts, 2s interval) -- `getOAuthApiKey` now includes `refreshToken`, `expiresAt`, `email`, and `accountId` in the Gemini/Antigravity JSON credential payload to enable proactive refresh -- Antigravity model discovery now tries the production daily endpoint first, with sandbox as fallback -- `ANTIGRAVITY_DISCOVERY_DENYLIST` filters low-quality/internal models from discovery results - -### Changed - -- Replaced `sanitizeSurrogates()` utility with native `String.prototype.toWellFormed()` for handling unpaired Unicode surrogates across all providers -- Extended `ANTHROPIC_OAUTH_BETA` constant in the OpenAI-compat Anthropic route with `interleaved-thinking-2025-05-14`, `context-management-2025-06-27`, and `prompt-caching-scope-2026-01-05` beta flags -- `anthropic-modelCodeVersion` bumped to `2.1.63`; `anthropic-modelCodeSystemInstruction` updated to identify as Anthropic model Agent SDK -- `anthropic-modelCodeHeaders`: removed `X-Stainless-Helper-Method`, updated package version to `0.74.0`, runtime version to `v24.3.0` -- `applyAnthropic modelToolPrefix` / `stripAnthropic modelToolPrefix` now accept an optional prefix override and skip Anthropic built-in tool names (`web_search`, `code_execution`, `text_editor`, `computer`) -- Accept-Encoding header updated to `gzip, deflate, br, zstd` -- Non-Anthropic base URLs now receive `Authorization: Bearer` regardless of OAuth status -- Prompt-caching logic now skips applying breakpoints when any block already carries `cache_control`, instead of stripping then re-applying -- `fine-grained-tool-streaming-2025-05-14` removed from default beta set -- Anthropic OAuth token URL changed from `platform.anthropic-model.com` to `api.anthropic.com` -- Anthropic OAuth scopes reduced to `org:create_api_key user:profile user:inference` -- OAuth code exchange now strips URL fragment from callback code, using the fragment as state override when present -- Anthropic model usage headers aligned: user-agent updated to `anthropic-model-cli/2.1.63 (external, cli)`, anthropic-beta extended with full beta set -- Antigravity session ID format changed to signed decimal (negative int63 derived from SHA-256 of first user message, or random bounded int63) -- Antigravity `requestId` now uses `agent-{uuid}` format; non-Antigravity requests no longer include requestId/userAgent/requestType in the payload -- `ANTIGRAVITY_DAILY_ENDPOINT` corrected to `daily-cloudcode-pa.googleapis.com`; sandbox endpoint kept as fallback only -- Antigravity discovery: removed `recommended`/`agentModelSorts` filter; now includes all non-internal, non-denylisted models -- Antigravity discovery no longer sends `project` in the request body -- Gemini/Antigravity OAuth flows no longer use PKCE (code_challenge removed) -- Antigravity `loadCodeAssist` metadata ideType changed from `IDE_UNSPECIFIED` to `ANTIGRAVITY` -- Antigravity `discoverProject` now uses a single canonical production endpoint; falls back to project onboarding instead of a hardcoded default project ID -- `VALIDATED` tool calling config applied to Antigravity requests with Anthropic model models -- `maxOutputTokens` removed from Antigravity generation config for non-Anthropic model models -- System instruction injection for Antigravity scoped to Anthropic model and `gemini-3-pro-high` models only - -### Removed - -- Removed `sanitizeSurrogates()` utility function; use native `String.prototype.toWellFormed()` instead - -## [13.3.14] - 2026-02-28 - -### Added - -- Exported schema utilities from new `./utils/schema` module, consolidating JSON Schema handling across providers -- Added `CredentialRankingStrategy` interface for providers to implement usage-based credential selection -- Added `anthropic-modelRankingStrategy` for Anthropic OAuth credentials to enable smart multi-account selection based on usage windows -- Added `openai-codeRankingStrategy` for OpenAI code provider OAuth credentials with priority boost for fresh 5-hour window starts -- Added `adaptSchemaForStrict()` helper for unified OpenAI strict schema enforcement across providers -- Added schema equality and merging utilities: `areJsonValuesEqual()`, `mergeCompatibleEnumSchemas()`, `mergePropertySchemas()` -- Added Cloud Code Assist schema normalization: `copySchemaWithout()`, `stripResidualCombiners()`, `prepareSchemaForCCA()` -- Added `sanitizeSchemaForGoogle()` and `sanitizeSchemaForCCA()` for provider-specific schema sanitization -- Added `StringEnum()` helper for creating string enum schemas compatible with Google and other providers -- Added `enforceStrictSchema()` and `sanitizeSchemaForStrictMode()` for OpenAI strict mode schema validation -- Added package exports for `./utils/schema` and `./utils/schema/*` subpaths -- Added `validateSchemaCompatibility()` to statically audit a JSON Schema against provider-specific rules (`openai-strict`, `google`, `cloud-code-assist-anthropic-model`) and return structured violations -- Added `validateStrictSchemaEnforcement()` to verify the strict-fail-open contract: enforced schemas pass strict validation, failed schemas return the original object identity -- Added `COMBINATOR_KEYS` (`anyOf`, `allOf`, `oneOf`) and `CCA_UNSUPPORTED_SCHEMA_FIELDS` as exported constants in `fields.ts` to eliminate duplication across modules -- Added `tryEnforceStrictSchema` result cache (`WeakMap`) to avoid redundant sanitize + enforce work for the same schema object -- Added comprehensive schema normalization test suite (`schema-normalization.test.ts`) covering strict mode, Google, and Cloud Code Assist normalization paths -- Added schema compatibility validation test suite (`schema-compatibility.test.ts`) covering all three provider targets - -### Changed - -- Moved schema utilities from `./utils/typebox-helpers` to new `./utils/schema` module with expanded functionality -- Refactored OpenAI provider tool conversion to use unified `adaptSchemaForStrict()` helper across openai-code, completions, and responses -- Updated `AuthStorage` to support generic credential ranking via `CredentialRankingStrategy` instead of OpenAI code-only logic -- Moved Google schema sanitization functions from `google-shared.ts` to `./utils/schema` module -- Changed export path: `./utils/typebox-helpers` → `./utils/schema` in main index -- `sanitizeSchemaForGoogle()` / `sanitizeSchemaForCCA()` now accept a parameterized `unsupportedFields` set internally, enabling code reuse between the two sanitizers -- `copySchemaWithout()` rewritten using object-rest destructuring for clarity - -### Fixed - -- Fixed cycle detection: `WeakSet` guards added to all recursive schema traversals (`sanitizeSchemaForStrictMode`, `enforceStrictSchema`, `normalizeSchemaForCCA`, `normalizeNullablePropertiesForCloudCodeAssist`, `stripResidualCombiners`, `sanitizeSchemaImpl`, `hasResidualCloudCodeAssistIncompatibilities`) — circular schemas no longer cause infinite loops or stack overflows -- Fixed `hasResidualCloudCodeAssistIncompatibilities`: cycle detection now returns `false` (not `true`) for already-visited nodes, eliminating false positives that forced the CCA fallback schema on valid recursive inputs -- Fixed `stripResidualCombiners` to iterate to a fixpoint rather than making a single pass, ensuring chained combiner reductions (where one reduction enables another) are fully resolved -- Fixed `mergeObjectCombinerVariants` required-field computation: the flattened object now takes the intersection of all variants' `required` arrays (unioned with own-level required properties that exist in the merged schema), preventing required fields from being silently dropped or over-included -- Fixed `mergeCompatibleEnumSchemas` to use deep structural equality (`areJsonValuesEqual`) instead of `Object.is` when deduplicating object-valued enum members -- Fixed `sanitizeSchemaForGoogle` const-to-enum deduplication to use deep equality instead of reference equality -- Fixed `sanitizeSchemaForGoogle` type inference for `anyOf`/`oneOf`-flattened const enums: type is now derived from all variants (must agree), falling back to inference from enum values; mixed null/non-null infers the non-null type and sets `nullable` -- Fixed `sanitizeSchemaForGoogle` recursion to spread options when descending (previously only `insideProperties`, `normalizeTypeArrayToNullable`, `stripNullableKeyword` were forwarded; new fields `unsupportedFields` and `seen` were silently dropped) -- Fixed `sanitizeSchemaForGoogle` array-valued `type` filtering to exclude non-string entries before processing -- Removed incorrect `additionalProperties: false` stripping from `sanitizeSchemaForGoogle` (the field is valid in Google schemas when `false`) -- Fixed `sanitizeSchemaForStrictMode` to strip the `nullable` keyword and expand it into `anyOf: [schema, {type: "null"}]` in the output, matching what OpenAI strict mode actually expects -- Fixed `sanitizeSchemaForStrictMode` to infer `type: "array"` when `items` is present but `type` is absent -- Fixed `sanitizeSchemaForStrictMode` to infer a scalar `type` from uniform `enum` values when `type` is not explicitly set -- Fixed `sanitizeSchemaForStrictMode` const-to-enum merge to use deep equality, preventing duplicate enum entries when `const` and `enum` both exist with the same value -- Fixed `enforceStrictSchema` to drop `additionalProperties` unconditionally (previously only object-valued `additionalProperties` was recursed into; non-object values were passed through, violating strict schema requirements) -- Fixed `enforceStrictSchema` to recurse into `$defs` and `definitions` blocks so referenced sub-schemas are also made strict-compliant -- Fixed `enforceStrictSchema` to handle tuple-style `items` arrays (previously only single-schema `items` objects were recursed) -- Fixed `enforceStrictSchema` double-wrapping: optional properties already expressed as `anyOf: [..., {type: "null"}]` are not wrapped again -- Fixed `enforceStrictSchema` `Array.isArray` type-narrowing for `type` field to filter non-string entries before checking for `"object"` - -## [13.3.8] - 2026-02-28 - -### Fixed - -- Fixed response body reuse error when handling 429 rate limit responses with retry logic - -## [13.3.7] - 2026-02-27 - -### Added - -- Added `tryEnforceStrictSchema` function that gracefully downgrades to non-strict mode when schema enforcement fails, enabling better compatibility with malformed or circular schemas -- Added `sanitizeSchemaForStrictMode` function to normalize JSON schemas by stripping non-structural keywords, converting `const` to `enum`, and expanding type arrays into `anyOf` variants -- Added Kilo Gateway provider support with OpenAI-compatible model discovery, OAuth `/login kilo`, and `KILO_API_KEY` environment variable support ([#193](https://github.com/can1357/gajae-code/issues/193)) - -### Changed - -- Changed strict mode handling in OpenAI providers to use `tryEnforceStrictSchema` for safer schema enforcement with automatic fallback to non-strict mode -- Enhanced `enforceStrictSchema` to properly handle schemas with type arrays containing `object` (e.g., `type: ["object", "null"]`) - -### Fixed - -- Fixed `enforceStrictSchema` to properly handle malformed object schemas with required keys but missing properties -- Fixed `enforceStrictSchema` to correctly process nested object schemas within `anyOf`, `allOf`, and `oneOf` combinators - -## [13.3.1] - 2026-02-26 - -### Added - -- Added `topP`, `topK`, `minP`, `presencePenalty`, and `repetitionPenalty` options to `StreamOptions` for fine-grained control over model sampling behavior - -## [13.3.0] - 2026-02-26 - -### Changed - -- Allowed OAuth provider logins to supply a manual authorization code handler with a default prompt when none is provided - -## [13.2.0] - 2026-02-23 - -### Added - -- Added support for GitHub Copilot provider in strict mode for both openai-completions and openai-responses tool schemas - -### Fixed - -- Fixed tool descriptions being rejected when undefined by providing empty string fallback across all providers - -## [12.19.1] - 2026-02-22 - -### Added - -- Exported `isProviderRetryableError` function for detecting rate-limit and transient stream errors -- Support for retrying malformed JSON stream-envelope parse errors from Anthropic-compatible proxy endpoints - -### Changed - -- Expanded retry detection to include JSON parse errors (unterminated strings, unexpected end of input) in addition to rate-limit errors - -## [12.19.0] - 2026-02-22 - -### Added - -- Added GitLab Duo provider with support for Anthropic model, GPT-5, and other models via GitLab AI Gateway -- Added OAuth authentication for GitLab Duo with automatic token refresh and direct access caching -- Added 16 new GitLab Duo models including Anthropic model Opus/Sonnet/Haiku variants and GPT-5 series models -- Added `isOAuth` option to Anthropic provider to force OAuth bearer auth mode for proxy tokens -- Added `streamGitLabDuo` function to route requests through GitLab AI Gateway with direct access tokens -- Added `getGitLabDuoModels` function to retrieve available GitLab Duo model configurations -- Added `clearGitLabDuoDirectAccessCache` function to manually clear cached direct access tokens - -### Changed - -- Enhanced `getModelMapping()` to support both GitLab Duo alias IDs (e.g., `duo-chat-gpt-5-openai-code`) and canonical model IDs (e.g., `gpt-5-openai-code`) for improved model resolution flexibility -- Migrated `AuthCredentialStore` and `AuthStorage` into `@gajae-code/ai` as shared credential primitives for downstream packages -- Moved Anthropic auth helpers (`findAnthropicAuth`, `isOAuthToken`, `buildAnthropicSearchHeaders`, `buildAnthropicUrl`) into shared AI utilities for reuse across providers -- Replaced `CliAuthStorage` with `AuthCredentialStore` for improved credential management with multiple credentials per provider -- Updated models.json pricing for Anthropic model 3.5 Sonnet (input: 0.23→0.45, output: 3→2.2, added cache read: 0.225) and Anthropic model 3 Opus (input: 0.3→0.95) -- Moved `mapAnthropicToolChoice` function from gitlab-duo provider to stream module for broader reusability -- Enhanced HTTP status code extraction to handle string-formatted status codes in error objects - -### Removed - -- Removed `CliAuthStorage` class in favor of new `AuthCredentialStore` with enhanced functionality - -## [12.17.2] - 2026-02-21 - -### Added - -- Exported `getAntigravityUserAgent()` function for constructing Antigravity User-Agent headers - -### Changed - -- Updated default Antigravity version from 1.15.8 to 1.18.3 -- Unified User-Agent header generation across Antigravity API calls to use centralized `getAntigravityUserAgent()` function - -## [12.17.1] - 2026-02-21 - -### Added - -- Added new export paths for provider models via `./provider-models` and `./provider-models/*` -- Added new export paths for Cursor and OpenAI code provider providers via `./providers/cursor/gen/*` and `./providers/openai-code/*` -- Added new export paths for usage utilities via `./usage/*` -- Added new export paths for discovery and OAuth utilities via `./utils/discovery` and `./utils/oauth` with subpath exports - -### Changed - -- Simplified main export path to use wildcard pattern `./src/*.ts` for broader module access -- Updated `models.json` export to include TypeScript declaration file at `./src/models.json.d.ts` -- Reorganized package.json field ordering for improved readability - -## [12.17.0] - 2026-02-21 - -### Fixed - -- Cursor provider: bind `execHandlers` when passing handler methods to the exec protocol so handlers receive correct `this` context (fixes "undefined is not an object (evaluating 'this.options')" when using exec tools such as web search with Cursor) - -## [12.16.0] - 2026-02-21 - -### Added - -- Exported `readModelCache` and `writeModelCache` functions for direct SQLite-backed model cache access -- Added `` guidance marker as synthetic user message when assistant messages are aborted or errored, informing the model that tools may have partially executed -- Added support for Sonnet 4.6 models in adaptive thinking detection - -### Changed - -- Updated model cache schema version to support improved global model fallback resolution -- Improved GitHub Copilot model resolution to prefer provider-specific model definitions over global references when context window is larger, ensuring optimal model capabilities -- Migrated model cache from per-provider JSON files to unified SQLite database (models.db) for atomic cross-process access -- Renamed `cachePath` option to `cacheDbPath` in ModelManagerOptions to reflect database-backed storage -- Improved non-authoritative cache handling with 5-minute retry backoff instead of retrying on every startup -- Modified handling of aborted/errored assistant messages to preserve tool call structure instead of converting to text summaries, with synthetic 'aborted' tool results injected -- Updated tool call tracking to use status map (Resolved/Aborted) instead of separate sets for better handling of duplicate and aborted tool results - -## [12.15.0] - 2026-02-20 - -### Fixed - -- Improved error messages for OAuth token refresh failures by including detailed error information from the provider -- Separated rate limit and usage limit error handling to provide distinct user-friendly messages for ChatGPT rate limits vs subscription usage limits - -### Changed - -- Increased SDK retry attempts to 5 for OpenAI, Azure OpenAI, and Anthropic clients (was SDK default of 2) -- Changed 429 retry strategy for OpenAI code provider and Google Gemini CLI to use a 5-minute time budget when the server provides a retry delay, instead of a fixed attempt cap - -## [12.14.0] - 2026-02-19 - -### Added - -- Added `gemini-3.1-pro` model to opencode provider with text and image input support -- Added `trinity-large-preview-free` model to opencode provider -- Added `google/gemini-3.1-pro-preview` model to nanogpt provider -- Added `google/gemini-3.1-pro-preview` model to openrouter provider with text and image input support -- Added `gemini-3.1-pro` model to cursor provider -- Added optional `intent` field to `ToolCall` interface for harness-level intent metadata - -### Changed - -- Changed `big-pickle` model API from `openai-completions` to `anthropic-messages` -- Changed `big-pickle` model baseUrl from `https://opencode.ai/zen/v1` to `https://opencode.ai/zen` -- Changed `minimax-m2.5-free` model API from `openai-completions` to `anthropic-messages` -- Changed `minimax-m2.5-free` model baseUrl from `https://opencode.ai/zen/v1` to `https://opencode.ai/zen` - -### Fixed - -- Fixed tool argument validation to iteratively coerce nested JSON strings across multiple passes, enabling proper handling of deeply nested JSON-serialized objects and arrays - -## [12.13.0] - 2026-02-19 - -### Added - -- Added NanoGPT provider support with API-key login, dynamic model discovery from `https://nano-gpt.com/api/v1/models`, and text-model filtering for catalog/runtime discovery ([#111](https://github.com/can1357/gajae-code/issues/111)) - -## [12.12.3] - 2026-02-19 - -### Fixed - -- Fixed retry logic to recognize 'unable to connect' errors as transient failures - -## [12.11.3] - 2026-02-19 - -### Fixed - -- Fixed OpenAI code provider streaming to fail truncated responses that end without a terminal completion event, preventing partial outputs from being treated as successful completions. -- Fixed OpenAI code websocket append fallback by resetting stale turn-state/model-etag session metadata when request shape diverges from appendable history. - -## [12.11.1] - 2026-02-19 - -### Added - -- Added support for Anthropic model 4.6 Opus and Sonnet models via Cursor API -- Added support for Composer 1.5 model via Cursor API -- Added support for GPT-5.1 OpenAI code Mini and GPT-5.1 High models via Cursor API -- Added support for GPT-5.2 and GPT-5.3 OpenAI code variants (Fast, High, Low, Extra High) via Cursor API -- Added HTTP/2 transport support for Cursor API requests (required by Cursor API) - -### Changed - -- Updated pricing for Anthropic model 3.5 Sonnet model -- Updated Anthropic model 3.5 Sonnet context window from 262,144 to 131,072 tokens -- Simplified Cursor model display names by removing '(Cursor)' suffix -- Changed Cursor API timeout from 15 seconds to 5 seconds -- Switched Cursor API transport from HTTP/1.1 to HTTP/2 - -## [12.11.0] - 2026-02-19 - -### Added - -- Added `priority` field to Model interface for provider-assigned model prioritization -- Added `CatalogDiscoveryConfig` interface to standardize catalog discovery configuration across providers -- Added type guards `isCatalogDescriptor()` and `allowsUnauthenticatedCatalogDiscovery()` for safer descriptor handling -- Added `DEFAULT_MODEL_PER_PROVIDER` export from descriptors module for centralized default model management -- Support for 11 new AI providers: Cloudflare AI Gateway, Hugging Face Inference, LiteLLM, Moonshot, NVIDIA, Ollama, Qianfan, Qwen Portal, Together, Venice, vLLM, and Xiaomi MiMo -- Login flows for new providers with API key validation and OAuth token support -- Extended `KnownProvider` type to include all newly supported providers -- API key environment variable mappings for all new providers in service provider map -- Model discovery and configuration for Cloudflare AI Gateway, Hugging Face, LiteLLM, Moonshot, NVIDIA, Ollama, Qianfan, Qwen Portal, Together, Venice, vLLM, and Xiaomi MiMo - -### Changed - -- Refactored OAuth credential retrieval to simplify storage lifecycle management in model generation script -- Parallelized special model discovery sources (Antigravity, OpenAI code) for improved generation performance -- Reorganized model JSON structure to place `contextWindow` and `maxTokens` before `compat` field for consistency -- Added `priority` field to OpenAI code provider models for provider-assigned model prioritization -- Refactored provider descriptors to use helper functions (`descriptor`, `catalog`, `catalogDescriptor`) for reduced code duplication -- Refactored models.dev provider descriptors to use helper functions (`simpleModelsDevDescriptor`, `openAiCompletionsDescriptor`, `anthropicMessagesDescriptor`) for improved maintainability -- Unified provider descriptors into single source of truth in `descriptors.ts` for both runtime model discovery and catalog generation, improving maintainability -- Refactored model generation script to use declarative `CatalogProviderDescriptor` interface instead of separate descriptor types, reducing code duplication -- Reorganized models.dev provider descriptors into logical groups (Bedrock, Core, Coding Plans, Specialized) for better code organization -- Simplified API resolution for OpenCode and GitHub Copilot providers using rule-based matching instead of inline conditionals -- Refactored model generation script to use declarative provider descriptors instead of inline provider-specific logic, improving maintainability and reducing code duplication -- Extracted model post-processing policies (cache pricing corrections, context window normalization) into dedicated `model-policies.ts` module for better testability and clarity -- Removed static bundled models for Ollama and vLLM from `models.json` to rely on dynamic discovery instead, reducing static catalog size -- Updated `OAuthProvider` type to include new provider identifiers -- Expanded model registry (models.json) with thousands of new model entries across all new providers -- Modified environment variable resolution to use `$pickenv` for providers with multiple possible env var names -- Updated README documentation to list all newly supported providers and their authentication requirements - -## [12.10.1] - 2026-02-18 - -- Added Synthetic provider -- Added API-key login helpers for Synthetic and Cerebras providers - -## [12.10.0] - 2026-02-18 - -### Breaking Changes - -- Renamed public API functions: `getModel()` → `getBundledModel()`, `getModels()` → `getBundledModels()`, `getProviders()` → `getBundledProviders()` - -### Added - -- Exported `ModelManager` API for runtime-aware model resolution with dynamic endpoint discovery -- Exported provider-specific model manager configuration helpers for Google, OpenAI-compatible, OpenAI code, and Cursor providers -- Exported discovery utilities for fetching models from Antigravity, OpenAI code, Cursor, Gemini, and OpenAI-compatible endpoints -- Added `createModelManager()` function to manage bundled and dynamically discovered models with configurable refresh strategies -- Added support for on-disk model caching with TTL-based invalidation -- Added `resolveProviderModels()` function for runtime model resolution across multiple providers -- Added EU cross-region inference variants for Anthropic model Haiku 3.5 on Bedrock -- Added Anthropic model Sonnet 4.6 and Anthropic model Sonnet 4.6 Thinking models to Antigravity provider -- Added GLM-5 Free model via OpenCode provider -- Added GLM-4.7-FlashX model via ZAI provider -- Added MiniMax-M2.5-highspeed model across multiple providers (minimax-code, minimax-code-cn, minimax, minimax-cn) -- Added Anthropic model Sonnet 4.6 model to OpenRouter provider -- Added Qwen 3.5 Plus model to Vercel AI Gateway provider -- Added Anthropic model Sonnet 4.6 model to Vercel AI Gateway provider - -### Changed - -- Renamed `getModel()` to `getBundledModel()` to clarify it returns compile-time bundled models only -- Renamed `getModels()` to `getBundledModels()` for consistency -- Renamed `getProviders()` to `getBundledProviders()` for consistency -- Refactored model generation script to use modular discovery functions instead of monolithic provider-specific logic -- Updated models.json with new model entries and pricing updates across multiple providers -- Updated pricing for deepseek/deepseek-v3 model on OpenRouter -- Updated maxTokens from 65536 to 4096 for deepseek/deepseek-v3 on OpenRouter -- Updated pricing and maxTokens for mistralai/mistral-large-2411 on OpenRouter -- Updated pricing for qwen/qwen-max on Together AI -- Updated pricing for qwen/qwen-vl-plus on Together AI -- Updated pricing for qwen/qwen-plus on Together AI -- Updated pricing for qwen/qwen-turbo on Together AI -- Expanded EU cross-region inference variant support to all Anthropic model models on Bedrock (previously limited to Haiku, Sonnet, and Opus 4.5) - -## [12.8.0] - 2026-02-16 - -### Added - -- Added `contextPromotionTarget` model property to specify preferred fallback model when context promotion is triggered -- Added automatic context promotion target assignment for Spark models to their base model equivalents -- Added support for Brave search provider with BRAVE_API_KEY environment variable - -### Changed - -- Updated Qwen model context window and max token limits for improved accuracy - -## [12.7.0] - 2026-02-16 - -### Added - -- Added DeepSeek-V3.2 model support via Amazon Bedrock -- Added GLM-5 model support via OpenCode -- Added MiniMax M2.5 model support via OpenCode - -### Changed - -- Updated GLM-4.5, GLM-4.5-Air, GLM-4.5-Flash, GLM-4.5V, GLM-4.6, GLM-4.6V, GLM-4.7, GLM-4.7-Flash, and GLM-5 models to use anthropic-messages API instead of openai-completions -- Updated GLM models base URL from https://api.z.ai/api/coding/paas/v4 to https://api.z.ai/api/anthropic -- Updated pricing for multiple models including Mistral, Moonshot, and Qwen variants -- Updated context window and max tokens for several models to reflect accurate specifications - -### Removed - -- Removed compat field with supportsDeveloperRole and thinkingFormat properties from GLM models - -## [12.6.0] - 2026-02-16 - -### Added - -- Added source-scoped custom API and OAuth provider registration helpers for extension-defined providers. - -### Changed - -- Expanded `Api` typing to allow extension-defined API identifiers while preserving built-in API exhaustiveness checks. - -### Fixed - -- Fixed custom API registration to reject built-in API identifiers and prevent accidental provider overrides. - -## [12.2.0] - 2026-02-13 - -### Added - -- Added automatic retry logic for WebSocket stream closures before response completion, with configurable retry budget to improve reliability on flaky connections -- Added `providerSessionState` option to enable provider-scoped mutable state persistence across agent turns -- Added WebSocket retry logic with configurable retry budget and delay via `PI_OPENAI_CODE_WEBSOCKET_RETRY_BUDGET` and `PI_OPENAI_CODE_WEBSOCKET_RETRY_DELAY_MS` environment variables -- Added WebSocket idle timeout detection via `PI_OPENAI_CODE_WEBSOCKET_IDLE_TIMEOUT_MS` environment variable to fail stalled connections -- Added WebSocket v2 beta header support via `PI_OPENAI_CODE_WEBSOCKET_V2` environment variable for newer OpenAI API versions -- Added WebSocket handshake header capture to extract and replay session metadata (turn state, models etag, reasoning flags) across SSE fallback requests -- Added `preferWebsockets` option to enable WebSocket transport for OpenAI code provider responses when supported -- Added `prewarmOpenAIOpenAI codeResponses()` function to establish and reuse WebSocket connections across multiple requests -- Added `getOpenAIOpenAI codeTransportDetails()` function to inspect transport layer details including WebSocket status and fallback information -- Added `getProviderDetails()` function to retrieve formatted provider configuration and transport information -- Added automatic fallback from WebSocket to SSE when connection fails, with transparent retry logic -- Added session state management to reuse WebSocket connections and enable request appending across turns -- Added support for x-openai-code-turn-state header to maintain conversation state across SSE requests - -### Changed - -- Changed WebSocket session state storage from global maps to provider-scoped session state for multi-agent isolation -- Changed WebSocket connection initialization to accept idle timeout configuration and handshake header callbacks -- Changed WebSocket error handling to use standardized transport error messages with `OpenAI code websocket transport error` prefix -- Changed WebSocket retry behavior to retry transient failures before activating sticky fallback, improving reliability on flaky connections -- Changed OpenAI code provider model configuration to prefer WebSocket transport by default with `preferWebsockets: true` -- Changed header handling to use appropriate OpenAI-Beta header values for WebSocket vs SSE transports -- Perplexity OAuth token refresh now uses JWT expiry extraction instead of Socket.IO RPC, improving reliability when server is unreachable -- Removed Socket.IO client implementation for Perplexity token refresh; tokens are now validated using embedded JWT expiry claims - -### Removed - -- Removed `refreshPerplexityToken` export; token refresh is now handled internally via JWT expiry detection - -### Fixed - -- Fixed WebSocket stream retry logic to properly handle mid-stream connection closures and retry before falling back to SSE transport -- Fixed `preferWebsockets` option handling to correctly respect explicit `false` values when determining transport preference -- Fixed WebSocket append state not being reset after aborted requests, preventing stale state from affecting subsequent turns -- Fixed WebSocket append state not being reset after stream errors, preventing failed append attempts from blocking future requests -- Fixed OpenAI code model context window metadata to use 272000 input tokens (instead of 400000 total budget) for non-Spark OpenAI code variants - -## [12.0.0] - 2026-02-12 - -### Added - -- Added GPT-5.3 OpenAI code Spark model with 128K context window and extended reasoning capabilities -- Added MiniMax M2.5 and M2.5 Lightning models via OpenAI-compatible API (minimax-code provider) -- Added MiniMax M2.5 and M2.5 Lightning models via OpenAI-compatible API (minimax-code-cn provider for China region) -- Added MiniMax M2.5 and M2.5 Lightning models via Anthropic API (minimax and minimax-cn providers) -- Added Llama 3.1 8B model via Cerebras API -- Added MiniMax M2.5 model via OpenRouter -- Added MiniMax M2.5 model via Vercel AI Gateway -- Added MiniMax M2.5 Free model via OpenCode -- Added Qwen3 VL 32B Instruct multimodal model via OpenRouter - -### Changed - -- Updated Z.ai GLM-5 pricing and context window configuration on OpenRouter -- Updated Qwen3 Max Thinking max tokens from 32768 to 65536 on OpenRouter -- Updated OpenAI GPT-5 Image Mini pricing on OpenRouter -- Updated OpenAI GPT-5 Pro pricing and context window on OpenRouter -- Updated OpenAI o4-mini pricing and context window on OpenRouter -- Updated Anthropic model Opus 4.5 Thinking model name formatting (removed parentheses) -- Updated Anthropic model Opus 4.6 Thinking model name formatting (removed parentheses) -- Updated Anthropic model Sonnet 4.5 Thinking model name formatting (removed parentheses) -- Updated Gemini 2.5 Flash Thinking model name formatting (removed parentheses) -- Updated Gemini 3 Pro High and Low model name formatting (removed parentheses) -- Updated GPT-OSS 120B Medium model name formatting (removed parentheses) and context window to 131072 - -### Removed - -- Removed GLM-5 model from Z.ai provider -- Removed Trinity Large Preview Free model from OpenCode provider -- Removed MiniMax M2.1 Free model from OpenCode provider -- Removed deprecated Anthropic model entries: `anthropic-model-3-5-haiku-latest`, `anthropic-model-3-5-haiku-20241022`, `anthropic-model-3-7-sonnet-20250219`, `anthropic-model-3-7-sonnet-latest`, `anthropic-model-3-opus-20240229`, `anthropic-model-3-sonnet-20240229` ([#33](https://github.com/can1357/gajae-code/issues/33)) - -### Fixed - -- Added deprecation filter in model generation script to prevent re-adding deprecated Anthropic models ([#33](https://github.com/can1357/gajae-code/issues/33)) - -## [11.14.1] - 2026-02-12 - -### Added - -- Added prompt-caching-scope-2026-01-05 beta feature support - -### Changed - -- Updated Anthropic Code version header to 2.1.39 -- Updated runtime version header to v24.13.1 and package version to 0.73.0 -- Increased request timeout from 60s to 600s -- Reordered Accept-Encoding header values for compression preference -- Updated OAuth authorization and token endpoints to use platform.anthropic-model.com -- Expanded OAuth scopes to include user:sessions:anthropic-model_code and user:mcp_servers - -### Removed - -- Removed anthropic-model-code-20250219 beta feature from default models -- Removed fine-grained-tool-streaming-2025-05-14 beta feature - -## [11.13.1] - 2026-02-12 - -### Added - -- Added Perplexity (Pro/Max) OAuth login support via native macOS app extraction or email OTP authentication -- Added `loginPerplexity` and `refreshPerplexityToken` functions for Perplexity account integration -- Added Socket.IO v4 client implementation for authenticated WebSocket communication with Perplexity API - -## [11.12.0] - 2026-02-11 - -### Changed - -- Increased maximum retry attempts for OpenAI code requests from 2 to 5 to improve reliability on transient failures - -### Fixed - -- Fixed tool result content handling in Anthropic provider to provide fallback error message when content is empty -- Improved retry delay calculation to parse delay values from error response bodies (e.g., 'Please try again in 225ms') - -## [11.11.0] - 2026-02-10 - -### Breaking Changes - -- Replaced `./models.generated` export with `./models.json` - update imports from `import { MODELS } from './models.generated'` to `import MODELS from './models.json' with { type: 'json' }` - -### Added - -- Added TypeScript type declarations for `models.json` to enable proper type inference when importing the JSON file - -### Changed - -- Updated available models in google-antigravity provider with new model variants and updated context window/token limits -- Simplified type signatures for `getModel()` and `getModels()` functions for improved usability -- Changed models export from TypeScript module to JSON format for improved performance and reduced bundle size -- Updated `@anthropic-ai/sdk` dependency from ^0.72.1 to ^0.74.0 - -## [11.10.0] - 2026-02-10 - -### Added - -- Added support for Kimi K2, K2 Turbo Preview, and K2.5 models with reasoning capabilities - -### Fixed - -- Fixed Anthropic model Opus 4.6 context window to 200K across all providers (was incorrectly set to 1M) -- Fixed Anthropic model Sonnet 4 context window to 200K across multiple providers (was incorrectly set to 1M) - -## [11.8.0] - 2026-02-10 - -### Added - -- Added `auto` model alias for OpenRouter with automatic model routing -- Added `openrouter/aurora-alpha` model with reasoning capabilities -- Added `qwen/qwen3-max-thinking` model with extended context window support -- Added support for `parametersJsonSchema` in Google Gemini tool definitions for improved JSON Schema compatibility - -### Changed - -- Updated Anthropic model Sonnet 4 and 4.5 context window from 1M to 200K tokens to reflect actual limits -- Updated Anthropic model Opus 4.6 context window to 200K tokens across providers -- Changed default `reasoningSummary` for OpenAI code provider from `undefined` to `auto` -- Updated Qwen model pricing and context window specifications across multiple variants -- Modified Google Gemini CLI system instruction to use compact format -- Changed tool parameter handling for Anthropic model models on Google Cloud Code Assist to use legacy `parameters` field for API translation - -### Removed - -- Removed `glm-4.7-free` model from OpenCode provider -- Removed `qwen3-coder` model from OpenCode provider -- Removed `ai21/jamba-mini-1.7` model from OpenRouter -- Removed `stepfun-ai/step3` model from OpenRouter -- Removed duplicate test suite for Google Antigravity Provider with `gemini-3-pro-high` - -### Fixed - -- Fixed Amazon Bedrock HTTP/1.1 handler import to use direct import instead of dynamic import -- Fixed Qwen model context window and pricing inconsistencies across OpenRouter -- Fixed cache read pricing for multiple Qwen models -- Fixed OpenAI code provider reasoning effort clamping for `gpt-5.3-openai-code` model - -## [11.7.1] - 2026-02-07 - -### Added - -- Added Anthropic model Opus 4.6 Thinking model for Antigravity provider -- Added Gemini 2.5 Flash, Gemini 2.5 Flash Thinking, and Gemini 2.5 Pro models for Antigravity provider -- Added Pony Alpha model via OpenRouter - -### Changed - -- Updated Antigravity models to use free tier pricing (0 cost) across all models -- Changed Antigravity model fetching to dynamically load from API when credentials are available, with hardcoded fallback models -- Updated Anthropic model Opus 4.6 context window from 200,000 to 1,000,000 tokens across Bedrock regions -- Updated Anthropic model Opus 4.6 cache pricing from 1.5/18.75 to 0.5/6.25 for EU and US regions -- Updated Antigravity model pricing to free tier (0 cost) for Anthropic model Opus 4.5 Thinking, Anthropic model Sonnet 4.5 Thinking, Gemini 3 Flash, Gemini 3 Pro variants, and GPT-OSS 120B Medium -- Updated GPT-OSS 120B Medium reasoning capability from false to true -- Updated Gemini 3 Flash max tokens from 65,535 to 65,536 -- Updated Anthropic model Opus 4.5 Thinking display name formatting to include parentheses -- Updated various model pricing and context window parameters across OpenRouter and other providers -- Removed Anthropic model Opus 4.6 20260205 model from Anthropic provider - -### Fixed - -- Fixed Anthropic model Opus 4.6 model ID format by removing version suffix (:0) in Bedrock configurations -- Fixed Llama 3.1 70B Instruct pricing and context window parameters -- Fixed Mistral model pricing and cache read costs -- Fixed DeepSeek and other model pricing inconsistencies -- Fixed Qwen model pricing and token limits -- Fixed GLM model pricing and context window specifications - -## [11.6.0] - 2026-02-07 - -### Added - -- Added Bedrock cache retention support with `PI_CACHE_RETENTION` env var and per-request `cacheRetention` option -- Added adaptive thinking support for Bedrock Opus 4.6+ models -- Added `AWS_BEDROCK_SKIP_AUTH` env var to support unauthenticated Bedrock proxies -- Added `AWS_BEDROCK_FORCE_HTTP1` env var to force HTTP/1.1 for custom Bedrock endpoints -- Re-exported `Static`, `TSchema`, and `Type` from `@sinclair/typebox` - -### Fixed - -- Fixed OpenAI Responses storage disabled by default (`store: false`) -- Fixed reasoning effort clamping for gpt-5.3 OpenAI code models (minimal -> low) -- Fixed Bedrock `supportsPromptCaching` to also check model cost fields - -## [11.5.1] - 2026-02-07 - -### Fixed - -- Fixed schema normalization to handle array-valued `type` fields by converting them to a single type with nullable flag for Google provider compatibility - -## [11.3.0] - 2026-02-06 - -### Added - -- Added `cacheRetention` option to control prompt cache retention preference ('none', 'short', 'long') across providers -- Added `maxRetryDelayMs` option to cap server-requested retry delays and fail fast when delays exceed the limit -- Added `effort` option for Anthropic Opus 4.6+ models to control adaptive thinking effort levels ('low', 'medium', 'high', 'max') -- Added support for Anthropic Opus 4.6+ adaptive thinking mode that lets Anthropic model decide when and how much to think -- Added `PI_AI_ANTIGRAVITY_VERSION` environment variable to customize Antigravity sandbox endpoint version -- Exported `convertAnthropicMessages` function for converting message formats to Anthropic API -- Automatic fallback for Anthropic assistant-prefill requests: appends synthetic user "Continue." message when conversation ends with assistant turn to maintain API compatibility - -### Changed - -- Changed `supportsXhigh()` to include GPT-5.1 OpenAI code Max and broaden Anthropic support to all Anthropic Messages API models with budget-based thinking capability -- Changed Anthropic thinking mode to use adaptive thinking for Opus 4.6+ models instead of budget-based thinking -- Changed `supportsXhigh()` to support GPT-5.2/5.3 and Anthropic Opus 4.6+ models with adaptive thinking -- Changed prompt caching to respect `cacheRetention` option and support TTL configuration for Anthropic -- Changed OpenAI tool definitions to conditionally include `strict` field only when provider supports it -- Changed Qwen model support to use `enable_thinking` boolean parameter instead of OpenAI-style reasoning_effort - -### Fixed - -- Fixed indentation and formatting in `convertAnthropicMessages` function -- Fixed handling of conversations ending with assistant messages on Anthropic-routed models that reject assistant prefill requests - -## [11.2.3] - 2026-02-05 - -### Added - -- Added Anthropic model Opus 4.6 model support across multiple providers (Anthropic, Amazon Bedrock, GitHub Copilot, OpenRouter, OpenCode, Vercel AI Gateway) -- Added GPT-5.3 OpenAI code model support for OpenAI -- Added `readSseJson` utility import for improved SSE stream handling in Google Gemini CLI provider - -### Changed - -- Updated Google Gemini CLI provider to use `readSseJson` utility for cleaner SSE stream parsing -- Updated pricing for Llama 3.1 405B model on Vercel AI Gateway (cache read rate adjusted) -- Updated Llama 3.1 405B context window and max tokens on Vercel AI Gateway (256000 for both) - -### Removed - -- Removed Kimi K2, Kimi K2 Turbo Preview, and Kimi K2.5 models -- Removed Deep Cogito Cogito V2 Preview models from OpenRouter - -## [11.0.0] - 2026-02-05 - -### Changed - -- Replaced direct `Bun.env` access with `getEnv()` utility from `@gajae-code/utils` for consistent environment variable handling across all providers -- Updated environment variable names from `GJC_*` prefix to `PI_*` prefix for consistency (e.g., `GJC_CODING_AGENT_DIR` → `PI_CODING_AGENT_DIR`) - -### Removed - -- Removed automatic environment variable migration from `PI_*` to `GJC_*` prefixes via `migrate-env.ts` module - -## [10.5.0] - 2026-02-04 - -### Changed - -- Updated @anthropic-ai/sdk to ^0.72.1 -- Updated @aws-sdk/client-bedrock-runtime to ^3.982.0 -- Updated @google/genai to ^1.39.0 -- Updated @smithy/node-http-handler to ^4.4.9 -- Updated openai to ^6.17.0 -- Updated @types/node to ^25.2.0 - -### Removed - -- Removed proxy-agent dependency -- Removed undici dependency - -## [9.4.0] - 2026-01-31 - -### Added - -- Added `getEnv()` function to retrieve environment variables from Bun.env, cwd/.env, or ~/.env -- Added support for reading .env files from home directory and current working directory -- Added support for `exa` and `perplexity` as known providers in `getEnvApiKey()` - -### Changed - -- Changed `getEnvApiKey()` to check Bun.env, cwd/.env, and ~/.env files in order of precedence -- Refactored provider API key resolution to use a declarative service provider map - -## [9.2.2] - 2026-01-31 - -### Added - -- Added OpenCode Zen provider with API key authentication for accessing multiple AI models -- Added 4 new free models via OpenCode: glm-4.7-free, kimi-k2.5-free, minimax-m2.1-free, trinity-large-preview-free -- Added glm-4.7-flash model via Zai provider -- Added Kimi Code provider with OpenAI and Anthropic API format support -- Added prompt cache retention support with PI_CACHE_RETENTION env var -- Added overflow patterns for Bedrock, MiniMax, Kimi; reclassified 429 as rate limiting -- Added profile endpoint integration to resolve user emails with 24-hour caching -- Added automatic token refresh for expired Kimi OAuth credentials -- Added Kimi Code OAuth handler with device authorization flow -- Added Kimi Code usage provider with quota caching -- Added 4 new Kimi Code models (kimi-for-coding, kimi-k2, kimi-k2-turbo-preview, kimi-k2.5) -- Added Kimi Code provider integration with OAuth and token management -- Added tool-choice utility for mapping unified ToolChoice to provider-specific formats -- Added ToolChoice type for controlling tool selection (auto, none, any, required, function) - -### Changed - -- Updated Kimi K2.5 cache read pricing from 0.1 to 0.08 -- Updated MiniMax M2 pricing: input 0.6→0.6, output 3→3, cache read 0.1→0.09999999999999999 -- Updated OpenRouter DeepSeek V3.1 pricing and max tokens: input 0.6→0.5, output 3→2.8, maxTokens 262144→4096 -- Updated OpenRouter DeepSeek R1 pricing and max tokens: input 0.06→0.049999999999999996, output 0.24→0.19999999999999998, maxTokens 262144→4096 -- Updated Anthropic Anthropic model 3.5 Sonnet max tokens from 256000 to 65536 on OpenRouter -- Updated Vercel AI Gateway Anthropic model 3.5 Sonnet cache read pricing from 0.125 to 0.13 -- Updated Vercel AI Gateway Anthropic model 3.5 Sonnet New cache read pricing from 0.125 to 0.13 -- Updated Vercel AI Gateway GPT-5.2 cache read pricing from 0.175 to 0.18 and display name to 'GPT 5.2' -- Updated Zai GLM-4.6 cache read pricing from 0.024999999999999998 to 0.03 -- Updated Zai Qwen QwQ max tokens from 66000 to 16384 -- Added delta event batching and throttling (50ms, 20 updates/sec max) to AssistantMessageEventStream -- Updated MiniMax-M2 pricing: input 1.2→0.6, output 1.2→3, cacheRead 0.6→0.1 - -### Removed - -- Removed OpenRouter google/gemini-2.0-flash-exp:free model -- Removed Vercel AI Gateway stealth/sonoma-dusk-alpha and stealth/sonoma-sky-alpha models - -### Fixed - -- Fixed rate limit issues with Kimi models by always sending max_tokens -- Added handling for sensitive stop reason from Anthropic API safety filters -- Added optional chaining for safer JSON schema property access in Anthropic provider - -## [8.6.0] - 2026-01-27 - -### Changed - -- Replaced JSON5 dependency with Bun.JSON5 parsing - -### Fixed - -- Filtered empty user text blocks for OpenAI-compatible completions and normalized Kimi reasoning_content for OpenRouter tool-call messages - -## [8.4.0] - 2026-01-25 - -### Added - -- Added Azure OpenAI Responses provider with deployment mapping and resource-based base URL support - -### Changed - -- Added OpenRouter routing preferences for OpenAI-compatible completions - -### Fixed - -- Defaulted Google tool call arguments to empty objects when providers omit args -- Guarded Responses/OpenAI code streaming deltas against missing content parts and handled arguments.done events - -## [8.2.1] - 2026-01-24 - -### Fixed - -- Fixed handling of streaming function call arguments in OpenAI responses to properly parse arguments when sent via `response.function_call_arguments.done` events - -## [8.2.0] - 2026-01-24 - -### Changed - -- Migrated node module imports from named to namespace imports across all packages for consistency with project guidelines - -## [8.0.0] - 2026-01-23 - -### Fixed - -- Fixed OpenAI Responses API 400 error "function_call without required reasoning item" when switching between models (same provider, different model). The fix omits the `id` field for function_calls from different models to avoid triggering OpenAI's reasoning/function_call pairing validation -- Fixed 400 errors when reading multiple images via GitHub Copilot's Anthropic model models. Anthropic model requires tool_use -> tool_result adjacency with no user messages interleaved. Images from consecutive tool results are now batched into a single user message - -## [7.0.0] - 2026-01-21 - -### Added - -- Added usage tracking system with normalized schema for provider quota/limit endpoints -- Added Anthropic model usage provider for 5-hour and 7-day quota windows -- Added GitHub Copilot usage provider for chat, completions, and premium requests -- Added Google Antigravity usage provider for model quota tracking -- Added Google Gemini CLI usage provider for tier-based quota monitoring -- Added OpenAI code provider usage provider for primary and secondary rate limit windows -- Added ZAI usage provider for token and request quota tracking - -### Changed - -- Updated Anthropic model usage provider to extract account identifiers from response headers -- Updated GitHub Copilot usage provider to include account identifiers in usage reports -- Updated Google Gemini CLI usage provider to handle missing reset time gracefully - -### Fixed - -- Fixed GitHub Copilot usage provider to simplify token handling and improve reliability -- Fixed GitHub Copilot usage provider to properly resolve account identifiers for OAuth credentials -- Fixed API validation errors when sending empty user messages (resume with `.`) across all providers: -- Google Cloud Code Assist (google-shared.ts) -- OpenAI Responses API (openai-responses.ts) -- OpenAI code provider Responses API (openai-code-responses.ts) -- Cursor (cursor.ts) -- Amazon Bedrock (amazon-bedrock.ts) -- Clamped OpenAI code provider reasoning effort "minimal" to "low" for gpt-5.2 models to avoid API errors -- Fixed GitHub Copilot usage fallback to internal quota endpoints when billing usage is unavailable -- Fixed GitHub Copilot usage metadata to include account identifiers for report dedupe -- Fixed Anthropic usage metadata extraction to include account identifiers when provided by the usage endpoint -- Fixed Gemini CLI usage windows to consistently label quota windows for display suppression - -## [6.9.69] - 2026-01-21 - -### Added - -- Added duration and time-to-first-token (ttft) metrics to all AI provider responses -- Added performance tracking for streaming responses across all providers - -## [6.9.0] - 2026-01-21 - -### Removed - -- Removed openai-code provider exports from main package index -- Removed openai-code prompt utilities and moved them inline -- Removed vitest configuration file - -## [6.8.4] - 2026-01-21 - -### Changed - -- Updated prompt caching strategy to follow Anthropic's recommended hierarchy -- Fixed token usage tracking to properly handle cumulative output tokens from message_delta events -- Improved message validation to filter out empty or invalid content blocks -- Increased OAuth callback timeout from 120 seconds to 120,000 milliseconds - -## [6.8.3] - 2026-01-21 - -### Added - -- Added `headers` option to all providers for custom request headers -- Added `onPayload` hook to observe provider request payloads before sending -- Added `strictResponsesPairing` option for Azure OpenAI Responses API compatibility -- Added `originator` option to `loginOpenAIOpenAI code` for custom OAuth flow identification -- Added per-request `headers` and `onPayload` hooks to `StreamOptions` -- Added `originator` option to `loginOpenAIOpenAI code` - -### Fixed - -- Fixed tool call ID normalization for OpenAI Responses API cross-provider handoffs -- Skipped errored or aborted assistant messages during cross-provider transforms -- Detected AWS ECS/IRSA credentials for Bedrock authentication checks -- Detected AWS ECS/IRSA credentials for Bedrock authentication checks -- Normalized Responses API tool call IDs during handoffs and refreshed handoff tests -- Enforced strict tool call/result pairing for Azure OpenAI Responses API -- Skipped errored or aborted assistant messages during cross-provider transforms - -### Security - -- Enhanced AWS credential detection to support ECS task roles and IRSA web identity tokens - -## [6.8.2] - 2026-01-21 - -### Fixed - -- Improved error handling for aborted requests in Google Gemini CLI provider -- Enhanced OAuth callback flow to handle manual input errors gracefully -- Fixed login cancellation handling in GitHub Copilot OAuth flow -- Removed fallback manual input from OpenAI code provider OAuth flow - -### Security - -- Hardened database file permissions to prevent credential leakage -- Set secure directory permissions (0o700) for credential storage - -## [6.8.0] - 2026-01-20 - -### Added - -- Added `logout` command to CLI for OAuth provider logout -- Added `status` command to show logged-in providers and token expiry -- Added persistent credential storage using SQLite database -- Added OAuth callback server with automatic port fallback -- Added HTML callback page with success/error states -- Added support for Cursor OAuth provider - -### Changed - -- Updated Promise.withResolvers usage for better compatibility -- Replaced custom sleep implementations with Bun.sleep and abortableSleep -- Simplified SSE stream parsing using readLines utility -- Updated test framework from vitest to bun:test -- Replaced temp directory creation with TempDir API -- Changed credential storage from auth.json to ~/.gjc/agent/agent.db -- Changed CLI command examples from npx to bunx -- Refactored OAuth flows to use common callback server base class -- Updated OAuth provider interfaces to use controller pattern - -### Fixed - -- Fixed OAuth callback handling with improved error states -- Fixed token refresh for all OAuth providers - -## [6.7.670] - 2026-01-19 - -### Changed - -- Updated Anthropic Code compatibility headers and version -- Improved OAuth token handling with proper state generation -- Enhanced cache control for tool and user message blocks -- Simplified tool name prefixing for OAuth traffic -- Updated PKCE verifier generation for better security - -## [5.7.67] - 2026-01-18 - -### Fixed - -- Added error handling for unknown OAuth providers - -## [5.6.77] - 2026-01-18 - -### Fixed - -- Prevented duplicate tool results for errored or aborted messages when results already exist - -## [5.6.7] - 2026-01-18 - -### Added - -- Added automatic retry logic for OpenAI code provider responses with configurable delay and max retries -- Added tool call ID sanitization for Amazon Bedrock to ensure valid characters -- Added tool argument validation that coerces JSON-encoded strings for expected non-string types - -### Changed - -- Updated environment variable prefix from PI* to GJC* for better consistency -- Added automatic migration for legacy PI* environment variables to GJC* equivalents -- Adjusted Bedrock Anthropic model thinking budgets to reserve output tokens when maxTokens is too low - -### Fixed - -- Fixed orphaned tool call handling to ensure proper tool_use/tool_result pairing for all assistant messages -- Fixed message transformation to insert synthetic tool results for errored/aborted assistant messages with tool calls -- Fixed tool prefix handling in Anthropic model provider to use case-insensitive comparison -- Fixed Gemini 3 model handling to treat unsigned tool calls as context-only with anti-mimicry context -- Fixed message transformation to filter out empty error messages from conversation history -- Fixed OpenAI completions provider compatibility detection to use provider metadata -- Fixed OpenAI completions provider to avoid using developer role for opencode provider -- Fixed orphaned tool call handling to skip synthetic results for errored assistant messages - -## [5.5.0] - 2026-01-18 - -### Changed - -- Updated User-Agent header from 'opencode' to 'pi' for OpenAI code provider requests -- Simplified OpenAI code system prompt instructions -- Removed bridge text override from OpenAI code system prompt builder - -## [5.3.0] - 2026-01-15 - -### Changed - -- Replaced detailed OpenAI code system instructions with simplified pi assistant instructions -- Updated internal documentation references to use pi-internal:// protocol - -## [5.1.0] - 2026-01-14 - -### Added - -- Added Amazon Bedrock provider with `bedrock-converse-stream` API for Anthropic model models via AWS -- Added MiniMax provider with OpenAI-compatible API -- Added EU cross-region inference model variants for Anthropic model models on Bedrock - -### Fixed - -- Fixed Gemini CLI provider retries with proper error handling, retry delays from headers, and empty stream retry logic -- Fixed numbered list items showing "1." for all items when code blocks break list continuity (via `start` property) - -## [5.0.0] - 2026-01-12 - -### Added - -- Added support for `xhigh` thinking level in `thinkingBudgets` configuration - -### Changed - -- Changed Anthropic thinking token budgets: minimal (1024→3072), low (2048→6144), medium (8192→12288), high (16384→24576) -- Changed Google thinking token budgets: minimal (1024), low (2048→4096), medium (8192), high (16384), xhigh (24575) -- Changed `supportsXhigh()` to return true for all Anthropic models - -## [4.6.0] - 2026-01-12 - -### Fixed - -- Fixed incorrect classification of thought signatures in Google Gemini responses—thought signatures are now correctly treated as metadata rather than thinking content indicators -- Fixed thought signature handling in Google Gemini CLI and Vertex AI streaming to properly preserve signatures across text deltas -- Fixed Google schema sanitization stripping property names that match schema keywords (e.g., "pattern", "format") from tool definitions - -## [4.4.9] - 2026-01-12 - -### Fixed - -- Fixed Google provider schema sanitization to strip additional unsupported JSON Schema fields (patternProperties, additionalProperties, min/max constraints, pattern, format) - -## [4.4.8] - 2026-01-12 - -### Fixed - -- Fixed Google provider schema sanitization to properly collapse `anyOf`/`oneOf` with const values into enum arrays -- Fixed const-to-enum conversion to infer type from the const value when type is not specified - -## [4.4.6] - 2026-01-11 - -### Fixed - -- Fixed tool parameter schema sanitization to only apply Google-specific transformations for Gemini models, preserving original schemas for other model types - -## [4.4.5] - 2026-01-11 - -### Changed - -- Exported `sanitizeSchemaForGoogle` utility function for external use - -### Fixed - -- Fixed Google provider schema sanitization to strip additional unsupported JSON Schema fields ($schema, $ref, $defs, format, examples, and others) -- Fixed Google provider to ignore `additionalProperties: false` which is unsupported by the API - -## [4.4.4] - 2026-01-11 - -### Fixed - -- Fixed Cursor todo updates to bridge update_todos tool calls to the local todo_write tool - -## [4.3.0] - 2026-01-11 - -### Added - -- Added debug log filtering and display script for Cursor JSONL logs with follow mode and coalescing support -- Added protobuf definition extractor script to reconstruct .proto files from bundled JavaScript -- Added conversation state caching to persist context across multiple Cursor API requests in the same session -- Added shell streaming support for real-time stdout/stderr output during command execution -- Added JSON5 parsing for MCP tool arguments with Python-style boolean and None value normalization -- Added Cursor provider with support for Anthropic model, GPT, and Gemini models via Cursor's agent API -- Added OAuth authentication flow for Cursor including login, token refresh, and expiry detection -- Added `cursor-agent` API type with streaming support and tool execution handlers -- Added Cursor model definitions including Anthropic model 4.5, GPT-5.x, Gemini 3, and Grok variants -- Added model generation script to automatically fetch and update AI model definitions from models.dev and OpenRouter APIs - -### Changed - -- Changed Cursor debug logging to use structured JSONL format with automatic MCP argument decoding -- Changed MCP tool argument decoding to use protobuf Value schema for improved type handling -- Changed tool advertisement to filter Cursor native tools (bash, read, write, delete, ls, grep, lsp) instead of only exposing mcp\_ prefixed tools - -### Fixed - -- Fixed Cursor conversation history serialization so subagents retain task context and can call complete - -## [4.2.1] - 2026-01-11 - -### Changed - -- Updated `reasoningSummary` option to accept only `"auto"`, `"concise"`, `"detailed"`, or `null` (removed `"off"` and `"on"` values) -- Changed default `reasoningSummary` from `"auto"` to `"detailed"` -- OpenAI code provider: switched to bundled system prompt matching opencode, changed originator to "opencode", simplified prompt handling - -### Fixed - -- Fixed Cloud Code Assist tool schema conversion to avoid unsupported `const` fields - -## [4.0.0] - 2026-01-10 - -### Added - -- Added `betas` option in `AnthropicOptions` for passing custom Anthropic beta feature flags -- OpenCode Zen provider support with 26 models (Anthropic model, GPT, Gemini, Grok, Kimi, GLM, Qwen, etc.). Set `OPENCODE_API_KEY` env var to use. -- `thinkingBudgets` option in `SimpleStreamOptions` for customizing token budgets per thinking level on token-based providers -- `sessionId` option in `StreamOptions` for providers that support session-based caching. OpenAI code provider provider uses this to set `prompt_cache_key` and routing headers. -- `supportsUsageInStreaming` compatibility flag for OpenAI-compatible providers that reject `stream_options: { include_usage: true }`. Defaults to `true`. Set to `false` in model config for providers like gatewayz.ai. -- `GOOGLE_APPLICATION_CREDENTIALS` env var support for Vertex AI credential detection (standard for CI/production) -- Exported OpenAI code provider utilities: `CacheMetadata`, `getOpenAI codeInstructions`, `getModelFamily`, `ModelFamily`, `buildOpenAI codePiBridge`, `buildOpenAI codeSystemPrompt`, `OpenAI codeSystemPrompt` -- Headless OAuth support for all callback-server providers (Google Gemini CLI, Antigravity, OpenAI code provider): paste redirect URL when browser callback is unreachable -- Cancellable GitHub Copilot device code polling via AbortSignal -- Improved error messages for OpenRouter providers by including raw metadata from upstream errors - -### Changed - -- Changed Anthropic provider to include Anthropic Code system instruction for all API key types, not just OAuth tokens (except Haiku models) -- Changed Anthropic OAuth tool naming to use `proxy_` prefix instead of mapping to Anthropic Code tool names, avoiding potential name collisions -- Changed Anthropic provider to include Anthropic Code headers for all requests, not just OAuth tokens -- Anthropic provider now maps tool names to Anthropic Code's exact tool names (Read, Write, Edit, Bash, Grep, Glob) instead of using prefixed names -- OpenAI Completions provider now disables strict mode on tools to allow optional parameters without null unions - -### Fixed - -- Fixed Anthropic OAuth code parsing to accept full redirect URLs in addition to raw authorization codes -- Fixed Anthropic token refresh to preserve existing refresh token when server doesn't return a new one -- Fixed thinking mode being enabled when tool_choice forces a specific tool, which is unsupported -- Fixed max_tokens being too low when thinking budget is set, now auto-adjusts to model's maxTokens -- Google Cloud Code Assist OAuth for paid subscriptions: properly handles long-running operations for project provisioning, supports `GOOGLE_CLOUD_PROJECT` / `GOOGLE_CLOUD_PROJECT_ID` env vars for paid tiers -- `os.homedir()` calls at module load time; now resolved lazily when needed -- OpenAI Responses tool strict flag to use a boolean for LM Studio compatibility -- Gemini CLI abort handling: detect native `AbortError` in retry catch block, cancel SSE reader when abort signal fires -- Antigravity provider 429 errors by aligning request payload with CLIProxyAPI v6.6.89 -- Thinking block handling for cross-model conversations: thinking blocks are now converted to plain text when switching models -- OpenAI code provider context window from 400,000 to 272,000 tokens to match OpenAI code CLI defaults -- OpenAI code SSE error events to surface message, code, and status -- Context overflow detection for `context_length_exceeded` error codes -- OpenAI code provider now always includes `reasoning.encrypted_content` even when custom `include` options are passed -- OpenAI code requests now omit the `reasoning` field entirely when thinking is off -- Crash when pasting text with trailing whitespace exceeding terminal width - -## [3.37.1] - 2026-01-10 - -### Added - -- Added automatic type coercion for tool arguments when LLMs return JSON-encoded strings instead of native types (numbers, booleans, arrays, objects) - -### Changed - -- Changed tool argument validation to attempt JSON parsing and type coercion before rejecting mismatched types -- Changed validation error messages to include both original and normalized arguments when coercion was attempted - -## [3.37.0] - 2026-01-10 - -### Changed - -- Enabled type coercion in JSON schema validation to automatically convert compatible types - -## [3.35.0] - 2026-01-09 - -### Added - -- Enhanced error messages to include retry-after timing information from API rate limit headers - -## [0.42.0] - 2026-01-09 - -### Added - -- Added OpenCode Zen provider support with 26 models (Anthropic model, GPT, Gemini, Grok, Kimi, GLM, Qwen, etc.). Set `OPENCODE_API_KEY` env var to use. - -## [0.39.0] - 2026-01-08 - -### Fixed - -- Fixed Gemini CLI abort handling: detect native `AbortError` in retry catch block, cancel SSE reader when abort signal fires ([#568](https://github.com/badlogic/pi-mono/pull/568) by [@tmustier](https://github.com/tmustier)) -- Fixed Antigravity provider 429 errors by aligning request payload with CLIProxyAPI v6.6.89: inject Antigravity system instruction with `role: "user"`, set `requestType: "agent"`, and use `antigravity` userAgent. Added bridge prompt to override Antigravity behavior (identity, paths, web dev guidelines) with Pi defaults. ([#571](https://github.com/badlogic/pi-mono/pull/571) by [@ben-vargas](https://github.com/ben-vargas)) -- Fixed thinking block handling for cross-model conversations: thinking blocks are now converted to plain text (no `` tags) when switching models. Previously, `` tags caused models to mimic the pattern and output literal tags. Also fixed empty thinking blocks causing API errors. ([#561](https://github.com/badlogic/pi-mono/issues/561)) - -## [0.38.0] - 2026-01-08 - -### Added - -- `thinkingBudgets` option in `SimpleStreamOptions` for customizing token budgets per thinking level on token-based providers ([#529](https://github.com/badlogic/pi-mono/pull/529) by [@melihmucuk](https://github.com/melihmucuk)) - -### Breaking Changes - -- Removed OpenAI code provider model aliases (`gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `openai-code-mini-latest`, `gpt-5-openai-code`, `gpt-5.1-openai-code`, `gpt-5.1-chat-latest`). Use canonical model IDs: `gpt-5.1`, `gpt-5.1-openai-code-max`, `gpt-5.1-openai-code-mini`, `gpt-5.2`, `gpt-5.2-openai-code`. ([#536](https://github.com/badlogic/pi-mono/pull/536) by [@ghoulr](https://github.com/ghoulr)) - -### Fixed - -- Fixed OpenAI code provider context window from 400,000 to 272,000 tokens to match OpenAI code CLI defaults and prevent 400 errors. ([#536](https://github.com/badlogic/pi-mono/pull/536) by [@ghoulr](https://github.com/ghoulr)) -- Fixed OpenAI code SSE error events to surface message, code, and status. ([#551](https://github.com/badlogic/pi-mono/pull/551) by [@tmustier](https://github.com/tmustier)) -- Fixed context overflow detection for `context_length_exceeded` error codes. - -## [0.37.6] - 2026-01-06 - -### Added - -- Exported OpenAI code provider utilities: `CacheMetadata`, `getOpenAI codeInstructions`, `getModelFamily`, `ModelFamily`, `buildOpenAI codePiBridge`, `buildOpenAI codeSystemPrompt`, `OpenAI codeSystemPrompt` ([#510](https://github.com/badlogic/pi-mono/pull/510) by [@mitsuhiko](https://github.com/mitsuhiko)) - -## [0.37.3] - 2026-01-06 - -### Added - -- `sessionId` option in `StreamOptions` for providers that support session-based caching. OpenAI code provider provider uses this to set `prompt_cache_key` and routing headers. - -## [0.37.2] - 2026-01-05 - -### Fixed - -- OpenAI code provider now always includes `reasoning.encrypted_content` even when custom `include` options are passed ([#484](https://github.com/badlogic/pi-mono/pull/484) by [@kim0](https://github.com/kim0)) - -## [0.37.0] - 2026-01-05 - -### Breaking Changes - -- OpenAI code provider models no longer have per-thinking-level variants (e.g., `gpt-5.2-openai-code-high`). Use the base model ID and set thinking level separately. The OpenAI code provider clamps reasoning effort to what each model supports internally. (initial implementation by [@ben-vargas](https://github.com/ben-vargas) in [#472](https://github.com/badlogic/pi-mono/pull/472)) - -### Added - -- Headless OAuth support for all callback-server providers (Google Gemini CLI, Antigravity, OpenAI code provider): paste redirect URL when browser callback is unreachable ([#428](https://github.com/badlogic/pi-mono/pull/428) by [@ben-vargas](https://github.com/ben-vargas), [#468](https://github.com/badlogic/pi-mono/pull/468) by [@crcatala](https://github.com/crcatala)) -- Cancellable GitHub Copilot device code polling via AbortSignal - -### Fixed - -- OpenAI code requests now omit the `reasoning` field entirely when thinking is off, letting the backend use its default instead of forcing a value. ([#472](https://github.com/badlogic/pi-mono/pull/472)) - -## [0.36.0] - 2026-01-05 - -### Added - -- OpenAI code provider OAuth provider with Responses API streaming support: `openai-code-responses` streaming provider with SSE parsing, tool-call handling, usage/cost tracking, and PKCE OAuth flow ([#451](https://github.com/badlogic/pi-mono/pull/451) by [@kim0](https://github.com/kim0)) - -### Fixed - -- Vertex AI dummy value for `getEnvApiKey()`: Returns `""` when Application Default Credentials are configured (`~/.config/gcloud/application_default_credentials.json` exists) and both `GOOGLE_CLOUD_PROJECT` (or `GCLOUD_PROJECT`) and `GOOGLE_CLOUD_LOCATION` are set. This allows `streamSimple()` to work with Vertex AI without explicit `apiKey` option. The ADC credentials file existence check is cached per-process to avoid repeated filesystem access. - -## [0.32.3] - 2026-01-03 - -### Fixed - -- Google Vertex AI models no longer appear in available models list without explicit authentication. Previously, `getEnvApiKey()` returned a dummy value for `google-vertex`, causing models to show up even when Google Cloud ADC was not configured. - -## [0.32.0] - 2026-01-03 - -### Added - -- Vertex AI provider with ADC (Application Default Credentials) support. Authenticate with `gcloud auth application-default login`, set `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION`, and access Gemini models via Vertex AI. ([#300](https://github.com/badlogic/pi-mono/pull/300) by [@default-anton](https://github.com/default-anton)) - -### Fixed - -- **Gemini CLI rate limit handling**: Added automatic retry with server-provided delay for 429 errors. Parses delay from error messages like "Your quota will reset after 39s" and waits accordingly. Falls back to exponential backoff for other transient errors. ([#370](https://github.com/badlogic/pi-mono/issues/370)) - -## [0.31.0] - 2026-01-02 - -### Breaking Changes - -- **Agent API moved**: All agent functionality (`agentLoop`, `agentLoopContinue`, `AgentContext`, `AgentEvent`, `AgentTool`, `AgentToolResult`, etc.) has moved to `@mariozechner/pi-agent-core`. Import from that package instead of `@gajae-code/ai`. - -### Added - -- **`GoogleThinkingLevel` type**: Exported type that mirrors Google's `ThinkingLevel` enum values (`"THINKING_LEVEL_UNSPECIFIED" | "MINIMAL" | "LOW" | "MEDIUM" | "HIGH"`). Allows configuring Gemini thinking levels without importing from `@google/genai`. -- **`ANTHROPIC_OAUTH_TOKEN` env var**: Now checked before `ANTHROPIC_API_KEY` in `getEnvApiKey()`, allowing OAuth tokens to take precedence. -- **`event-stream.js` export**: `AssistantMessageEventStream` utility now exported from package index. - -### Changed - -- **OAuth uses Web Crypto API**: PKCE generation and OAuth flows now use Web Crypto API (`crypto.subtle`) instead of Node.js `crypto` module. This improves browser compatibility while still working in Node.js 20+. -- **Deterministic model generation**: `generate-models.ts` now sorts providers and models alphabetically for consistent output across runs. ([#332](https://github.com/badlogic/pi-mono/pull/332) by [@mrexodia](https://github.com/mrexodia)) - -### Fixed - -- **OpenAI completions empty content blocks**: Empty text or thinking blocks in assistant messages are now filtered out before sending to the OpenAI completions API, preventing validation errors. ([#344](https://github.com/badlogic/pi-mono/pull/344) by [@default-anton](https://github.com/default-anton)) -- **Thinking token duplication**: Fixed thinking content duplication with chutes.ai provider. The provider was returning thinking content in both `reasoning_content` and `reasoning` fields, causing each chunk to be processed twice. Now only the first non-empty reasoning field is used. -- **zAi provider API mapping**: Fixed zAi models to use `openai-completions` API with correct base URL (`https://api.z.ai/api/coding/paas/v4`) instead of incorrect Anthropic API mapping. ([#344](https://github.com/badlogic/pi-mono/pull/344), [#358](https://github.com/badlogic/pi-mono/pull/358) by [@default-anton](https://github.com/default-anton)) - -## [0.28.0] - 2025-12-25 - -### Breaking Changes - -- **OAuth storage removed** ([#296](https://github.com/badlogic/pi-mono/issues/296)): All storage functions (`loadOAuthCredentials`, `saveOAuthCredentials`, `setOAuthStorage`, etc.) removed. Callers are responsible for storing credentials. -- **OAuth login functions**: `loginAnthropic`, `loginGitHubCopilot`, `loginGeminiCli`, `loginAntigravity` now return `OAuthCredentials` instead of saving to disk. -- **refreshOAuthToken**: Now takes `(provider, credentials)` and returns new `OAuthCredentials` instead of saving. -- **getOAuthApiKey**: Now takes `(provider, credentials)` and returns `{ newCredentials, apiKey }` or null. -- **OAuthCredentials type**: No longer includes `type: "oauth"` discriminator. Callers add discriminator when storing. -- **setApiKey, resolveApiKey**: Removed. Callers must manage their own API key storage/resolution. -- **getApiKey**: Renamed to `getEnvApiKey`. Only checks environment variables for known providers. - -## [0.27.7] - 2025-12-24 - -### Fixed - -- **Thinking tag leakage**: Fixed Anthropic model mimicking literal `` tags in responses. Unsigned thinking blocks (from aborted streams) are now converted to plain text without `` tags. The TUI still displays them as thinking blocks. ([#302](https://github.com/badlogic/pi-mono/pull/302) by [@nicobailon](https://github.com/nicobailon)) - -## [0.25.1] - 2025-12-21 - -### Added - -- **xhigh thinking level support**: Added `supportsXhigh()` function to check if a model supports xhigh reasoning level. Also clamps xhigh to high for OpenAI models that don't support it. ([#236](https://github.com/badlogic/pi-mono/pull/236) by [@theBucky](https://github.com/theBucky)) - -### Fixed - -- **Gemini multimodal tool results**: Fixed images in tool results causing flaky/broken responses with Gemini models. For Gemini 3, images are now nested inside `functionResponse.parts` per the [docs](https://ai.google.dev/gemini-api/docs/function-calling#multimodal). For older models (which don't support multimodal function responses), images are sent in a separate user message. - -- **Queued message steering**: When `getQueuedMessages` is provided, the agent loop now checks for queued user messages after each tool call and skips remaining tool calls in the current assistant message when a queued message arrives (emitting error tool results). - -- **Double API version path in Google provider URL**: Fixed Gemini API calls returning 404 after baseUrl support was added. The SDK was appending its default apiVersion to baseUrl which already included the version path. ([#251](https://github.com/badlogic/pi-mono/pull/251) by [@shellfyred](https://github.com/shellfyred)) - -- **Anthropic SDK retries disabled**: Re-enabled SDK-level retries (default 2) for transient HTTP failures. ([#252](https://github.com/badlogic/pi-mono/issues/252)) - -## [0.23.5] - 2025-12-19 - -### Added - -- **Gemini 3 Flash thinking support**: Extended thinking level support for Gemini 3 Flash models (MINIMAL, LOW, MEDIUM, HIGH) to match Pro models' capabilities. ([#212](https://github.com/badlogic/pi-mono/pull/212) by [@markusylisiurunen](https://github.com/markusylisiurunen)) - -- **GitHub Copilot thinking models**: Added thinking support for additional Copilot models (o3-mini, o1-mini, o1-preview). ([#234](https://github.com/badlogic/pi-mono/pull/234) by [@aadishv](https://github.com/aadishv)) - -### Fixed - -- **Gemini tool result format**: Fixed tool result format for Gemini 3 Flash Preview which strictly requires `{ output: value }` for success and `{ error: value }` for errors. Previous format using `{ result, isError }` was rejected by newer Gemini models. Also improved type safety by removing `as any` casts. ([#213](https://github.com/badlogic/pi-mono/issues/213), [#220](https://github.com/badlogic/pi-mono/pull/220)) - -- **Google baseUrl configuration**: Google provider now respects `baseUrl` configuration for custom endpoints or API proxies. ([#216](https://github.com/badlogic/pi-mono/issues/216), [#221](https://github.com/badlogic/pi-mono/pull/221) by [@theBucky](https://github.com/theBucky)) - -- **GitHub Copilot vision requests**: Added `Copilot-Vision-Request` header when sending images to GitHub Copilot models. ([#222](https://github.com/badlogic/pi-mono/issues/222)) - -- **GitHub Copilot X-Initiator header**: Fixed X-Initiator logic to check last message role instead of any message in history. This ensures proper billing when users send follow-up messages. ([#209](https://github.com/badlogic/pi-mono/issues/209)) - -## [0.22.3] - 2025-12-16 - -### Added - -- **Image limits test suite**: Added comprehensive tests for provider-specific image limitations (max images, max size, max dimensions). Discovered actual limits: Anthropic (100 images, 5MB, 8000px), OpenAI (500 images, ≥25MB), Gemini (~2500 images, ≥40MB), Mistral (8 images, ~15MB), OpenRouter (~40 images context-limited, ~15MB). ([#120](https://github.com/badlogic/pi-mono/pull/120)) - -- **Tool result streaming**: Added `tool_execution_update` event and optional `onUpdate` callback to `AgentTool.execute()` for streaming tool output during execution. Tools can now emit partial results (e.g., bash stdout) that are forwarded to subscribers. ([#44](https://github.com/badlogic/pi-mono/issues/44)) - -- **X-Initiator header for GitHub Copilot**: Added X-Initiator header handling for GitHub Copilot provider to ensure correct call accounting (agent calls are not deducted from quota). Sets initiator based on last message role. ([#200](https://github.com/badlogic/pi-mono/pull/200) by [@kim0](https://github.com/kim0)) - -### Changed - -- **Normalized tool_execution_end result**: `tool_execution_end` event now always contains `AgentToolResult` (no longer `AgentToolResult | string`). Errors are wrapped in the standard result format. - -### Fixed - -- **Reasoning disabled by default**: When `reasoning` option is not specified, thinking is now explicitly disabled for all providers. Previously, some providers like Gemini with "dynamic thinking" would use their default (thinking ON), causing unexpected token usage. This was the original intended behavior. ([#180](https://github.com/badlogic/pi-mono/pull/180) by [@markusylisiurunen](https://github.com/markusylisiurunen)) - -## [0.22.2] - 2025-12-15 - -### Added - -- **Interleaved thinking for Anthropic**: Added `interleavedThinking` option to `AnthropicOptions`. When enabled, Anthropic model 4 models can think between tool calls and reason after receiving tool results. Enabled by default (no extra token cost, just unlocks the capability). Set `interleavedThinking: false` to disable. - -## [0.22.1] - 2025-12-15 - -_Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_ - -### Added - -- **Interleaved thinking for Anthropic**: Enabled interleaved thinking in the Anthropic provider, allowing Anthropic model models to output thinking blocks interspersed with text responses. - -## [0.22.0] - 2025-12-15 - -### Added - -- **GitHub Copilot provider**: Added `github-copilot` as a known provider with models sourced from models.dev. Includes Anthropic model, GPT, Gemini, Grok, and other models available through GitHub Copilot. ([#191](https://github.com/badlogic/pi-mono/pull/191) by [@cau1k](https://github.com/cau1k)) - -### Fixed - -- **GitHub Copilot gpt-5 models**: Fixed API selection for gpt-5 models to use `openai-responses` instead of `openai-completions` (gpt-5 models are not accessible via completions endpoint) - -- **GitHub Copilot cross-model context handoff**: Fixed context handoff failing when switching between GitHub Copilot models using different APIs (e.g., gpt-5 to anthropic-model-sonnet-4). Tool call IDs from OpenAI Responses API were incompatible with other models. ([#198](https://github.com/badlogic/pi-mono/issues/198)) - -- **Gemini 3 Pro thinking levels**: Thinking level configuration now works correctly for Gemini 3 Pro models. Previously all levels mapped to -1 (minimal thinking). Now LOW/MEDIUM/HIGH properly control test-time computation. ([#176](https://github.com/badlogic/pi-mono/pull/176) by [@markusylisiurunen](https://github.com/markusylisiurunen)) - -## [0.18.2] - 2025-12-11 - -### Changed - -- **Anthropic SDK retries disabled**: Set `maxRetries: 0` on Anthropic client to allow application-level retry handling. The SDK's built-in retries were interfering with coding-agent's retry logic. ([#157](https://github.com/badlogic/pi-mono/issues/157)) - -## [0.18.1] - 2025-12-10 - -### Added - -- **Mistral provider**: Added support for Mistral AI models via the OpenAI-compatible API. Includes automatic handling of Mistral-specific requirements (tool call ID format). Set `MISTRAL_API_KEY` environment variable to use. - -### Fixed - -- Fixed Mistral 400 errors after aborted assistant messages by skipping empty assistant messages (no content, no tool calls) ([#165](https://github.com/badlogic/pi-mono/issues/165)) - -- Removed synthetic assistant bridge message after tool results for Mistral (no longer required as of Dec 2025) ([#165](https://github.com/badlogic/pi-mono/issues/165)) - -- Fixed bug where `ANTHROPIC_API_KEY` environment variable was deleted globally after first OAuth token usage, causing subsequent prompts to fail ([#164](https://github.com/badlogic/pi-mono/pull/164)) - -## [0.17.0] - 2025-12-09 - -### Added - -- **`agentLoopContinue` function**: Continue an agent loop from existing context without adding a new user message. Validates that the last message is `user` or `toolResult`. Useful for retry after context overflow or resuming from manually-added tool results. - -### Breaking Changes - -- Removed provider-level tool argument validation. Validation now happens in `agentLoop` via `executeToolCalls`, allowing models to retry on validation errors. For manual tool execution, use `validateToolCall(tools, toolCall)` or `validateToolArguments(tool, toolCall)`. - -### Added - -- Added `validateToolCall(tools, toolCall)` helper that finds the tool by name and validates arguments. - -- **OpenAI compatibility overrides**: Added `compat` field to `Model` for `openai-completions` API, allowing explicit configuration of provider quirks (`supportsStore`, `supportsDeveloperRole`, `supportsReasoningEffort`, `maxTokensField`). Falls back to URL-based detection if not set. Useful for LiteLLM, custom proxies, and other non-standard endpoints. ([#133](https://github.com/badlogic/pi-mono/issues/133), thanks @fink-andreas for the initial idea and PR) - -- **xhigh reasoning level**: Added `xhigh` to `ReasoningEffort` type for OpenAI openai-code-max models. For non-OpenAI providers (Anthropic, Google), `xhigh` is automatically mapped to `high`. ([#143](https://github.com/badlogic/pi-mono/issues/143)) - -### Changed - -- **Updated SDK versions**: OpenAI SDK 5.21.0 → 6.10.0, Anthropic SDK 0.61.0 → 0.71.2, Google GenAI SDK 1.30.0 → 1.31.0 - -## [0.13.0] - 2025-12-06 - -### Breaking Changes - -- **Added `totalTokens` field to `Usage` type**: All code that constructs `Usage` objects must now include the `totalTokens` field. This field represents the total tokens processed by the LLM (input + output + cache). For OpenAI and Google, this uses native API values (`total_tokens`, `totalTokenCount`). For Anthropic, it's computed as `input + output + cacheRead + cacheWrite`. - -## [0.12.10] - 2025-12-04 - -### Added - -- Added `gpt-5.1-openai-code-max` model support - -### Fixed - -- **OpenAI Token Counting**: Fixed `usage.input` to exclude cached tokens for OpenAI providers. Previously, `input` included cached tokens, causing double-counting when calculating total context size via `input + cacheRead`. Now `input` represents non-cached input tokens across all providers, making `input + output + cacheRead + cacheWrite` the correct formula for total context size. - -- **Fixed Anthropic model Opus 4.5 cache pricing** (was 3x too expensive) - - Corrected cache_read: $1.50 → $0.50 per MTok - - Corrected cache_write: $18.75 → $6.25 per MTok - - Added manual override in `scripts/generate-models.ts` until upstream fix is merged - - Submitted PR to models.dev: https://github.com/sst/models.dev/pull/439 - -## [0.9.4] - 2025-11-26 - -Initial release with multi-provider LLM support. diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index b77b313eb4..b81c13a450 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -9,6 +9,7 @@ const COPILOT_PREMIUM_MULTIPLIERS: Record = { "github-copilot/grok-code-fast-1": 0.25, }; +import * as fs from "node:fs/promises"; import * as path from "node:path"; import { $env } from "@gajae-code/utils"; import { AuthStorage, type OAuthAccess, SqliteAuthCredentialStore } from "../src/auth-storage"; @@ -483,6 +484,82 @@ async function fetchCodexDiscoveryModels(): Promise>, + discoveryOnlyProviders: ReadonlySet, +): Model[] { + const merged = [...models]; + const fetchedKeys = new Set(merged.map(model => `${model.provider}/${model.id}`)); + for (const providerModels of Object.values(previousCatalog)) { + for (const model of Object.values(providerModels)) { + if ( + !fetchedKeys.has(`${model.provider}/${model.id}`) && + !discoveryOnlyProviders.has(model.provider) && + !isRetiredBundledModel(model) + ) { + merged.push(model.provider === "openai" ? { ...model, baseUrl: "" } : model); + } + } + } + return merged; +} + +const PROVIDER_FILE_NAME_PATTERN = /^[a-z0-9][a-z0-9-]*$/; + +export async function writeModelCatalogArtifacts( + models: Record>, + outputDirectory = path.join(packageRoot, "src"), +): Promise { + const providerEntries = Object.entries(models); + for (const [provider] of providerEntries) { + if (!PROVIDER_FILE_NAME_PATTERN.test(provider)) { + throw new Error(`Cannot generate a model shard for invalid provider name: ${provider}`); + } + } + + await fs.mkdir(outputDirectory, { recursive: true }); + await Bun.write(path.join(outputDirectory, "models.json"), `${JSON.stringify(models, null, " ")}\n`); + + const shardDirectory = path.join(outputDirectory, "model-shards"); + await fs.mkdir(shardDirectory, { recursive: true }); + const expectedShardNames = new Set(providerEntries.map(([provider]) => `${provider}.json`)); + for (const entry of await fs.readdir(shardDirectory, { withFileTypes: true })) { + if (!entry.isFile() || !entry.name.endsWith(".json")) { + throw new Error(`Unexpected model shard artifact: ${entry.name}`); + } + if (!expectedShardNames.has(entry.name)) { + await fs.unlink(path.join(shardDirectory, entry.name)); + } + } + + for (const [provider, providerModels] of providerEntries) { + await Bun.write(path.join(shardDirectory, `${provider}.json`), `${JSON.stringify(providerModels)}\n`); + } + + const imports = providerEntries.map( + ([provider], index) => `import shard${index} from "./model-shards/${provider}.json" with { type: "file" };`, + ); + const providerNames = providerEntries.map(([provider]) => `\t${JSON.stringify(provider)},`); + const shardMap = providerEntries.map(([provider], index) => { + const propertyName = provider.includes("-") ? JSON.stringify(provider) : provider; + return `\t${propertyName}: shard${index},`; + }); + const generatedSource = `${imports.join("\n")} + +// Generated by scripts/generate-models.ts. Static file imports keep every shard +// embedded and addressable from standalone compiled binaries. +export const bundledProviderNames = [ +${providerNames.join("\n")} +] as const; + +export const bundledProviderShardPaths = { +${shardMap.join("\n")} +} as const; +`; + await Bun.write(path.join(outputDirectory, "model-shards.generated.ts"), generatedSource); +} + async function generateModels() { // Fetch models from dynamic sources const modelsDevModels = await loadModelsDevData(); @@ -526,19 +603,11 @@ async function generateModels() { // through the existing models.json seed. // Discovery-only providers (local inference servers) — never bundle static models. const discoveryOnlyProviders = new Set(["ollama", "vllm"]); - const fetchedKeys = new Set(allModels.map(model => `${model.provider}/${model.id}`)); - - for (const models of Object.values(prevModelsJson as Record>)) { - for (const model of Object.values(models)) { - if ( - !fetchedKeys.has(`${model.provider}/${model.id}`) && - !discoveryOnlyProviders.has(model.provider) && - !isRetiredBundledModel(model) - ) { - allModels.push(model.provider === "openai" ? { ...model, baseUrl: "" } : model); - } - } - } + allModels = mergePreviousModelFallbacks( + allModels, + prevModelsJson as Record>, + discoveryOnlyProviders, + ); allModels = allModels.filter(model => !isRetiredBundledModel(model)); allModels = applyGlobalModelsDevFallback(allModels, modelsDevModels); @@ -578,9 +647,9 @@ async function generateModels() { MODELS[key] = sortObj(MODELS[key]); } - // Generate JSON file - await Bun.write(path.join(packageRoot, "src/models.json"), JSON.stringify(MODELS, null, " ")); - console.log("Generated src/models.json"); + // Generate the canonical public JSON first, then derive internal provider shards from it. + await writeModelCatalogArtifacts(MODELS); + console.log("Generated src/models.json and provider shards"); // Print statistics const totalModels = allModels.length; diff --git a/packages/ai/src/model-shards.generated.ts b/packages/ai/src/model-shards.generated.ts new file mode 100644 index 0000000000..246998507a --- /dev/null +++ b/packages/ai/src/model-shards.generated.ts @@ -0,0 +1,173 @@ +import shard0 from "./model-shards/alibaba-token-plan.json" with { type: "file" }; +import shard1 from "./model-shards/amazon-bedrock.json" with { type: "file" }; +import shard2 from "./model-shards/anthropic.json" with { type: "file" }; +import shard3 from "./model-shards/azure-openai.json" with { type: "file" }; +import shard4 from "./model-shards/bizrouter.json" with { type: "file" }; +import shard5 from "./model-shards/cerebras.json" with { type: "file" }; +import shard6 from "./model-shards/cloudflare-ai-gateway.json" with { type: "file" }; +import shard7 from "./model-shards/cursor.json" with { type: "file" }; +import shard8 from "./model-shards/deepinfra.json" with { type: "file" }; +import shard9 from "./model-shards/deepseek.json" with { type: "file" }; +import shard10 from "./model-shards/firepass.json" with { type: "file" }; +import shard11 from "./model-shards/fireworks.json" with { type: "file" }; +import shard12 from "./model-shards/fugu.json" with { type: "file" }; +import shard13 from "./model-shards/github-copilot.json" with { type: "file" }; +import shard14 from "./model-shards/gitlab-duo.json" with { type: "file" }; +import shard15 from "./model-shards/glm-zcode.json" with { type: "file" }; +import shard16 from "./model-shards/google.json" with { type: "file" }; +import shard17 from "./model-shards/google-antigravity.json" with { type: "file" }; +import shard18 from "./model-shards/google-gemini-cli.json" with { type: "file" }; +import shard19 from "./model-shards/google-vertex.json" with { type: "file" }; +import shard20 from "./model-shards/groq.json" with { type: "file" }; +import shard21 from "./model-shards/huggingface.json" with { type: "file" }; +import shard22 from "./model-shards/kilo.json" with { type: "file" }; +import shard23 from "./model-shards/kimi-code.json" with { type: "file" }; +import shard24 from "./model-shards/litellm.json" with { type: "file" }; +import shard25 from "./model-shards/mara.json" with { type: "file" }; +import shard26 from "./model-shards/minimax.json" with { type: "file" }; +import shard27 from "./model-shards/minimax-cn.json" with { type: "file" }; +import shard28 from "./model-shards/minimax-code.json" with { type: "file" }; +import shard29 from "./model-shards/minimax-code-cn.json" with { type: "file" }; +import shard30 from "./model-shards/mistral.json" with { type: "file" }; +import shard31 from "./model-shards/moonshot.json" with { type: "file" }; +import shard32 from "./model-shards/nanogpt.json" with { type: "file" }; +import shard33 from "./model-shards/nvidia.json" with { type: "file" }; +import shard34 from "./model-shards/ollama-cloud.json" with { type: "file" }; +import shard35 from "./model-shards/openai.json" with { type: "file" }; +import shard36 from "./model-shards/openai-codex.json" with { type: "file" }; +import shard37 from "./model-shards/opencode.json" with { type: "file" }; +import shard38 from "./model-shards/opencode-go.json" with { type: "file" }; +import shard39 from "./model-shards/opencode-zen.json" with { type: "file" }; +import shard40 from "./model-shards/opengateway.json" with { type: "file" }; +import shard41 from "./model-shards/openrouter.json" with { type: "file" }; +import shard42 from "./model-shards/qianfan.json" with { type: "file" }; +import shard43 from "./model-shards/qwen-portal.json" with { type: "file" }; +import shard44 from "./model-shards/synthetic.json" with { type: "file" }; +import shard45 from "./model-shards/together.json" with { type: "file" }; +import shard46 from "./model-shards/venice.json" with { type: "file" }; +import shard47 from "./model-shards/vercel-ai-gateway.json" with { type: "file" }; +import shard48 from "./model-shards/xai.json" with { type: "file" }; +import shard49 from "./model-shards/xiaomi.json" with { type: "file" }; +import shard50 from "./model-shards/xiaomi-token-plan-ams.json" with { type: "file" }; +import shard51 from "./model-shards/xiaomi-token-plan-cn.json" with { type: "file" }; +import shard52 from "./model-shards/xiaomi-token-plan-sgp.json" with { type: "file" }; +import shard53 from "./model-shards/zai.json" with { type: "file" }; +import shard54 from "./model-shards/zenmux.json" with { type: "file" }; + +// Generated by scripts/generate-models.ts. Static file imports keep every shard +// embedded and addressable from standalone compiled binaries. +export const bundledProviderNames = [ + "alibaba-token-plan", + "amazon-bedrock", + "anthropic", + "azure-openai", + "bizrouter", + "cerebras", + "cloudflare-ai-gateway", + "cursor", + "deepinfra", + "deepseek", + "firepass", + "fireworks", + "fugu", + "github-copilot", + "gitlab-duo", + "glm-zcode", + "google", + "google-antigravity", + "google-gemini-cli", + "google-vertex", + "groq", + "huggingface", + "kilo", + "kimi-code", + "litellm", + "mara", + "minimax", + "minimax-cn", + "minimax-code", + "minimax-code-cn", + "mistral", + "moonshot", + "nanogpt", + "nvidia", + "ollama-cloud", + "openai", + "openai-codex", + "opencode", + "opencode-go", + "opencode-zen", + "opengateway", + "openrouter", + "qianfan", + "qwen-portal", + "synthetic", + "together", + "venice", + "vercel-ai-gateway", + "xai", + "xiaomi", + "xiaomi-token-plan-ams", + "xiaomi-token-plan-cn", + "xiaomi-token-plan-sgp", + "zai", + "zenmux", +] as const; + +export const bundledProviderShardPaths = { + "alibaba-token-plan": shard0, + "amazon-bedrock": shard1, + anthropic: shard2, + "azure-openai": shard3, + bizrouter: shard4, + cerebras: shard5, + "cloudflare-ai-gateway": shard6, + cursor: shard7, + deepinfra: shard8, + deepseek: shard9, + firepass: shard10, + fireworks: shard11, + fugu: shard12, + "github-copilot": shard13, + "gitlab-duo": shard14, + "glm-zcode": shard15, + google: shard16, + "google-antigravity": shard17, + "google-gemini-cli": shard18, + "google-vertex": shard19, + groq: shard20, + huggingface: shard21, + kilo: shard22, + "kimi-code": shard23, + litellm: shard24, + mara: shard25, + minimax: shard26, + "minimax-cn": shard27, + "minimax-code": shard28, + "minimax-code-cn": shard29, + mistral: shard30, + moonshot: shard31, + nanogpt: shard32, + nvidia: shard33, + "ollama-cloud": shard34, + openai: shard35, + "openai-codex": shard36, + opencode: shard37, + "opencode-go": shard38, + "opencode-zen": shard39, + opengateway: shard40, + openrouter: shard41, + qianfan: shard42, + "qwen-portal": shard43, + synthetic: shard44, + together: shard45, + venice: shard46, + "vercel-ai-gateway": shard47, + xai: shard48, + xiaomi: shard49, + "xiaomi-token-plan-ams": shard50, + "xiaomi-token-plan-cn": shard51, + "xiaomi-token-plan-sgp": shard52, + zai: shard53, + zenmux: shard54, +} as const; diff --git a/packages/ai/src/model-shards/alibaba-token-plan.json b/packages/ai/src/model-shards/alibaba-token-plan.json new file mode 100644 index 0000000000..ae2a23f158 --- /dev/null +++ b/packages/ai/src/model-shards/alibaba-token-plan.json @@ -0,0 +1 @@ +{"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","api":"openai-completions","provider":"alibaba-token-plan","baseUrl":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":true,"reasoningContentField":"reasoning_content","requiresReasoningContentForToolCalls":true},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max","levels":["low","high","max"]}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"alibaba-token-plan","baseUrl":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"compat":{"supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"alibaba-token-plan","baseUrl":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"compat":{"supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"qwen-3.8-max":{"id":"qwen-3.8-max","name":"Qwen3.8 Max","api":"openai-responses","provider":"alibaba-token-plan","baseUrl":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"compat":{"supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.8-max-preview":{"id":"qwen3.8-max-preview","name":"Qwen3.8 Max Preview","api":"openai-responses","provider":"alibaba-token-plan","baseUrl":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"compat":{"supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/amazon-bedrock.json b/packages/ai/src/model-shards/amazon-bedrock.json new file mode 100644 index 0000000000..8c283457ad --- /dev/null +++ b/packages/ai/src/model-shards/amazon-bedrock.json @@ -0,0 +1 @@ +{"anthropic.claude-3-5-haiku-20241022-v1:0":{"id":"anthropic.claude-3-5-haiku-20241022-v1:0","name":"Anthropic Haiku 3.5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"anthropic.claude-3-5-sonnet-20240620-v1:0":{"id":"anthropic.claude-3-5-sonnet-20240620-v1:0","name":"Anthropic Sonnet 3.5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"anthropic.claude-3-5-sonnet-20241022-v2:0":{"id":"anthropic.claude-3-5-sonnet-20241022-v2:0","name":"Anthropic Sonnet 3.5 v2","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"anthropic.claude-3-haiku-20240307-v1:0":{"id":"anthropic.claude-3-haiku-20240307-v1:0","name":"Anthropic Haiku 3","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.25,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"anthropic.claude-3-opus-20240229-v1:0":{"id":"anthropic.claude-3-opus-20240229-v1:0","name":"Anthropic Opus 3","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"anthropic.claude-3-sonnet-20240229-v1:0":{"id":"anthropic.claude-3-sonnet-20240229-v1:0","name":"Anthropic Sonnet 3","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"anthropic.claude-fable-5":{"id":"anthropic.claude-fable-5","name":"Anthropic Fable 5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"anthropic.claude-opus-4-6-v1":{"id":"anthropic.claude-opus-4-6-v1","name":"Anthropic Opus 4.6","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"anthropic.claude-opus-4-7":{"id":"anthropic.claude-opus-4-7","name":"Anthropic Opus 4.7","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"anthropic.claude-opus-4-8":{"id":"anthropic.claude-opus-4-8","name":"Anthropic Opus 4.8","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"anthropic.claude-sonnet-5":{"id":"anthropic.claude-sonnet-5","name":"Anthropic Sonnet 5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"au.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Anthropic Haiku 4.5 (AU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"au.anthropic.claude-opus-4-6-v1":{"id":"au.anthropic.claude-opus-4-6-v1","name":"AU Anthropic Anthropic Opus 4.6","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":16.5,"output":82.5,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"au.anthropic.claude-opus-4-8":{"id":"au.anthropic.claude-opus-4-8","name":"Anthropic Opus 4.8 (AU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"au.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Anthropic Sonnet 4.5 (AU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"au.anthropic.claude-sonnet-4-6":{"id":"au.anthropic.claude-sonnet-4-6","name":"AU Anthropic Anthropic Sonnet 4.6","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3.3,"output":16.5,"cacheRead":0.33,"cacheWrite":4.125},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"au.anthropic.claude-sonnet-5":{"id":"au.anthropic.claude-sonnet-5","name":"Anthropic Sonnet 5 (AU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"cohere.command-r-plus-v1:0":{"id":"cohere.command-r-plus-v1:0","name":"Command R+","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"cohere.command-r-v1:0":{"id":"cohere.command-r-v1:0","name":"Command R","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"deepseek.v3-v1:0":{"id":"deepseek.v3-v1:0","name":"DeepSeek-V3.1","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.58,"output":1.68,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":81920,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"deepseek.v3.2":{"id":"deepseek.v3.2","name":"DeepSeek-V3.2","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.62,"output":1.85,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":81920,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"deepseek.v3.2-v1:0":{"id":"deepseek.v3.2-v1:0","name":"DeepSeek-V3.2","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.62,"output":1.85,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":81920,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-3-5-haiku-20241022-v1:0":{"id":"eu.anthropic.claude-3-5-haiku-20241022-v1:0","name":"Anthropic Haiku 3.5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":{"id":"eu.anthropic.claude-3-5-sonnet-20240620-v1:0","name":"Anthropic Sonnet 3.5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":{"id":"eu.anthropic.claude-3-5-sonnet-20241022-v2:0","name":"Anthropic Sonnet 3.5 v2 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":{"id":"eu.anthropic.claude-3-7-sonnet-20250219-v1:0","name":"Anthropic Sonnet 3.7 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"eu.anthropic.claude-3-haiku-20240307-v1:0":{"id":"eu.anthropic.claude-3-haiku-20240307-v1:0","name":"Anthropic Haiku 3 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.25,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"eu.anthropic.claude-3-opus-20240229-v1:0":{"id":"eu.anthropic.claude-3-opus-20240229-v1:0","name":"Anthropic Opus 3 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"eu.anthropic.claude-3-sonnet-20240229-v1:0":{"id":"eu.anthropic.claude-3-sonnet-20240229-v1:0","name":"Anthropic Sonnet 3 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"eu.anthropic.claude-fable-5":{"id":"eu.anthropic.claude-fable-5","name":"Anthropic Fable 5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"eu.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Anthropic Haiku 4.5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-opus-4-1-20250805-v1:0":{"id":"eu.anthropic.claude-opus-4-1-20250805-v1:0","name":"Anthropic Opus 4.1 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-opus-4-20250514-v1:0":{"id":"eu.anthropic.claude-opus-4-20250514-v1:0","name":"Anthropic Opus 4 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"eu.anthropic.claude-opus-4-5-20251101-v1:0","name":"Anthropic Opus 4.5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5.5,"output":27.5,"cacheRead":0.55,"cacheWrite":6.875},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-opus-4-6-v1":{"id":"eu.anthropic.claude-opus-4-6-v1","name":"Anthropic Opus 4.6 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"eu.anthropic.claude-opus-4-7":{"id":"eu.anthropic.claude-opus-4-7","name":"Anthropic Opus 4.7 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5.5,"output":27.5,"cacheRead":0.55,"cacheWrite":6.875},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"eu.anthropic.claude-opus-4-8":{"id":"eu.anthropic.claude-opus-4-8","name":"Anthropic Opus 4.8 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"eu.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"eu.anthropic.claude-sonnet-4-20250514-v1:0","name":"Anthropic Sonnet 4 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Anthropic Sonnet 4.5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-sonnet-4-6":{"id":"eu.anthropic.claude-sonnet-4-6","name":"Anthropic Sonnet 4.6 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3.3,"output":16.5,"cacheRead":0.33,"cacheWrite":4.125},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"eu.anthropic.claude-sonnet-5":{"id":"eu.anthropic.claude-sonnet-5","name":"Anthropic Sonnet 5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2.2,"output":11,"cacheRead":0.22,"cacheWrite":2.75},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"global.amazon.nova-2-lite-v1:0":{"id":"global.amazon.nova-2-lite-v1:0","name":"Nova 2 Lite","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":0.33,"output":2.75,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-fable-5":{"id":"global.anthropic.claude-fable-5","name":"Anthropic Fable 5 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"global.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Anthropic Haiku 4.5 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"global.anthropic.claude-opus-4-5-20251101-v1:0","name":"Anthropic Opus 4.5 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-opus-4-6-v1":{"id":"global.anthropic.claude-opus-4-6-v1","name":"Anthropic Opus 4.6 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"global.anthropic.claude-opus-4-7":{"id":"global.anthropic.claude-opus-4-7","name":"Anthropic Opus 4.7 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"global.anthropic.claude-opus-4-8":{"id":"global.anthropic.claude-opus-4-8","name":"Anthropic Opus 4.8 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"global.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"global.anthropic.claude-sonnet-4-20250514-v1:0","name":"Anthropic Sonnet 4 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Anthropic Sonnet 4.5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-sonnet-4-6":{"id":"global.anthropic.claude-sonnet-4-6","name":"Anthropic Sonnet 4.6 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"global.anthropic.claude-sonnet-5":{"id":"global.anthropic.claude-sonnet-5","name":"Anthropic Sonnet 5 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"google.gemma-3-27b-it":{"id":"google.gemma-3-27b-it","name":"Google Gemma 3 27B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.12,"output":0.2,"cacheRead":0,"cacheWrite":0},"contextWindow":202752,"maxTokens":8192},"google.gemma-3-4b-it":{"id":"google.gemma-3-4b-it","name":"Gemma 3 4B IT","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.04,"output":0.08,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"jp.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"jp.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Anthropic Haiku 4.5 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"jp.anthropic.claude-opus-4-7":{"id":"jp.anthropic.claude-opus-4-7","name":"Anthropic Opus 4.7 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"jp.anthropic.claude-opus-4-8":{"id":"jp.anthropic.claude-opus-4-8","name":"Anthropic Opus 4.8 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"jp.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Anthropic Sonnet 4.5 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"jp.anthropic.claude-sonnet-4-6":{"id":"jp.anthropic.claude-sonnet-4-6","name":"Anthropic Sonnet 4.6 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"jp.anthropic.claude-sonnet-5":{"id":"jp.anthropic.claude-sonnet-5","name":"Anthropic Sonnet 5 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"meta.llama3-1-405b-instruct-v1:0":{"id":"meta.llama3-1-405b-instruct-v1:0","name":"Llama 3.1 405B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":2.4,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta.llama3-1-70b-instruct-v1:0":{"id":"meta.llama3-1-70b-instruct-v1:0","name":"Llama 3.1 70B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.72,"output":0.72,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta.llama3-1-8b-instruct-v1:0":{"id":"meta.llama3-1-8b-instruct-v1:0","name":"Llama 3.1 8B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.22,"output":0.22,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"minimax.minimax-m2":{"id":"minimax.minimax-m2","name":"MiniMax M2","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":204608,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"minimax.minimax-m2.1":{"id":"minimax.minimax-m2.1","name":"MiniMax M2.1","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"minimax.minimax-m2.5":{"id":"minimax.minimax-m2.5","name":"MiniMax M2.5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":98304,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"mistral.devstral-2-123b":{"id":"mistral.devstral-2-123b","name":"Devstral 2 123B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192},"mistral.magistral-small-2509":{"id":"mistral.magistral-small-2509","name":"Magistral Small 1.2","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":40000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"mistral.ministral-3-14b-instruct":{"id":"mistral.ministral-3-14b-instruct","name":"Ministral 14B 3.0","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.2,"output":0.2,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistral.ministral-3-3b-instruct":{"id":"mistral.ministral-3-3b-instruct","name":"Ministral 3 3B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.1,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192},"mistral.ministral-3-8b-instruct":{"id":"mistral.ministral-3-8b-instruct","name":"Ministral 3 8B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistral.mistral-large-2402-v1:0":{"id":"mistral.mistral-large-2402-v1:0","name":"Mistral Large (24.02)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistral.mistral-large-3-675b-instruct":{"id":"mistral.mistral-large-3-675b-instruct","name":"Mistral Large 3","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192},"mistral.pixtral-large-2502-v1:0":{"id":"mistral.pixtral-large-2502-v1:0","name":"Pixtral Large (25.02)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"mistral.voxtral-mini-3b-2507":{"id":"mistral.voxtral-mini-3b-2507","name":"Voxtral Mini 3B 2507","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.04,"output":0.04,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistral.voxtral-small-24b-2507":{"id":"mistral.voxtral-small-24b-2507","name":"Voxtral Small 24B 2507","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.35,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8192},"moonshot.kimi-k2-thinking":{"id":"moonshot.kimi-k2-thinking","name":"Kimi K2 Thinking","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262143,"maxTokens":16000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"moonshotai.kimi-k2.5":{"id":"moonshotai.kimi-k2.5","name":"Kimi K2.5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0,"cacheWrite":0},"contextWindow":262143,"maxTokens":16000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"nvidia.nemotron-nano-12b-v2":{"id":"nvidia.nemotron-nano-12b-v2","name":"NVIDIA Nemotron Nano 12B v2 VL BF16","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.2,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia.nemotron-nano-3-30b":{"id":"nvidia.nemotron-nano-3-30b","name":"NVIDIA Nemotron Nano 3 30B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"nvidia.nemotron-nano-9b-v2":{"id":"nvidia.nemotron-nano-9b-v2","name":"NVIDIA Nemotron Nano 9B v2","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.06,"output":0.23,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia.nemotron-super-3-120b":{"id":"nvidia.nemotron-super-3-120b","name":"NVIDIA Nemotron 3 Super 120B A12B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.65,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai.gpt-5.4":{"id":"openai.gpt-5.4","name":"GPT-5.4","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2.75,"output":16.5,"cacheRead":0.275,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai.gpt-5.5":{"id":"openai.gpt-5.5","name":"GPT-5.5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5.5,"output":33,"cacheRead":0.55,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai.gpt-5.6-luna":{"id":"openai.gpt-5.6-luna","name":"GPT-5.6 Luna","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai.gpt-5.6-sol":{"id":"openai.gpt-5.6-sol","name":"GPT-5.6 Sol","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai.gpt-5.6-terra":{"id":"openai.gpt-5.6-terra","name":"GPT-5.6 Terra","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai.gpt-oss-120b":{"id":"openai.gpt-oss-120b","name":"gpt-oss-120b","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai.gpt-oss-120b-1:0":{"id":"openai.gpt-oss-120b-1:0","name":"gpt-oss-120b","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai.gpt-oss-20b":{"id":"openai.gpt-oss-20b","name":"gpt-oss-20b","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai.gpt-oss-20b-1:0":{"id":"openai.gpt-oss-20b-1:0","name":"gpt-oss-20b","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai.gpt-oss-safeguard-120b":{"id":"openai.gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai.gpt-oss-safeguard-20b":{"id":"openai.gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.07,"output":0.2,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"qwen.qwen3-235b-a22b-2507-v1:0":{"id":"qwen.qwen3-235b-a22b-2507-v1:0","name":"Qwen3 235B A22B 2507","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.22,"output":0.88,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072},"qwen.qwen3-32b-v1:0":{"id":"qwen.qwen3-32b-v1:0","name":"Qwen3 32B (dense)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":16384,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"qwen.qwen3-coder-30b-a3b-v1:0":{"id":"qwen.qwen3-coder-30b-a3b-v1:0","name":"Qwen3 Coder 30B A3B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072},"qwen.qwen3-coder-480b-a35b-v1:0":{"id":"qwen.qwen3-coder-480b-a35b-v1:0","name":"Qwen3 Coder 480B A35B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.22,"output":1.8,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536},"qwen.qwen3-coder-next":{"id":"qwen.qwen3-coder-next","name":"Qwen3 Coder Next","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.22,"output":1.8,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"qwen.qwen3-next-80b-a3b":{"id":"qwen.qwen3-next-80b-a3b","name":"Qwen/Qwen3-Next-80B-A3B-Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.14,"output":1.4,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":262000},"qwen.qwen3-vl-235b-a22b":{"id":"qwen.qwen3-vl-235b-a22b","name":"Qwen/Qwen3-VL-235B-A22B-Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.3,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":262000},"us.amazon.nova-lite-v1:0":{"id":"us.amazon.nova-lite-v1:0","name":"Nova Lite","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.06,"output":0.24,"cacheRead":0.015,"cacheWrite":0},"contextWindow":300000,"maxTokens":8192},"us.amazon.nova-micro-v1:0":{"id":"us.amazon.nova-micro-v1:0","name":"Nova Micro","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.035,"output":0.14,"cacheRead":0.00875,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"us.amazon.nova-premier-v1:0":{"id":"us.amazon.nova-premier-v1:0","name":"Nova Premier","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":12.5,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"us.amazon.nova-pro-v1:0":{"id":"us.amazon.nova-pro-v1:0","name":"Nova Pro","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":3.2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":300000,"maxTokens":8192},"us.anthropic.claude-3-7-sonnet-20250219-v1:0":{"id":"us.anthropic.claude-3-7-sonnet-20250219-v1:0","name":"Anthropic Sonnet 3.7","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"us.anthropic.claude-fable-5":{"id":"us.anthropic.claude-fable-5","name":"Anthropic Fable 5 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"us.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Anthropic Haiku 4.5 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-opus-4-1-20250805-v1:0":{"id":"us.anthropic.claude-opus-4-1-20250805-v1:0","name":"Anthropic Opus 4.1 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-opus-4-20250514-v1:0":{"id":"us.anthropic.claude-opus-4-20250514-v1:0","name":"Anthropic Opus 4 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"us.anthropic.claude-opus-4-5-20251101-v1:0","name":"Anthropic Opus 4.5 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-opus-4-6-v1":{"id":"us.anthropic.claude-opus-4-6-v1","name":"Anthropic Opus 4.6 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"us.anthropic.claude-opus-4-7":{"id":"us.anthropic.claude-opus-4-7","name":"Anthropic Opus 4.7 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"us.anthropic.claude-opus-4-8":{"id":"us.anthropic.claude-opus-4-8","name":"Anthropic Opus 4.8 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"us.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"us.anthropic.claude-sonnet-4-20250514-v1:0","name":"Anthropic Sonnet 4 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"us.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Anthropic Sonnet 4.5 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-sonnet-4-6":{"id":"us.anthropic.claude-sonnet-4-6","name":"Anthropic Sonnet 4.6 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"us.anthropic.claude-sonnet-5":{"id":"us.anthropic.claude-sonnet-5","name":"Anthropic Sonnet 5 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"high"}},"us.deepseek.r1-v1:0":{"id":"us.deepseek.r1-v1:0","name":"DeepSeek-R1 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":1.35,"output":5.4,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"us.meta.llama3-2-11b-instruct-v1:0":{"id":"us.meta.llama3-2-11b-instruct-v1:0","name":"Llama 3.2 11B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.16,"output":0.16,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"us.meta.llama3-2-1b-instruct-v1:0":{"id":"us.meta.llama3-2-1b-instruct-v1:0","name":"Llama 3.2 1B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.1,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":4096},"us.meta.llama3-2-3b-instruct-v1:0":{"id":"us.meta.llama3-2-3b-instruct-v1:0","name":"Llama 3.2 3B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":4096},"us.meta.llama3-2-90b-instruct-v1:0":{"id":"us.meta.llama3-2-90b-instruct-v1:0","name":"Llama 3.2 90B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.72,"output":0.72,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"us.meta.llama3-3-70b-instruct-v1:0":{"id":"us.meta.llama3-3-70b-instruct-v1:0","name":"Llama 3.3 70B Instruct","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text"],"cost":{"input":0.72,"output":0.72,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"us.meta.llama4-maverick-17b-instruct-v1:0":{"id":"us.meta.llama4-maverick-17b-instruct-v1:0","name":"Llama 4 Maverick 17B Instruct (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.24,"output":0.97,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":16384},"us.meta.llama4-scout-17b-instruct-v1:0":{"id":"us.meta.llama4-scout-17b-instruct-v1:0","name":"Llama 4 Scout 17B Instruct (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":false,"input":["text","image"],"cost":{"input":0.17,"output":0.66,"cacheRead":0,"cacheWrite":0},"contextWindow":3500000,"maxTokens":16384},"writer.palmyra-x4-v1:0":{"id":"writer.palmyra-x4-v1:0","name":"Palmyra X4","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":122880,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"writer.palmyra-x5-v1:0":{"id":"writer.palmyra-x5-v1:0","name":"Palmyra X5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":1040000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"xai.grok-4.3":{"id":"xai.grok-4.3","name":"Grok 4.3","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"zai.glm-4.7":{"id":"zai.glm-4.7","name":"GLM-4.7","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"zai.glm-4.7-flash":{"id":"zai.glm-4.7-flash","name":"GLM-4.7-Flash","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.4,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"zai.glm-5":{"id":"zai.glm-5","name":"GLM-5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0,"cacheWrite":0},"contextWindow":202752,"maxTokens":101376,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"anthropic.claude-opus-5":{"id":"anthropic.claude-opus-5","name":"Anthropic Opus 5","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"au.anthropic.claude-opus-5":{"id":"au.anthropic.claude-opus-5","name":"Anthropic Opus 5 (AU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"eu.anthropic.claude-opus-5":{"id":"eu.anthropic.claude-opus-5","name":"Anthropic Opus 5 (EU)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5.5,"output":27.5,"cacheRead":0.55,"cacheWrite":6.875},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"global.anthropic.claude-opus-5":{"id":"global.anthropic.claude-opus-5","name":"Anthropic Opus 5 (Global)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"jp.anthropic.claude-opus-5":{"id":"jp.anthropic.claude-opus-5","name":"Anthropic Opus 5 (JP)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"us.anthropic.claude-opus-5":{"id":"us.anthropic.claude-opus-5","name":"Anthropic Opus 5 (US)","api":"bedrock-converse-stream","provider":"amazon-bedrock","baseUrl":"https://bedrock-runtime.us-east-1.amazonaws.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}}} diff --git a/packages/ai/src/model-shards/anthropic.json b/packages/ai/src/model-shards/anthropic.json new file mode 100644 index 0000000000..cc878c1e32 --- /dev/null +++ b/packages/ai/src/model-shards/anthropic.json @@ -0,0 +1 @@ +{"claude-3-5-sonnet-20240620":{"id":"claude-3-5-sonnet-20240620","name":"Anthropic Sonnet 3.5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"claude-3-5-sonnet-20241022":{"id":"claude-3-5-sonnet-20241022","name":"Anthropic Sonnet 3.5 v2","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"claude-3-haiku-20240307":{"id":"claude-3-haiku-20240307","name":"Anthropic Haiku 3","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.25,"cacheRead":0.03,"cacheWrite":0.3},"contextWindow":200000,"maxTokens":4096},"claude-fable-5":{"id":"claude-fable-5","name":"Anthropic Fable 5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"xhigh"}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Anthropic Haiku 4.5 (latest)","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Anthropic Haiku 4.5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-0":{"id":"claude-opus-4-0","name":"Anthropic Opus 4 (latest)","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Anthropic Opus 4.1 (latest)","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Anthropic Opus 4.1","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"Anthropic Opus 4","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Anthropic Opus 4.5 (latest)","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Anthropic Opus 4.5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Anthropic Opus 4.6","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Anthropic Opus 4.7","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Anthropic Opus 4.8","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"claude-sonnet-4-0":{"id":"claude-sonnet-4-0","name":"Anthropic Sonnet 4 (latest)","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"Anthropic Sonnet 4","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (latest)","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Anthropic Sonnet 4.5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Anthropic Sonnet 4.6","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Anthropic Sonnet 5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"claude-opus-5":{"id":"claude-opus-5","name":"Anthropic Opus 5","api":"anthropic-messages","provider":"anthropic","baseUrl":"https://api.anthropic.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}}} diff --git a/packages/ai/src/model-shards/azure-openai.json b/packages/ai/src/model-shards/azure-openai.json new file mode 100644 index 0000000000..55ba55614e --- /dev/null +++ b/packages/ai/src/model-shards/azure-openai.json @@ -0,0 +1 @@ +{"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","api":"azure-openai-responses","provider":"azure-openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","api":"azure-openai-responses","provider":"azure-openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","api":"azure-openai-responses","provider":"azure-openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"o3":{"id":"o3","name":"o3","api":"azure-openai-responses","provider":"azure-openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"o3-mini":{"id":"o3-mini","name":"o3-mini","api":"azure-openai-responses","provider":"azure-openai","baseUrl":"","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/bizrouter.json b/packages/ai/src/model-shards/bizrouter.json new file mode 100644 index 0000000000..a584c4e5a7 --- /dev/null +++ b/packages/ai/src/model-shards/bizrouter.json @@ -0,0 +1 @@ +{"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Anthropic Sonnet 4.5","api":"openai-completions","provider":"bizrouter","baseUrl":"https://api.bizrouter.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"bizrouter","baseUrl":"https://api.bizrouter.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"openai-completions","provider":"bizrouter","baseUrl":"https://api.bizrouter.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384}} diff --git a/packages/ai/src/model-shards/cerebras.json b/packages/ai/src/model-shards/cerebras.json new file mode 100644 index 0000000000..265407e115 --- /dev/null +++ b/packages/ai/src/model-shards/cerebras.json @@ -0,0 +1 @@ +{"gemma-4-31b":{"id":"gemma-4-31b","name":"Gemma 4 31B IT","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.99,"output":1.49,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.35,"output":0.75,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"llama3.1-8b":{"id":"llama3.1-8b","name":"Llama 3.1 8B","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.1,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8000},"qwen-3-235b-a22b-instruct-2507":{"id":"qwen-3-235b-a22b-instruct-2507","name":"Qwen 3 235B Instruct","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":32000},"qwen-3-coder-480b":{"id":"qwen-3-coder-480b","name":"qwen-3-coder-480b","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768},"zai-glm-4.6":{"id":"zai-glm-4.6","name":"zai-glm-4.6","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768},"zai-glm-4.7":{"id":"zai-glm-4.7","name":"Z.AI GLM-4.7","api":"openai-completions","provider":"cerebras","baseUrl":"https://api.cerebras.ai/v1","reasoning":true,"input":["text"],"cost":{"input":2.25,"output":2.75,"cacheRead":2.25,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/cloudflare-ai-gateway.json b/packages/ai/src/model-shards/cloudflare-ai-gateway.json new file mode 100644 index 0000000000..b5e5fa2e5e --- /dev/null +++ b/packages/ai/src/model-shards/cloudflare-ai-gateway.json @@ -0,0 +1 @@ +{"anthropic/claude-3-5-haiku":{"id":"anthropic/claude-3-5-haiku","name":"Anthropic Haiku 3.5 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Anthropic Haiku 3","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.25,"cacheRead":0.03,"cacheWrite":0.3},"contextWindow":200000,"maxTokens":4096},"anthropic/claude-3-opus":{"id":"anthropic/claude-3-opus","name":"Anthropic Opus 3","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":4096},"anthropic/claude-3-sonnet":{"id":"anthropic/claude-3-sonnet","name":"Anthropic Sonnet 3","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0.3},"contextWindow":200000,"maxTokens":4096},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Anthropic Haiku 3.5 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.5-sonnet":{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic Sonnet 3.5 v2","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Anthropic Fable 5","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Anthropic Haiku 4.5 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic Opus 4 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4-1":{"id":"anthropic/claude-opus-4-1","name":"Anthropic Opus 4.1 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Anthropic Opus 4.5 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Anthropic Opus 4.6 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Anthropic Opus 4.7","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Anthropic Opus 4.8","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic Sonnet 4 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Anthropic Sonnet 4.6","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Anthropic Sonnet 5","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (latest)","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text"],"cost":{"input":30,"output":60,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.08,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.13,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.1,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai/o1":{"id":"openai/o1","name":"o1","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":60,"cacheRead":7.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3":{"id":"openai/o3","name":"o3","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":20,"output":80,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.28,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"workers-ai/@cf/moonshotai/kimi-k2.5":{"id":"workers-ai/@cf/moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0.1,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"workers-ai/@cf/moonshotai/kimi-k2.6":{"id":"workers-ai/@cf/moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"workers-ai/@cf/nvidia/nemotron-3-120b-a12b":{"id":"workers-ai/@cf/nvidia/nemotron-3-120b-a12b","name":"Nemotron 3 Super 120B","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"workers-ai/@cf/zai-org/glm-4.7-flash":{"id":"workers-ai/@cf/zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.4,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"workers-ai/@cf/zai-org/glm-5.2":{"id":"workers-ai/@cf/zai-org/glm-5.2","name":"Glm 5.2","api":"anthropic-messages","provider":"cloudflare-ai-gateway","baseUrl":"https://gateway.ai.cloudflare.com/v1///anthropic","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/cursor.json b/packages/ai/src/model-shards/cursor.json new file mode 100644 index 0000000000..aeaeeffdae --- /dev/null +++ b/packages/ai/src/model-shards/cursor.json @@ -0,0 +1 @@ +{"claude-4-sonnet":{"id":"claude-4-sonnet","name":"Sonnet 4","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4-sonnet-thinking":{"id":"claude-4-sonnet-thinking","name":"Sonnet 4 Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.5-opus-high":{"id":"claude-4.5-opus-high","name":"Opus 4.5","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.5-opus-high-thinking":{"id":"claude-4.5-opus-high-thinking","name":"Opus 4.5 Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"claude-4.5-sonnet":{"id":"claude-4.5-sonnet","name":"Sonnet 4.5","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.5-sonnet-thinking":{"id":"claude-4.5-sonnet-thinking","name":"Sonnet 4.5 Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"claude-4.6-opus-high":{"id":"claude-4.6-opus-high","name":"Opus 4.6 1M","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-opus-high-thinking":{"id":"claude-4.6-opus-high-thinking","name":"Opus 4.6 1M Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-opus-high-thinking-fast":{"id":"claude-4.6-opus-high-thinking-fast","name":"Opus 4.6 1M Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-opus-max":{"id":"claude-4.6-opus-max","name":"Opus 4.6 1M Max","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-opus-max-thinking":{"id":"claude-4.6-opus-max-thinking","name":"Opus 4.6 1M Max Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-opus-max-thinking-fast":{"id":"claude-4.6-opus-max-thinking-fast","name":"Opus 4.6 1M Max Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-sonnet-medium":{"id":"claude-4.6-sonnet-medium","name":"Sonnet 4.6 1M","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-4.6-sonnet-medium-thinking":{"id":"claude-4.6-sonnet-medium-thinking","name":"Sonnet 4.6 1M Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-high":{"id":"claude-fable-5-high","name":"Fable 5 1M (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-low":{"id":"claude-fable-5-low","name":"Fable 5 1M Low (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-max":{"id":"claude-fable-5-max","name":"Fable 5 1M Max (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-medium":{"id":"claude-fable-5-medium","name":"Fable 5 1M Medium (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-thinking-high":{"id":"claude-fable-5-thinking-high","name":"Fable 5 1M Thinking (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-thinking-low":{"id":"claude-fable-5-thinking-low","name":"Fable 5 1M Low Thinking (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-thinking-max":{"id":"claude-fable-5-thinking-max","name":"Fable 5 1M Max Thinking (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-thinking-medium":{"id":"claude-fable-5-thinking-medium","name":"Fable 5 1M Medium Thinking (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-thinking-xhigh":{"id":"claude-fable-5-thinking-xhigh","name":"Fable 5 1M Extra High Thinking (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-fable-5-xhigh":{"id":"claude-fable-5-xhigh","name":"Fable 5 1M Extra High (NO ZDR)","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-high":{"id":"claude-opus-4-7-high","name":"Opus 4.7 1M High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-high-fast":{"id":"claude-opus-4-7-high-fast","name":"Opus 4.7 1M High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-low":{"id":"claude-opus-4-7-low","name":"Opus 4.7 1M Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-low-fast":{"id":"claude-opus-4-7-low-fast","name":"Opus 4.7 1M Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-max":{"id":"claude-opus-4-7-max","name":"Opus 4.7 1M Max","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-max-fast":{"id":"claude-opus-4-7-max-fast","name":"Opus 4.7 1M Max Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-medium":{"id":"claude-opus-4-7-medium","name":"Opus 4.7 1M Medium","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-medium-fast":{"id":"claude-opus-4-7-medium-fast","name":"Opus 4.7 1M Medium Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-high":{"id":"claude-opus-4-7-thinking-high","name":"Opus 4.7 1M High Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-high-fast":{"id":"claude-opus-4-7-thinking-high-fast","name":"Opus 4.7 1M High Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-low":{"id":"claude-opus-4-7-thinking-low","name":"Opus 4.7 1M Low Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-low-fast":{"id":"claude-opus-4-7-thinking-low-fast","name":"Opus 4.7 1M Low Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-max":{"id":"claude-opus-4-7-thinking-max","name":"Opus 4.7 1M Max Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-max-fast":{"id":"claude-opus-4-7-thinking-max-fast","name":"Opus 4.7 1M Max Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-medium":{"id":"claude-opus-4-7-thinking-medium","name":"Opus 4.7 1M Medium Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-medium-fast":{"id":"claude-opus-4-7-thinking-medium-fast","name":"Opus 4.7 1M Medium Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-xhigh":{"id":"claude-opus-4-7-thinking-xhigh","name":"Opus 4.7 1M Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-thinking-xhigh-fast":{"id":"claude-opus-4-7-thinking-xhigh-fast","name":"Opus 4.7 1M Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-xhigh":{"id":"claude-opus-4-7-xhigh","name":"Opus 4.7 1M","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-7-xhigh-fast":{"id":"claude-opus-4-7-xhigh-fast","name":"Opus 4.7 1M Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-high":{"id":"claude-opus-4-8-high","name":"Opus 4.8 1M","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-high-fast":{"id":"claude-opus-4-8-high-fast","name":"Opus 4.8 1M Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-low":{"id":"claude-opus-4-8-low","name":"Opus 4.8 1M Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-low-fast":{"id":"claude-opus-4-8-low-fast","name":"Opus 4.8 1M Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-max":{"id":"claude-opus-4-8-max","name":"Opus 4.8 1M Max","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-max-fast":{"id":"claude-opus-4-8-max-fast","name":"Opus 4.8 1M Max Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-medium":{"id":"claude-opus-4-8-medium","name":"Opus 4.8 1M Medium","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-medium-fast":{"id":"claude-opus-4-8-medium-fast","name":"Opus 4.8 1M Medium Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-high":{"id":"claude-opus-4-8-thinking-high","name":"Opus 4.8 1M Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-high-fast":{"id":"claude-opus-4-8-thinking-high-fast","name":"Opus 4.8 1M Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-low":{"id":"claude-opus-4-8-thinking-low","name":"Opus 4.8 1M Low Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-low-fast":{"id":"claude-opus-4-8-thinking-low-fast","name":"Opus 4.8 1M Low Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-max":{"id":"claude-opus-4-8-thinking-max","name":"Opus 4.8 1M Max Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-max-fast":{"id":"claude-opus-4-8-thinking-max-fast","name":"Opus 4.8 1M Max Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-medium":{"id":"claude-opus-4-8-thinking-medium","name":"Opus 4.8 1M Medium Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-medium-fast":{"id":"claude-opus-4-8-thinking-medium-fast","name":"Opus 4.8 1M Medium Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-xhigh":{"id":"claude-opus-4-8-thinking-xhigh","name":"Opus 4.8 1M Extra High Thinking","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-thinking-xhigh-fast":{"id":"claude-opus-4-8-thinking-xhigh-fast","name":"Opus 4.8 1M Extra High Thinking Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-xhigh":{"id":"claude-opus-4-8-xhigh","name":"Opus 4.8 1M Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-8-xhigh-fast":{"id":"claude-opus-4-8-xhigh-fast","name":"Opus 4.8 1M Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"composer-1":{"id":"composer-1","name":"Composer 1","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"composer-1.5":{"id":"composer-1.5","name":"Composer 1.5","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"composer-2.5":{"id":"composer-2.5","name":"Composer 2.5","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"composer-2.5-fast":{"id":"composer-2.5-fast","name":"Composer 2.5 Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"default":{"id":"default","name":"Auto","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro":{"id":"gemini-3-pro","name":"Gemini 3 Pro","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 OpenAI code Max","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-max-high":{"id":"gpt-5.1-codex-max-high","name":"OpenAI code 5.1 Max High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-max-high-fast":{"id":"gpt-5.1-codex-max-high-fast","name":"OpenAI code 5.1 Max High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-max-low":{"id":"gpt-5.1-codex-max-low","name":"OpenAI code 5.1 Max Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-max-low-fast":{"id":"gpt-5.1-codex-max-low-fast","name":"OpenAI code 5.1 Max Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-max-medium":{"id":"gpt-5.1-codex-max-medium","name":"OpenAI code 5.1 Max","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-max-medium-fast":{"id":"gpt-5.1-codex-max-medium-fast","name":"OpenAI code 5.1 Max Medium Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-max-xhigh":{"id":"gpt-5.1-codex-max-xhigh","name":"OpenAI code 5.1 Max Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-max-xhigh-fast":{"id":"gpt-5.1-codex-max-xhigh-fast","name":"OpenAI code 5.1 Max Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 OpenAI code mini","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"gpt-5.1-codex-mini-high":{"id":"gpt-5.1-codex-mini-high","name":"OpenAI code 5.1 Mini High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-codex-mini-low":{"id":"gpt-5.1-codex-mini-low","name":"OpenAI code 5.1 Mini Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-high":{"id":"gpt-5.1-high","name":"GPT-5.1 High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.1-low":{"id":"gpt-5.1-low","name":"GPT-5.1 Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.2-codex-fast":{"id":"gpt-5.2-codex-fast","name":"OpenAI code 5.2 Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-codex-high":{"id":"gpt-5.2-codex-high","name":"OpenAI code 5.2 High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-codex-high-fast":{"id":"gpt-5.2-codex-high-fast","name":"OpenAI code 5.2 High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-codex-low":{"id":"gpt-5.2-codex-low","name":"OpenAI code 5.2 Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-codex-low-fast":{"id":"gpt-5.2-codex-low-fast","name":"OpenAI code 5.2 Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-codex-xhigh":{"id":"gpt-5.2-codex-xhigh","name":"OpenAI code 5.2 Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-codex-xhigh-fast":{"id":"gpt-5.2-codex-xhigh-fast","name":"OpenAI code 5.2 Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.2-fast":{"id":"gpt-5.2-fast","name":"GPT-5.2 Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.2-high":{"id":"gpt-5.2-high","name":"GPT-5.2 High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.2-high-fast":{"id":"gpt-5.2-high-fast","name":"GPT-5.2 High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.2-low":{"id":"gpt-5.2-low","name":"GPT-5.2 Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.2-low-fast":{"id":"gpt-5.2-low-fast","name":"GPT-5.2 Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.2-xhigh":{"id":"gpt-5.2-xhigh","name":"GPT-5.2 Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.2-xhigh-fast":{"id":"gpt-5.2-xhigh-fast","name":"GPT-5.2 Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.3-codex-fast":{"id":"gpt-5.3-codex-fast","name":"OpenAI code 5.3 Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.3-codex-high":{"id":"gpt-5.3-codex-high","name":"OpenAI code 5.3 High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.3-codex-high-fast":{"id":"gpt-5.3-codex-high-fast","name":"OpenAI code 5.3 High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.3-codex-low":{"id":"gpt-5.3-codex-low","name":"OpenAI code 5.3 Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.3-codex-low-fast":{"id":"gpt-5.3-codex-low-fast","name":"OpenAI code 5.3 Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.3-codex-spark-preview":{"id":"gpt-5.3-codex-spark-preview","name":"GPT-5.3 OpenAI code Spark","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.3-codex-xhigh":{"id":"gpt-5.3-codex-xhigh","name":"OpenAI code 5.3 Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.3-codex-xhigh-fast":{"id":"gpt-5.3-codex-xhigh-fast","name":"OpenAI code 5.3 Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000},"gpt-5.4-high":{"id":"gpt-5.4-high","name":"GPT-5.4 1M High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-high-fast":{"id":"gpt-5.4-high-fast","name":"GPT-5.4 High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-low":{"id":"gpt-5.4-low","name":"GPT-5.4 1M Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-medium":{"id":"gpt-5.4-medium","name":"GPT-5.4 1M","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-medium-fast":{"id":"gpt-5.4-medium-fast","name":"GPT-5.4 Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-mini-high":{"id":"gpt-5.4-mini-high","name":"GPT-5.4 Mini High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-mini-low":{"id":"gpt-5.4-mini-low","name":"GPT-5.4 Mini Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-mini-medium":{"id":"gpt-5.4-mini-medium","name":"GPT-5.4 Mini","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-mini-none":{"id":"gpt-5.4-mini-none","name":"GPT-5.4 Mini None","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-mini-xhigh":{"id":"gpt-5.4-mini-xhigh","name":"GPT-5.4 Mini Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-nano-high":{"id":"gpt-5.4-nano-high","name":"GPT-5.4 Nano High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-nano-low":{"id":"gpt-5.4-nano-low","name":"GPT-5.4 Nano Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-nano-medium":{"id":"gpt-5.4-nano-medium","name":"GPT-5.4 Nano","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-nano-none":{"id":"gpt-5.4-nano-none","name":"GPT-5.4 Nano None","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-nano-xhigh":{"id":"gpt-5.4-nano-xhigh","name":"GPT-5.4 Nano Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-xhigh":{"id":"gpt-5.4-xhigh","name":"GPT-5.4 1M Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.4-xhigh-fast":{"id":"gpt-5.4-xhigh-fast","name":"GPT-5.4 Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-extra-high":{"id":"gpt-5.5-extra-high","name":"GPT-5.5 1M Extra High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-extra-high-fast":{"id":"gpt-5.5-extra-high-fast","name":"GPT-5.5 Extra High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-high":{"id":"gpt-5.5-high","name":"GPT-5.5 1M High","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-high-fast":{"id":"gpt-5.5-high-fast","name":"GPT-5.5 High Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-low":{"id":"gpt-5.5-low","name":"GPT-5.5 1M Low","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-low-fast":{"id":"gpt-5.5-low-fast","name":"GPT-5.5 Low Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-medium":{"id":"gpt-5.5-medium","name":"GPT-5.5 1M","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-medium-fast":{"id":"gpt-5.5-medium-fast","name":"GPT-5.5 Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-none":{"id":"gpt-5.5-none","name":"GPT-5.5 1M None","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"gpt-5.5-none-fast":{"id":"gpt-5.5-none-fast","name":"GPT-5.5 None Fast","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":10000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"cursor-agent","provider":"cursor","baseUrl":"https://api2.cursor.sh","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/deepinfra.json b/packages/ai/src/model-shards/deepinfra.json new file mode 100644 index 0000000000..0f807b4e13 --- /dev/null +++ b/packages/ai/src/model-shards/deepinfra.json @@ -0,0 +1 @@ +{"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":2.15,"cacheRead":0.35,"cacheWrite":0},"contextWindow":163840,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek-V3.2","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.26,"output":0.38,"cacheRead":0.13,"cacheWrite":0},"contextWindow":163840,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.09,"output":0.18,"cacheRead":0.018,"cacheWrite":0},"contextWindow":1048576,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":1.3,"output":2.6,"cacheRead":0.1,"cacheWrite":0},"contextWindow":1048576,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.07,"output":0.34,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.13,"output":0.38,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B Turbo","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.32,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"meta-llama/Llama-4-Scout-17B-16E-Instruct":{"id":"meta-llama/Llama-4-Scout-17B-16E-Instruct","name":"Llama 4 Scout 17B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":327680,"maxTokens":16384},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax M2.5","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":1.15,"cacheRead":0.03,"cacheWrite":0},"contextWindow":196608,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":1,"cacheRead":0.05,"cacheWrite":0},"contextWindow":196608,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":524288,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.45,"output":2.25,"cacheRead":0.07,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":3.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.74,"output":3.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5","name":"Llama 3.3 Nemotron Super 49B v1.5","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.4,"output":0.4,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/Nemotron-3-Nano-30B-A3B":{"id":"nvidia/Nemotron-3-Nano-30B-A3B","name":"Nemotron 3 Nano 30B A3B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.05,"output":0.2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning":{"id":"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":0.8,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.037,"output":0.17,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.03,"output":0.14,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.08,"output":0.28,"cacheRead":0,"cacheWrite":0},"contextWindow":40960,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo","name":"Qwen3 Coder 480B A35B Instruct Turbo","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1,"cacheRead":0.1,"cacheWrite":0},"contextWindow":262144,"maxTokens":66536},"Qwen/Qwen3-Max":{"id":"Qwen/Qwen3-Max","name":"Qwen3 Max","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":false,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0.24,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":false,"input":["text"],"cost":{"input":0.09,"output":1.1,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.29,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.26,"output":2.6,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen 3.5 35B A3B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":1,"cacheRead":0.05,"cacheWrite":0},"contextWindow":262144,"maxTokens":81920,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen 3.5 397B A17B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.45,"output":3,"cacheRead":0.22,"cacheWrite":0},"contextWindow":262144,"maxTokens":81920,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.32,"output":3.2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.95,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":81920,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":false,"input":["text"],"cost":{"input":2.5,"output":7.5,"cacheRead":0.5,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.08,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":2,"cacheRead":0.1,"cacheWrite":0},"contextWindow":202752,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.4,"output":1.75,"cacheRead":0.08,"cacheWrite":0},"contextWindow":202752,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-4.7-Flash":{"id":"zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.4,"cacheRead":0.01,"cacheWrite":0},"contextWindow":202752,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.08,"cacheRead":0.12,"cacheWrite":0},"contextWindow":202752,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":1.05,"output":3.5,"cacheRead":0.205,"cacheWrite":0},"contextWindow":202752,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","api":"openai-completions","provider":"deepinfra","baseUrl":"https://api.deepinfra.com/v1/openai","reasoning":true,"input":["text"],"cost":{"input":0.93,"output":3,"cacheRead":0.18,"cacheWrite":0},"contextWindow":1048576,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/deepseek.json b/packages/ai/src/model-shards/deepseek.json new file mode 100644 index 0000000000..aefc9e91f3 --- /dev/null +++ b/packages/ai/src/model-shards/deepseek.json @@ -0,0 +1 @@ +{"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"deepseek","baseUrl":"https://api.deepseek.com","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":true,"reasoningEffortMap":{"minimal":"high","low":"high","medium":"high","high":"high","xhigh":"max","max":"max"},"maxTokensField":"max_tokens","supportsToolChoice":false,"extraBody":{"thinking":{"type":"enabled"}},"reasoningContentField":"reasoning_content","requiresReasoningContentForToolCalls":true,"requiresAssistantContentForToolCalls":true},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"deepseek","baseUrl":"https://api.deepseek.com","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":true,"reasoningEffortMap":{"minimal":"high","low":"high","medium":"high","high":"high","xhigh":"max","max":"max"},"maxTokensField":"max_tokens","supportsToolChoice":false,"extraBody":{"thinking":{"type":"enabled"}},"reasoningContentField":"reasoning_content","requiresReasoningContentForToolCalls":true,"requiresAssistantContentForToolCalls":true},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/firepass.json b/packages/ai/src/model-shards/firepass.json new file mode 100644 index 0000000000..8fab259b5f --- /dev/null +++ b/packages/ai/src/model-shards/firepass.json @@ -0,0 +1 @@ +{"kimi-k2.6-turbo":{"id":"kimi-k2.6-turbo","name":"Kimi K2.6 Turbo (Fire Pass)","api":"openai-completions","provider":"firepass","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/fireworks.json b/packages/ai/src/model-shards/fireworks.json new file mode 100644 index 0000000000..61ffcd35b4 --- /dev/null +++ b/packages/ai/src/model-shards/fireworks.json @@ -0,0 +1 @@ +{"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"contextWindow":1048576,"maxTokens":384000,"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":true,"reasoningEffortMap":{"minimal":"high","low":"high","medium":"high","high":"high","xhigh":"max"},"maxTokensField":"max_tokens","supportsToolChoice":false,"extraBody":{"thinking":{"type":"enabled"}},"reasoningContentField":"reasoning_content","requiresReasoningContentForToolCalls":true,"requiresAssistantContentForToolCalls":true},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5":{"id":"glm-5","name":"GLM-5","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":202752,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":202752,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.69,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0.08,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"fireworks","baseUrl":"https://api.fireworks.ai/inference/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":196608,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/fugu.json b/packages/ai/src/model-shards/fugu.json new file mode 100644 index 0000000000..3a77de2e64 --- /dev/null +++ b/packages/ai/src/model-shards/fugu.json @@ -0,0 +1 @@ +{"fugu":{"id":"fugu","name":"Sakana Fugu","api":"openai-completions","provider":"fugu","baseUrl":"https://api.sakana.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":65536,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsMultipleSystemMessages":false,"supportsReasoningEffort":false,"supportsUsageInStreaming":true,"maxTokensField":"max_tokens"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"fugu-ultra":{"id":"fugu-ultra","name":"Sakana Fugu Ultra","api":"openai-completions","provider":"fugu","baseUrl":"https://api.sakana.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":65536,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsMultipleSystemMessages":false,"supportsReasoningEffort":false,"supportsUsageInStreaming":true,"maxTokensField":"max_tokens"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/github-copilot.json b/packages/ai/src/model-shards/github-copilot.json new file mode 100644 index 0000000000..de8ce05bfa --- /dev/null +++ b/packages/ai/src/model-shards/github-copilot.json @@ -0,0 +1 @@ +{"claude-fable-5":{"id":"claude-fable-5","name":"Anthropic Fable 5","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"claude-haiku-4.5":{"id":"claude-haiku-4.5","name":"Anthropic Haiku 4.5 (latest)","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"premiumMultiplier":0.33,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4.5":{"id":"claude-opus-4.5","name":"Anthropic Opus 4.5 (latest)","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":32000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4.6":{"id":"claude-opus-4.6","name":"Anthropic Opus 4.6","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":168000,"maxTokens":32000,"headers":{"User-Agent":"opencode/1.3.15"},"premiumMultiplier":3,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"claude-opus-4.7":{"id":"claude-opus-4.7","name":"Anthropic Opus 4.7","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":32000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"claude-opus-4.8":{"id":"claude-opus-4.8","name":"Anthropic Opus 4.8","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Anthropic Sonnet 4 (latest)","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":216000,"maxTokens":16000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4.5":{"id":"claude-sonnet-4.5","name":"Anthropic Sonnet 4.5 (latest)","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":32000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4.6":{"id":"claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":32000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Anthropic Sonnet 5","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"premiumMultiplier":0},"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"contextWindow":264000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":264000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 OpenAI code Max","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 OpenAI code mini","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"premiumMultiplier":0.33,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":1050000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-responses","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":1050000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":192000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"premiumMultiplier":0.25,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mai-code-1-flash-picker":{"id":"mai-code-1-flash-picker","name":"MAI-Code-1-Flash","api":"openai-completions","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":256000,"maxTokens":128000,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"claude-opus-5":{"id":"claude-opus-5","name":"Anthropic Opus 5","api":"anthropic-messages","provider":"github-copilot","baseUrl":"https://api.githubcopilot.com","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":64000,"headers":{"User-Agent":"opencode/1.3.15"},"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}}} diff --git a/packages/ai/src/model-shards/gitlab-duo.json b/packages/ai/src/model-shards/gitlab-duo.json new file mode 100644 index 0000000000..de4053c775 --- /dev/null +++ b/packages/ai/src/model-shards/gitlab-duo.json @@ -0,0 +1 @@ +{"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Anthropic Haiku 4.5","api":"anthropic-messages","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"provider":"gitlab-duo","thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Anthropic Opus 4.5","api":"anthropic-messages","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":64000,"provider":"gitlab-duo","thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Anthropic Sonnet 4.5","api":"anthropic-messages","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"provider":"gitlab-duo","thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-gpt-5-1":{"id":"duo-chat-gpt-5-1","name":"Duo Chat GPT-5.1","api":"openai-completions","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-gpt-5-2":{"id":"duo-chat-gpt-5-2","name":"Duo Chat GPT-5.2","api":"openai-completions","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-gpt-5-2-codex":{"id":"duo-chat-gpt-5-2-codex","name":"Duo Chat GPT-5.2 OpenAI code","api":"openai-responses","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-gpt-5-codex":{"id":"duo-chat-gpt-5-codex","name":"Duo Chat GPT-5 OpenAI code","api":"openai-responses","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"duo-chat-gpt-5-mini":{"id":"duo-chat-gpt-5-mini","name":"Duo Chat GPT-5 Mini","api":"openai-completions","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"duo-chat-haiku-4-5":{"id":"duo-chat-haiku-4-5","name":"Duo Chat Haiku 4.5","api":"anthropic-messages","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-opus-4-5":{"id":"duo-chat-opus-4-5","name":"Duo Chat Opus 4.5","api":"anthropic-messages","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-opus-4-6":{"id":"duo-chat-opus-4-6","name":"Duo Chat Opus 4.6","api":"anthropic-messages","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-sonnet-4-5":{"id":"duo-chat-sonnet-4-5","name":"Duo Chat Sonnet 4.5","api":"anthropic-messages","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"duo-chat-sonnet-4-6":{"id":"duo-chat-sonnet-4-6","name":"Duo Chat Sonnet 4.6","api":"anthropic-messages","provider":"gitlab-duo","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/anthropic/","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-OpenAI code","api":"openai-responses","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"provider":"gitlab-duo","thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-mini-2025-08-07":{"id":"gpt-5-mini-2025-08-07","name":"GPT-5 Mini","api":"openai-responses","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"provider":"gitlab-duo","thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.1-2025-11-13":{"id":"gpt-5.1-2025-11-13","name":"GPT-5.1","api":"openai-responses","baseUrl":"https://cloud.gitlab.com/ai/v1/proxy/openai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"provider":"gitlab-duo","thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/glm-zcode.json b/packages/ai/src/model-shards/glm-zcode.json new file mode 100644 index 0000000000..679f0b616e --- /dev/null +++ b/packages/ai/src/model-shards/glm-zcode.json @@ -0,0 +1 @@ +{"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"anthropic-messages","provider":"glm-zcode","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"},"headers":{"User-Agent":"ZCode/1.0.0","HTTP-Referer":"https://zcode.z.ai","X-Title":"Z Code@electron","X-ZCode-App-Version":"1.0.0","X-ZCode-Agent":"glm"}}} diff --git a/packages/ai/src/model-shards/google-antigravity.json b/packages/ai/src/model-shards/google-antigravity.json new file mode 100644 index 0000000000..fe2ee2e2f3 --- /dev/null +++ b/packages/ai/src/model-shards/google-antigravity.json @@ -0,0 +1 @@ +{"claude-opus-4-5-thinking":{"id":"claude-opus-4-5-thinking","name":"Anthropic Opus 4.5 Thinking (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"claude-opus-4-6-thinking":{"id":"claude-opus-4-6-thinking","name":"Anthropic Opus 4.6 (Thinking) (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (latest)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-4-5-thinking":{"id":"claude-sonnet-4-5-thinking","name":"Anthropic Sonnet 4.5 Thinking (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Anthropic Sonnet 4.6","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-4-6-thinking":{"id":"claude-sonnet-4-6-thinking","name":"Anthropic Sonnet 4.6 Thinking (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-thinking":{"id":"gemini-2.5-flash-thinking","name":"Gemini 2.5 Flash (Thinking) (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-high":{"id":"gemini-3-pro-high","name":"Gemini 3 Pro (High) (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3-pro-low":{"id":"gemini-3-pro-low","name":"Gemini 3 Pro (Low) (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro-low":{"id":"gemini-3.1-pro-low","name":"Gemini 3.1 Pro (Low) (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gpt-oss-120b-medium":{"id":"gpt-oss-120b-medium","name":"GPT-OSS 120B (Medium) (Antigravity)","api":"google-gemini-cli","provider":"google-antigravity","baseUrl":"https://daily-cloudcode-pa.sandbox.googleapis.com","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":114000,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/google-gemini-cli.json b/packages/ai/src/model-shards/google-gemini-cli.json new file mode 100644 index 0000000000..26967f2501 --- /dev/null +++ b/packages/ai/src/model-shards/google-gemini-cli.json @@ -0,0 +1 @@ +{"gemini-2.0-flash":{"id":"gemini-2.0-flash","name":"Gemini 2.0 Flash","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"google-gemini-cli","provider":"google-gemini-cli","baseUrl":"https://cloudcode-pa.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/google-vertex.json b/packages/ai/src/model-shards/google-vertex.json new file mode 100644 index 0000000000..e135825307 --- /dev/null +++ b/packages/ai/src/model-shards/google-vertex.json @@ -0,0 +1 @@ +{"gemini-1.5-flash":{"id":"gemini-1.5-flash","name":"Gemini 1.5 Flash","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.01875,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192},"gemini-1.5-flash-8b":{"id":"gemini-1.5-flash-8b","name":"Gemini 1.5 Flash-8B","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":false,"input":["text","image"],"cost":{"input":0.0375,"output":0.15,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192},"gemini-1.5-pro":{"id":"gemini-1.5-pro","name":"Gemini 1.5 Pro","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":5,"cacheRead":0.3125,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192},"gemini-2.0-flash":{"id":"gemini-2.0-flash","name":"Gemini 2.0 Flash","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"Gemini 2.0 Flash-Lite","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.01875,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"Gemini 2.5 Flash Lite Preview 09-25","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","api":"google-vertex","provider":"google-vertex","baseUrl":"https://{location}-aiplatform.googleapis.com","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}}} diff --git a/packages/ai/src/model-shards/google.json b/packages/ai/src/model-shards/google.json new file mode 100644 index 0000000000..64f3d436a3 --- /dev/null +++ b/packages/ai/src/model-shards/google.json @@ -0,0 +1 @@ +{"gemini-1.5-flash":{"id":"gemini-1.5-flash","name":"Gemini 1.5 Flash","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.01875,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192},"gemini-1.5-flash-8b":{"id":"gemini-1.5-flash-8b","name":"Gemini 1.5 Flash-8B","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":false,"input":["text","image"],"cost":{"input":0.0375,"output":0.15,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192},"gemini-1.5-pro":{"id":"gemini-1.5-pro","name":"Gemini 1.5 Pro","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":5,"cacheRead":0.3125,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192},"gemini-2.0-flash":{"id":"gemini-2.0-flash","name":"Gemini 2.0 Flash","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"Gemini 2.0 Flash-Lite","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"Gemini 2.5 Flash Lite Preview 06-17","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"Gemini 2.5 Flash Lite Preview 09-25","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-preview-04-17":{"id":"gemini-2.5-flash-preview-04-17","name":"Gemini 2.5 Flash Preview 04-17","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"Gemini 2.5 Flash Preview 05-20","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"Gemini 2.5 Flash Preview 09-25","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro-preview-05-06":{"id":"gemini-2.5-pro-preview-05-06","name":"Gemini 2.5 Pro Preview 05-06","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"Gemini 2.5 Pro Preview 06-05","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-flash-latest":{"id":"gemini-flash-latest","name":"Gemini Flash Latest","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-flash-lite-latest":{"id":"gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-live-2.5-flash":{"id":"gemini-live-2.5-flash","name":"Gemini Live 2.5 Flash","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemini-live-2.5-flash-preview-native-audio":{"id":"gemini-live-2.5-flash-preview-native-audio","name":"Gemini Live 2.5 Flash Preview Native Audio","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemma-3-27b-it":{"id":"gemma-3-27b-it","name":"Gemma 3 27B","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"gemma-4-26b":{"id":"gemma-4-26b","name":"Gemma 4 26B","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemma-4-26b-it":{"id":"gemma-4-26b-it","name":"Gemma 4 26B","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemma-4-31b":{"id":"gemma-4-31b","name":"Gemma 4 31B IT","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","api":"google-generative-ai","provider":"google","baseUrl":"https://generativelanguage.googleapis.com/v1beta","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/groq.json b/packages/ai/src/model-shards/groq.json new file mode 100644 index 0000000000..a4b1747cfc --- /dev/null +++ b/packages/ai/src/model-shards/groq.json @@ -0,0 +1 @@ +{"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0.75,"output":0.99,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gemma2-9b-it":{"id":"gemma2-9b-it","name":"Gemma 2 9B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0.2,"output":0.2,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"groq/compound":{"id":"groq/compound","name":"Compound","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"groq/compound-mini":{"id":"groq/compound-mini","name":"Compound Mini","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"llama-3.1-8b-instant":{"id":"llama-3.1-8b-instant","name":"Llama 3.1 8B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0.05,"output":0.08,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Llama 3.3 70B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0.59,"output":0.79,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768},"llama3-70b-8192":{"id":"llama3-70b-8192","name":"Llama 3 70B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0.59,"output":0.79,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"llama3-8b-8192":{"id":"llama3-8b-8192","name":"Llama 3 8B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0.05,"output":0.08,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"meta-llama/llama-4-maverick-17b-128e-instruct":{"id":"meta-llama/llama-4-maverick-17b-128e-instruct","name":"Llama 4 Maverick 17B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.2,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"meta-llama/llama-4-scout-17b-16e-instruct":{"id":"meta-llama/llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.11,"output":0.34,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"mistral-saba-24b":{"id":"mistral-saba-24b","name":"Mistral Saba 24B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0.79,"output":0.79,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":32768},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"moonshotai/kimi-k2-instruct-0905":{"id":"moonshotai/kimi-k2-instruct-0905","name":"Kimi K2 0905","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":false,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.5,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"qwen-qwq-32b":{"id":"qwen-qwq-32b","name":"Qwen QwQ 32B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0.29,"output":0.39,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3-32B","api":"openai-completions","provider":"groq","baseUrl":"https://api.groq.com/openai/v1","reasoning":true,"input":["text"],"cost":{"input":0.29,"output":0.59,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/huggingface.json b/packages/ai/src/model-shards/huggingface.json new file mode 100644 index 0000000000..1c4a44c273 --- /dev/null +++ b/packages/ai/src/model-shards/huggingface.json @@ -0,0 +1 @@ +{"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek R1","api":"openai-completions","provider":"huggingface","baseUrl":"https://router.huggingface.co/v1","reasoning":true,"input":["text"],"cost":{"input":3,"output":7,"cacheRead":3,"cacheWrite":3},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","api":"openai-completions","provider":"huggingface","baseUrl":"https://router.huggingface.co/v1","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":1.25,"cacheRead":0.6,"cacheWrite":0.6},"contextWindow":131072,"maxTokens":8192},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B Turbo","api":"openai-completions","provider":"huggingface","baseUrl":"https://router.huggingface.co/v1","reasoning":false,"input":["text"],"cost":{"input":0.88,"output":0.88,"cacheRead":0.88,"cacheWrite":0.88},"contextWindow":131072,"maxTokens":8192},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"huggingface","baseUrl":"https://router.huggingface.co/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/kilo.json b/packages/ai/src/model-shards/kilo.json new file mode 100644 index 0000000000..c72a81fd0d --- /dev/null +++ b/packages/ai/src/model-shards/kilo.json @@ -0,0 +1 @@ +{"~anthropic/claude-fable-latest":{"id":"~anthropic/claude-fable-latest","name":"Anthropic: Anthropic Fable Latest ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~anthropic/claude-haiku-latest":{"id":"~anthropic/claude-haiku-latest","name":"Anthropic Anthropic Haiku Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~anthropic/claude-opus-latest":{"id":"~anthropic/claude-opus-latest","name":"Anthropic: Anthropic Opus Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~anthropic/claude-sonnet-latest":{"id":"~anthropic/claude-sonnet-latest","name":"Anthropic Anthropic Sonnet Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~google/gemini-flash-latest":{"id":"~google/gemini-flash-latest","name":"Google Gemini Flash Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~google/gemini-pro-latest":{"id":"~google/gemini-pro-latest","name":"Google Gemini Pro Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~moonshotai/kimi-latest":{"id":"~moonshotai/kimi-latest","name":"MoonshotAI Kimi Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~openai/gpt-latest":{"id":"~openai/gpt-latest","name":"OpenAI GPT Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~openai/gpt-mini-latest":{"id":"~openai/gpt-mini-latest","name":"OpenAI GPT Mini Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"~x-ai/grok-latest":{"id":"~x-ai/grok-latest","name":"xAI: Grok Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ai21/jamba-large-1.7":{"id":"ai21/jamba-large-1.7","name":"AI21: Jamba Large 1.7","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-1.0":{"id":"aion-labs/aion-1.0","name":"AionLabs: Aion-1.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-1.0-mini":{"id":"aion-labs/aion-1.0-mini","name":"AionLabs: Aion-1.0-Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"AionLabs: Aion-2.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"AionLabs: Aion-3.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"AionLabs: Aion-3.0-Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"AionLabs: Aion-RP 1.0 (8B)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"alfredpros/codellama-7b-instruct-solidity":{"id":"alfredpros/codellama-7b-instruct-solidity","name":"AlfredPros: CodeLLaMa 7B Instruct Solidity","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"alibaba/tongyi-deepresearch-30b-a3b":{"id":"alibaba/tongyi-deepresearch-30b-a3b","name":"Tongyi DeepResearch 30B A3B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/molmo-2-8b":{"id":"allenai/molmo-2-8b","name":"AllenAI: Molmo2 8B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-2-0325-32b-instruct":{"id":"allenai/olmo-2-0325-32b-instruct","name":"AllenAI: Olmo 2 32B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3-32b-think":{"id":"allenai/olmo-3-32b-think","name":"AllenAI: Olmo 3 32B Think","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3-7b-instruct":{"id":"allenai/olmo-3-7b-instruct","name":"AllenAI: Olmo 3 7B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3-7b-think":{"id":"allenai/olmo-3-7b-think","name":"AllenAI: Olmo 3 7B Think","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3.1-32b-instruct":{"id":"allenai/olmo-3.1-32b-instruct","name":"AllenAI: Olmo 3.1 32B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3.1-32b-think":{"id":"allenai/olmo-3.1-32b-think","name":"AllenAI: Olmo 3.1 32B Think","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"alpindale/goliath-120b":{"id":"alpindale/goliath-120b","name":"Goliath 120B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon: Nova 2 Lite","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-premier-v1":{"id":"amazon/nova-premier-v1","name":"Amazon: Nova Premier 1.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Anthropic Haiku 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Anthropic 3.5 Haiku","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-3.5-sonnet":{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic Sonnet 3.5 v2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic 3.7 Sonnet","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-3.7-sonnet:thinking":{"id":"anthropic/claude-3.7-sonnet:thinking","name":"Anthropic: Anthropic 3.7 Sonnet (thinking)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Anthropic Fable 5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Anthropic Haiku 4.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic Opus 4 (latest)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Anthropic Opus 4.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Anthropic Opus 4.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Anthropic Opus 4.6","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.6-fast":{"id":"anthropic/claude-opus-4.6-fast","name":"Anthropic: Anthropic Opus 4.6 (Fast) ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Anthropic Opus 4.7","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.7-fast":{"id":"anthropic/claude-opus-4.7-fast","name":"Anthropic: Anthropic Opus 4.7 (Fast) ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Anthropic Opus 4.8","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.8-fast":{"id":"anthropic/claude-opus-4.8-fast","name":"Anthropic: Anthropic Opus 4.8 (Fast) ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic Sonnet 4","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Anthropic Sonnet 4.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Anthropic Sonnet 5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"arcee-ai/coder-large":{"id":"arcee-ai/coder-large","name":"Arcee AI: Coder Large","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/maestro-reasoning":{"id":"arcee-ai/maestro-reasoning","name":"Arcee AI: Maestro Reasoning","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/spotlight":{"id":"arcee-ai/spotlight","name":"Arcee AI: Spotlight","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-preview":{"id":"arcee-ai/trinity-large-preview","name":"Arcee AI: Trinity Large Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-preview:free":{"id":"arcee-ai/trinity-large-preview:free","name":"Arcee AI: Trinity Large Preview (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Arcee AI: Trinity Large Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-thinking:free":{"id":"arcee-ai/trinity-large-thinking:free","name":"Arcee AI: Trinity Large Thinking (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-mini":{"id":"arcee-ai/trinity-mini","name":"Arcee AI: Trinity Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/virtuoso-large":{"id":"arcee-ai/virtuoso-large","name":"Arcee AI: Virtuoso Large","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/cobuddy:free":{"id":"baidu/cobuddy:free","name":"Baidu Qianfan: CoBuddy (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-21b-a3b":{"id":"baidu/ernie-4.5-21b-a3b","name":"Baidu: ERNIE 4.5 21B A3B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-21b-a3b-thinking":{"id":"baidu/ernie-4.5-21b-a3b-thinking","name":"Baidu: ERNIE 4.5 21B A3B Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-300b-a47b":{"id":"baidu/ernie-4.5-300b-a47b","name":"Baidu: ERNIE 4.5 300B A47B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-vl-28b-a3b":{"id":"baidu/ernie-4.5-vl-28b-a3b","name":"Baidu: ERNIE 4.5 VL 28B A3B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-vl-424b-a47b":{"id":"baidu/ernie-4.5-vl-424b-a47b","name":"Baidu: ERNIE 4.5 VL 424B A47B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/qianfan-ocr-fast":{"id":"baidu/qianfan-ocr-fast","name":"Baidu: Qianfan-OCR-Fast","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/qianfan-ocr-fast:free":{"id":"baidu/qianfan-ocr-fast:free","name":"Baidu: Qianfan-OCR-Fast (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/dola-seed-2.0-pro:free":{"id":"bytedance-seed/dola-seed-2.0-pro:free","name":"ByteDance Seed: Dola Seed 2.0 Pro (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/seed-1.6":{"id":"bytedance-seed/seed-1.6","name":"ByteDance Seed: Seed 1.6","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/seed-1.6-flash":{"id":"bytedance-seed/seed-1.6-flash","name":"ByteDance Seed: Seed 1.6 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"ByteDance Seed: Seed-2.0-Lite","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/seed-2.0-mini":{"id":"bytedance-seed/seed-2.0-mini","name":"ByteDance Seed: Seed-2.0-Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/ui-tars-1.5-7b":{"id":"bytedance/ui-tars-1.5-7b","name":"ByteDance: UI-TARS 7B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"id":"cognitivecomputations/dolphin-mistral-24b-venice-edition","name":"Venice: Uncensored","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-a":{"id":"cohere/command-a","name":"Cohere: Command A","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Cohere: Command R (08-2024)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+ (08-2024)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Cohere: Command R7B (12-2024)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/north-mini-code:free":{"id":"cohere/north-mini-code:free","name":"Cohere: North Mini Code (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"corethink:free":{"id":"corethink:free","name":"CoreThink (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepcogito/cogito-v2.1-671b":{"id":"deepcogito/cogito-v2.1-671b","name":"Deep Cogito: Cogito v2.1 671B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek-V3.2 (Non-thinking Mode)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"deepseek/deepseek-chat-v3-0324":{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek: DeepSeek V3 0324","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek: DeepSeek V3.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek: R1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek: R1 0528","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-r1-distill-llama-70b":{"id":"deepseek/deepseek-r1-distill-llama-70b","name":"DeepSeek: R1 Distill Llama 70B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-r1-distill-qwen-32b":{"id":"deepseek/deepseek-r1-distill-qwen-32b","name":"DeepSeek: R1 Distill Qwen 32B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek: DeepSeek V3.1 Terminus","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v3.1-terminus:exacto":{"id":"deepseek/deepseek-v3.1-terminus:exacto","name":"DeepSeek: DeepSeek V3.1 Terminus (exacto)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek-V3.2-Exp","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":163000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-speciale":{"id":"deepseek/deepseek-v3.2-speciale","name":"DeepSeek: DeepSeek V3.2 Speciale","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-flash:discounted":{"id":"deepseek/deepseek-v4-flash:discounted","name":"DeepSeek: DeepSeek V4 Flash (>40% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-flash:free":{"id":"deepseek/deepseek-v4-flash:free","name":"DeepSeek: DeepSeek V4 Flash (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro:discounted":{"id":"deepseek/deepseek-v4-pro:discounted","name":"DeepSeek: DeepSeek V4 Pro (>80% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"eleutherai/llemma_7b":{"id":"eleutherai/llemma_7b","name":"EleutherAI: Llemma 7b","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"essentialai/rnj-1-instruct":{"id":"essentialai/rnj-1-instruct","name":"EssentialAI: Rnj 1 Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"giga-potato":{"id":"giga-potato","name":"Giga Potato (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"giga-potato-thinking":{"id":"giga-potato-thinking","name":"Giga Potato Thinking (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.0-flash-001":{"id":"google/gemini-2.0-flash-001","name":"Google: Gemini 2.0 Flash (retires Jun 1)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.0-flash-lite-001":{"id":"google/gemini-2.0-flash-lite-001","name":"Google: Gemini 2.0 Flash Lite (retires Jun 1)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Google: Nano Banana (Gemini 2.5 Flash Image)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000},"google/gemini-2.5-flash-lite-preview-09-2025":{"id":"google/gemini-2.5-flash-lite-preview-09-2025","name":"Google: Gemini 2.5 Flash Lite Preview 09-2025","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-pro-preview":{"id":"google/gemini-2.5-pro-preview","name":"Google: Gemini 2.5 Pro Preview 06-05","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.5-pro-preview-05-06":{"id":"google/gemini-2.5-pro-preview-05-06","name":"Google: Gemini 2.5 Pro Preview 05-06","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Google: Nano Banana Pro (Gemini 3 Pro Image)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Google: Nano Banana 2 (Gemini 3.1 Flash Image)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Google: Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":65530},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Google: Gemini 3.1 Pro Preview Custom Tools","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Google: Gemini 3.5 Flash-Lite","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Google: Gemini 3.6 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-2-27b-it":{"id":"google/gemma-2-27b-it","name":"Google: Gemma 2 27B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-2-9b-it":{"id":"google/gemma-2-9b-it","name":"Google: Gemma 2 9B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Google: Gemma 3 12B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Google: Gemma 3 27B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Google: Gemma 3 4B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-3n-e4b-it":{"id":"google/gemma-3n-e4b-it","name":"Gemma 3n E4b It","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Google: Gemma 4 26B A4B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/lyria-3-clip-preview":{"id":"google/lyria-3-clip-preview","name":"Google: Lyria 3 Clip Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/lyria-3-pro-preview":{"id":"google/lyria-3-pro-preview","name":"Google: Lyria 3 Pro Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ibm-granite/granite-4.0-h-micro":{"id":"ibm-granite/granite-4.0-h-micro","name":"IBM: Granite 4.0 Micro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"IBM: Granite 4.1 8B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inception/mercury":{"id":"inception/mercury","name":"Inception: Mercury","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inception/mercury-2":{"id":"inception/mercury-2","name":"Inception: Mercury 2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inception/mercury-coder":{"id":"inception/mercury-coder","name":"Inception: Mercury Coder","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-1t":{"id":"inclusionai/ling-2.6-1t","name":"inclusionAI: Ling-2.6-1T","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-1t:free":{"id":"inclusionai/ling-2.6-1t:free","name":"inclusionAI: Ling-2.6-1T (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-flash":{"id":"inclusionai/ling-2.6-flash","name":"inclusionAI: Ling-2.6-flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-flash:free":{"id":"inclusionai/ling-2.6-flash:free","name":"inclusionAI: Ling-2.6-flash (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"inclusionAI: Ring-2.6-1T","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":65000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"inclusionai/ring-2.6-1t:free":{"id":"inclusionai/ring-2.6-1t:free","name":"inclusionAI: Ring-2.6-1T (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflection/inflection-3-pi":{"id":"inflection/inflection-3-pi","name":"Inflection: Inflection 3 Pi","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflection/inflection-3-productivity":{"id":"inflection/inflection-3-productivity","name":"Inflection: Inflection 3 Productivity","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo-auto/balanced":{"id":"kilo-auto/balanced","name":"Auto Balanced","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo-auto/efficient":{"id":"kilo-auto/efficient","name":"Auto Efficient","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo-auto/free":{"id":"kilo-auto/free","name":"Auto Free","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo-auto/frontier":{"id":"kilo-auto/frontier","name":"Auto Frontier","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo-auto/small":{"id":"kilo-auto/small","name":"Auto Small","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo/auto":{"id":"kilo/auto","name":"Deprecated Kilo Auto Frontier","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo/auto-free":{"id":"kilo/auto-free","name":"Deprecated Kilo Auto Free","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kilo/auto-small":{"id":"kilo/auto-small","name":"Deprecated Kilo Auto Small","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kwaipilot/kat-coder-air-v2.5":{"id":"kwaipilot/kat-coder-air-v2.5","name":"Kwaipilot: KAT-Coder-Air V2.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kwaipilot/kat-coder-pro":{"id":"kwaipilot/kat-coder-pro","name":"Kwaipilot: KAT-Coder-Pro V1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"Kwaipilot: KAT-Coder-Pro V2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kwaipilot/kat-coder-pro-v2.5":{"id":"kwaipilot/kat-coder-pro-v2.5","name":"Kwaipilot: KAT-Coder-Pro V2.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kwaipilot/kat-coder-pro-v2.5:free":{"id":"kwaipilot/kat-coder-pro-v2.5:free","name":"Kwaipilot: KAT-Coder-Pro V2.5 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"liquid/lfm-2-24b-a2b":{"id":"liquid/lfm-2-24b-a2b","name":"LiquidAI: LFM2-24B-A2B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"liquid/lfm-2.2-6b":{"id":"liquid/lfm-2.2-6b","name":"LiquidAI: LFM2-2.6B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"liquid/lfm2-8b-a1b":{"id":"liquid/lfm2-8b-a1b","name":"LiquidAI: LFM2-8B-A1B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mancer/weaver":{"id":"mancer/weaver","name":"Mancer: Weaver (alpha)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meituan/longcat-2.0":{"id":"meituan/longcat-2.0","name":"Meituan: LongCat 2.0","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meituan/longcat-flash-chat":{"id":"meituan/longcat-flash-chat","name":"Meituan: LongCat Flash Chat","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3-70b-instruct":{"id":"meta-llama/llama-3-70b-instruct","name":"Meta: Llama 3 70B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3-8b-instruct":{"id":"meta-llama/llama-3-8b-instruct","name":"Meta: Llama 3 8B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.1-405b":{"id":"meta-llama/llama-3.1-405b","name":"Meta: Llama 3.1 405B (base)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.1-405b-instruct":{"id":"meta-llama/llama-3.1-405b-instruct","name":"Meta: Llama 3.1 405B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.1-70b-instruct":{"id":"meta-llama/llama-3.1-70b-instruct","name":"Meta: Llama 3.1 70B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Meta: Llama 3.1 8B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.2-11b-vision-instruct":{"id":"meta-llama/llama-3.2-11b-vision-instruct","name":"Meta: Llama 3.2 11B Vision Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.2-1b-instruct":{"id":"meta-llama/llama-3.2-1b-instruct","name":"Meta: Llama 3.2 1B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Meta: Llama 3.2 3B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Meta: Llama 3.3 70B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-guard-2-8b":{"id":"meta-llama/llama-guard-2-8b","name":"Meta: LlamaGuard 2 8B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-guard-3-8b":{"id":"meta-llama/llama-guard-3-8b","name":"Llama Guard 3 8B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-guard-4-12b":{"id":"meta-llama/llama-guard-4-12b","name":"Meta: Llama Guard 4 12B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-guard-4-12b:free":{"id":"meta-llama/llama-guard-4-12b:free","name":"Meta: Llama Guard 4 12B (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Meta: Muse Spark 1.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"microsoft/phi-4":{"id":"microsoft/phi-4","name":"Microsoft: Phi 4","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"microsoft/phi-4-mini-instruct":{"id":"microsoft/phi-4-mini-instruct","name":"Phi-4-Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax: MiniMax-01","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m1":{"id":"minimax/minimax-m1","name":"MiniMax: MiniMax M1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax: MiniMax M2-her","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5:free":{"id":"minimax/minimax-m2.5:free","name":"MiniMax: MiniMax M2.5 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131070,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Mistral: Codestral 2508","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Mistral: Devstral 2 2512","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/devstral-medium":{"id":"mistralai/devstral-medium","name":"Mistral: Devstral Medium","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/devstral-small":{"id":"mistralai/devstral-small","name":"Mistral: Devstral Small 1.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Mistral: Ministral 3 14B 2512","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Mistral: Ministral 3 3B 2512","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Mistral: Ministral 3 8B 2512","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-7b-instruct":{"id":"mistralai/mistral-7b-instruct","name":"Mistral: Mistral 7B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-7b-instruct-v0.1":{"id":"mistralai/mistral-7b-instruct-v0.1","name":"Mistral: Mistral 7B Instruct v0.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-7b-instruct-v0.3":{"id":"mistralai/mistral-7b-instruct-v0.3","name":"Mistral: Mistral 7B Instruct v0.3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large-2407":{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large-2411":{"id":"mistralai/mistral-large-2411","name":"Mistral Large 2411","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral: Mistral Large 3 2512","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral: Mistral Medium 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-medium-3-5":{"id":"mistralai/mistral-medium-3-5","name":"Mistral: Mistral Medium 3.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral: Mistral Medium 3.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral: Mistral Nemo","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral: Saba","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral: Mistral Small 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-2603":{"id":"mistralai/mistral-small-2603","name":"Mistral: Mistral Small 4","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral: Mistral Small 3.1 24B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral: Mistral Small 3.2 24B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-creative":{"id":"mistralai/mistral-small-creative","name":"Mistral: Mistral Small Creative","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":13108},"mistralai/mixtral-8x7b-instruct":{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":16384},"mistralai/pixtral-large-2411":{"id":"mistralai/pixtral-large-2411","name":"Mistral: Pixtral Large 2411","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/voxtral-small-24b-2507":{"id":"mistralai/voxtral-small-24b-2507","name":"Mistral: Voxtral Small 24B 2507","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"MoonshotAI: Kimi K2 0711","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000},"moonshotai/kimi-k2-0905:exacto":{"id":"moonshotai/kimi-k2-0905:exacto","name":"MoonshotAI: Kimi K2 0905 (exacto)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.5:free":{"id":"moonshotai/kimi-k2.5:free","name":"MoonshotAI: Kimi K2.5 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.6:free":{"id":"moonshotai/kimi-k2.6:free","name":"MoonshotAI: Kimi K2.6 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"morph-warp-grep-v2":{"id":"morph-warp-grep-v2","name":"Morph: WarpGrep V2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph: Morph V3 Fast","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph: Morph V3 Large","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"neversleep/llama-3.1-lumimaid-8b":{"id":"neversleep/llama-3.1-lumimaid-8b","name":"NeverSleep: Lumimaid v0.2 8B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"neversleep/noromaid-20b":{"id":"neversleep/noromaid-20b","name":"Noromaid 20B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nex-agi/deepseek-v3.1-nex-n1":{"id":"nex-agi/deepseek-v3.1-nex-n1","name":"Nex AGI: DeepSeek V3.1 Nex N1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nex-agi/nex-n2-mini":{"id":"nex-agi/nex-n2-mini","name":"Nex AGI: Nex-N2-Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nex-agi/nex-n2-pro":{"id":"nex-agi/nex-n2-pro","name":"Nex AGI: Nex-N2-Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nex-agi/nex-n2-pro:free":{"id":"nex-agi/nex-n2-pro:free","name":"Nex AGI: Nex-N2-Pro (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-2-pro-llama-3-8b":{"id":"nousresearch/hermes-2-pro-llama-3-8b","name":"NousResearch: Hermes 2 Pro - Llama-3 8B (retires Jun 5)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-3-llama-3.1-405b":{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Nous: Hermes 3 405B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Nous: Hermes 3 70B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"Nous: Hermes 4 405B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-4-70b":{"id":"nousresearch/hermes-4-70b","name":"Nous: Hermes 4 70B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/llama-3.1-nemotron-70b-instruct":{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"Llama 3.1 Nemotron 70b Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia/llama-3.1-nemotron-ultra-253b-v1":{"id":"nvidia/llama-3.1-nemotron-ultra-253b-v1","name":"Llama-3.1-Nemotron-Ultra-253B-v1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{"id":"nvidia/llama-3.3-nemotron-super-49b-v1.5","name":"NVIDIA: Llama 3.3 Nemotron Super 49B V1.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","name":"NVIDIA: Nemotron 3 Nano Omni (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-super-120b-a12b:free":{"id":"nvidia/nemotron-3-super-120b-a12b:free","name":"NVIDIA: Nemotron 3 Super (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-ultra-550b-a55b:free":{"id":"nvidia/nemotron-3-ultra-550b-a55b:free","name":"NVIDIA: Nemotron 3 Ultra (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-3.5-content-safety:free":{"id":"nvidia/nemotron-3.5-content-safety:free","name":"NVIDIA: Nemotron 3.5 Content Safety (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-nano-12b-v2-vl":{"id":"nvidia/nemotron-nano-12b-v2-vl","name":"NVIDIA: Nemotron Nano 12B 2 VL","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"NVIDIA: Nemotron Nano 9B V2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"OpenAI: GPT-3.5 Turbo","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-3.5-turbo-0613":{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-3.5-turbo-16k":{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"OpenAI: GPT-3.5 Turbo Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"openai/gpt-4-0314":{"id":"openai/gpt-4-0314","name":"OpenAI: GPT-4 (older v0314) ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4-1106-preview":{"id":"openai/gpt-4-1106-preview","name":"OpenAI: GPT-4 Turbo (older v1106) ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4-turbo-preview":{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"OpenAI: GPT-4.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"OpenAI: GPT-4.1 Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"OpenAI: GPT-4.1 Nano","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"OpenAI: GPT-4o (2024-05-13)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"OpenAI: GPT-4o (2024-08-06)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"OpenAI: GPT-4o (2024-11-20)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-audio-preview":{"id":"openai/gpt-4o-audio-preview","name":"OpenAI: GPT-4o Audio","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini-2024-07-18":{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-mini-search-preview":{"id":"openai/gpt-4o-mini-search-preview","name":"OpenAI: GPT-4o-mini Search Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-search-preview":{"id":"openai/gpt-4o-search-preview","name":"OpenAI: GPT-4o Search Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o:extended":{"id":"openai/gpt-4o:extended","name":"OpenAI: GPT-4o (extended)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-chat":{"id":"openai/gpt-5-chat","name":"OpenAI: GPT-5 Chat","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 OpenAI code","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-image":{"id":"openai/gpt-5-image","name":"OpenAI: GPT-5 Image ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-image-mini":{"id":"openai/gpt-5-image-mini","name":"OpenAI: GPT-5 Image Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"OpenAI: GPT-5 Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"OpenAI: GPT-5 Nano","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"OpenAI: GPT-5 Pro ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"OpenAI: GPT-5.1-OpenAI code-Max","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":8888},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-OpenAI code-Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"OpenAI: GPT-5.2 Chat (retires Aug 10)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16380},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4-image-2":{"id":"openai/gpt-5.4-image-2","name":"OpenAI: GPT-5.4 Image 2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"OpenAI: GPT-5.6 Luna Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"OpenAI: GPT-5.6 Sol Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"OpenAI: GPT-5.6 Terra Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-audio":{"id":"openai/gpt-audio","name":"OpenAI: GPT Audio","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-audio-mini":{"id":"openai/gpt-audio-mini","name":"OpenAI: GPT Audio Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"OpenAI: GPT Chat Latest","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-120b:exacto":{"id":"openai/gpt-oss-120b:exacto","name":"OpenAI: gpt-oss-120b (exacto)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1":{"id":"openai/o1","name":"o1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1-pro":{"id":"openai/o1-pro","name":"OpenAI: o1-pro ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3":{"id":"openai/o3","name":"o3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"OpenAI: o3 Deep Research ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini-deep-research":{"id":"openai/o4-mini-deep-research","name":"OpenAI: o4 Mini Deep Research","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"opengvlab/internvl3-78b":{"id":"opengvlab/internvl3-78b","name":"OpenGVLab: InternVL3 78B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/auto":{"id":"openrouter/auto","name":"OpenRouter Auto Router","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/auto-beta":{"id":"openrouter/auto-beta","name":"OpenRouter Auto Router (Beta)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/bodybuilder":{"id":"openrouter/bodybuilder","name":"OpenRouter Body Builder (beta)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/elephant-alpha":{"id":"openrouter/elephant-alpha","name":"Elephant (new)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/free":{"id":"openrouter/free","name":"OpenRouter Free Models Router","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/fusion":{"id":"openrouter/fusion","name":"OpenRouter: Fusion","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/healer-alpha":{"id":"openrouter/healer-alpha","name":"Healer Alpha","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/hunter-alpha":{"id":"openrouter/hunter-alpha","name":"Hunter Alpha","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/owl-alpha":{"id":"openrouter/owl-alpha","name":"Owl Alpha","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openrouter/pareto-code":{"id":"openrouter/pareto-code","name":"OpenRouter Pareto Code Router","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron: Perceptron Mk1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perplexity/sonar":{"id":"perplexity/sonar","name":"Perplexity: Sonar","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Perplexity: Sonar Deep Research","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Perplexity: Sonar Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perplexity/sonar-pro-search":{"id":"perplexity/sonar-pro-search","name":"Perplexity: Sonar Pro Search","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Perplexity: Sonar Reasoning Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-m.1":{"id":"poolside/laguna-m.1","name":"Poolside: Laguna M.1 (retires Jul 28)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-m.1:free":{"id":"poolside/laguna-m.1:free","name":"Poolside: Laguna M.1 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Poolside: Laguna S 2.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-s-2.1:free":{"id":"poolside/laguna-s-2.1:free","name":"Poolside: Laguna S 2.1 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Poolside: Laguna XS 2.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-xs-2.1:free":{"id":"poolside/laguna-xs-2.1:free","name":"Poolside: Laguna XS 2.1 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-xs.2":{"id":"poolside/laguna-xs.2","name":"Poolside: Laguna XS.2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-xs.2:free":{"id":"poolside/laguna-xs.2:free","name":"Poolside: Laguna XS.2 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"prime-intellect/intellect-3":{"id":"prime-intellect/intellect-3","name":"Prime Intellect: INTELLECT-3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-2.5-7b-instruct":{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen: Qwen2.5 7B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-2.5-coder-32b-instruct":{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-2.5-vl-7b-instruct":{"id":"qwen/qwen-2.5-vl-7b-instruct","name":"Qwen: Qwen2.5-VL 7B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-max":{"id":"qwen/qwen-max","name":"Qwen: Qwen-Max","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen: Qwen-Plus","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-plus-2025-07-28":{"id":"qwen/qwen-plus-2025-07-28","name":"Qwen: Qwen Plus 0728","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-plus-2025-07-28:thinking":{"id":"qwen/qwen-plus-2025-07-28:thinking","name":"Qwen: Qwen Plus 0728 (thinking)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-turbo":{"id":"qwen/qwen-turbo","name":"Qwen: Qwen-Turbo","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-vl-max":{"id":"qwen/qwen-vl-max","name":"Qwen: Qwen VL Max","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-vl-plus":{"id":"qwen/qwen-vl-plus","name":"Qwen: Qwen VL Plus","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen2.5-coder-7b-instruct":{"id":"qwen/qwen2.5-coder-7b-instruct","name":"Qwen2.5 Coder 7b Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"qwen/qwen2.5-vl-32b-instruct":{"id":"qwen/qwen2.5-vl-32b-instruct","name":"Qwen: Qwen2.5 VL 32B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen2.5-vl-72b-instruct":{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen: Qwen2.5 VL 72B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen: Qwen3 14B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen: Qwen3 235B A22B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen: Qwen3 235B A22B Instruct 2507","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen: Qwen3 235B A22B Thinking 2507","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen: Qwen3 30B A3B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen: Qwen3 30B A3B Instruct 2507","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-30b-a3b-thinking-2507":{"id":"qwen/qwen3-30b-a3b-thinking-2507","name":"Qwen: Qwen3 30B A3B Thinking 2507","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3-32B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-8b":{"id":"qwen/qwen3-8b","name":"Qwen: Qwen3 8B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen: Qwen3 Coder 480B A35B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen: Qwen3 Coder 30B A3B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen: Qwen3 Coder Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen: Qwen3 Coder Next","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000},"qwen/qwen3-coder:exacto":{"id":"qwen/qwen3-coder:exacto","name":"Qwen: Qwen3 Coder 480B A35B (exacto)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-max-thinking":{"id":"qwen/qwen3-max-thinking","name":"Qwen: Qwen3 Max Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next-80B-A3B-Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen: Qwen3 Next 80B A3B Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen: Qwen3 VL 235B A22B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen: Qwen3 VL 235B A22B Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen: Qwen3 VL 30B A3B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"Qwen: Qwen3 VL 30B A3B Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-32b-instruct":{"id":"qwen/qwen3-vl-32b-instruct","name":"Qwen: Qwen3 VL 32B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"Qwen: Qwen3 VL 8B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-8b-thinking":{"id":"qwen/qwen3-vl-8b-thinking","name":"Qwen: Qwen3 VL 8B Thinking","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen: Qwen3.5-27B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen: Qwen3.5-35B-A3B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen: Qwen3.5-9B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-flash-02-23":{"id":"qwen/qwen3.5-flash-02-23","name":"Qwen: Qwen3.5-Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-plus-02-15":{"id":"qwen/qwen3.5-plus-02-15","name":"Qwen: Qwen3.5 Plus 2026-02-15","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-plus-20260420":{"id":"qwen/qwen3.5-plus-20260420","name":"Qwen: Qwen3.5 Plus 2026-04-20","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen: Qwen3.6 27B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen: Qwen3.6 35B A3B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen: Qwen3.6 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen: Qwen3.6 Max Preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6-Plus","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-plus-preview:free":{"id":"qwen/qwen3.6-plus-preview:free","name":"Qwen: Qwen3.6 Plus Preview (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-plus:free":{"id":"qwen/qwen3.6-plus:free","name":"Qwen: Qwen3.6 Plus (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwq-32b":{"id":"qwen/qwq-32b","name":"Qwen: QwQ 32B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"raifle/sorcererlm-8x22b":{"id":"raifle/sorcererlm-8x22b","name":"SorcererLM 8x22B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"reka/reka-edge":{"id":"reka/reka-edge","name":"Reka Edge","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"rekaai/reka-edge":{"id":"rekaai/reka-edge","name":"Reka Edge","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"rekaai/reka-flash-3":{"id":"rekaai/reka-flash-3","name":"Reka Flash 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"relace/relace-apply-3":{"id":"relace/relace-apply-3","name":"Relace: Relace Apply 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"relace/relace-search":{"id":"relace/relace-search","name":"Relace: Relace Search","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sao10k/l3-euryale-70b":{"id":"sao10k/l3-euryale-70b","name":"Sao10k: Llama 3 Euryale 70B v2.1 (retires Jun 5)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sao10k/l3-lunaris-8b":{"id":"sao10k/l3-lunaris-8b","name":"Sao10K: Llama 3 8B Lunaris","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sao10k/l3.1-70b-hanami-x1":{"id":"sao10k/l3.1-70b-hanami-x1","name":"Sao10K: Llama 3.1 70B Hanami x1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sao10k/l3.1-euryale-70b":{"id":"sao10k/l3.1-euryale-70b","name":"Sao10K: Llama 3.1 Euryale 70B v2.2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sao10k/l3.3-euryale-70b":{"id":"sao10k/l3.3-euryale-70b","name":"Sao10K: Llama 3.3 Euryale 70B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stealth/claude-opus-4.6":{"id":"stealth/claude-opus-4.6","name":"Stealth: Anthropic Opus 4.6 (20% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stealth/claude-opus-4.7":{"id":"stealth/claude-opus-4.7","name":"Stealth: Anthropic Opus 4.7 (20% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stealth/claude-opus-4.8":{"id":"stealth/claude-opus-4.8","name":"Stealth: Anthropic Opus 4.8 (20% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stealth/claude-sonnet-4.6":{"id":"stealth/claude-sonnet-4.6","name":"Stealth: Anthropic Sonnet 4.6 (20% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stealth/gpt-5.6-sol":{"id":"stealth/gpt-5.6-sol","name":"Stealth: GPT-5.6 Sol (20% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stealth/qwen3.6-plus":{"id":"stealth/qwen3.6-plus","name":"Stealth: Qwen3.6 Plus (50% off)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000},"stepfun/step-3.5-flash:free":{"id":"stepfun/step-3.5-flash:free","name":"StepFun: Step 3.5 Flash (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3.7-flash:free":{"id":"stepfun/step-3.7-flash:free","name":"StepFun: Step 3.7 Flash (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"switchpoint/router":{"id":"switchpoint/router","name":"Switchpoint Router","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/hunyuan-a13b-instruct":{"id":"tencent/hunyuan-a13b-instruct","name":"Tencent: Hunyuan A13B Instruct","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/hy3":{"id":"tencent/hy3","name":"Tencent: Hy3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"tencent/hy3-preview:free":{"id":"tencent/hy3-preview:free","name":"Tencent: Hy3 preview (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thedrummer/cydonia-24b-v4.1":{"id":"thedrummer/cydonia-24b-v4.1","name":"TheDrummer: Cydonia 24B V4.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thedrummer/rocinante-12b":{"id":"thedrummer/rocinante-12b","name":"TheDrummer: Rocinante 12B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"TheDrummer: Skyfall 36B V2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thedrummer/unslopnemo-12b":{"id":"thedrummer/unslopnemo-12b","name":"TheDrummer: UnslopNemo 12B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Thinking Machines: Inkling","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tngtech/deepseek-r1t2-chimera":{"id":"tngtech/deepseek-r1t2-chimera","name":"TNG: DeepSeek R1T2 Chimera","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Upstage: Solar Pro 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Writer: Palmyra X5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-3":{"id":"x-ai/grok-3","name":"xAI: Grok 3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-3-beta":{"id":"x-ai/grok-3-beta","name":"xAI: Grok 3 Beta","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-3-mini":{"id":"x-ai/grok-3-mini","name":"xAI: Grok 3 Mini","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-3-mini-beta":{"id":"x-ai/grok-3-mini-beta","name":"xAI: Grok 3 Mini Beta","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"Grok 4 Fast","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"xAI: Grok 4.20","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-beta":{"id":"x-ai/grok-4.20-beta","name":"xAI: Grok 4.20 Beta","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"xAI: Grok 4.20 Multi-Agent","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-multi-agent-beta":{"id":"x-ai/grok-4.20-multi-agent-beta","name":"xAI: Grok 4.20 Multi-Agent Beta","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-code-fast-1:optimized:free":{"id":"x-ai/grok-code-fast-1:optimized:free","name":"xAI: Grok Code Fast 1, retiring May 15 (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":265000,"maxTokens":265000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-omni:free":{"id":"xiaomi/mimo-v2-omni:free","name":"Xiaomi: MiMo-V2-Omni (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-pro:free":{"id":"xiaomi/mimo-v2-pro:free","name":"Xiaomi: MiMo-V2-Pro (free)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4-32b":{"id":"z-ai/glm-4-32b","name":"Z.ai: GLM 4 32B","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM 4.5 Air","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"Z.ai: GLM 4.5V","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6:exacto":{"id":"z-ai/glm-4.6:exacto","name":"Z.ai: GLM 4.6 (exacto)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"Z.ai: GLM 4.7 Flash","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Anthropic Opus 5","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-opus-5-fast":{"id":"anthropic/claude-opus-5-fast","name":"Anthropic Opus 5 (Fast) ($$$$)","api":"openai-completions","provider":"kilo","baseUrl":"https://api.kilo.ai/api/gateway","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888}} diff --git a/packages/ai/src/model-shards/kimi-code.json b/packages/ai/src/model-shards/kimi-code.json new file mode 100644 index 0000000000..cf8388831f --- /dev/null +++ b/packages/ai/src/model-shards/kimi-code.json @@ -0,0 +1 @@ +{"k3":{"id":"k3","name":"K3","api":"openai-completions","provider":"kimi-code","baseUrl":"https://api.kimi.com/coding/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":32000,"compat":{"thinkingFormat":"zai","reasoningContentField":"reasoning_content","supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max","defaultLevel":"high","levels":["low","high","max"]}},"kimi-for-coding":{"id":"kimi-for-coding","name":"Kimi For Coding","api":"openai-completions","provider":"kimi-code","baseUrl":"https://api.kimi.com/coding/v1","headers":{"User-Agent":"KimiCLI/1.0","X-Msh-Platform":"kimi_cli"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32000,"compat":{"thinkingFormat":"zai","reasoningContentField":"reasoning_content","supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","api":"openai-completions","provider":"kimi-code","baseUrl":"https://api.kimi.com/coding/v1","headers":{"User-Agent":"KimiCLI/1.0","X-Msh-Platform":"kimi_cli"},"reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"compat":{"thinkingFormat":"zai","reasoningContentField":"reasoning_content","supportsDeveloperRole":false}},"kimi-k2-turbo-preview":{"id":"kimi-k2-turbo-preview","name":"Kimi K2 Turbo Preview","api":"openai-completions","provider":"kimi-code","baseUrl":"https://api.kimi.com/coding/v1","headers":{"User-Agent":"KimiCLI/1.0","X-Msh-Platform":"kimi_cli"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32000,"compat":{"thinkingFormat":"zai","reasoningContentField":"reasoning_content","supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"kimi-code","baseUrl":"https://api.kimi.com/coding/v1","headers":{"User-Agent":"KimiCLI/1.0","X-Msh-Platform":"kimi_cli"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"thinkingFormat":"zai","reasoningContentField":"reasoning_content","supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"kimi-code","baseUrl":"https://api.kimi.com/coding/v1","headers":{"User-Agent":"KimiCLI/1.0","X-Msh-Platform":"kimi_cli"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"thinkingFormat":"zai","reasoningContentField":"reasoning_content","supportsDeveloperRole":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/litellm.json b/packages/ai/src/model-shards/litellm.json new file mode 100644 index 0000000000..366accb9fa --- /dev/null +++ b/packages/ai/src/model-shards/litellm.json @@ -0,0 +1 @@ +{"abacusai/Dracarys-72B-Instruct":{"id":"abacusai/Dracarys-72B-Instruct","name":"abacusai/Dracarys-72B-Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-1.0":{"id":"aion-labs/aion-1.0","name":"aion-labs/aion-1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-1.0-mini":{"id":"aion-labs/aion-1.0-mini","name":"aion-labs/aion-1.0-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"aion-labs/aion-2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-2.5":{"id":"aion-labs/aion-2.5","name":"aion-labs/aion-2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"aion-labs/aion-rp-llama-3.1-8b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B":{"id":"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B","name":"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"alibaba/qwen3.6-27b":{"id":"alibaba/qwen3.6-27b","name":"alibaba/qwen3.6-27b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"alibaba/qwen3.6-flash":{"id":"alibaba/qwen3.6-flash","name":"alibaba/qwen3.6-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/molmo-2-8b":{"id":"allenai/molmo-2-8b","name":"allenai/molmo-2-8b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3-32b-think":{"id":"allenai/olmo-3-32b-think","name":"allenai/olmo-3-32b-think","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3.1-32b-instruct":{"id":"allenai/olmo-3.1-32b-instruct","name":"allenai/olmo-3.1-32b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3.1-32b-think":{"id":"allenai/olmo-3.1-32b-think","name":"allenai/olmo-3.1-32b-think","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"amazon/nova-2-lite-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"amazon/nova-lite-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"amazon/nova-micro-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"amazon/nova-pro-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthracite-org/magnum-v2-72b":{"id":"anthracite-org/magnum-v2-72b","name":"anthracite-org/magnum-v2-72b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"anthracite-org/magnum-v4-72b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Anthropic 3.5 Haiku","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-3.5-sonnet":{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic Sonnet 3.5 v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic 3.7 Sonnet","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Anthropic Haiku 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-haiku-latest":{"id":"anthropic/claude-haiku-latest","name":"anthropic/anthropic-haiku-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic Opus 4 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Anthropic Opus 4.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Anthropic Opus 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Anthropic Opus 4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Anthropic Opus 4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-latest":{"id":"anthropic/claude-opus-latest","name":"anthropic/anthropic-opus-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic Sonnet 4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Anthropic Sonnet 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-latest":{"id":"anthropic/claude-sonnet-latest","name":"anthropic/anthropic-sonnet-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large":{"id":"arcee-ai/trinity-large","name":"arcee-ai/trinity-large","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-preview":{"id":"arcee-ai/trinity-large-preview","name":"arcee-ai/trinity-large-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"arcee-ai/trinity-large-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-mini":{"id":"arcee-ai/trinity-mini","name":"arcee-ai/trinity-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"asi1-mini":{"id":"asi1-mini","name":"asi1-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model":{"id":"auto-model","name":"auto-model","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model-basic":{"id":"auto-model-basic","name":"auto-model-basic","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model-premium":{"id":"auto-model-premium","name":"auto-model-premium","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model-standard":{"id":"auto-model-standard","name":"auto-model-standard","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-gpt-4-turbo":{"id":"azure-gpt-4-turbo","name":"azure-gpt-4-turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-gpt-4o":{"id":"azure-gpt-4o","name":"azure-gpt-4o","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-gpt-4o-mini":{"id":"azure-gpt-4o-mini","name":"azure-gpt-4o-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-o1":{"id":"azure-o1","name":"azure-o1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-o3-mini":{"id":"azure-o3-mini","name":"azure-o3-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Baichuan-M2":{"id":"Baichuan-M2","name":"Baichuan-M2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Baichuan4-Air":{"id":"Baichuan4-Air","name":"Baichuan4-Air","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Baichuan4-Turbo":{"id":"Baichuan4-Turbo","name":"Baichuan4-Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-300b-a47b":{"id":"baidu/ernie-4.5-300b-a47b","name":"baidu/ernie-4.5-300b-a47b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-vl-28b-a3b":{"id":"baidu/ernie-4.5-vl-28b-a3b","name":"baidu/ernie-4.5-vl-28b-a3b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-5.0-thinking-preview":{"id":"baidu/ernie-5.0-thinking-preview","name":"ERNIE 5.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"baidu/ernie-x1.1-preview":{"id":"baidu/ernie-x1.1-preview","name":"baidu/ernie-x1.1-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baseten/Kimi-K2-Instruct-FP4":{"id":"baseten/Kimi-K2-Instruct-FP4","name":"baseten/Kimi-K2-Instruct-FP4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"brave":{"id":"brave","name":"brave","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"brave-pro":{"id":"brave-pro","name":"brave-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"brave-research":{"id":"brave-research","name":"brave-research","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"bytedance-seed/seed-2.0-lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/doubao-seed-1.8":{"id":"bytedance/doubao-seed-1.8","name":"bytedance/doubao-seed-1.8","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/doubao-seed-2.0-code":{"id":"bytedance/doubao-seed-2.0-code","name":"bytedance/doubao-seed-2.0-code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/doubao-seed-2.0-lite":{"id":"bytedance/doubao-seed-2.0-lite","name":"bytedance/doubao-seed-2.0-lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/doubao-seed-2.0-mini":{"id":"bytedance/doubao-seed-2.0-mini","name":"bytedance/doubao-seed-2.0-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/doubao-seed-2.0-pro":{"id":"bytedance/doubao-seed-2.0-pro","name":"bytedance/doubao-seed-2.0-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance/doubao-seed-code":{"id":"bytedance/doubao-seed-code","name":"bytedance/doubao-seed-code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"chutesai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"chutesai/Mistral-Small-3.2-24B-Instruct-2506","name":"chutesai/Mistral-Small-3.2-24B-Instruct-2506","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-5-haiku":{"id":"claude-3-5-haiku","name":"Anthropic Haiku 3.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"claude-3-5-haiku-20241022":{"id":"claude-3-5-haiku-20241022","name":"anthropic-3-5-haiku-20241022","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"claude-3-5-sonnet-20240620":{"id":"claude-3-5-sonnet-20240620","name":"Anthropic Sonnet 3.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"claude-3-5-sonnet-20241022":{"id":"claude-3-5-sonnet-20241022","name":"Anthropic Sonnet 3.5 v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"claude-3-7-sonnet":{"id":"claude-3-7-sonnet","name":"anthropic-3-7-sonnet","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"claude-3-7-sonnet-20250219":{"id":"claude-3-7-sonnet-20250219","name":"anthropic-3-7-sonnet-20250219","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"claude-3-7-sonnet-reasoner":{"id":"claude-3-7-sonnet-reasoner","name":"anthropic-3-7-sonnet-reasoner","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking":{"id":"claude-3-7-sonnet-thinking","name":"anthropic-3-7-sonnet-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:1024":{"id":"claude-3-7-sonnet-thinking:1024","name":"anthropic-3-7-sonnet-thinking:1024","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:128000":{"id":"claude-3-7-sonnet-thinking:128000","name":"anthropic-3-7-sonnet-thinking:128000","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:32768":{"id":"claude-3-7-sonnet-thinking:32768","name":"anthropic-3-7-sonnet-thinking:32768","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:8192":{"id":"claude-3-7-sonnet-thinking:8192","name":"anthropic-3-7-sonnet-thinking:8192","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-haiku-20240307":{"id":"claude-3-haiku-20240307","name":"Anthropic Haiku 3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":4096},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Anthropic Haiku 4.5 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Anthropic Haiku 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-haiku-4-5-20251001-thinking":{"id":"claude-haiku-4-5-20251001-thinking","name":"anthropic-haiku-4-5-20251001-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4":{"id":"claude-opus-4","name":"anthropic-opus-4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"claude-opus-4-0":{"id":"claude-opus-4-0","name":"Anthropic Opus 4 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Anthropic Opus 4.1 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Anthropic Opus 4.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1-thinking":{"id":"claude-opus-4-1-thinking","name":"anthropic-opus-4-1-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:1024":{"id":"claude-opus-4-1-thinking:1024","name":"anthropic-opus-4-1-thinking:1024","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:32000":{"id":"claude-opus-4-1-thinking:32000","name":"anthropic-opus-4-1-thinking:32000","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:32768":{"id":"claude-opus-4-1-thinking:32768","name":"anthropic-opus-4-1-thinking:32768","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:8192":{"id":"claude-opus-4-1-thinking:8192","name":"anthropic-opus-4-1-thinking:8192","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"Anthropic Opus 4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Anthropic Opus 4.5 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Anthropic Opus 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Anthropic Opus 4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Anthropic Opus 4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-thinking":{"id":"claude-opus-4-thinking","name":"anthropic-opus-4-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:1024":{"id":"claude-opus-4-thinking:1024","name":"anthropic-opus-4-thinking:1024","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:32000":{"id":"claude-opus-4-thinking:32000","name":"anthropic-opus-4-thinking:32000","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:32768":{"id":"claude-opus-4-thinking:32768","name":"anthropic-opus-4-thinking:32768","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:8192":{"id":"claude-opus-4-thinking:8192","name":"anthropic-opus-4-thinking:8192","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Anthropic Sonnet 4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-0":{"id":"claude-sonnet-4-0","name":"Anthropic Sonnet 4 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"Anthropic Sonnet 4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (latest)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Anthropic Sonnet 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5-20250929-thinking":{"id":"claude-sonnet-4-5-20250929-thinking","name":"anthropic-sonnet-4-5-20250929-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Anthropic Sonnet 4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-thinking":{"id":"claude-sonnet-4-thinking","name":"anthropic-sonnet-4-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:1024":{"id":"claude-sonnet-4-thinking:1024","name":"anthropic-sonnet-4-thinking:1024","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:32768":{"id":"claude-sonnet-4-thinking:32768","name":"anthropic-sonnet-4-thinking:32768","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:64000":{"id":"claude-sonnet-4-thinking:64000","name":"anthropic-sonnet-4-thinking:64000","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:8192":{"id":"claude-sonnet-4-thinking:8192","name":"anthropic-sonnet-4-thinking:8192","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"codex-auto-review":{"id":"codex-auto-review","name":"openai-code-auto-review","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cognitivecomputations/dolphin-2.9.2-qwen2-72b":{"id":"cognitivecomputations/dolphin-2.9.2-qwen2-72b","name":"cognitivecomputations/dolphin-2.9.2-qwen2-72b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r":{"id":"cohere/command-r","name":"cohere/command-r","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"cohere/command-r-plus-08-2024","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"command-a-reasoning-08-2025":{"id":"command-a-reasoning-08-2025","name":"command-a-reasoning-08-2025","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"CrucibleLab/L3.3-70B-Loki-V2.0":{"id":"CrucibleLab/L3.3-70B-Loki-V2.0","name":"CrucibleLab/L3.3-70B-Loki-V2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepclaude":{"id":"deepclaude","name":"deepanthropic","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepcogito/cogito-v1-preview-qwen-32B":{"id":"deepcogito/cogito-v1-preview-qwen-32B","name":"deepcogito/cogito-v1-preview-qwen-32B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepcogito/cogito-v2.1-671b":{"id":"deepcogito/cogito-v2.1-671b","name":"deepcogito/cogito-v2.1-671b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"deepseek-ai/DeepSeek-V3.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"deepseek-ai/DeepSeek-V3.1-Terminus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-ai/deepseek-v3.2-exp":{"id":"deepseek-ai/deepseek-v3.2-exp","name":"deepseek-ai/deepseek-v3.2-exp","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-ai/deepseek-v3.2-exp-thinking":{"id":"deepseek-ai/deepseek-v3.2-exp-thinking","name":"deepseek-ai/deepseek-v3.2-exp-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-chat":{"id":"deepseek-chat","name":"deepseek-chat","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-chat-cheaper":{"id":"deepseek-chat-cheaper","name":"deepseek-chat-cheaper","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-math-v2":{"id":"deepseek-math-v2","name":"deepseek-math-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-r1":{"id":"deepseek-r1","name":"deepseek-r1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-r1-sambanova":{"id":"deepseek-r1-sambanova","name":"deepseek-r1-sambanova","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"deepseek-reasoner","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-reasoner-cheaper":{"id":"deepseek-reasoner-cheaper","name":"deepseek-reasoner-cheaper","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-v3-0324":{"id":"deepseek-v3-0324","name":"deepseek-v3-0324","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek-V3.2 (Non-thinking Mode)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"deepseek/deepseek-chat-v3.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-latest":{"id":"deepseek/deepseek-latest","name":"deepseek/deepseek-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-prover-v2-671b":{"id":"deepseek/deepseek-prover-v2-671b","name":"deepseek/deepseek-prover-v2-671b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"deepseek/deepseek-r1-0528","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-reasoner":{"id":"deepseek/deepseek-reasoner","name":"deepseek/deepseek-reasoner","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek-V3.2-Exp","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":163000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-speciale":{"id":"deepseek/deepseek-v3.2-speciale","name":"deepseek/deepseek-v3.2-speciale","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-flash-free":{"id":"deepseek/deepseek-v4-flash-free","name":"deepseek/deepseek-v4-flash-free","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro-cheaper":{"id":"deepseek/deepseek-v4-pro-cheaper","name":"deepseek/deepseek-v4-pro-cheaper","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-pro-free":{"id":"deepseek/deepseek-v4-pro-free","name":"deepseek/deepseek-v4-pro-free","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"dmind/dmind-1":{"id":"dmind/dmind-1","name":"dmind/dmind-1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"dmind/dmind-1-mini":{"id":"dmind/dmind-1-mini","name":"dmind/dmind-1-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{"id":"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond","name":"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-1-5-thinking-pro-250415":{"id":"doubao-1-5-thinking-pro-250415","name":"doubao-1-5-thinking-pro-250415","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-1.5-pro-256k":{"id":"doubao-1.5-pro-256k","name":"doubao-1.5-pro-256k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-1.5-pro-32k":{"id":"doubao-1.5-pro-32k","name":"doubao-1.5-pro-32k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-6-250615":{"id":"doubao-seed-1-6-250615","name":"doubao-seed-1-6-250615","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-6-flash-250615":{"id":"doubao-seed-1-6-flash-250615","name":"doubao-seed-1-6-flash-250615","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-6-thinking-250615":{"id":"doubao-seed-1-6-thinking-250615","name":"doubao-seed-1-6-thinking-250615","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-8-251215":{"id":"doubao-seed-1-8-251215","name":"doubao-seed-1-8-251215","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-code-preview-260215":{"id":"doubao-seed-2-0-code-preview-260215","name":"doubao-seed-2-0-code-preview-260215","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-lite-260215":{"id":"doubao-seed-2-0-lite-260215","name":"doubao-seed-2-0-lite-260215","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-mini-260215":{"id":"doubao-seed-2-0-mini-260215","name":"doubao-seed-2-0-mini-260215","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-pro-260215":{"id":"doubao-seed-2-0-pro-260215","name":"doubao-seed-2-0-pro-260215","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-code-preview-latest":{"id":"doubao-seed-code-preview-latest","name":"doubao-seed-code-preview-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{"id":"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B","name":"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{"id":"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B","name":"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-4.5-8k-preview":{"id":"ernie-4.5-8k-preview","name":"ernie-4.5-8k-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-4.5-turbo-128k":{"id":"ernie-4.5-turbo-128k","name":"ernie-4.5-turbo-128k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-4.5-turbo-vl-32k":{"id":"ernie-4.5-turbo-vl-32k","name":"ernie-4.5-turbo-vl-32k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-5.0-thinking-latest":{"id":"ernie-5.0-thinking-latest","name":"ernie-5.0-thinking-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-5.0-thinking-preview":{"id":"ernie-5.0-thinking-preview","name":"ernie-5.0-thinking-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1-32k":{"id":"ernie-x1-32k","name":"ernie-x1-32k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1-32k-preview":{"id":"ernie-x1-32k-preview","name":"ernie-x1-32k-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1-turbo-32k":{"id":"ernie-x1-turbo-32k","name":"ernie-x1-turbo-32k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1.1-preview":{"id":"ernie-x1.1-preview","name":"ernie-x1.1-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"essentialai/rnj-1-instruct":{"id":"essentialai/rnj-1-instruct","name":"essentialai/rnj-1-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0","name":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1","name":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2","name":"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2","name":"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"exa-answer":{"id":"exa-answer","name":"exa-answer","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"exa-research":{"id":"exa-research","name":"exa-research","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"exa-research-pro":{"id":"exa-research-pro","name":"exa-research-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{"id":"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5","name":"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"fastgpt":{"id":"fastgpt","name":"fastgpt","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"featherless-ai/Qwerky-72B":{"id":"featherless-ai/Qwerky-72B","name":"featherless-ai/Qwerky-72B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GalrionSoftworks/MN-LooseCannon-12B-v1":{"id":"GalrionSoftworks/MN-LooseCannon-12B-v1","name":"GalrionSoftworks/MN-LooseCannon-12B-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-flash-001":{"id":"gemini-2.0-flash-001","name":"gemini-2.0-flash-001","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"Gemini 2.0 Flash-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.0-flash-thinking-exp-01-21":{"id":"gemini-2.0-flash-thinking-exp-01-21","name":"gemini-2.0-flash-thinking-exp-01-21","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-flash-thinking-exp-1219":{"id":"gemini-2.0-flash-thinking-exp-1219","name":"gemini-2.0-flash-thinking-exp-1219","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-pro-exp-02-05":{"id":"gemini-2.0-pro-exp-02-05","name":"gemini-2.0-pro-exp-02-05","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-pro-reasoner":{"id":"gemini-2.0-pro-reasoner","name":"gemini-2.0-pro-reasoner","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"gemini-2.5-flash-lite-preview-06-17","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"gemini-2.5-flash-lite-preview-09-2025","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-lite-preview-09-2025-thinking":{"id":"gemini-2.5-flash-lite-preview-09-2025-thinking","name":"gemini-2.5-flash-lite-preview-09-2025-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-nothinking":{"id":"gemini-2.5-flash-nothinking","name":"gemini-2.5-flash-nothinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-preview-04-17":{"id":"gemini-2.5-flash-preview-04-17","name":"gemini-2.5-flash-preview-04-17","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"gemini-2.5-flash-preview-05-20","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"gemini-2.5-flash-preview-09-2025","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-preview-09-2025-thinking":{"id":"gemini-2.5-flash-preview-09-2025-thinking","name":"gemini-2.5-flash-preview-09-2025-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro-exp-03-25":{"id":"gemini-2.5-pro-exp-03-25","name":"gemini-2.5-pro-exp-03-25","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro-preview-03-25":{"id":"gemini-2.5-pro-preview-03-25","name":"gemini-2.5-pro-preview-03-25","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro-preview-05-06":{"id":"gemini-2.5-pro-preview-05-06","name":"gemini-2.5-pro-preview-05-06","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"gemini-2.5-pro-preview-06-05","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro":{"id":"gemini-3-pro","name":"Gemini 3 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3-pro-preview-thinking":{"id":"gemini-3-pro-preview-thinking","name":"gemini-3-pro-preview-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-exp-1206":{"id":"gemini-exp-1206","name":"gemini-exp-1206","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-ArliAI-RPMax-v3":{"id":"Gemma-3-27B-ArliAI-RPMax-v3","name":"Gemma-3-27B-ArliAI-RPMax-v3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-Big-Tiger-v3":{"id":"Gemma-3-27B-Big-Tiger-v3","name":"Gemma-3-27B-Big-Tiger-v3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-CardProjector-v4":{"id":"Gemma-3-27B-CardProjector-v4","name":"Gemma-3-27B-CardProjector-v4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-Glitter":{"id":"Gemma-3-27B-Glitter","name":"Gemma-3-27B-Glitter","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-it":{"id":"Gemma-3-27B-it","name":"Gemma-3-27B-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-it-Abliterated":{"id":"Gemma-3-27B-it-Abliterated","name":"Gemma-3-27B-it-Abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-Nidum-Uncensored":{"id":"Gemma-3-27B-Nidum-Uncensored","name":"Gemma-3-27B-Nidum-Uncensored","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4":{"id":"glm-4","name":"glm-4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-air":{"id":"glm-4-air","name":"glm-4-air","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-air-0111":{"id":"glm-4-air-0111","name":"glm-4-air-0111","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-airx":{"id":"glm-4-airx","name":"glm-4-airx","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-flash":{"id":"glm-4-flash","name":"glm-4-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-long":{"id":"glm-4-long","name":"glm-4-long","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-plus":{"id":"glm-4-plus","name":"glm-4-plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-plus-0111":{"id":"glm-4-plus-0111","name":"glm-4-plus-0111","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.1v-thinking-flash":{"id":"glm-4.1v-thinking-flash","name":"glm-4.1v-thinking-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.1v-thinking-flashx":{"id":"glm-4.1v-thinking-flashx","name":"glm-4.1v-thinking-flashx","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"GLM-4.5-Air-Derestricted":{"id":"GLM-4.5-Air-Derestricted","name":"GLM-4.5-Air-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink":{"id":"GLM-4.5-Air-Derestricted-Iceblink","name":"GLM-4.5-Air-Derestricted-Iceblink","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink-ReExtract":{"id":"GLM-4.5-Air-Derestricted-Iceblink-ReExtract","name":"GLM-4.5-Air-Derestricted-Iceblink-ReExtract","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink-v2":{"id":"GLM-4.5-Air-Derestricted-Iceblink-v2","name":"GLM-4.5-Air-Derestricted-Iceblink-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract":{"id":"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract","name":"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Steam":{"id":"GLM-4.5-Air-Derestricted-Steam","name":"GLM-4.5-Air-Derestricted-Steam","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Steam-ReExtract":{"id":"GLM-4.5-Air-Derestricted-Steam-ReExtract","name":"GLM-4.5-Air-Derestricted-Steam-ReExtract","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.5-flash":{"id":"glm-4.5-flash","name":"glm-4.5-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.5v":{"id":"glm-4.5v","name":"glm-4.5v","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"GLM-4.6-Derestricted-v5":{"id":"GLM-4.6-Derestricted-v5","name":"GLM-4.6-Derestricted-v5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.6v":{"id":"glm-4.6v","name":"glm-4.6v","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"glm-4.7-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.7-flash-heretic":{"id":"glm-4.7-flash-heretic","name":"glm-4.7-flash-heretic","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"glm-4.7-flashx","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-5":{"id":"glm-5","name":"GLM-5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-z1-air":{"id":"glm-z1-air","name":"glm-z1-air","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-z1-airx":{"id":"glm-z1-airx","name":"glm-z1-airx","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-zero-preview":{"id":"glm-zero-preview","name":"glm-zero-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.0-flash":{"id":"google/gemini-2.0-flash","name":"google/gemini-2.0-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.0-flash-lite-001":{"id":"google/gemini-2.0-flash-lite-001","name":"google/gemini-2.0-flash-lite-001","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-flash-preview-thinking":{"id":"google/gemini-3-flash-preview-thinking","name":"google/gemini-3-flash-preview-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"google/gemini-3-pro-image-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"google/gemini-3-pro-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":65530},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"google/gemini-3.1-pro-preview-customtools","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-pro-preview-high":{"id":"google/gemini-3.1-pro-preview-high","name":"google/gemini-3.1-pro-preview-high","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-pro-preview-low":{"id":"google/gemini-3.1-pro-preview-low","name":"google/gemini-3.1-pro-preview-low","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-flash-1.5":{"id":"google/gemini-flash-1.5","name":"google/gemini-flash-1.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"google/gemini-flash-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"google/gemini-flash-lite-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-pro-latest":{"id":"google/gemini-pro-latest","name":"google/gemini-pro-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"google/gemma-3-12b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"google/gemma-4-26b-a4b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-codex-mini":{"id":"gpt-5-codex-mini","name":"gpt-5-openai-code-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":4096},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 OpenAI code Max","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 OpenAI code mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 OpenAI code Spark","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"contextPromotionTarget":"litellm/gpt-5.5","thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":130000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"contextPromotionTarget":"litellm/gpt-5.4"},"gpt-image-2":{"id":"gpt-image-2","name":"gpt-image-2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-beta":{"id":"grok-3-beta","name":"grok-3-beta","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-fast-beta":{"id":"grok-3-fast-beta","name":"grok-3-fast-beta","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-mini-beta":{"id":"grok-3-mini-beta","name":"grok-3-mini-beta","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-mini-fast-beta":{"id":"grok-3-mini-fast-beta","name":"grok-3-mini-fast-beta","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"grok-4-1-fast-reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"Grok 4 Fast (Non-Reasoning)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"grok-4-fast-reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":10000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-imagine-image":{"id":"grok-imagine-image","name":"grok-imagine-image","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"grok-imagine-video":{"id":"grok-imagine-video","name":"grok-imagine-video","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"Gryphe/MythoMax-L2-13b":{"id":"Gryphe/MythoMax-L2-13b","name":"Gryphe/MythoMax-L2-13b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:deepseek-ai/DeepSeek-R1-0528":{"id":"hf:deepseek-ai/DeepSeek-R1-0528","name":"hf:deepseek-ai/DeepSeek-R1-0528","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:deepseek-ai/DeepSeek-V3":{"id":"hf:deepseek-ai/DeepSeek-V3","name":"hf:deepseek-ai/DeepSeek-V3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:deepseek-ai/DeepSeek-V3-0324":{"id":"hf:deepseek-ai/DeepSeek-V3-0324","name":"hf:deepseek-ai/DeepSeek-V3-0324","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:deepseek-ai/DeepSeek-V3.2":{"id":"hf:deepseek-ai/DeepSeek-V3.2","name":"hf:deepseek-ai/DeepSeek-V3.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:meta-llama/Llama-3.3-70B-Instruct":{"id":"hf:meta-llama/Llama-3.3-70B-Instruct","name":"hf:meta-llama/Llama-3.3-70B-Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:MiniMaxAI/MiniMax-M2.1":{"id":"hf:MiniMaxAI/MiniMax-M2.1","name":"hf:MiniMaxAI/MiniMax-M2.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:MiniMaxAI/MiniMax-M2.5":{"id":"hf:MiniMaxAI/MiniMax-M2.5","name":"hf:MiniMaxAI/MiniMax-M2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:moonshotai/Kimi-K2-Instruct-0905":{"id":"hf:moonshotai/Kimi-K2-Instruct-0905","name":"hf:moonshotai/Kimi-K2-Instruct-0905","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:moonshotai/Kimi-K2-Thinking":{"id":"hf:moonshotai/Kimi-K2-Thinking","name":"hf:moonshotai/Kimi-K2-Thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:moonshotai/Kimi-K2.5":{"id":"hf:moonshotai/Kimi-K2.5","name":"hf:moonshotai/Kimi-K2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:moonshotai/Kimi-K2.6":{"id":"hf:moonshotai/Kimi-K2.6","name":"hf:moonshotai/Kimi-K2.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:nvidia/Kimi-K2.5-NVFP4":{"id":"hf:nvidia/Kimi-K2.5-NVFP4","name":"hf:nvidia/Kimi-K2.5-NVFP4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{"id":"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","name":"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:openai/gpt-oss-120b":{"id":"hf:openai/gpt-oss-120b","name":"hf:openai/gpt-oss-120b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"hf:Qwen/Qwen3-235B-A22B-Thinking-2507","name":"hf:Qwen/Qwen3-235B-A22B-Thinking-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:Qwen/Qwen3.5-397B-A17B":{"id":"hf:Qwen/Qwen3.5-397B-A17B","name":"hf:Qwen/Qwen3.5-397B-A17B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:zai-org/GLM-4.7":{"id":"hf:zai-org/GLM-4.7","name":"hf:zai-org/GLM-4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:zai-org/GLM-4.7-Flash":{"id":"hf:zai-org/GLM-4.7-Flash","name":"hf:zai-org/GLM-4.7-Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:zai-org/GLM-5":{"id":"hf:zai-org/GLM-5","name":"hf:zai-org/GLM-5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hf:zai-org/GLM-5.1":{"id":"hf:zai-org/GLM-5.1","name":"hf:zai-org/GLM-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"holo3-35b-a3b":{"id":"holo3-35b-a3b","name":"holo3-35b-a3b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated","name":"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated","name":"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated":{"id":"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated","name":"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/Llama-3.3-70B-Instruct-abliterated":{"id":"huihui-ai/Llama-3.3-70B-Instruct-abliterated","name":"huihui-ai/Llama-3.3-70B-Instruct-abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/Qwen2.5-32B-Instruct-abliterated":{"id":"huihui-ai/Qwen2.5-32B-Instruct-abliterated","name":"huihui-ai/Qwen2.5-32B-Instruct-abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hunyuan-t1-latest":{"id":"hunyuan-t1-latest","name":"hunyuan-t1-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hunyuan-turbos-20250226":{"id":"hunyuan-turbos-20250226","name":"hunyuan-turbos-20250226","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"ibm-granite/granite-4.1-8b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-1t":{"id":"inclusionai/ling-1t","name":"Ling-1T","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"inclusionai/ling-2.6-1t":{"id":"inclusionai/ling-2.6-1t","name":"inclusionai/ling-2.6-1t","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-flash":{"id":"inclusionai/ling-2.6-flash","name":"inclusionai/ling-2.6-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-flash-2.0":{"id":"inclusionai/ling-flash-2.0","name":"inclusionai/ling-flash-2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-mini-2.0":{"id":"inclusionai/ling-mini-2.0","name":"inclusionai/ling-mini-2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/llada2.0-flash-cap":{"id":"inclusionai/llada2.0-flash-cap","name":"inclusionai/llada2.0-flash-cap","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/llada2.1-flash":{"id":"inclusionai/llada2.1-flash","name":"inclusionai/llada2.1-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ming-flash-omni-2.0":{"id":"inclusionai/ming-flash-omni-2.0","name":"inclusionai/ming-flash-omni-2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ring-1t":{"id":"inclusionai/ring-1t","name":"Ring-1T","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"inclusionai/ring-flash-2.0":{"id":"inclusionai/ring-flash-2.0","name":"inclusionai/ring-flash-2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ring-mini-2.0":{"id":"inclusionai/ring-mini-2.0","name":"inclusionai/ring-mini-2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Infermatic/MN-12B-Inferor-v0.0":{"id":"Infermatic/MN-12B-Inferor-v0.0","name":"Infermatic/MN-12B-Inferor-v0.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflatebot/MN-12B-Mag-Mell-R1":{"id":"inflatebot/MN-12B-Mag-Mell-R1","name":"inflatebot/MN-12B-Mag-Mell-R1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflection/inflection-3-pi":{"id":"inflection/inflection-3-pi","name":"inflection/inflection-3-pi","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflection/inflection-3-productivity":{"id":"inflection/inflection-3-productivity","name":"inflection/inflection-3-productivity","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-large":{"id":"jamba-large","name":"jamba-large","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-large-1.6":{"id":"jamba-large-1.6","name":"jamba-large-1.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-large-1.7":{"id":"jamba-large-1.7","name":"jamba-large-1.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-mini":{"id":"jamba-mini","name":"jamba-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-mini-1.6":{"id":"jamba-mini-1.6","name":"jamba-mini-1.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-mini-1.7":{"id":"jamba-mini-1.7","name":"jamba-mini-1.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"KAT-Coder-Air-V1":{"id":"KAT-Coder-Air-V1","name":"KAT-Coder-Air-V1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"KAT-Coder-Exp-72B-1010":{"id":"KAT-Coder-Exp-72B-1010","name":"KAT-Coder-Exp-72B-1010","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"KAT-Coder-Pro-V1":{"id":"KAT-Coder-Pro-V1","name":"KAT-Coder-Pro-V1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"kimi-k2-instruct-fast":{"id":"kimi-k2-instruct-fast","name":"kimi-k2-instruct-fast","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-thinking-preview":{"id":"kimi-thinking-preview","name":"kimi-thinking-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kuaishou/kat-coder-pro-v1":{"id":"kuaishou/kat-coder-pro-v1","name":"kuaishou/kat-coder-pro-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kuaishou/kat-coder-pro-v1-free":{"id":"kuaishou/kat-coder-pro-v1-free","name":"kuaishou/kat-coder-pro-v1-free","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kuaishou/kat-coder-pro-v2":{"id":"kuaishou/kat-coder-pro-v2","name":"KAT-Coder-Pro-V2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"kwaipilot/kat-coder-pro-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{"id":"LatitudeGames/Wayfarer-Large-70B-Llama-3.3","name":"LatitudeGames/Wayfarer-Large-70B-Llama-3.3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"learnlm-1.5-pro-experimental":{"id":"learnlm-1.5-pro-experimental","name":"learnlm-1.5-pro-experimental","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"liquid/lfm-2-24b-a2b":{"id":"liquid/lfm-2-24b-a2b","name":"liquid/lfm-2-24b-a2b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Anthrobomination":{"id":"Llama-3.3-70B-Anthrobomination","name":"Llama-3.3-70B-Anthrobomination","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Argunaut-1-SFT":{"id":"Llama-3.3-70B-Argunaut-1-SFT","name":"Llama-3.3-70B-Argunaut-1-SFT","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-ArliAI-RPMax-v1.4":{"id":"Llama-3.3-70B-ArliAI-RPMax-v1.4","name":"Llama-3.3-70B-ArliAI-RPMax-v1.4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-ArliAI-RPMax-v2":{"id":"Llama-3.3-70B-ArliAI-RPMax-v2","name":"Llama-3.3-70B-ArliAI-RPMax-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-ArliAI-RPMax-v3":{"id":"Llama-3.3-70B-ArliAI-RPMax-v3","name":"Llama-3.3-70B-ArliAI-RPMax-v3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Aurora-Borealis":{"id":"Llama-3.3-70B-Aurora-Borealis","name":"Llama-3.3-70B-Aurora-Borealis","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Bigger-Body":{"id":"Llama-3.3-70B-Bigger-Body","name":"Llama-3.3-70B-Bigger-Body","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Cirrus-x1":{"id":"Llama-3.3-70B-Cirrus-x1","name":"Llama-3.3-70B-Cirrus-x1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Cu-Mai-R1":{"id":"Llama-3.3-70B-Cu-Mai-R1","name":"Llama-3.3-70B-Cu-Mai-R1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Damascus-R1":{"id":"Llama-3.3-70B-Damascus-R1","name":"Llama-3.3-70B-Damascus-R1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Dark-Ages-v0.1":{"id":"Llama-3.3-70B-Dark-Ages-v0.1","name":"Llama-3.3-70B-Dark-Ages-v0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Electra-R1":{"id":"Llama-3.3-70B-Electra-R1","name":"Llama-3.3-70B-Electra-R1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Electranova-v1.0":{"id":"Llama-3.3-70B-Electranova-v1.0","name":"Llama-3.3-70B-Electranova-v1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Fallen-R1-v1":{"id":"Llama-3.3-70B-Fallen-R1-v1","name":"Llama-3.3-70B-Fallen-R1-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Fallen-v1":{"id":"Llama-3.3-70B-Fallen-v1","name":"Llama-3.3-70B-Fallen-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Forgotten-Abomination-v5.0":{"id":"Llama-3.3-70B-Forgotten-Abomination-v5.0","name":"Llama-3.3-70B-Forgotten-Abomination-v5.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Forgotten-Safeword-3.6":{"id":"Llama-3.3-70B-Forgotten-Safeword-3.6","name":"Llama-3.3-70B-Forgotten-Safeword-3.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-GeneticLemonade-Opus":{"id":"Llama-3.3-70B-GeneticLemonade-Opus","name":"Llama-3.3-70B-GeneticLemonade-Opus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-GeneticLemonade-Unleashed-v3":{"id":"Llama-3.3-70B-GeneticLemonade-Unleashed-v3","name":"Llama-3.3-70B-GeneticLemonade-Unleashed-v3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Ignition-v0.1":{"id":"Llama-3.3-70B-Ignition-v0.1","name":"Llama-3.3-70B-Ignition-v0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Incandescent-Malevolence":{"id":"Llama-3.3-70B-Incandescent-Malevolence","name":"Llama-3.3-70B-Incandescent-Malevolence","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Legion-V2.1":{"id":"Llama-3.3-70B-Legion-V2.1","name":"Llama-3.3-70B-Legion-V2.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Magnum-v4-SE":{"id":"Llama-3.3-70B-Magnum-v4-SE","name":"Llama-3.3-70B-Magnum-v4-SE","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP":{"id":"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP","name":"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Mhnnn-x1":{"id":"Llama-3.3-70B-Mhnnn-x1","name":"Llama-3.3-70B-Mhnnn-x1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-MiraiFanfare":{"id":"Llama-3.3-70B-MiraiFanfare","name":"Llama-3.3-70B-MiraiFanfare","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Mokume-Gane-R1":{"id":"Llama-3.3-70B-Mokume-Gane-R1","name":"Llama-3.3-70B-Mokume-Gane-R1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-MS-Nevoria":{"id":"Llama-3.3-70B-MS-Nevoria","name":"Llama-3.3-70B-MS-Nevoria","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Nova":{"id":"Llama-3.3-70B-Nova","name":"Llama-3.3-70B-Nova","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Predatorial-Extasy":{"id":"Llama-3.3-70B-Predatorial-Extasy","name":"Llama-3.3-70B-Predatorial-Extasy","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Progenitor-V3.3":{"id":"Llama-3.3-70B-Progenitor-V3.3","name":"Llama-3.3-70B-Progenitor-V3.3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-RAWMAW":{"id":"Llama-3.3-70B-RAWMAW","name":"Llama-3.3-70B-RAWMAW","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Sapphira-0.1":{"id":"Llama-3.3-70B-Sapphira-0.1","name":"Llama-3.3-70B-Sapphira-0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Sapphira-0.2":{"id":"Llama-3.3-70B-Sapphira-0.2","name":"Llama-3.3-70B-Sapphira-0.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Shakudo":{"id":"Llama-3.3-70B-Shakudo","name":"Llama-3.3-70B-Shakudo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-StrawberryLemonade-v1.0":{"id":"Llama-3.3-70B-StrawberryLemonade-v1.0","name":"Llama-3.3-70B-StrawberryLemonade-v1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Strawberrylemonade-v1.2":{"id":"Llama-3.3-70B-Strawberrylemonade-v1.2","name":"Llama-3.3-70B-Strawberrylemonade-v1.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0":{"id":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0","name":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1":{"id":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1","name":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Vulpecula-R1":{"id":"Llama-3.3-70B-Vulpecula-R1","name":"Llama-3.3-70B-Vulpecula-R1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3+(3.1v3.3)-70B-Hanami-x1":{"id":"Llama-3.3+(3.1v3.3)-70B-Hanami-x1","name":"Llama-3.3+(3.1v3.3)-70B-Hanami-x1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1":{"id":"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1","name":"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter":{"id":"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter","name":"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"LLM360/K2-Think":{"id":"LLM360/K2-Think","name":"LLM360/K2-Think","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Magistral-Small-2506":{"id":"Magistral-Small-2506","name":"Magistral-Small-2506","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MarinaraSpaghetti/NemoMix-Unleashed-12B":{"id":"MarinaraSpaghetti/NemoMix-Unleashed-12B","name":"MarinaraSpaghetti/NemoMix-Unleashed-12B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meganova-ai/manta-flash-1.0":{"id":"meganova-ai/manta-flash-1.0","name":"meganova-ai/manta-flash-1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meganova-ai/manta-mini-1.0":{"id":"meganova-ai/manta-mini-1.0","name":"meganova-ai/manta-mini-1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meganova-ai/manta-pro-1.0":{"id":"meganova-ai/manta-pro-1.0","name":"meganova-ai/manta-pro-1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meituan-longcat/LongCat-Flash-Chat-FP8":{"id":"meituan-longcat/LongCat-Flash-Chat-FP8","name":"meituan-longcat/LongCat-Flash-Chat-FP8","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mercury-2":{"id":"mercury-2","name":"mercury-2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mercury-coder-small":{"id":"mercury-coder-small","name":"mercury-coder-small","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Meta-Llama-3-1-8B-Instruct-FP8":{"id":"Meta-Llama-3-1-8B-Instruct-FP8","name":"Meta-Llama-3-1-8B-Instruct-FP8","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"meta-llama/llama-3.1-8b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"meta-llama/llama-3.2-3b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"meta-llama/llama-3.3-70b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"meta-llama/llama-4-maverick","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"meta-llama/llama-4-scout","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-4-scout-17b-16e-instruct":{"id":"meta/llama-4-scout-17b-16e-instruct","name":"meta/llama-4-scout-17b-16e-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"microsoft/MAI-DS-R1-FP8":{"id":"microsoft/MAI-DS-R1-FP8","name":"microsoft/MAI-DS-R1-FP8","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"microsoft/wizardlm-2-8x22b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax-M1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"minimax/minimax-01","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-latest":{"id":"minimax/minimax-latest","name":"minimax/minimax-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"minimax/minimax-m2-her","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5-lightning":{"id":"minimax/minimax-m2.5-lightning","name":"MiniMax M2.5 highspeed","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131070,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 highspeed","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131070,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7-turbo":{"id":"minimax/minimax-m2.7-turbo","name":"minimax/minimax-m2.7-turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MiniMaxAI/MiniMax-M1-80k":{"id":"MiniMaxAI/MiniMax-M1-80k","name":"MiniMaxAI/MiniMax-M1-80k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"miromind-ai/mirothinker-v1.5-235b":{"id":"miromind-ai/mirothinker-v1.5-235b","name":"miromind-ai/mirothinker-v1.5-235b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Mistral-Nemo-12B-Instruct-2407":{"id":"Mistral-Nemo-12B-Instruct-2407","name":"Mistral-Nemo-12B-Instruct-2407","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistral-small-31-24b-instruct":{"id":"mistral-small-31-24b-instruct","name":"mistral-small-31-24b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistral/mistral-medium-3.5":{"id":"mistral/mistral-medium-3.5","name":"mistral/mistral-medium-3.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistral/mistral-vibe-cli-latest":{"id":"mistral/mistral-vibe-cli-latest","name":"mistral/mistral-vibe-cli-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"mistralai/codestral-2508","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/devstral-2-123b-instruct-2512":{"id":"mistralai/devstral-2-123b-instruct-2512","name":"Devstral-2-123B-Instruct-2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/Devstral-Small-2505":{"id":"mistralai/Devstral-Small-2505","name":"mistralai/Devstral-Small-2505","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"mistralai/ministral-14b-2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"mistralai/ministral-14b-instruct-2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"mistralai/ministral-3b-2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"mistralai/ministral-8b-2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-7b-instruct":{"id":"mistralai/mistral-7b-instruct","name":"mistralai/mistral-7b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"mistralai/mistral-large","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"mistralai/mistral-large-2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large-3-675b-instruct-2512":{"id":"mistralai/mistral-large-3-675b-instruct-2512","name":"Mistral Large 3 675B Instruct 2512","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"mistralai/mistral-medium-3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"mistralai/mistral-medium-3.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"mistralai/Mistral-Nemo-Instruct-2407","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"mistralai/mistral-saba","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"mistral-small-4-119b-2603","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/mistral-small-creative":{"id":"mistralai/mistral-small-creative","name":"mistralai/mistral-small-creative","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-tiny":{"id":"mistralai/mistral-tiny","name":"mistralai/mistral-tiny","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mixtral-8x22b-instruct-v0.1":{"id":"mistralai/mixtral-8x22b-instruct-v0.1","name":"mistralai/mixtral-8x22b-instruct-v0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mixtral-8x7b-instruct-v0.1":{"id":"mistralai/mixtral-8x7b-instruct-v0.1","name":"mistralai/mixtral-8x7b-instruct-v0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mlabonne/NeuralDaredevil-8B-abliterated":{"id":"mlabonne/NeuralDaredevil-8B-abliterated","name":"mlabonne/NeuralDaredevil-8B-abliterated","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/Kimi-Dev-72B":{"id":"moonshotai/Kimi-Dev-72B","name":"moonshotai/Kimi-Dev-72B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-0711":{"id":"moonshotai/kimi-k2-0711","name":"moonshotai/kimi-k2-0711","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"moonshotai/kimi-k2-instruct-0711":{"id":"moonshotai/kimi-k2-instruct-0711","name":"moonshotai/kimi-k2-instruct-0711","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"moonshotai/Kimi-K2-Instruct-0905","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-thinking-original":{"id":"moonshotai/kimi-k2-thinking-original","name":"moonshotai/kimi-k2-thinking-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-thinking-turbo":{"id":"moonshotai/kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-thinking-turbo-original":{"id":"moonshotai/kimi-k2-thinking-turbo-original","name":"moonshotai/kimi-k2-thinking-turbo-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-latest":{"id":"moonshotai/kimi-latest","name":"moonshotai/kimi-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"NeverSleep/Llama-3-Lumimaid-70B-v0.1":{"id":"NeverSleep/Llama-3-Lumimaid-70B-v0.1","name":"NeverSleep/Llama-3-Lumimaid-70B-v0.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"NeverSleep/Lumimaid-v0.2-70B":{"id":"NeverSleep/Lumimaid-v0.2-70B","name":"NeverSleep/Lumimaid-v0.2-70B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nex-agi/deepseek-v3.1-nex-n1":{"id":"nex-agi/deepseek-v3.1-nex-n1","name":"nex-agi/deepseek-v3.1-nex-n1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{"id":"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16","name":"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"NousResearch/DeepHermes-3-Mistral-24B-Preview":{"id":"NousResearch/DeepHermes-3-Mistral-24B-Preview","name":"NousResearch/DeepHermes-3-Mistral-24B-Preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"nousresearch/hermes-3-llama-3.1-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"nousresearch/hermes-4-405b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-4-70b":{"id":"nousresearch/hermes-4-70b","name":"nousresearch/hermes-4-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5":{"id":"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5","name":"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{"id":"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF","name":"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":{"id":"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1","name":"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3.3-Nemotron-Super-49B-v1":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1","name":"nvidia/Llama-3.3-Nemotron-Super-49B-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nvidia-nemotron-nano-9b-v2":{"id":"nvidia/nvidia-nemotron-nano-9b-v2","name":"nvidia-nemotron-nano-9b-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/chatgpt-4o-latest":{"id":"openai/chatgpt-4o-latest","name":"openai/chatgpt-4o-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"openai/gpt-3.5-turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4-turbo-preview":{"id":"openai/gpt-4-turbo-preview","name":"openai/gpt-4-turbo-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"openai/gpt-4.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"openai/gpt-4.1-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"openai/gpt-4.1-nano","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"openai/gpt-4o-2024-08-06","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"openai/gpt-4o-2024-11-20","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini-search-preview":{"id":"openai/gpt-4o-mini-search-preview","name":"openai/gpt-4o-mini-search-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-search-preview":{"id":"openai/gpt-4o-search-preview","name":"openai/gpt-4o-search-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-chat":{"id":"openai/gpt-5-chat","name":"openai/gpt-5-chat","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-chat-latest":{"id":"openai/gpt-5-chat-latest","name":"openai/gpt-5-chat-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"openai/gpt-5-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"openai/gpt-5-nano","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"openai/gpt-5-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-2025-11-13":{"id":"openai/gpt-5.1-2025-11-13","name":"openai/gpt-5.1-2025-11-13","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"openai/gpt-5.1-chat-latest":{"id":"openai/gpt-5.1-chat-latest","name":"openai/gpt-5.1-chat-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"openai/gpt-5.1-openai-code-max","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":8888},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-OpenAI code-Mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"openai/gpt-5.2-chat","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16380},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"contextPromotionTarget":"litellm/gpt-5.4"},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"},"contextPromotionTarget":"litellm/gpt-5.4"},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"openai/gpt-chat-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-latest":{"id":"openai/gpt-latest","name":"openai/gpt-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1":{"id":"openai/o1","name":"o1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1-preview":{"id":"openai/o1-preview","name":"openai/o1-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o1-pro":{"id":"openai/o1-pro","name":"openai/o1-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3":{"id":"openai/o3","name":"o3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"openai/o3-deep-research","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"openai/o3-mini-high","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-mini-low":{"id":"openai/o3-mini-low","name":"openai/o3-mini-low","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-pro-2025-06-10":{"id":"openai/o3-pro-2025-06-10","name":"openai/o3-pro-2025-06-10","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini-deep-research":{"id":"openai/o4-mini-deep-research","name":"openai/o4-mini-deep-research","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"openai/o4-mini-high","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"owl":{"id":"owl","name":"owl","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"pamanseau/OpenReasoning-Nemotron-32B":{"id":"pamanseau/OpenReasoning-Nemotron-32B","name":"pamanseau/OpenReasoning-Nemotron-32B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"pangram-ai-detection":{"id":"pangram-ai-detection","name":"pangram-ai-detection","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"pangram-plagiarism-detection":{"id":"pangram-plagiarism-detection","name":"pangram-plagiarism-detection","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"phi-4-mini-instruct":{"id":"phi-4-mini-instruct","name":"phi-4-mini-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"phi-4-multimodal-instruct":{"id":"phi-4-multimodal-instruct","name":"phi-4-multimodal-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-m.1":{"id":"poolside/laguna-m.1","name":"poolside/laguna-m.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-xs.2":{"id":"poolside/laguna-xs.2","name":"poolside/laguna-xs.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qvq-max":{"id":"qvq-max","name":"qvq-max","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-3.6-plus":{"id":"qwen-3.6-plus","name":"qwen-3.6-plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-long":{"id":"qwen-long","name":"qwen-long","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-max":{"id":"qwen-max","name":"qwen-max","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-plus":{"id":"qwen-plus","name":"qwen-plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-turbo":{"id":"qwen-turbo","name":"qwen-turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"qwen/qwen-2.5-72b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen2.5-Coder-32B-Instruct":{"id":"Qwen/Qwen2.5-Coder-32B-Instruct","name":"Qwen/Qwen2.5-Coder-32B-Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"qwen/qwen3-14b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"qwen/qwen3-235b-a22b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B":{"id":"Qwen/Qwen3-235B-A22B","name":"Qwen/Qwen3-235B-A22B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"qwen/qwen3-235b-a22b-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen/Qwen3-235B-A22B-Instruct-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE","name":"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"qwen/qwen3-235b-a22b-thinking-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen/Qwen3-235B-A22B-Thinking-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"qwen/qwen3-30b-a3b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3-32B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen/Qwen3-8B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"qwen/qwen3-coder","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"qwen/qwen3-coder-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"qwen/qwen3-coder-next","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-max-preview":{"id":"qwen/qwen3-max-preview","name":"qwen/qwen3-max-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next-80B-A3B-Thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen/Qwen3-VL-235B-A22B-Instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-vl-plus":{"id":"qwen/qwen3-vl-plus","name":"qwen/qwen3-vl-plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-397b-a17b-thinking":{"id":"qwen/qwen3.5-397b-a17b-thinking","name":"qwen/qwen3.5-397b-a17b-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"qwen/qwen3.5-9b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1020000,"maxTokens":1020000},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-plus-thinking":{"id":"qwen/qwen3.5-plus-thinking","name":"qwen/qwen3.5-plus-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":81920,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"qwen/qwen3.6-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"qwen/qwen3.6-max-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6-Plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwq-32b-preview":{"id":"qwen/qwq-32b-preview","name":"qwen/qwq-32b-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen2.5-32B-EVA-v0.2":{"id":"Qwen2.5-32B-EVA-v0.2","name":"Qwen2.5-32B-EVA-v0.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen25-vl-72b-instruct":{"id":"qwen25-vl-72b-instruct","name":"qwen25-vl-72b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"qwen3-30b-a3b-instruct-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"qwen3-coder-30b-a3b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen3-vl-235b-a22b-instruct-original":{"id":"qwen3-vl-235b-a22b-instruct-original","name":"qwen3-vl-235b-a22b-instruct-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-vl-235b-a22b-thinking":{"id":"qwen3-vl-235b-a22b-thinking","name":"qwen3-vl-235b-a22b-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"qwen3.5-122b-a10b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"qwen3.5-27b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Anko":{"id":"Qwen3.5-27B-Anko","name":"Qwen3.5-27B-Anko","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-Derestricted":{"id":"Qwen3.5-27B-BlueStar-Derestricted","name":"Qwen3.5-27B-BlueStar-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-Derestricted-Lite":{"id":"Qwen3.5-27B-BlueStar-Derestricted-Lite","name":"Qwen3.5-27B-BlueStar-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v2-Derestricted":{"id":"Qwen3.5-27B-BlueStar-v2-Derestricted","name":"Qwen3.5-27B-BlueStar-v2-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v2-Derestricted-Lite":{"id":"Qwen3.5-27B-BlueStar-v2-Derestricted-Lite","name":"Qwen3.5-27B-BlueStar-v2-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v3-Derestricted":{"id":"Qwen3.5-27B-BlueStar-v3-Derestricted","name":"Qwen3.5-27B-BlueStar-v3-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v3-Derestricted-Lite":{"id":"Qwen3.5-27B-BlueStar-v3-Derestricted-Lite","name":"Qwen3.5-27B-BlueStar-v3-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Derestricted":{"id":"Qwen3.5-27B-Derestricted","name":"Qwen3.5-27B-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-earica-Derestricted":{"id":"Qwen3.5-27B-earica-Derestricted","name":"Qwen3.5-27B-earica-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-earica-Derestricted-Lite":{"id":"Qwen3.5-27B-earica-Derestricted-Lite","name":"Qwen3.5-27B-earica-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Infracelestial":{"id":"Qwen3.5-27B-Infracelestial","name":"Qwen3.5-27B-Infracelestial","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-DPO-V2-Derestricted":{"id":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted","name":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-DPO-V2-Derestricted-Lite":{"id":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted-Lite","name":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-V2-Derestricted":{"id":"Qwen3.5-27B-Marvin-V2-Derestricted","name":"Qwen3.5-27B-Marvin-V2-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-V2-Derestricted-Lite":{"id":"Qwen3.5-27B-Marvin-V2-Derestricted-Lite","name":"Qwen3.5-27B-Marvin-V2-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Musica-v1":{"id":"Qwen3.5-27B-Musica-v1","name":"Qwen3.5-27B-Musica-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-NaNovel-Derestricted":{"id":"Qwen3.5-27B-NaNovel-Derestricted","name":"Qwen3.5-27B-NaNovel-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-NaNovel-Derestricted-Lite":{"id":"Qwen3.5-27B-NaNovel-Derestricted-Lite","name":"Qwen3.5-27B-NaNovel-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted":{"id":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted","name":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted-Lite":{"id":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted-Lite","name":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Queen-Derestricted":{"id":"Qwen3.5-27B-Queen-Derestricted","name":"Qwen3.5-27B-Queen-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Queen-Derestricted-Lite":{"id":"Qwen3.5-27B-Queen-Derestricted-Lite","name":"Qwen3.5-27B-Queen-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-RpRMax-v1":{"id":"Qwen3.5-27B-RpRMax-v1","name":"Qwen3.5-27B-RpRMax-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Vivid-Durian":{"id":"Qwen3.5-27B-Vivid-Durian","name":"Qwen3.5-27B-Vivid-Durian","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-Derestricted":{"id":"Qwen3.5-27B-Writer-Derestricted","name":"Qwen3.5-27B-Writer-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-Derestricted-Lite":{"id":"Qwen3.5-27B-Writer-Derestricted-Lite","name":"Qwen3.5-27B-Writer-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-V2-Derestricted":{"id":"Qwen3.5-27B-Writer-V2-Derestricted","name":"Qwen3.5-27B-Writer-V2-Derestricted","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-V2-Derestricted-Lite":{"id":"Qwen3.5-27B-Writer-V2-Derestricted-Lite","name":"Qwen3.5-27B-Writer-V2-Derestricted-Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"qwen3.5-35b-a3b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"qwen3.5-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-omni-flash":{"id":"qwen3.5-omni-flash","name":"qwen3.5-omni-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-omni-plus":{"id":"qwen3.5-omni-plus","name":"qwen3.5-omni-plus","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"qwen3.6-max-preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwq-32b":{"id":"qwq-32b","name":"qwq-32b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"QwQ-32B-ArliAI-RpR-v1":{"id":"QwQ-32B-ArliAI-RpR-v1","name":"QwQ-32B-ArliAI-RpR-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"raifle/sorcererlm-8x22b":{"id":"raifle/sorcererlm-8x22b","name":"raifle/sorcererlm-8x22b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{"id":"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0","name":"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ReadyArt/The-Omega-Abomination-L-70B-v1.0":{"id":"ReadyArt/The-Omega-Abomination-L-70B-v1.0","name":"ReadyArt/The-Omega-Abomination-L-70B-v1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Salesforce/Llama-xLAM-2-70b-fc-r":{"id":"Salesforce/Llama-xLAM-2-70b-fc-r","name":"Salesforce/Llama-xLAM-2-70b-fc-r","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3-8B-Stheno-v3.2":{"id":"Sao10K/L3-8B-Stheno-v3.2","name":"Sao10K/L3-8B-Stheno-v3.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3.1-70B-Euryale-v2.2":{"id":"Sao10K/L3.1-70B-Euryale-v2.2","name":"Sao10K/L3.1-70B-Euryale-v2.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3.1-70B-Hanami-x1":{"id":"Sao10K/L3.1-70B-Hanami-x1","name":"Sao10K/L3.1-70B-Hanami-x1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3.3-70B-Euryale-v2.3":{"id":"Sao10K/L3.3-70B-Euryale-v2.3","name":"Sao10K/L3.3-70B-Euryale-v2.3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sapiens-ai/agnes-1.5-flash":{"id":"sapiens-ai/agnes-1.5-flash","name":"sapiens-ai/agnes-1.5-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sapiens-ai/agnes-1.5-lite":{"id":"sapiens-ai/agnes-1.5-lite","name":"Agnes 1.5 Lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"sapiens-ai/agnes-1.5-pro":{"id":"sapiens-ai/agnes-1.5-pro","name":"Agnes 1.5 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"sarvan-medium":{"id":"sarvan-medium","name":"sarvan-medium","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"shisa-ai/shisa-v2-llama3.3-70b":{"id":"shisa-ai/shisa-v2-llama3.3-70b","name":"shisa-ai/shisa-v2-llama3.3-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"shisa-ai/shisa-v2.1-llama3.3-70b":{"id":"shisa-ai/shisa-v2.1-llama3.3-70b","name":"shisa-ai/shisa-v2.1-llama3.3-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar":{"id":"sonar","name":"sonar","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar-deep-research":{"id":"sonar-deep-research","name":"sonar-deep-research","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar-pro":{"id":"sonar-pro","name":"sonar-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"sonar-reasoning-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"soob3123/amoral-gemma3-27B-v2":{"id":"soob3123/amoral-gemma3-27B-v2","name":"soob3123/amoral-gemma3-27B-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"soob3123/GrayLine-Qwen3-8B":{"id":"soob3123/GrayLine-Qwen3-8B","name":"soob3123/GrayLine-Qwen3-8B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"soob3123/Veiled-Calla-12B":{"id":"soob3123/Veiled-Calla-12B","name":"soob3123/Veiled-Calla-12B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-Cu-Mai-R1-70b":{"id":"Steelskull/L3.3-Cu-Mai-R1-70b","name":"Steelskull/L3.3-Cu-Mai-R1-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-Electra-R1-70b":{"id":"Steelskull/L3.3-Electra-R1-70b","name":"Steelskull/L3.3-Electra-R1-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-MS-Evalebis-70b":{"id":"Steelskull/L3.3-MS-Evalebis-70b","name":"Steelskull/L3.3-MS-Evalebis-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-MS-Evayale-70B":{"id":"Steelskull/L3.3-MS-Evayale-70B","name":"Steelskull/L3.3-MS-Evayale-70B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-MS-Nevoria-70b":{"id":"Steelskull/L3.3-MS-Nevoria-70b","name":"Steelskull/L3.3-MS-Nevoria-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-Nevoria-R1-70b":{"id":"Steelskull/L3.3-Nevoria-R1-70b","name":"Steelskull/L3.3-Nevoria-R1-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-2-16k-exp":{"id":"step-2-16k-exp","name":"step-2-16k-exp","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-2-mini":{"id":"step-2-mini","name":"step-2-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-3":{"id":"step-3","name":"step-3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-r1-v-mini":{"id":"step-r1-v-mini","name":"step-r1-v-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun-ai/step-3.5-flash-2603":{"id":"stepfun-ai/step-3.5-flash-2603","name":"stepfun-ai/step-3.5-flash-2603","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stepfun/step-3":{"id":"stepfun/step-3","name":"Step-3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000},"stepfun/step-3.5-flash-free":{"id":"stepfun/step-3.5-flash-free","name":"Step 3.5 Flash (Free)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"study_gpt-chatgpt-4o-latest":{"id":"study_gpt-chatgpt-4o-latest","name":"study_gpt-chatgpt-4o-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-r1-0528":{"id":"TEE/deepseek-r1-0528","name":"TEE/deepseek-r1-0528","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-v3.1":{"id":"TEE/deepseek-v3.1","name":"TEE/deepseek-v3.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-v3.2":{"id":"TEE/deepseek-v3.2","name":"TEE/deepseek-v3.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-v4-pro":{"id":"TEE/deepseek-v4-pro","name":"TEE/deepseek-v4-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gemma-3-27b-it":{"id":"TEE/gemma-3-27b-it","name":"TEE/gemma-3-27b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gemma4-31b":{"id":"TEE/gemma4-31b","name":"TEE/gemma4-31b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-4.6":{"id":"TEE/glm-4.6","name":"TEE/glm-4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-4.7":{"id":"TEE/glm-4.7","name":"TEE/glm-4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-4.7-flash":{"id":"TEE/glm-4.7-flash","name":"TEE/glm-4.7-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5":{"id":"TEE/glm-5","name":"TEE/glm-5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5-1":{"id":"TEE/glm-5-1","name":"TEE/glm-5-1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5-1-thinking":{"id":"TEE/glm-5-1-thinking","name":"TEE/glm-5-1-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5.1":{"id":"TEE/glm-5.1","name":"TEE/glm-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5.1-thinking":{"id":"TEE/glm-5.1-thinking","name":"TEE/glm-5.1-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gpt-oss-120b":{"id":"TEE/gpt-oss-120b","name":"TEE/gpt-oss-120b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gpt-oss-20b":{"id":"TEE/gpt-oss-20b","name":"TEE/gpt-oss-20b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2-thinking":{"id":"TEE/kimi-k2-thinking","name":"TEE/kimi-k2-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2.5":{"id":"TEE/kimi-k2.5","name":"TEE/kimi-k2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2.5-thinking":{"id":"TEE/kimi-k2.5-thinking","name":"TEE/kimi-k2.5-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2.6":{"id":"TEE/kimi-k2.6","name":"TEE/kimi-k2.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/llama3-3-70b":{"id":"TEE/llama3-3-70b","name":"TEE/llama3-3-70b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/mimo-v2-flash":{"id":"TEE/mimo-v2-flash","name":"TEE/mimo-v2-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/minimax-m2.1":{"id":"TEE/minimax-m2.1","name":"TEE/minimax-m2.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/minimax-m2.5":{"id":"TEE/minimax-m2.5","name":"TEE/minimax-m2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen2.5-vl-72b-instruct":{"id":"TEE/qwen2.5-vl-72b-instruct","name":"TEE/qwen2.5-vl-72b-instruct","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3-30b-a3b-instruct-2507":{"id":"TEE/qwen3-30b-a3b-instruct-2507","name":"TEE/qwen3-30b-a3b-instruct-2507","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3-coder":{"id":"TEE/qwen3-coder","name":"TEE/qwen3-coder","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3-coder-next":{"id":"TEE/qwen3-coder-next","name":"TEE/qwen3-coder-next","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3.5-27b":{"id":"TEE/qwen3.5-27b","name":"TEE/qwen3.5-27b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3.5-397b-a17b":{"id":"TEE/qwen3.5-397b-a17b","name":"TEE/qwen3.5-397b-a17b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/hunyuan-2.0-thinking":{"id":"tencent/hunyuan-2.0-thinking","name":"tencent/hunyuan-2.0-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/Hunyuan-MT-7B":{"id":"tencent/Hunyuan-MT-7B","name":"tencent/Hunyuan-MT-7B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"TheDrummer/Anubis-70B-v1":{"id":"TheDrummer/Anubis-70B-v1","name":"TheDrummer/Anubis-70B-v1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Anubis-70B-v1.1":{"id":"TheDrummer/Anubis-70B-v1.1","name":"TheDrummer/Anubis-70B-v1.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v2":{"id":"TheDrummer/Cydonia-24B-v2","name":"TheDrummer/Cydonia-24B-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v4":{"id":"TheDrummer/Cydonia-24B-v4","name":"TheDrummer/Cydonia-24B-v4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v4.1":{"id":"TheDrummer/Cydonia-24B-v4.1","name":"TheDrummer/Cydonia-24B-v4.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v4.3":{"id":"TheDrummer/Cydonia-24B-v4.3","name":"TheDrummer/Cydonia-24B-v4.3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Magidonia-24B-v4.3":{"id":"TheDrummer/Magidonia-24B-v4.3","name":"TheDrummer/Magidonia-24B-v4.3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Rocinante-12B-v1.1":{"id":"TheDrummer/Rocinante-12B-v1.1","name":"TheDrummer/Rocinante-12B-v1.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Skyfall-31B-v4.2":{"id":"TheDrummer/Skyfall-31B-v4.2","name":"TheDrummer/Skyfall-31B-v4.2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"thedrummer/skyfall-36b-v2","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/UnslopNemo-12B-v4.1":{"id":"TheDrummer/UnslopNemo-12B-v4.1","name":"TheDrummer/UnslopNemo-12B-v4.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-4-32B-0414":{"id":"THUDM/GLM-4-32B-0414","name":"THUDM/GLM-4-32B-0414","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-4-9B-0414":{"id":"THUDM/GLM-4-9B-0414","name":"THUDM/GLM-4-9B-0414","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-Z1-32B-0414":{"id":"THUDM/GLM-Z1-32B-0414","name":"THUDM/GLM-Z1-32B-0414","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-Z1-9B-0414":{"id":"THUDM/GLM-Z1-9B-0414","name":"THUDM/GLM-Z1-9B-0414","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-Z1-Rumination-32B-0414":{"id":"THUDM/GLM-Z1-Rumination-32B-0414","name":"THUDM/GLM-Z1-Rumination-32B-0414","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tngtech/DeepSeek-TNG-R1T2-Chimera":{"id":"tngtech/DeepSeek-TNG-R1T2-Chimera","name":"tngtech/DeepSeek-TNG-R1T2-Chimera","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tngtech/tng-r1t-chimera":{"id":"tngtech/tng-r1t-chimera","name":"tngtech/tng-r1t-chimera","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Tongyi-Zhiwen/QwenLong-L1-32B":{"id":"Tongyi-Zhiwen/QwenLong-L1-32B","name":"Tongyi-Zhiwen/QwenLong-L1-32B","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"undi95/remm-slerp-l2-13b","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"universal-summarizer":{"id":"universal-summarizer","name":"universal-summarizer","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-12b-it":{"id":"unsloth/gemma-3-12b-it","name":"unsloth/gemma-3-12b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-1b-it":{"id":"unsloth/gemma-3-1b-it","name":"unsloth/gemma-3-1b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-27b-it":{"id":"unsloth/gemma-3-27b-it","name":"unsloth/gemma-3-27b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-4b-it":{"id":"unsloth/gemma-3-4b-it","name":"unsloth/gemma-3-4b-it","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"upstage/solar-pro-3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"v0-1.0-md":{"id":"v0-1.0-md","name":"v0-1.0-md","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"v0-1.5-lg":{"id":"v0-1.5-lg","name":"v0-1.5-lg","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"v0-1.5-md":{"id":"v0-1.5-md","name":"v0-1.5-md","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"venice-uncensored":{"id":"venice-uncensored","name":"venice-uncensored","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"venice-uncensored:web":{"id":"venice-uncensored:web","name":"venice-uncensored:web","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"volcengine/doubao-seed-1-6-vision":{"id":"volcengine/doubao-seed-1-6-vision","name":"volcengine/doubao-seed-1-6-vision","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"volcengine/doubao-seed-1.8":{"id":"volcengine/doubao-seed-1.8","name":"Doubao-Seed-1.8","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-2.0-code":{"id":"volcengine/doubao-seed-2.0-code","name":"Doubao Seed 2.0 Code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000},"volcengine/doubao-seed-2.0-lite":{"id":"volcengine/doubao-seed-2.0-lite","name":"Doubao-Seed-2.0-lite","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-2.0-mini":{"id":"volcengine/doubao-seed-2.0-mini","name":"Doubao-Seed-2.0-mini","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-2.0-pro":{"id":"volcengine/doubao-seed-2.0-pro","name":"Doubao-Seed-2.0-pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-code":{"id":"volcengine/doubao-seed-code","name":"Doubao-Seed-Code","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"VongolaChouko/Starcannon-Unleashed-12B-v1.0":{"id":"VongolaChouko/Starcannon-Unleashed-12B-v1.0","name":"VongolaChouko/Starcannon-Unleashed-12B-v1.0","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4-07-09":{"id":"x-ai/grok-4-07-09","name":"x-ai/grok-4-07-09","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"Grok 4 Fast","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4-fast-non-reasoning":{"id":"x-ai/grok-4-fast-non-reasoning","name":"x-ai/grok-4-fast-non-reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.1-fast-non-reasoning":{"id":"x-ai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast Non Reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000},"x-ai/grok-4.1-fast-reasoning":{"id":"x-ai/grok-4.1-fast-reasoning","name":"x-ai/grok-4.1-fast-reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.2-fast":{"id":"x-ai/grok-4.2-fast","name":"Grok 4.2 Fast","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.2-fast-non-reasoning":{"id":"x-ai/grok-4.2-fast-non-reasoning","name":"Grok 4.2 Fast Non Reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"x-ai/grok-4.20","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-beta-non-reasoning":{"id":"x-ai/grok-4.20-beta-non-reasoning","name":"x-ai/grok-4.20-beta-non-reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-beta-reasoning":{"id":"x-ai/grok-4.20-beta-reasoning","name":"x-ai/grok-4.20-beta-reasoning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"x-ai/grok-4.20-multi-agent","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-multi-agent-beta":{"id":"x-ai/grok-4.20-multi-agent-beta","name":"x-ai/grok-4.20-multi-agent-beta","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-latest":{"id":"x-ai/grok-latest","name":"x-ai/grok-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-flash-free":{"id":"xiaomi/mimo-v2-flash-free","name":"xiaomi/mimo-v2-flash-free","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash-original":{"id":"xiaomi/mimo-v2-flash-original","name":"xiaomi/mimo-v2-flash-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash-thinking":{"id":"xiaomi/mimo-v2-flash-thinking","name":"xiaomi/mimo-v2-flash-thinking","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash-thinking-original":{"id":"xiaomi/mimo-v2-flash-thinking-original","name":"xiaomi/mimo-v2-flash-thinking-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":265000,"maxTokens":265000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"yi-large":{"id":"yi-large","name":"yi-large","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"yi-lightning":{"id":"yi-lightning","name":"yi-lightning","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"yi-medium-200k":{"id":"yi-medium-200k","name":"yi-medium-200k","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM 4.5 Air","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"z-ai/glm-4.5v","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6v-flash":{"id":"z-ai/glm-4.6v-flash","name":"GLM 4.6V FlashX","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6v-flash-free":{"id":"z-ai/glm-4.6v-flash-free","name":"GLM 4.6V Flash (Free)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7-flash-free":{"id":"z-ai/glm-4.7-flash-free","name":"GLM 4.7 Flash (Free)","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7-flashx":{"id":"z-ai/glm-4.7-flashx","name":"GLM 4.7 FlashX","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-glm-4.7":{"id":"zai-glm-4.7","name":"Z.AI GLM-4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.5":{"id":"zai-org/glm-4.5","name":"zai-org/glm-4.5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"zai-org/GLM-4.5-Air","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.6-original":{"id":"zai-org/glm-4.6-original","name":"zai-org/glm-4.6-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/GLM-4.6-turbo":{"id":"zai-org/GLM-4.6-turbo","name":"zai-org/GLM-4.6-turbo","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.6v":{"id":"zai-org/glm-4.6v","name":"zai-org/glm-4.6v","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.6v-flash-original":{"id":"zai-org/glm-4.6v-flash-original","name":"zai-org/glm-4.6v-flash-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.6v-original":{"id":"zai-org/glm-4.6v-original","name":"zai-org/glm-4.6v-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.7":{"id":"zai-org/glm-4.7","name":"zai-org/glm-4.7","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.7-flash":{"id":"zai-org/glm-4.7-flash","name":"zai-org/glm-4.7-flash","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.7-flash-original":{"id":"zai-org/glm-4.7-flash-original","name":"zai-org/glm-4.7-flash-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.7-original":{"id":"zai-org/glm-4.7-original","name":"zai-org/glm-4.7-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-5":{"id":"zai-org/glm-5","name":"zai-org/glm-5","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-5-original":{"id":"zai-org/glm-5-original","name":"zai-org/glm-5-original","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-5.1":{"id":"zai-org/glm-5.1","name":"zai-org/glm-5.1","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-latest":{"id":"zai-org/glm-latest","name":"zai-org/glm-latest","api":"openai-completions","provider":"litellm","baseUrl":"http://localhost:4000/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888}} diff --git a/packages/ai/src/model-shards/mara.json b/packages/ai/src/model-shards/mara.json new file mode 100644 index 0000000000..1a191860a3 --- /dev/null +++ b/packages/ai/src/model-shards/mara.json @@ -0,0 +1 @@ +{"DeepSeek-V3.1":{"id":"DeepSeek-V3.1","name":"DeepSeek V3.1","api":"openai-completions","provider":"mara","baseUrl":"https://api.cloud.mara.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":1.7,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax M2.5","api":"openai-completions","provider":"mara","baseUrl":"https://api.cloud.mara.com/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":16384},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"mara","baseUrl":"https://api.cloud.mara.com/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":16384},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"mara","baseUrl":"https://api.cloud.mara.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.75,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/minimax-cn.json b/packages/ai/src/model-shards/minimax-cn.json new file mode 100644 index 0000000000..9dc0ad7b1b --- /dev/null +++ b/packages/ai/src/model-shards/minimax-cn.json @@ -0,0 +1 @@ +{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5-lightning":{"id":"MiniMax-M2.5-lightning","name":"MiniMax M2.5 Lightning (CN)","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.12,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/minimax-code-cn.json b/packages/ai/src/model-shards/minimax-code-cn.json new file mode 100644 index 0000000000..8d75bc3814 --- /dev/null +++ b/packages/ai/src/model-shards/minimax-code-cn.json @@ -0,0 +1 @@ +{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.1-lightning":{"id":"MiniMax-M2.1-lightning","name":"MiniMax M2.1 Lightning (Coding Plan CN)","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content","supportsStore":false},"contextWindow":1000000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.5-lightning":{"id":"MiniMax-M2.5-lightning","name":"MiniMax M2.5 Lightning (Coding Plan CN)","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content","supportsStore":false},"contextWindow":204800,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","api":"openai-completions","provider":"minimax-code-cn","baseUrl":"https://api.minimaxi.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/minimax-code.json b/packages/ai/src/model-shards/minimax-code.json new file mode 100644 index 0000000000..ef8c84abf5 --- /dev/null +++ b/packages/ai/src/model-shards/minimax-code.json @@ -0,0 +1 @@ +{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.1-lightning":{"id":"MiniMax-M2.1-lightning","name":"MiniMax M2.1 Lightning (Coding Plan)","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content","supportsStore":false},"contextWindow":1000000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.5-lightning":{"id":"MiniMax-M2.5-lightning","name":"MiniMax M2.5 Lightning (Coding Plan)","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content","supportsStore":false},"contextWindow":204800,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax-v3":{"id":"minimax-v3","name":"MiniMax-V3","api":"openai-completions","provider":"minimax-code","baseUrl":"https://api.minimax.io/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/minimax.json b/packages/ai/src/model-shards/minimax.json new file mode 100644 index 0000000000..25967d5db7 --- /dev/null +++ b/packages/ai/src/model-shards/minimax.json @@ -0,0 +1 @@ +{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.5-lightning":{"id":"MiniMax-M2.5-lightning","name":"MiniMax M2.5 Lightning","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.12,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","api":"anthropic-messages","provider":"minimax","baseUrl":"https://api.minimax.io/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/mistral.json b/packages/ai/src/model-shards/mistral.json new file mode 100644 index 0000000000..b896e76fe0 --- /dev/null +++ b/packages/ai/src/model-shards/mistral.json @@ -0,0 +1 @@ +{"codestral-latest":{"id":"codestral-latest","name":"Codestral (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.9,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":4096},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-latest":{"id":"devstral-latest","name":"Devstral 2","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-medium-2507":{"id":"devstral-medium-2507","name":"Devstral Medium","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"devstral-medium-latest":{"id":"devstral-medium-latest","name":"Devstral 2 (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-small-2505":{"id":"devstral-small-2505","name":"Devstral Small 2505","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"devstral-small-2507":{"id":"devstral-small-2507","name":"Devstral Small","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"labs-devstral-small-2512":{"id":"labs-devstral-small-2512","name":"Devstral Small 2","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"magistral-medium-latest":{"id":"magistral-medium-latest","name":"Magistral Medium (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":true,"input":["text"],"cost":{"input":2,"output":5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"magistral-small":{"id":"magistral-small","name":"Magistral Small","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"ministral-3b-latest":{"id":"ministral-3b-latest","name":"Ministral 3B (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.04,"output":0.04,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"ministral-8b-latest":{"id":"ministral-8b-latest","name":"Ministral 8B (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.1,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral Large 2.1","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"mistral-medium-2508":{"id":"mistral-medium-2508","name":"Mistral Medium 3.1","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-2604":{"id":"mistral-medium-2604","name":"Mistral Medium 3.5","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistral-small-latest":{"id":"mistral-small-latest","name":"Mistral Small (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"open-mistral-7b":{"id":"open-mistral-7b","name":"Mistral 7B","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":0.25,"cacheRead":0,"cacheWrite":0},"contextWindow":8000,"maxTokens":8000},"open-mistral-nemo":{"id":"open-mistral-nemo","name":"Open Mistral Nemo","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"open-mixtral-8x22b":{"id":"open-mixtral-8x22b","name":"Mixtral 8x22B","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":64000,"maxTokens":64000},"open-mixtral-8x7b":{"id":"open-mixtral-8x7b","name":"Mixtral 8x7B","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.7,"output":0.7,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":32000},"pixtral-12b":{"id":"pixtral-12b","name":"Pixtral 12B","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"pixtral-large-latest":{"id":"pixtral-large-latest","name":"Pixtral Large (latest)","api":"openai-completions","provider":"mistral","baseUrl":"https://api.mistral.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000}} diff --git a/packages/ai/src/model-shards/moonshot.json b/packages/ai/src/model-shards/moonshot.json new file mode 100644 index 0000000000..bc540ad278 --- /dev/null +++ b/packages/ai/src/model-shards/moonshot.json @@ -0,0 +1 @@ +{"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"moonshot","baseUrl":"https://api.moonshot.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/nanogpt.json b/packages/ai/src/model-shards/nanogpt.json new file mode 100644 index 0000000000..75adb41d03 --- /dev/null +++ b/packages/ai/src/model-shards/nanogpt.json @@ -0,0 +1 @@ +{"abacusai/Dracarys-72B-Instruct":{"id":"abacusai/Dracarys-72B-Instruct","name":"abacusai/Dracarys-72B-Instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-1.0":{"id":"aion-labs/aion-1.0","name":"aion-labs/aion-1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-1.0-mini":{"id":"aion-labs/aion-1.0-mini","name":"aion-labs/aion-1.0-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"aion-labs/aion-2.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-2.5":{"id":"aion-labs/aion-2.5","name":"aion-labs/aion-2.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"aion-labs/aion-rp-llama-3.1-8b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B":{"id":"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B","name":"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"alibaba/qwen3.6-27b":{"id":"alibaba/qwen3.6-27b","name":"alibaba/qwen3.6-27b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"alibaba/qwen3.6-flash":{"id":"alibaba/qwen3.6-flash","name":"alibaba/qwen3.6-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/molmo-2-8b":{"id":"allenai/molmo-2-8b","name":"allenai/molmo-2-8b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3-32b-think":{"id":"allenai/olmo-3-32b-think","name":"allenai/olmo-3-32b-think","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3.1-32b-instruct":{"id":"allenai/olmo-3.1-32b-instruct","name":"AllenAI: Olmo 3.1 32B Instruct","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"allenai/olmo-3.1-32b-think":{"id":"allenai/olmo-3.1-32b-think","name":"allenai/olmo-3.1-32b-think","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon: Nova 2 Lite","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65535,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.06,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":300000,"maxTokens":5120,"compat":{"supportsToolChoice":false}},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.035,"output":0.14,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsToolChoice":false}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.7999999999999999,"output":3.1999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":300000,"maxTokens":5120,"compat":{"supportsToolChoice":false}},"anthracite-org/magnum-v2-72b":{"id":"anthracite-org/magnum-v2-72b","name":"anthracite-org/magnum-v2-72b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"anthracite-org/magnum-v4-72b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-haiku-latest":{"id":"anthropic/claude-haiku-latest","name":"anthropic/anthropic-haiku-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Anthropic Opus 4.6","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Anthropic Opus 4.7","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-latest":{"id":"anthropic/claude-opus-latest","name":"anthropic/anthropic-opus-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-latest":{"id":"anthropic/claude-sonnet-latest","name":"anthropic/anthropic-sonnet-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large":{"id":"arcee-ai/trinity-large","name":"arcee-ai/trinity-large","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"arcee-ai/trinity-large-preview":{"id":"arcee-ai/trinity-large-preview","name":"Trinity Large Preview","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":1,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":131000},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Arcee AI: Trinity Large Thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.8999999999999999,"cacheRead":0.06,"cacheWrite":0},"contextWindow":262144,"maxTokens":80000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"arcee-ai/trinity-mini":{"id":"arcee-ai/trinity-mini","name":"Arcee AI: Trinity Mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.045,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"asi1-mini":{"id":"asi1-mini","name":"asi1-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model":{"id":"auto-model","name":"auto-model","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model-basic":{"id":"auto-model-basic","name":"auto-model-basic","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model-premium":{"id":"auto-model-premium","name":"auto-model-premium","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"auto-model-standard":{"id":"auto-model-standard","name":"auto-model-standard","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-gpt-4-turbo":{"id":"azure-gpt-4-turbo","name":"azure-gpt-4-turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-gpt-4o":{"id":"azure-gpt-4o","name":"azure-gpt-4o","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-gpt-4o-mini":{"id":"azure-gpt-4o-mini","name":"azure-gpt-4o-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-o1":{"id":"azure-o1","name":"azure-o1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"azure-o3-mini":{"id":"azure-o3-mini","name":"azure-o3-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Baichuan-M2":{"id":"Baichuan-M2","name":"Baichuan-M2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Baichuan4-Air":{"id":"Baichuan4-Air","name":"Baichuan4-Air","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Baichuan4-Turbo":{"id":"Baichuan4-Turbo","name":"Baichuan4-Turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-300b-a47b":{"id":"baidu/ernie-4.5-300b-a47b","name":"baidu/ernie-4.5-300b-a47b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"baidu/ernie-4.5-vl-28b-a3b":{"id":"baidu/ernie-4.5-vl-28b-a3b","name":"Baidu: ERNIE 4.5 VL 28B A3B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.56,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"baseten/Kimi-K2-Instruct-FP4":{"id":"baseten/Kimi-K2-Instruct-FP4","name":"baseten/Kimi-K2-Instruct-FP4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"brave":{"id":"brave","name":"brave","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"brave-pro":{"id":"brave-pro","name":"brave-pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"brave-research":{"id":"brave-research","name":"brave-research","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"ByteDance Seed: Seed-2.0-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"chutesai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"chutesai/Mistral-Small-3.2-24B-Instruct-2506","name":"chutesai/Mistral-Small-3.2-24B-Instruct-2506","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-5-haiku-20241022":{"id":"claude-3-5-haiku-20241022","name":"anthropic-3-5-haiku-20241022","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"claude-3-5-sonnet-20240620":{"id":"claude-3-5-sonnet-20240620","name":"Anthropic Sonnet 3.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"claude-3-5-sonnet-20241022":{"id":"claude-3-5-sonnet-20241022","name":"Anthropic Sonnet 3.5 v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"claude-3-7-sonnet-20250219":{"id":"claude-3-7-sonnet-20250219","name":"anthropic-3-7-sonnet-20250219","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4096,"maxTokens":4096},"claude-3-7-sonnet-reasoner":{"id":"claude-3-7-sonnet-reasoner","name":"anthropic-3-7-sonnet-reasoner","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking":{"id":"claude-3-7-sonnet-thinking","name":"anthropic-3-7-sonnet-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:1024":{"id":"claude-3-7-sonnet-thinking:1024","name":"anthropic-3-7-sonnet-thinking:1024","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:128000":{"id":"claude-3-7-sonnet-thinking:128000","name":"anthropic-3-7-sonnet-thinking:128000","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:32768":{"id":"claude-3-7-sonnet-thinking:32768","name":"anthropic-3-7-sonnet-thinking:32768","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-3-7-sonnet-thinking:8192":{"id":"claude-3-7-sonnet-thinking:8192","name":"anthropic-3-7-sonnet-thinking:8192","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Anthropic Haiku 4.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-haiku-4-5-20251001-thinking":{"id":"claude-haiku-4-5-20251001-thinking","name":"anthropic-haiku-4-5-20251001-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Anthropic Opus 4.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1-thinking":{"id":"claude-opus-4-1-thinking","name":"anthropic-opus-4-1-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:1024":{"id":"claude-opus-4-1-thinking:1024","name":"anthropic-opus-4-1-thinking:1024","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:32000":{"id":"claude-opus-4-1-thinking:32000","name":"anthropic-opus-4-1-thinking:32000","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:32768":{"id":"claude-opus-4-1-thinking:32768","name":"anthropic-opus-4-1-thinking:32768","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-1-thinking:8192":{"id":"claude-opus-4-1-thinking:8192","name":"anthropic-opus-4-1-thinking:8192","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"Anthropic Opus 4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Anthropic Opus 4.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-thinking":{"id":"claude-opus-4-thinking","name":"anthropic-opus-4-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:1024":{"id":"claude-opus-4-thinking:1024","name":"anthropic-opus-4-thinking:1024","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:32000":{"id":"claude-opus-4-thinking:32000","name":"anthropic-opus-4-thinking:32000","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:32768":{"id":"claude-opus-4-thinking:32768","name":"anthropic-opus-4-thinking:32768","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-opus-4-thinking:8192":{"id":"claude-opus-4-thinking:8192","name":"anthropic-opus-4-thinking:8192","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"Anthropic Sonnet 4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Anthropic Sonnet 4.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5-20250929-thinking":{"id":"claude-sonnet-4-5-20250929-thinking","name":"anthropic-sonnet-4-5-20250929-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking":{"id":"claude-sonnet-4-thinking","name":"anthropic-sonnet-4-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:1024":{"id":"claude-sonnet-4-thinking:1024","name":"anthropic-sonnet-4-thinking:1024","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:32768":{"id":"claude-sonnet-4-thinking:32768","name":"anthropic-sonnet-4-thinking:32768","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:64000":{"id":"claude-sonnet-4-thinking:64000","name":"anthropic-sonnet-4-thinking:64000","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claude-sonnet-4-thinking:8192":{"id":"claude-sonnet-4-thinking:8192","name":"anthropic-sonnet-4-thinking:8192","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claw-high":{"id":"claw-high","name":"claw-high","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claw-low":{"id":"claw-low","name":"claw-low","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"claw-medium":{"id":"claw-medium","name":"claw-medium","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cognitivecomputations/dolphin-2.9.2-qwen2-72b":{"id":"cognitivecomputations/dolphin-2.9.2-qwen2-72b","name":"cognitivecomputations/dolphin-2.9.2-qwen2-72b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r":{"id":"cohere/command-r","name":"cohere/command-r","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+ (08-2024)","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"command-a-plus-05-2026":{"id":"command-a-plus-05-2026","name":"command-a-plus-05-2026","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"command-a-reasoning-08-2025":{"id":"command-a-reasoning-08-2025","name":"command-a-reasoning-08-2025","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"CrucibleLab/L3.3-70B-Loki-V2.0":{"id":"CrucibleLab/L3.3-70B-Loki-V2.0","name":"CrucibleLab/L3.3-70B-Loki-V2.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepclaude":{"id":"deepclaude","name":"deepanthropic","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepcogito/cogito-v1-preview-qwen-32B":{"id":"deepcogito/cogito-v1-preview-qwen-32B","name":"deepcogito/cogito-v1-preview-qwen-32B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepcogito/cogito-v2.1-671b":{"id":"deepcogito/cogito-v2.1-671b","name":"deepcogito/cogito-v2.1-671b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":1.25,"cacheRead":0.6,"cacheWrite":0.6},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"deepseek-ai/DeepSeek-V3.1-Terminus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/deepseek-v3.2-exp":{"id":"deepseek-ai/deepseek-v3.2-exp","name":"deepseek-ai/deepseek-v3.2-exp","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-ai/deepseek-v3.2-exp-thinking":{"id":"deepseek-ai/deepseek-v3.2-exp-thinking","name":"deepseek-ai/deepseek-v3.2-exp-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-chat":{"id":"deepseek-chat","name":"deepseek-chat","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-chat-cheaper":{"id":"deepseek-chat-cheaper","name":"deepseek-chat-cheaper","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-math-v2":{"id":"deepseek-math-v2","name":"deepseek-math-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-r1":{"id":"deepseek-r1","name":"deepseek-r1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-r1-sambanova":{"id":"deepseek-r1-sambanova","name":"deepseek-r1-sambanova","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"deepseek-reasoner","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-reasoner-cheaper":{"id":"deepseek-reasoner-cheaper","name":"deepseek-reasoner-cheaper","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek-v3-0324":{"id":"deepseek-v3-0324","name":"deepseek-v3-0324","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-latest":{"id":"deepseek/deepseek-latest","name":"deepseek/deepseek-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-prover-v2-671b":{"id":"deepseek/deepseek-prover-v2-671b","name":"deepseek/deepseek-prover-v2-671b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.26,"output":0.38,"cacheRead":0.13,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-speciale":{"id":"deepseek/deepseek-v3.2-speciale","name":"deepseek/deepseek-v3.2-speciale","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro-cheaper":{"id":"deepseek/deepseek-v4-pro-cheaper","name":"deepseek/deepseek-v4-pro-cheaper","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"dmind/dmind-1":{"id":"dmind/dmind-1","name":"dmind/dmind-1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"dmind/dmind-1-mini":{"id":"dmind/dmind-1-mini","name":"dmind/dmind-1-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{"id":"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond","name":"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-1-5-thinking-pro-250415":{"id":"doubao-1-5-thinking-pro-250415","name":"doubao-1-5-thinking-pro-250415","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-1.5-pro-256k":{"id":"doubao-1.5-pro-256k","name":"doubao-1.5-pro-256k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-1.5-pro-32k":{"id":"doubao-1.5-pro-32k","name":"doubao-1.5-pro-32k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-6-250615":{"id":"doubao-seed-1-6-250615","name":"doubao-seed-1-6-250615","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-6-flash-250615":{"id":"doubao-seed-1-6-flash-250615","name":"doubao-seed-1-6-flash-250615","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-6-thinking-250615":{"id":"doubao-seed-1-6-thinking-250615","name":"doubao-seed-1-6-thinking-250615","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-1-8-251215":{"id":"doubao-seed-1-8-251215","name":"doubao-seed-1-8-251215","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-code-preview-260215":{"id":"doubao-seed-2-0-code-preview-260215","name":"doubao-seed-2-0-code-preview-260215","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-lite-260215":{"id":"doubao-seed-2-0-lite-260215","name":"doubao-seed-2-0-lite-260215","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-mini-260215":{"id":"doubao-seed-2-0-mini-260215","name":"doubao-seed-2-0-mini-260215","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-2-0-pro-260215":{"id":"doubao-seed-2-0-pro-260215","name":"doubao-seed-2-0-pro-260215","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"doubao-seed-code-preview-latest":{"id":"doubao-seed-code-preview-latest","name":"doubao-seed-code-preview-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{"id":"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B","name":"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{"id":"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B","name":"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-4.5-8k-preview":{"id":"ernie-4.5-8k-preview","name":"ernie-4.5-8k-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-4.5-turbo-128k":{"id":"ernie-4.5-turbo-128k","name":"ernie-4.5-turbo-128k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-4.5-turbo-vl-32k":{"id":"ernie-4.5-turbo-vl-32k","name":"ernie-4.5-turbo-vl-32k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-5.0-thinking-latest":{"id":"ernie-5.0-thinking-latest","name":"ernie-5.0-thinking-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-5.0-thinking-preview":{"id":"ernie-5.0-thinking-preview","name":"ernie-5.0-thinking-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-5.1":{"id":"ernie-5.1","name":"ernie-5.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"ernie-x1-32k":{"id":"ernie-x1-32k","name":"ernie-x1-32k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1-32k-preview":{"id":"ernie-x1-32k-preview","name":"ernie-x1-32k-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1-turbo-32k":{"id":"ernie-x1-turbo-32k","name":"ernie-x1-turbo-32k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ernie-x1.1-preview":{"id":"ernie-x1.1-preview","name":"ernie-x1.1-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"essentialai/rnj-1-instruct":{"id":"essentialai/rnj-1-instruct","name":"essentialai/rnj-1-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0","name":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1","name":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2","name":"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2","name":"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"exa-answer":{"id":"exa-answer","name":"exa-answer","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"exa-research":{"id":"exa-research","name":"exa-research","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"exa-research-pro":{"id":"exa-research-pro","name":"exa-research-pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{"id":"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5","name":"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"fastgpt":{"id":"fastgpt","name":"fastgpt","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"featherless-ai/Qwerky-72B":{"id":"featherless-ai/Qwerky-72B","name":"featherless-ai/Qwerky-72B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GalrionSoftworks/MN-LooseCannon-12B-v1":{"id":"GalrionSoftworks/MN-LooseCannon-12B-v1","name":"GalrionSoftworks/MN-LooseCannon-12B-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-flash-001":{"id":"gemini-2.0-flash-001","name":"gemini-2.0-flash-001","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"Gemini 2.0 Flash-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"gemini-2.0-flash-thinking-exp-01-21":{"id":"gemini-2.0-flash-thinking-exp-01-21","name":"gemini-2.0-flash-thinking-exp-01-21","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-flash-thinking-exp-1219":{"id":"gemini-2.0-flash-thinking-exp-1219","name":"gemini-2.0-flash-thinking-exp-1219","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-pro-exp-02-05":{"id":"gemini-2.0-pro-exp-02-05","name":"gemini-2.0-pro-exp-02-05","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.0-pro-reasoner":{"id":"gemini-2.0-pro-reasoner","name":"gemini-2.0-pro-reasoner","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"Gemini 2.5 Flash Lite Preview 06-17","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"Gemini 2.5 Flash Lite Preview 09-25","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-lite-preview-09-2025-thinking":{"id":"gemini-2.5-flash-lite-preview-09-2025-thinking","name":"gemini-2.5-flash-lite-preview-09-2025-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-nothinking":{"id":"gemini-2.5-flash-nothinking","name":"gemini-2.5-flash-nothinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-flash-preview-04-17":{"id":"gemini-2.5-flash-preview-04-17","name":"Gemini 2.5 Flash Preview 04-17","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"Gemini 2.5 Flash Preview 05-20","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"Gemini 2.5 Flash Preview 09-25","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-flash-preview-09-2025-thinking":{"id":"gemini-2.5-flash-preview-09-2025-thinking","name":"gemini-2.5-flash-preview-09-2025-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"headers":{"User-Agent":"opencode/1.3.15"},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro-exp-03-25":{"id":"gemini-2.5-pro-exp-03-25","name":"gemini-2.5-pro-exp-03-25","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro-preview-03-25":{"id":"gemini-2.5-pro-preview-03-25","name":"gemini-2.5-pro-preview-03-25","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-2.5-pro-preview-05-06":{"id":"gemini-2.5-pro-preview-05-06","name":"Gemini 2.5 Pro Preview 05-06","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"Gemini 2.5 Pro Preview 06-05","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3-pro-preview-thinking":{"id":"gemini-3-pro-preview-thinking","name":"gemini-3-pro-preview-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemini-exp-1206":{"id":"gemini-exp-1206","name":"gemini-exp-1206","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-ArliAI-RPMax-v3":{"id":"Gemma-3-27B-ArliAI-RPMax-v3","name":"Gemma-3-27B-ArliAI-RPMax-v3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-Big-Tiger-v3":{"id":"Gemma-3-27B-Big-Tiger-v3","name":"Gemma-3-27B-Big-Tiger-v3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-CardProjector-v4":{"id":"Gemma-3-27B-CardProjector-v4","name":"Gemma-3-27B-CardProjector-v4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-Glitter":{"id":"Gemma-3-27B-Glitter","name":"Gemma-3-27B-Glitter","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-it":{"id":"Gemma-3-27B-it","name":"Gemma-3-27B-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-it-Abliterated":{"id":"Gemma-3-27B-it-Abliterated","name":"Gemma-3-27B-it-Abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-3-27B-Nidum-Uncensored":{"id":"Gemma-3-27B-Nidum-Uncensored","name":"Gemma-3-27B-Nidum-Uncensored","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled":{"id":"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled","name":"Gemma-4-31B-Anthropic-4.6-Opus-Reasoning-Distilled","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-Cognitive-Unshackled":{"id":"Gemma-4-31B-Cognitive-Unshackled","name":"Gemma-4-31B-Cognitive-Unshackled","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-DarkIdol":{"id":"Gemma-4-31B-DarkIdol","name":"Gemma-4-31B-DarkIdol","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemma-4-31B-Fabled":{"id":"gemma-4-31B-Fabled","name":"gemma-4-31B-Fabled","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemma-4-31B-Garnet":{"id":"gemma-4-31B-Garnet","name":"gemma-4-31B-Garnet","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-GarnetV2":{"id":"Gemma-4-31B-GarnetV2","name":"Gemma-4-31B-GarnetV2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-Gemopus":{"id":"Gemma-4-31B-Gemopus","name":"Gemma-4-31B-Gemopus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-it":{"id":"Gemma-4-31B-it","name":"Gemma-4-31B-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemma-4-31B-K1-v5":{"id":"gemma-4-31B-K1-v5","name":"gemma-4-31B-K1-v5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemma-4-31B-Larkspur-v0.5":{"id":"gemma-4-31B-Larkspur-v0.5","name":"gemma-4-31B-Larkspur-v0.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"gemma-4-31B-MeroMero":{"id":"gemma-4-31B-MeroMero","name":"gemma-4-31B-MeroMero","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-Musica-v1":{"id":"Gemma-4-31B-Musica-v1","name":"Gemma-4-31B-Musica-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gemma-4-31B-Queen":{"id":"Gemma-4-31B-Queen","name":"Gemma-4-31B-Queen","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4":{"id":"glm-4","name":"glm-4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-air":{"id":"glm-4-air","name":"glm-4-air","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-air-0111":{"id":"glm-4-air-0111","name":"glm-4-air-0111","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-airx":{"id":"glm-4-airx","name":"glm-4-airx","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-flash":{"id":"glm-4-flash","name":"glm-4-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-long":{"id":"glm-4-long","name":"glm-4-long","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-plus":{"id":"glm-4-plus","name":"glm-4-plus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4-plus-0111":{"id":"glm-4-plus-0111","name":"glm-4-plus-0111","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.1v-thinking-flash":{"id":"glm-4.1v-thinking-flash","name":"glm-4.1v-thinking-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.1v-thinking-flashx":{"id":"glm-4.1v-thinking-flashx","name":"glm-4.1v-thinking-flashx","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted":{"id":"GLM-4.5-Air-Derestricted","name":"GLM-4.5-Air-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink":{"id":"GLM-4.5-Air-Derestricted-Iceblink","name":"GLM-4.5-Air-Derestricted-Iceblink","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink-ReExtract":{"id":"GLM-4.5-Air-Derestricted-Iceblink-ReExtract","name":"GLM-4.5-Air-Derestricted-Iceblink-ReExtract","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink-v2":{"id":"GLM-4.5-Air-Derestricted-Iceblink-v2","name":"GLM-4.5-Air-Derestricted-Iceblink-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract":{"id":"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract","name":"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Steam":{"id":"GLM-4.5-Air-Derestricted-Steam","name":"GLM-4.5-Air-Derestricted-Steam","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.5-Air-Derestricted-Steam-ReExtract":{"id":"GLM-4.5-Air-Derestricted-Steam-ReExtract","name":"GLM-4.5-Air-Derestricted-Steam-ReExtract","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"GLM-4.6-Derestricted-v5":{"id":"GLM-4.6-Derestricted-v5","name":"GLM-4.6-Derestricted-v5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-4.7-flash-heretic":{"id":"glm-4.7-flash-heretic","name":"glm-4.7-flash-heretic","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-z1-air":{"id":"glm-z1-air","name":"glm-z1-air","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-z1-airx":{"id":"glm-z1-airx","name":"glm-z1-airx","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"glm-zero-preview":{"id":"glm-zero-preview","name":"glm-zero-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.049999999999999996,"cacheWrite":0.08333333333333334},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-flash-preview-thinking":{"id":"google/gemini-3-flash-preview-thinking","name":"google/gemini-3-flash-preview-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.024999999999999998,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.024999999999999998,"cacheWrite":0.08333333333333334},"contextWindow":1050000,"maxTokens":65530},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Google: Gemini 3.1 Pro Preview Custom Tools","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-pro-preview-high":{"id":"google/gemini-3.1-pro-preview-high","name":"google/gemini-3.1-pro-preview-high","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.1-pro-preview-low":{"id":"google/gemini-3.1-pro-preview-low","name":"google/gemini-3.1-pro-preview-low","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.5-flash-thinking":{"id":"google/gemini-3.5-flash-thinking","name":"google/gemini-3.5-flash-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-flash-1.5":{"id":"google/gemini-flash-1.5","name":"google/gemini-flash-1.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"google/gemini-flash-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"google/gemini-flash-lite-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemini-pro-latest":{"id":"google/gemini-pro-latest","name":"google/gemini-pro-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Google: Gemma 4 26B A4B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.13,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-3-beta":{"id":"grok-3-beta","name":"grok-3-beta","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-fast-beta":{"id":"grok-3-fast-beta","name":"grok-3-fast-beta","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-mini-beta":{"id":"grok-3-mini-beta","name":"grok-3-mini-beta","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"grok-3-mini-fast-beta":{"id":"grok-3-mini-fast-beta","name":"grok-3-mini-fast-beta","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Gryphe/MythoMax-L2-13b":{"id":"Gryphe/MythoMax-L2-13b","name":"Gryphe/MythoMax-L2-13b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hermes-high":{"id":"hermes-high","name":"hermes-high","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hermes-low":{"id":"hermes-low","name":"hermes-low","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hermes-medium":{"id":"hermes-medium","name":"hermes-medium","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"holo3-35b-a3b":{"id":"holo3-35b-a3b","name":"holo3-35b-a3b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated","name":"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated","name":"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated":{"id":"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated","name":"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/Llama-3.3-70B-Instruct-abliterated":{"id":"huihui-ai/Llama-3.3-70B-Instruct-abliterated","name":"huihui-ai/Llama-3.3-70B-Instruct-abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"huihui-ai/Qwen2.5-32B-Instruct-abliterated":{"id":"huihui-ai/Qwen2.5-32B-Instruct-abliterated","name":"huihui-ai/Qwen2.5-32B-Instruct-abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hunyuan-t1-latest":{"id":"hunyuan-t1-latest","name":"hunyuan-t1-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"hunyuan-turbos-20250226":{"id":"hunyuan-turbos-20250226","name":"hunyuan-turbos-20250226","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"ibm-granite/granite-4.1-8b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-1t":{"id":"inclusionai/ling-2.6-1t","name":"inclusionai/ling-2.6-1t","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ling-2.6-flash":{"id":"inclusionai/ling-2.6-flash","name":"inclusionai/ling-2.6-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"inclusionAI: Ring-2.6-1T","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":65000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"Infermatic/MN-12B-Inferor-v0.0":{"id":"Infermatic/MN-12B-Inferor-v0.0","name":"Infermatic/MN-12B-Inferor-v0.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflatebot/MN-12B-Mag-Mell-R1":{"id":"inflatebot/MN-12B-Mag-Mell-R1","name":"inflatebot/MN-12B-Mag-Mell-R1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflection/inflection-3-pi":{"id":"inflection/inflection-3-pi","name":"inflection/inflection-3-pi","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"inflection/inflection-3-productivity":{"id":"inflection/inflection-3-productivity","name":"inflection/inflection-3-productivity","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-large":{"id":"jamba-large","name":"jamba-large","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-large-1.6":{"id":"jamba-large-1.6","name":"jamba-large-1.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-large-1.7":{"id":"jamba-large-1.7","name":"jamba-large-1.7","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-mini":{"id":"jamba-mini","name":"jamba-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-mini-1.6":{"id":"jamba-mini-1.6","name":"jamba-mini-1.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"jamba-mini-1.7":{"id":"jamba-mini-1.7","name":"jamba-mini-1.7","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"KAT-Coder-Air-V1":{"id":"KAT-Coder-Air-V1","name":"KAT-Coder-Air-V1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"KAT-Coder-Exp-72B-1010":{"id":"KAT-Coder-Exp-72B-1010","name":"KAT-Coder-Exp-72B-1010","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"KAT-Coder-Pro-V1":{"id":"KAT-Coder-Pro-V1","name":"KAT-Coder-Pro-V1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kimi-k2-instruct-fast":{"id":"kimi-k2-instruct-fast","name":"kimi-k2-instruct-fast","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kimi-thinking-preview":{"id":"kimi-thinking-preview","name":"kimi-thinking-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"Kwaipilot: KAT-Coder-Pro V2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000},"LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{"id":"LatitudeGames/Wayfarer-Large-70B-Llama-3.3","name":"LatitudeGames/Wayfarer-Large-70B-Llama-3.3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"learnlm-1.5-pro-experimental":{"id":"learnlm-1.5-pro-experimental","name":"learnlm-1.5-pro-experimental","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"liquid/lfm-2-24b-a2b":{"id":"liquid/lfm-2-24b-a2b","name":"liquid/lfm-2-24b-a2b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Anthrobomination":{"id":"Llama-3.3-70B-Anthrobomination","name":"Llama-3.3-70B-Anthrobomination","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Argunaut-1-SFT":{"id":"Llama-3.3-70B-Argunaut-1-SFT","name":"Llama-3.3-70B-Argunaut-1-SFT","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-ArliAI-RPMax-v1.4":{"id":"Llama-3.3-70B-ArliAI-RPMax-v1.4","name":"Llama-3.3-70B-ArliAI-RPMax-v1.4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-ArliAI-RPMax-v2":{"id":"Llama-3.3-70B-ArliAI-RPMax-v2","name":"Llama-3.3-70B-ArliAI-RPMax-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-ArliAI-RPMax-v3":{"id":"Llama-3.3-70B-ArliAI-RPMax-v3","name":"Llama-3.3-70B-ArliAI-RPMax-v3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Aurora-Borealis":{"id":"Llama-3.3-70B-Aurora-Borealis","name":"Llama-3.3-70B-Aurora-Borealis","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Bigger-Body":{"id":"Llama-3.3-70B-Bigger-Body","name":"Llama-3.3-70B-Bigger-Body","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Cirrus-x1":{"id":"Llama-3.3-70B-Cirrus-x1","name":"Llama-3.3-70B-Cirrus-x1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Cu-Mai-R1":{"id":"Llama-3.3-70B-Cu-Mai-R1","name":"Llama-3.3-70B-Cu-Mai-R1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Damascus-R1":{"id":"Llama-3.3-70B-Damascus-R1","name":"Llama-3.3-70B-Damascus-R1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Dark-Ages-v0.1":{"id":"Llama-3.3-70B-Dark-Ages-v0.1","name":"Llama-3.3-70B-Dark-Ages-v0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Electra-R1":{"id":"Llama-3.3-70B-Electra-R1","name":"Llama-3.3-70B-Electra-R1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Electranova-v1.0":{"id":"Llama-3.3-70B-Electranova-v1.0","name":"Llama-3.3-70B-Electranova-v1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Fallen-R1-v1":{"id":"Llama-3.3-70B-Fallen-R1-v1","name":"Llama-3.3-70B-Fallen-R1-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Fallen-v1":{"id":"Llama-3.3-70B-Fallen-v1","name":"Llama-3.3-70B-Fallen-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Forgotten-Abomination-v5.0":{"id":"Llama-3.3-70B-Forgotten-Abomination-v5.0","name":"Llama-3.3-70B-Forgotten-Abomination-v5.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Forgotten-Safeword-3.6":{"id":"Llama-3.3-70B-Forgotten-Safeword-3.6","name":"Llama-3.3-70B-Forgotten-Safeword-3.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-GeneticLemonade-Opus":{"id":"Llama-3.3-70B-GeneticLemonade-Opus","name":"Llama-3.3-70B-GeneticLemonade-Opus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-GeneticLemonade-Unleashed-v3":{"id":"Llama-3.3-70B-GeneticLemonade-Unleashed-v3","name":"Llama-3.3-70B-GeneticLemonade-Unleashed-v3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Ignition-v0.1":{"id":"Llama-3.3-70B-Ignition-v0.1","name":"Llama-3.3-70B-Ignition-v0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Incandescent-Malevolence":{"id":"Llama-3.3-70B-Incandescent-Malevolence","name":"Llama-3.3-70B-Incandescent-Malevolence","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Legion-V2.1":{"id":"Llama-3.3-70B-Legion-V2.1","name":"Llama-3.3-70B-Legion-V2.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Magnum-v4-SE":{"id":"Llama-3.3-70B-Magnum-v4-SE","name":"Llama-3.3-70B-Magnum-v4-SE","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP":{"id":"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP","name":"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Mhnnn-x1":{"id":"Llama-3.3-70B-Mhnnn-x1","name":"Llama-3.3-70B-Mhnnn-x1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-MiraiFanfare":{"id":"Llama-3.3-70B-MiraiFanfare","name":"Llama-3.3-70B-MiraiFanfare","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Mokume-Gane-R1":{"id":"Llama-3.3-70B-Mokume-Gane-R1","name":"Llama-3.3-70B-Mokume-Gane-R1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-MS-Nevoria":{"id":"Llama-3.3-70B-MS-Nevoria","name":"Llama-3.3-70B-MS-Nevoria","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Nova":{"id":"Llama-3.3-70B-Nova","name":"Llama-3.3-70B-Nova","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Predatorial-Extasy":{"id":"Llama-3.3-70B-Predatorial-Extasy","name":"Llama-3.3-70B-Predatorial-Extasy","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Progenitor-V3.3":{"id":"Llama-3.3-70B-Progenitor-V3.3","name":"Llama-3.3-70B-Progenitor-V3.3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-RAWMAW":{"id":"Llama-3.3-70B-RAWMAW","name":"Llama-3.3-70B-RAWMAW","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Sapphira-0.1":{"id":"Llama-3.3-70B-Sapphira-0.1","name":"Llama-3.3-70B-Sapphira-0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Sapphira-0.2":{"id":"Llama-3.3-70B-Sapphira-0.2","name":"Llama-3.3-70B-Sapphira-0.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Shakudo":{"id":"Llama-3.3-70B-Shakudo","name":"Llama-3.3-70B-Shakudo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-StrawberryLemonade-v1.0":{"id":"Llama-3.3-70B-StrawberryLemonade-v1.0","name":"Llama-3.3-70B-StrawberryLemonade-v1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Strawberrylemonade-v1.2":{"id":"Llama-3.3-70B-Strawberrylemonade-v1.2","name":"Llama-3.3-70B-Strawberrylemonade-v1.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0":{"id":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0","name":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1":{"id":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1","name":"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3-70B-Vulpecula-R1":{"id":"Llama-3.3-70B-Vulpecula-R1","name":"Llama-3.3-70B-Vulpecula-R1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3+(3.1v3.3)-70B-Hanami-x1":{"id":"Llama-3.3+(3.1v3.3)-70B-Hanami-x1","name":"Llama-3.3+(3.1v3.3)-70B-Hanami-x1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1":{"id":"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1","name":"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter":{"id":"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter","name":"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"LLM360/K2-Think":{"id":"LLM360/K2-Think","name":"LLM360/K2-Think","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Magistral-Small-2506":{"id":"Magistral-Small-2506","name":"Magistral-Small-2506","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MarinaraSpaghetti/NemoMix-Unleashed-12B":{"id":"MarinaraSpaghetti/NemoMix-Unleashed-12B","name":"MarinaraSpaghetti/NemoMix-Unleashed-12B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meganova-ai/manta-flash-1.0":{"id":"meganova-ai/manta-flash-1.0","name":"meganova-ai/manta-flash-1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meganova-ai/manta-mini-1.0":{"id":"meganova-ai/manta-mini-1.0","name":"meganova-ai/manta-mini-1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meganova-ai/manta-pro-1.0":{"id":"meganova-ai/manta-pro-1.0","name":"meganova-ai/manta-pro-1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meituan-longcat/LongCat-Flash-Chat-FP8":{"id":"meituan-longcat/LongCat-Flash-Chat-FP8","name":"meituan-longcat/LongCat-Flash-Chat-FP8","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mercury-2":{"id":"mercury-2","name":"mercury-2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mercury-coder-small":{"id":"mercury-coder-small","name":"mercury-coder-small","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Meta-Llama-3-1-8B-Instruct-FP8":{"id":"Meta-Llama-3-1-8B-Instruct-FP8","name":"Meta-Llama-3-1-8B-Instruct-FP8","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Meta: Llama 3.1 8B Instruct","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.02,"output":0.049999999999999996,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"meta-llama/llama-3.2-3b-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Meta: Llama 3.3 70B Instruct","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.32,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":16384},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.08,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":327680,"maxTokens":16384},"microsoft/MAI-DS-R1-FP8":{"id":"microsoft/MAI-DS-R1-FP8","name":"microsoft/MAI-DS-R1-FP8","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"microsoft/wizardlm-2-8x22b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax-M1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":128000,"compat":{"supportsDeveloperRole":false,"thinkingFormat":"zai","reasoningContentField":"reasoning_content"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"minimax/minimax-01","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-latest":{"id":"minimax/minimax-latest","name":"minimax/minimax-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"minimax/minimax-m2-her","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.15,"cacheWrite":0},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131070,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7-turbo":{"id":"minimax/minimax-m2.7-turbo","name":"minimax/minimax-m2.7-turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"MiniMaxAI/MiniMax-M1-80k":{"id":"MiniMaxAI/MiniMax-M1-80k","name":"MiniMaxAI/MiniMax-M1-80k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"miromind-ai/mirothinker-v1.5-235b":{"id":"miromind-ai/mirothinker-v1.5-235b","name":"miromind-ai/mirothinker-v1.5-235b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mirothinker-1-7-deepresearch":{"id":"mirothinker-1-7-deepresearch","name":"mirothinker-1-7-deepresearch","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mirothinker-1-7-deepresearch-mini":{"id":"mirothinker-1-7-deepresearch-mini","name":"mirothinker-1-7-deepresearch-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Mistral-Nemo-12B-Instruct-2407":{"id":"Mistral-Nemo-12B-Instruct-2407","name":"Mistral-Nemo-12B-Instruct-2407","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistral-small-31-24b-instruct":{"id":"mistral-small-31-24b-instruct","name":"mistral-small-31-24b-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistral/mistral-medium-3.5":{"id":"mistral/mistral-medium-3.5","name":"mistral/mistral-medium-3.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistral/mistral-vibe-cli-latest":{"id":"mistral/mistral-vibe-cli-latest","name":"mistral/mistral-vibe-cli-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Mistral: Codestral 2508","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.8999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":4096},"mistralai/devstral-2-123b-instruct-2512":{"id":"mistralai/devstral-2-123b-instruct-2512","name":"Devstral-2-123B-Instruct-2512","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/Devstral-Small-2505":{"id":"mistralai/Devstral-Small-2505","name":"mistralai/Devstral-Small-2505","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Mistral: Ministral 3 14B 2512","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.19999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":4096},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"Ministral 3 14B Instruct 2512","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Mistral: Ministral 3 3B 2512","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.09999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Mistral: Ministral 3 8B 2512","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":4096},"mistralai/mistral-7b-instruct":{"id":"mistralai/mistral-7b-instruct","name":"mistralai/mistral-7b-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-large-3-675b-instruct-2512":{"id":"mistralai/mistral-large-3-675b-instruct-2512","name":"Mistral Large 3 675B Instruct 2512","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral: Mistral Medium 3","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral: Mistral Medium 3.1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"mistralai/Mistral-Nemo-Instruct-2407","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral: Saba","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"mistral-small-4-119b-2603","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/mistral-small-creative":{"id":"mistralai/mistral-small-creative","name":"Mistral: Mistral Small Creative","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mistral-tiny":{"id":"mistralai/mistral-tiny","name":"mistralai/mistral-tiny","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mixtral-8x22b-instruct-v0.1":{"id":"mistralai/mixtral-8x22b-instruct-v0.1","name":"mistralai/mixtral-8x22b-instruct-v0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mistralai/mixtral-8x7b-instruct-v0.1":{"id":"mistralai/mixtral-8x7b-instruct-v0.1","name":"mistralai/mixtral-8x7b-instruct-v0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"mlabonne/NeuralDaredevil-8B-abliterated":{"id":"mlabonne/NeuralDaredevil-8B-abliterated","name":"mlabonne/NeuralDaredevil-8B-abliterated","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/Kimi-Dev-72B":{"id":"moonshotai/Kimi-Dev-72B","name":"moonshotai/Kimi-Dev-72B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"moonshotai/kimi-k2-instruct-0711":{"id":"moonshotai/kimi-k2-instruct-0711","name":"moonshotai/kimi-k2-instruct-0711","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi K2-Instruct 0905","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":1,"cacheWrite":3},"contextWindow":262144,"maxTokens":8192},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-thinking-original":{"id":"moonshotai/kimi-k2-thinking-original","name":"moonshotai/kimi-k2-thinking-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2-thinking-turbo-original":{"id":"moonshotai/kimi-k2-thinking-turbo-original","name":"moonshotai/kimi-k2-thinking-turbo-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262140,"maxTokens":262140,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-latest":{"id":"moonshotai/kimi-latest","name":"moonshotai/kimi-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nanogpt/coding-router":{"id":"nanogpt/coding-router","name":"nanogpt/coding-router","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nanogpt/coding-router:high":{"id":"nanogpt/coding-router:high","name":"nanogpt/coding-router:high","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nanogpt/coding-router:low":{"id":"nanogpt/coding-router:low","name":"nanogpt/coding-router:low","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nanogpt/coding-router:max":{"id":"nanogpt/coding-router:max","name":"nanogpt/coding-router:max","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nanogpt/coding-router:medium":{"id":"nanogpt/coding-router:medium","name":"nanogpt/coding-router:medium","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"NeverSleep/Llama-3-Lumimaid-70B-v0.1":{"id":"NeverSleep/Llama-3-Lumimaid-70B-v0.1","name":"NeverSleep/Llama-3-Lumimaid-70B-v0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"NeverSleep/Lumimaid-v0.2-70B":{"id":"NeverSleep/Lumimaid-v0.2-70B","name":"NeverSleep/Lumimaid-v0.2-70B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nex-agi/deepseek-v3.1-nex-n1":{"id":"nex-agi/deepseek-v3.1-nex-n1","name":"Nex AGI: DeepSeek V3.1 Nex N1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.27,"output":1,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{"id":"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16","name":"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"NousResearch/DeepHermes-3-Mistral-24B-Preview":{"id":"NousResearch/DeepHermes-3-Mistral-24B-Preview","name":"NousResearch/DeepHermes-3-Mistral-24B-Preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"nousresearch/hermes-3-llama-3.1-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"nousresearch/hermes-4-405b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nousresearch/hermes-4-70b":{"id":"nousresearch/hermes-4-70b","name":"Nous: Hermes 4 70B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.11,"output":0.38,"cacheRead":0.055,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5":{"id":"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5","name":"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{"id":"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF","name":"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":{"id":"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1","name":"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/Llama-3.3-Nemotron-Super-49B-v1":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1","name":"nvidia/Llama-3.3-Nemotron-Super-49B-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.19999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.5,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nvidia-nemotron-nano-9b-v2":{"id":"nvidia/nvidia-nemotron-nano-9b-v2","name":"nvidia-nemotron-nano-9b-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/chatgpt-4o-latest":{"id":"openai/chatgpt-4o-latest","name":"openai/chatgpt-4o-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"OpenAI: GPT-3.5 Turbo","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4-turbo-preview":{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"OpenAI: GPT-4.1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"OpenAI: GPT-4.1 Mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"OpenAI: GPT-4.1 Nano","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"OpenAI: GPT-4o (2024-08-06)","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"OpenAI: GPT-4o (2024-11-20)","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini-search-preview":{"id":"openai/gpt-4o-mini-search-preview","name":"openai/gpt-4o-mini-search-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-4o-search-preview":{"id":"openai/gpt-4o-search-preview","name":"openai/gpt-4o-search-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-chat-latest":{"id":"openai/gpt-5-chat-latest","name":"openai/gpt-5-chat-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 OpenAI code","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"OpenAI: GPT-5 Mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"OpenAI: GPT-5 Nano","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.049999999999999996,"output":0.39999999999999997,"cacheRead":0.005,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"OpenAI: GPT-5 Pro","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":120,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-2025-11-13":{"id":"openai/gpt-5.1-2025-11-13","name":"openai/gpt-5.1-2025-11-13","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"openai/gpt-5.1-chat-latest":{"id":"openai/gpt-5.1-chat-latest","name":"openai/gpt-5.1-chat-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"OpenAI: GPT-5.1-OpenAI code-Max","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-OpenAI code-Mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"OpenAI: GPT-5.2 Chat","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":21,"output":168,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16380},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"openai/gpt-chat-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-latest":{"id":"openai/gpt-latest","name":"openai/gpt-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.037,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1":{"id":"openai/o1","name":"o1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":60,"cacheRead":7.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1-preview":{"id":"openai/o1-preview","name":"openai/o1-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o1-pro":{"id":"openai/o1-pro","name":"openai/o1-pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3":{"id":"openai/o3","name":"o3","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"OpenAI: o3 Deep Research","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":40,"cacheRead":2.5,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-mini-low":{"id":"openai/o3-mini-low","name":"openai/o3-mini-low","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o3-pro-2025-06-10":{"id":"openai/o3-pro-2025-06-10","name":"openai/o3-pro-2025-06-10","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini-deep-research":{"id":"openai/o4-mini-deep-research","name":"OpenAI: o4 Mini Deep Research","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"owl":{"id":"owl","name":"owl","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"pamanseau/OpenReasoning-Nemotron-32B":{"id":"pamanseau/OpenReasoning-Nemotron-32B","name":"pamanseau/OpenReasoning-Nemotron-32B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"pangram-ai-detection":{"id":"pangram-ai-detection","name":"pangram-ai-detection","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"pangram-plagiarism-detection":{"id":"pangram-plagiarism-detection","name":"pangram-plagiarism-detection","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"perceptron/perceptron-mk1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"phi-4-mini-instruct":{"id":"phi-4-mini-instruct","name":"phi-4-mini-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"phi-4-multimodal-instruct":{"id":"phi-4-multimodal-instruct","name":"phi-4-multimodal-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-m.1":{"id":"poolside/laguna-m.1","name":"poolside/laguna-m.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"poolside/laguna-xs.2":{"id":"poolside/laguna-xs.2","name":"poolside/laguna-xs.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qvq-max":{"id":"qvq-max","name":"qvq-max","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-3.6-plus":{"id":"qwen-3.6-plus","name":"qwen-3.6-plus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-long":{"id":"qwen-long","name":"qwen-long","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-max":{"id":"qwen-max","name":"qwen-max","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-plus":{"id":"qwen-plus","name":"qwen-plus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen-turbo":{"id":"qwen-turbo","name":"qwen-turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.12,"output":0.39,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen2.5-Coder-32B-Instruct":{"id":"Qwen/Qwen2.5-Coder-32B-Instruct","name":"Qwen/Qwen2.5-Coder-32B-Instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen: Qwen3 14B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen3-235B-A22B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-235B-A22B":{"id":"Qwen/Qwen3-235B-A22B","name":"Qwen/Qwen3-235B-A22B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen/Qwen3-235B-A22B-Instruct-2507","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE","name":"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen/Qwen3-235B-A22B-Thinking-2507","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen: Qwen3 30B A3B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.08,"output":0.28,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3-32B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.29,"output":0.59,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":40960,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen/Qwen3-8B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen: Qwen3 Coder 480B A35B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.22,"output":1,"cacheRead":0.022,"cacheWrite":0},"contextWindow":262144,"maxTokens":4096},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen: Qwen3 Coder Flash","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.5,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen: Qwen3 Coder Next","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":0.12,"output":0.75,"cacheRead":0.06,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":false,"input":["text"],"cost":{"input":1,"output":5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0.24,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next-80B-A3B-Thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen/Qwen3-VL-235B-A22B-Instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":1,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-397b-a17b-thinking":{"id":"qwen/qwen3.5-397b-a17b-thinking","name":"qwen/qwen3.5-397b-a17b-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen: Qwen3.5-9B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.049999999999999996,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":2.4,"cacheRead":0.04,"cacheWrite":0.5},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-plus-thinking":{"id":"qwen/qwen3.5-plus-thinking","name":"qwen/qwen3.5-plus-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":81920,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwq-32b-preview":{"id":"qwen/qwq-32b-preview","name":"qwen/qwq-32b-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen2.5-32B-EVA-v0.2":{"id":"Qwen2.5-32B-EVA-v0.2","name":"Qwen2.5-32B-EVA-v0.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen25-vl-72b-instruct":{"id":"qwen25-vl-72b-instruct","name":"qwen25-vl-72b-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"qwen3-30b-a3b-instruct-2507","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"qwen3-coder-30b-a3b-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen3-vl-235b-a22b-instruct-original":{"id":"qwen3-vl-235b-a22b-instruct-original","name":"qwen3-vl-235b-a22b-instruct-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3-vl-235b-a22b-thinking":{"id":"qwen3-vl-235b-a22b-thinking","name":"qwen3-vl-235b-a22b-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"qwen3.5-122b-a10b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"qwen3.5-27b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"Qwen3.5-27B-Anko":{"id":"Qwen3.5-27B-Anko","name":"Qwen3.5-27B-Anko","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-Derestricted":{"id":"Qwen3.5-27B-BlueStar-Derestricted","name":"Qwen3.5-27B-BlueStar-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-Derestricted-Lite":{"id":"Qwen3.5-27B-BlueStar-Derestricted-Lite","name":"Qwen3.5-27B-BlueStar-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v2-Derestricted":{"id":"Qwen3.5-27B-BlueStar-v2-Derestricted","name":"Qwen3.5-27B-BlueStar-v2-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v2-Derestricted-Lite":{"id":"Qwen3.5-27B-BlueStar-v2-Derestricted-Lite","name":"Qwen3.5-27B-BlueStar-v2-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v3-Derestricted":{"id":"Qwen3.5-27B-BlueStar-v3-Derestricted","name":"Qwen3.5-27B-BlueStar-v3-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-BlueStar-v3-Derestricted-Lite":{"id":"Qwen3.5-27B-BlueStar-v3-Derestricted-Lite","name":"Qwen3.5-27B-BlueStar-v3-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Derestricted":{"id":"Qwen3.5-27B-Derestricted","name":"Qwen3.5-27B-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-earica-Derestricted":{"id":"Qwen3.5-27B-earica-Derestricted","name":"Qwen3.5-27B-earica-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-earica-Derestricted-Lite":{"id":"Qwen3.5-27B-earica-Derestricted-Lite","name":"Qwen3.5-27B-earica-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Infracelestial":{"id":"Qwen3.5-27B-Infracelestial","name":"Qwen3.5-27B-Infracelestial","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-DPO-V2-Derestricted":{"id":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted","name":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-DPO-V2-Derestricted-Lite":{"id":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted-Lite","name":"Qwen3.5-27B-Marvin-DPO-V2-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-V2-Derestricted":{"id":"Qwen3.5-27B-Marvin-V2-Derestricted","name":"Qwen3.5-27B-Marvin-V2-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Marvin-V2-Derestricted-Lite":{"id":"Qwen3.5-27B-Marvin-V2-Derestricted-Lite","name":"Qwen3.5-27B-Marvin-V2-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Musica-v1":{"id":"Qwen3.5-27B-Musica-v1","name":"Qwen3.5-27B-Musica-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-NaNovel-Derestricted":{"id":"Qwen3.5-27B-NaNovel-Derestricted","name":"Qwen3.5-27B-NaNovel-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-NaNovel-Derestricted-Lite":{"id":"Qwen3.5-27B-NaNovel-Derestricted-Lite","name":"Qwen3.5-27B-NaNovel-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted":{"id":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted","name":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted-Lite":{"id":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted-Lite","name":"Qwen3.5-27B-Omega-Evolution-v2.0-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Omega-Evolution-v2.2-Derestricted":{"id":"Qwen3.5-27B-Omega-Evolution-v2.2-Derestricted","name":"Qwen3.5-27B-Omega-Evolution-v2.2-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Omega-Evolution-v2.2-Derestricted-Lite":{"id":"Qwen3.5-27B-Omega-Evolution-v2.2-Derestricted-Lite","name":"Qwen3.5-27B-Omega-Evolution-v2.2-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Queen-Derestricted":{"id":"Qwen3.5-27B-Queen-Derestricted","name":"Qwen3.5-27B-Queen-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Queen-Derestricted-Lite":{"id":"Qwen3.5-27B-Queen-Derestricted-Lite","name":"Qwen3.5-27B-Queen-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-RpRMax-v1":{"id":"Qwen3.5-27B-RpRMax-v1","name":"Qwen3.5-27B-RpRMax-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Vivid-Durian":{"id":"Qwen3.5-27B-Vivid-Durian","name":"Qwen3.5-27B-Vivid-Durian","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-Derestricted":{"id":"Qwen3.5-27B-Writer-Derestricted","name":"Qwen3.5-27B-Writer-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-Derestricted-Lite":{"id":"Qwen3.5-27B-Writer-Derestricted-Lite","name":"Qwen3.5-27B-Writer-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-V2-Derestricted":{"id":"Qwen3.5-27B-Writer-V2-Derestricted","name":"Qwen3.5-27B-Writer-V2-Derestricted","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Qwen3.5-27B-Writer-V2-Derestricted-Lite":{"id":"Qwen3.5-27B-Writer-V2-Derestricted-Lite","name":"Qwen3.5-27B-Writer-V2-Derestricted-Lite","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"qwen3.5-35b-a3b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"qwen3.5-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3.5-omni-flash":{"id":"qwen3.5-omni-flash","name":"qwen3.5-omni-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.5-omni-plus":{"id":"qwen3.5-omni-plus","name":"qwen3.5-omni-plus","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"qwen3.6-max-preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwq-32b":{"id":"qwq-32b","name":"qwq-32b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"QwQ-32B-ArliAI-RpR-v1":{"id":"QwQ-32B-ArliAI-RpR-v1","name":"QwQ-32B-ArliAI-RpR-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"raifle/sorcererlm-8x22b":{"id":"raifle/sorcererlm-8x22b","name":"raifle/sorcererlm-8x22b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{"id":"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0","name":"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"ReadyArt/The-Omega-Abomination-L-70B-v1.0":{"id":"ReadyArt/The-Omega-Abomination-L-70B-v1.0","name":"ReadyArt/The-Omega-Abomination-L-70B-v1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Salesforce/Llama-xLAM-2-70b-fc-r":{"id":"Salesforce/Llama-xLAM-2-70b-fc-r","name":"Salesforce/Llama-xLAM-2-70b-fc-r","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3-8B-Stheno-v3.2":{"id":"Sao10K/L3-8B-Stheno-v3.2","name":"Sao10K/L3-8B-Stheno-v3.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3.1-70B-Euryale-v2.2":{"id":"Sao10K/L3.1-70B-Euryale-v2.2","name":"Sao10K/L3.1-70B-Euryale-v2.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3.1-70B-Hanami-x1":{"id":"Sao10K/L3.1-70B-Hanami-x1","name":"Sao10K/L3.1-70B-Hanami-x1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Sao10K/L3.3-70B-Euryale-v2.3":{"id":"Sao10K/L3.3-70B-Euryale-v2.3","name":"Sao10K/L3.3-70B-Euryale-v2.3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sarvam-105b":{"id":"sarvam-105b","name":"sarvam-105b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sarvam-30b":{"id":"sarvam-30b","name":"sarvam-30b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sarvan-medium":{"id":"sarvan-medium","name":"sarvan-medium","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"shisa-ai/shisa-v2-llama3.3-70b":{"id":"shisa-ai/shisa-v2-llama3.3-70b","name":"shisa-ai/shisa-v2-llama3.3-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"shisa-ai/shisa-v2.1-llama3.3-70b":{"id":"shisa-ai/shisa-v2.1-llama3.3-70b","name":"shisa-ai/shisa-v2.1-llama3.3-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar":{"id":"sonar","name":"sonar","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar-deep-research":{"id":"sonar-deep-research","name":"sonar-deep-research","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar-pro":{"id":"sonar-pro","name":"sonar-pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"sonar-reasoning-pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"soob3123/amoral-gemma3-27B-v2":{"id":"soob3123/amoral-gemma3-27B-v2","name":"soob3123/amoral-gemma3-27B-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"soob3123/GrayLine-Qwen3-8B":{"id":"soob3123/GrayLine-Qwen3-8B","name":"soob3123/GrayLine-Qwen3-8B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"soob3123/Veiled-Calla-12B":{"id":"soob3123/Veiled-Calla-12B","name":"soob3123/Veiled-Calla-12B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-Cu-Mai-R1-70b":{"id":"Steelskull/L3.3-Cu-Mai-R1-70b","name":"Steelskull/L3.3-Cu-Mai-R1-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-Electra-R1-70b":{"id":"Steelskull/L3.3-Electra-R1-70b","name":"Steelskull/L3.3-Electra-R1-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-MS-Evalebis-70b":{"id":"Steelskull/L3.3-MS-Evalebis-70b","name":"Steelskull/L3.3-MS-Evalebis-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-MS-Evayale-70B":{"id":"Steelskull/L3.3-MS-Evayale-70B","name":"Steelskull/L3.3-MS-Evayale-70B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-MS-Nevoria-70b":{"id":"Steelskull/L3.3-MS-Nevoria-70b","name":"Steelskull/L3.3-MS-Nevoria-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"Steelskull/L3.3-Nevoria-R1-70b":{"id":"Steelskull/L3.3-Nevoria-R1-70b","name":"Steelskull/L3.3-Nevoria-R1-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-2-16k-exp":{"id":"step-2-16k-exp","name":"step-2-16k-exp","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-2-mini":{"id":"step-2-mini","name":"step-2-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-3":{"id":"step-3","name":"step-3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"step-r1-v-mini":{"id":"step-r1-v-mini","name":"step-r1-v-mini","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun-ai/step-3.5-flash-2603":{"id":"stepfun-ai/step-3.5-flash-2603","name":"stepfun-ai/step-3.5-flash-2603","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"stepfun-ai/step-3.6":{"id":"stepfun-ai/step-3.6","name":"stepfun-ai/step-3.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"study_gpt-chatgpt-4o-latest":{"id":"study_gpt-chatgpt-4o-latest","name":"study_gpt-chatgpt-4o-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-r1-0528":{"id":"TEE/deepseek-r1-0528","name":"TEE/deepseek-r1-0528","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-v3.1":{"id":"TEE/deepseek-v3.1","name":"TEE/deepseek-v3.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-v3.2":{"id":"TEE/deepseek-v3.2","name":"TEE/deepseek-v3.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/deepseek-v4-pro":{"id":"TEE/deepseek-v4-pro","name":"TEE/deepseek-v4-pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"TEE/gemma-3-27b-it":{"id":"TEE/gemma-3-27b-it","name":"TEE/gemma-3-27b-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gemma-4-26b-a4b-uncensored":{"id":"TEE/gemma-4-26b-a4b-uncensored","name":"TEE/gemma-4-26b-a4b-uncensored","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gemma4-31b":{"id":"TEE/gemma4-31b","name":"TEE/gemma4-31b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"TEE/glm-4.6":{"id":"TEE/glm-4.6","name":"TEE/glm-4.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-4.7":{"id":"TEE/glm-4.7","name":"TEE/glm-4.7","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-4.7-flash":{"id":"TEE/glm-4.7-flash","name":"TEE/glm-4.7-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5":{"id":"TEE/glm-5","name":"TEE/glm-5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5-1":{"id":"TEE/glm-5-1","name":"TEE/glm-5-1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5-1-thinking":{"id":"TEE/glm-5-1-thinking","name":"TEE/glm-5-1-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5.1":{"id":"TEE/glm-5.1","name":"TEE/glm-5.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/glm-5.1-thinking":{"id":"TEE/glm-5.1-thinking","name":"TEE/glm-5.1-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gpt-oss-120b":{"id":"TEE/gpt-oss-120b","name":"TEE/gpt-oss-120b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/gpt-oss-20b":{"id":"TEE/gpt-oss-20b","name":"TEE/gpt-oss-20b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2-thinking":{"id":"TEE/kimi-k2-thinking","name":"TEE/kimi-k2-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2.5":{"id":"TEE/kimi-k2.5","name":"TEE/kimi-k2.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2.5-thinking":{"id":"TEE/kimi-k2.5-thinking","name":"TEE/kimi-k2.5-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/kimi-k2.6":{"id":"TEE/kimi-k2.6","name":"TEE/kimi-k2.6","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/llama3-3-70b":{"id":"TEE/llama3-3-70b","name":"TEE/llama3-3-70b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/mimo-v2-flash":{"id":"TEE/mimo-v2-flash","name":"TEE/mimo-v2-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/minimax-m2.1":{"id":"TEE/minimax-m2.1","name":"TEE/minimax-m2.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/minimax-m2.5":{"id":"TEE/minimax-m2.5","name":"TEE/minimax-m2.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen2.5-vl-72b-instruct":{"id":"TEE/qwen2.5-vl-72b-instruct","name":"TEE/qwen2.5-vl-72b-instruct","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3-30b-a3b-instruct-2507":{"id":"TEE/qwen3-30b-a3b-instruct-2507","name":"TEE/qwen3-30b-a3b-instruct-2507","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3-coder":{"id":"TEE/qwen3-coder","name":"TEE/qwen3-coder","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3-coder-next":{"id":"TEE/qwen3-coder-next","name":"TEE/qwen3-coder-next","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3.5-27b":{"id":"TEE/qwen3.5-27b","name":"TEE/qwen3.5-27b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3.5-397b-a17b":{"id":"TEE/qwen3.5-397b-a17b","name":"TEE/qwen3.5-397b-a17b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TEE/qwen3.6-35b-a3b-uncensored":{"id":"TEE/qwen3.6-35b-a3b-uncensored","name":"TEE/qwen3.6-35b-a3b-uncensored","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/Hunyuan-MT-7B":{"id":"tencent/Hunyuan-MT-7B","name":"tencent/Hunyuan-MT-7B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"TheDrummer/Anubis-70B-v1":{"id":"TheDrummer/Anubis-70B-v1","name":"TheDrummer/Anubis-70B-v1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Anubis-70B-v1.1":{"id":"TheDrummer/Anubis-70B-v1.1","name":"TheDrummer/Anubis-70B-v1.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v2":{"id":"TheDrummer/Cydonia-24B-v2","name":"TheDrummer/Cydonia-24B-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v4":{"id":"TheDrummer/Cydonia-24B-v4","name":"TheDrummer/Cydonia-24B-v4","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v4.1":{"id":"TheDrummer/Cydonia-24B-v4.1","name":"TheDrummer/Cydonia-24B-v4.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Cydonia-24B-v4.3":{"id":"TheDrummer/Cydonia-24B-v4.3","name":"TheDrummer/Cydonia-24B-v4.3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Magidonia-24B-v4.3":{"id":"TheDrummer/Magidonia-24B-v4.3","name":"TheDrummer/Magidonia-24B-v4.3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Rocinante-12B-v1.1":{"id":"TheDrummer/Rocinante-12B-v1.1","name":"TheDrummer/Rocinante-12B-v1.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/Skyfall-31B-v4.2":{"id":"TheDrummer/Skyfall-31B-v4.2","name":"TheDrummer/Skyfall-31B-v4.2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"thedrummer/skyfall-36b-v2","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"TheDrummer/UnslopNemo-12B-v4.1":{"id":"TheDrummer/UnslopNemo-12B-v4.1","name":"TheDrummer/UnslopNemo-12B-v4.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-4-32B-0414":{"id":"THUDM/GLM-4-32B-0414","name":"THUDM/GLM-4-32B-0414","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-4-9B-0414":{"id":"THUDM/GLM-4-9B-0414","name":"THUDM/GLM-4-9B-0414","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-Z1-32B-0414":{"id":"THUDM/GLM-Z1-32B-0414","name":"THUDM/GLM-Z1-32B-0414","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-Z1-9B-0414":{"id":"THUDM/GLM-Z1-9B-0414","name":"THUDM/GLM-Z1-9B-0414","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"THUDM/GLM-Z1-Rumination-32B-0414":{"id":"THUDM/GLM-Z1-Rumination-32B-0414","name":"THUDM/GLM-Z1-Rumination-32B-0414","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tngtech/DeepSeek-TNG-R1T2-Chimera":{"id":"tngtech/DeepSeek-TNG-R1T2-Chimera","name":"tngtech/DeepSeek-TNG-R1T2-Chimera","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"tngtech/tng-r1t-chimera":{"id":"tngtech/tng-r1t-chimera","name":"TNG: R1T Chimera","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.85,"cacheRead":0.125,"cacheWrite":0},"contextWindow":163840,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"Tongyi-Zhiwen/QwenLong-L1-32B":{"id":"Tongyi-Zhiwen/QwenLong-L1-32B","name":"Tongyi-Zhiwen/QwenLong-L1-32B","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"undi95/remm-slerp-l2-13b","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"universal-summarizer":{"id":"universal-summarizer","name":"universal-summarizer","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-12b-it":{"id":"unsloth/gemma-3-12b-it","name":"unsloth/gemma-3-12b-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-1b-it":{"id":"unsloth/gemma-3-1b-it","name":"unsloth/gemma-3-1b-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-27b-it":{"id":"unsloth/gemma-3-27b-it","name":"unsloth/gemma-3-27b-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"unsloth/gemma-3-4b-it":{"id":"unsloth/gemma-3-4b-it","name":"unsloth/gemma-3-4b-it","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Upstage: Solar Pro 3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"v0-1.0-md":{"id":"v0-1.0-md","name":"v0-1.0-md","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"v0-1.5-lg":{"id":"v0-1.5-lg","name":"v0-1.5-lg","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"v0-1.5-md":{"id":"v0-1.5-md","name":"v0-1.5-md","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"venice-uncensored":{"id":"venice-uncensored","name":"Venice Uncensored 1.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"venice-uncensored:web":{"id":"venice-uncensored:web","name":"venice-uncensored:web","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"VongolaChouko/Starcannon-Unleashed-12B-v1.0":{"id":"VongolaChouko/Starcannon-Unleashed-12B-v1.0","name":"VongolaChouko/Starcannon-Unleashed-12B-v1.0","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4-07-09":{"id":"x-ai/grok-4-07-09","name":"x-ai/grok-4-07-09","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"Grok 4 Fast","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.1-fast-reasoning":{"id":"x-ai/grok-4.1-fast-reasoning","name":"x-ai/grok-4.1-fast-reasoning","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"xAI: Grok 4.20","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.20-beta-non-reasoning":{"id":"x-ai/grok-4.20-beta-non-reasoning","name":"x-ai/grok-4.20-beta-non-reasoning","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-beta-reasoning":{"id":"x-ai/grok-4.20-beta-reasoning","name":"x-ai/grok-4.20-beta-reasoning","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"x-ai/grok-4.20-multi-agent","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.20-multi-agent-beta":{"id":"x-ai/grok-4.20-multi-agent-beta","name":"x-ai/grok-4.20-multi-agent-beta","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.5,"cacheRead":0.02,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-latest":{"id":"x-ai/grok-latest","name":"x-ai/grok-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.09,"output":0.29,"cacheRead":0.045,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-flash-original":{"id":"xiaomi/mimo-v2-flash-original","name":"xiaomi/mimo-v2-flash-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash-thinking":{"id":"xiaomi/mimo-v2-flash-thinking","name":"xiaomi/mimo-v2-flash-thinking","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-flash-thinking-original":{"id":"xiaomi/mimo-v2-flash-thinking-original","name":"xiaomi/mimo-v2-flash-thinking-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":265000,"maxTokens":265000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"yi-large":{"id":"yi-large","name":"yi-large","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"yi-lightning":{"id":"yi-lightning","name":"yi-lightning","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"yi-medium-200k":{"id":"yi-medium-200k","name":"yi-medium-200k","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"Z.ai: GLM 4.5V","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":1.7999999999999998,"cacheRead":0.11,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","api":"openai-completions","baseUrl":"https://nano-gpt.com/api/v1","provider":"nanogpt","reasoning":true,"input":["text"],"cost":{"input":0.35,"output":1.71,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.5":{"id":"zai-org/glm-4.5","name":"zai-org/glm-4.5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"zai-org/GLM-4.5-Air","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.6-original":{"id":"zai-org/glm-4.6-original","name":"zai-org/glm-4.6-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/GLM-4.6-turbo":{"id":"zai-org/GLM-4.6-turbo","name":"zai-org/GLM-4.6-turbo","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.6v":{"id":"zai-org/glm-4.6v","name":"zai-org/glm-4.6v","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.6v-flash-original":{"id":"zai-org/glm-4.6v-flash-original","name":"zai-org/glm-4.6v-flash-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.6v-original":{"id":"zai-org/glm-4.6v-original","name":"zai-org/glm-4.6v-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888},"zai-org/glm-4.7":{"id":"zai-org/glm-4.7","name":"zai-org/glm-4.7","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.7-flash":{"id":"zai-org/glm-4.7-flash","name":"zai-org/glm-4.7-flash","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.7-flash-original":{"id":"zai-org/glm-4.7-flash-original","name":"zai-org/glm-4.7-flash-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-4.7-original":{"id":"zai-org/glm-4.7-original","name":"zai-org/glm-4.7-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-5":{"id":"zai-org/glm-5","name":"zai-org/glm-5","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-5-original":{"id":"zai-org/glm-5-original","name":"zai-org/glm-5-original","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-5.1":{"id":"zai-org/glm-5.1","name":"zai-org/glm-5.1","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/glm-latest":{"id":"zai-org/glm-latest","name":"zai-org/glm-latest","api":"openai-completions","provider":"nanogpt","baseUrl":"https://nano-gpt.com/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888}} diff --git a/packages/ai/src/model-shards/nvidia.json b/packages/ai/src/model-shards/nvidia.json new file mode 100644 index 0000000000..6eeb24ad6b --- /dev/null +++ b/packages/ai/src/model-shards/nvidia.json @@ -0,0 +1 @@ +{"abacusai/dracarys-llama-3_1-70b-instruct":{"id":"abacusai/dracarys-llama-3_1-70b-instruct","name":"dracarys-llama-3.1-70b-instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"bytedance/seed-oss-36b-instruct":{"id":"bytedance/seed-oss-36b-instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":262000},"deepseek-ai/deepseek-coder-6.7b-instruct":{"id":"deepseek-ai/deepseek-coder-6.7b-instruct","name":"Deepseek Coder 6.7b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"deepseek-ai/deepseek-r1-0528":{"id":"deepseek-ai/deepseek-r1-0528","name":"Deepseek R1 0528","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/deepseek-v3.1":{"id":"deepseek-ai/deepseek-v3.1","name":"DeepSeek V3.1","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/deepseek-v3.1-terminus":{"id":"deepseek-ai/deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/deepseek-v3.2":{"id":"deepseek-ai/deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/deepseek-v4-flash":{"id":"deepseek-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":393216,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/deepseek-v4-pro":{"id":"deepseek-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"contextWindow":1048576,"maxTokens":393216,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-2-27b-it":{"id":"google/gemma-2-27b-it","name":"Gemma 2 27b It","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-2-2b-it":{"id":"google/gemma-2-2b-it","name":"Gemma 2 2b It","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12b It","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-3-1b-it":{"id":"google/gemma-3-1b-it","name":"Gemma 3 1b It","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma-3-27B-IT","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-3n-e2b-it":{"id":"google/gemma-3n-e2b-it","name":"Gemma 3n E2b It","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-3n-e4b-it":{"id":"google/gemma-3n-e4b-it","name":"Gemma 3n E4b It","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"meta/llama-3.1-405b-instruct":{"id":"meta/llama-3.1-405b-instruct","name":"Llama 3.1 405b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-3.1-70b-instruct":{"id":"meta/llama-3.1-70b-instruct","name":"Llama 3.1 70b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":16000,"maxTokens":4096},"meta/llama-3.2-11b-vision-instruct":{"id":"meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11b Vision Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-3.2-1b-instruct":{"id":"meta/llama-3.2-1b-instruct","name":"Llama 3.2 1b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-3.2-90b-vision-instruct":{"id":"meta/llama-3.2-90b-vision-instruct","name":"Llama-3.2-90B-Vision-Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-4-maverick-17b-128e-instruct":{"id":"meta/llama-4-maverick-17b-128e-instruct","name":"Llama 4 Maverick 17b 128e Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-4-scout-17b-16e-instruct":{"id":"meta/llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17b 16e Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama3-70b-instruct":{"id":"meta/llama3-70b-instruct","name":"Llama3 70b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama3-8b-instruct":{"id":"meta/llama3-8b-instruct","name":"Llama3 8b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"microsoft/phi-3-medium-128k-instruct":{"id":"microsoft/phi-3-medium-128k-instruct","name":"Phi 3 Medium 128k Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"microsoft/phi-3-medium-4k-instruct":{"id":"microsoft/phi-3-medium-4k-instruct","name":"Phi 3 Medium 4k Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":4000,"maxTokens":4096},"microsoft/phi-3-small-128k-instruct":{"id":"microsoft/phi-3-small-128k-instruct","name":"Phi 3 Small 128k Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"microsoft/phi-3-small-8k-instruct":{"id":"microsoft/phi-3-small-8k-instruct","name":"Phi 3 Small 8k Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":8000,"maxTokens":4096},"microsoft/phi-3-vision-128k-instruct":{"id":"microsoft/phi-3-vision-128k-instruct","name":"Phi 3 Vision 128k Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"microsoft/phi-3.5-moe-instruct":{"id":"microsoft/phi-3.5-moe-instruct","name":"Phi 3.5 Moe Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"microsoft/phi-3.5-vision-instruct":{"id":"microsoft/phi-3.5-vision-instruct","name":"Phi 3.5 Vision Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"microsoft/phi-4-mini-instruct":{"id":"microsoft/phi-4-mini-instruct","name":"Phi-4-Mini","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"minimaxai/minimax-m2":{"id":"minimaxai/minimax-m2","name":"MiniMax-M2","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimaxai/minimax-m2.1":{"id":"minimaxai/minimax-m2.1","name":"MiniMax-M2.1","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimaxai/minimax-m2.5":{"id":"minimaxai/minimax-m2.5","name":"MiniMax-M2.5","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimaxai/minimax-m2.7":{"id":"minimaxai/minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimaxai/minimax-m3":{"id":"minimaxai/minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/codestral-22b-instruct-v0.1":{"id":"mistralai/codestral-22b-instruct-v0.1","name":"Codestral 22b Instruct V0.1","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistralai/devstral-2-123b-instruct-2512":{"id":"mistralai/devstral-2-123b-instruct-2512","name":"Devstral-2-123B-Instruct-2512","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"Ministral 3 14B Instruct 2512","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistralai/mistral-7b-instruct-v03":{"id":"mistralai/mistral-7b-instruct-v03","name":"Mistral-7B-Instruct-v0.3","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":65536},"mistralai/mistral-large-2-instruct":{"id":"mistralai/mistral-large-2-instruct","name":"Mistral Large 2 Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistralai/mistral-large-3-675b-instruct-2512":{"id":"mistralai/mistral-large-3-675b-instruct-2512","name":"Mistral Large 3 675B Instruct 2512","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistralai/mistral-medium-3.5-128b":{"id":"mistralai/mistral-medium-3.5-128b","name":"Mistral Medium 3.5 128B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/mistral-nemotron":{"id":"mistralai/mistral-nemotron","name":"mistral-nemotron","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"mistralai/mistral-small-3.1-24b-instruct-2503":{"id":"mistralai/mistral-small-3.1-24b-instruct-2503","name":"Mistral Small 3.1 24b Instruct 2503","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"mistral-small-4-119b-2603","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":13108},"mistralai/mixtral-8x7b-instruct":{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":16384},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-instruct-0905":{"id":"moonshotai/kimi-k2-instruct-0905","name":"Kimi K2 0905","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/llama-3_3-nemotron-super-49b-v1":{"id":"nvidia/llama-3_3-nemotron-super-49b-v1","name":"Llama 3.3 Nemotron Super 49B v1","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/llama-3_3-nemotron-super-49b-v1_5":{"id":"nvidia/llama-3_3-nemotron-super-49b-v1_5","name":"Llama 3.3 Nemotron Super 49B v1.5","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/llama-3.1-nemotron-51b-instruct":{"id":"nvidia/llama-3.1-nemotron-51b-instruct","name":"Llama 3.1 Nemotron 51b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia/llama-3.1-nemotron-70b-instruct":{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"Llama 3.1 Nemotron 70b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia/llama-3.1-nemotron-ultra-253b-v1":{"id":"nvidia/llama-3.1-nemotron-ultra-253b-v1","name":"Llama-3.1-Nemotron-Ultra-253B-v1","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/llama3-chatqa-1.5-70b":{"id":"nvidia/llama3-chatqa-1.5-70b","name":"Llama3 Chatqa 1.5 70b","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia/mistral-nemo-minitron-8b-8k-instruct":{"id":"nvidia/mistral-nemo-minitron-8b-8k-instruct","name":"nvidia/mistral-nemo-minitron-8b-8k-instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":4096},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.2,"output":0.8,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":2.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-4-340b-instruct":{"id":"nvidia/nemotron-4-340b-instruct","name":"Nemotron 4 340b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"nvidia/nemotron-mini-4b-instruct":{"id":"nvidia/nemotron-mini-4b-instruct","name":"nemotron-mini-4b-instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"nvidia/nemotron-voicechat":{"id":"nvidia/nemotron-voicechat","name":"nemotron-voicechat","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"nvidia/nvidia-nemotron-nano-9b-v2":{"id":"nvidia/nvidia-nemotron-nano-9b-v2","name":"nvidia-nemotron-nano-9b-v2","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS-120B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"qwen/qwen2.5-coder-32b-instruct":{"id":"qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"qwen/qwen2.5-coder-7b-instruct":{"id":"qwen/qwen2.5-coder-7b-instruct","name":"Qwen2.5 Coder 7b Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen3-235B-A22B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":66536},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next-80B-A3B-Instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next-80B-A3B-Thinking","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"sarvamai/sarvam-m":{"id":"sarvamai/sarvam-m","name":"sarvam-m","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun-ai/step-3.7-flash":{"id":"stepfun-ai/step-3.7-flash","name":"Step 3.7 Flash","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"upstage/solar-10_7b-instruct":{"id":"upstage/solar-10_7b-instruct","name":"solar-10.7b-instruct","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm4.7":{"id":"z-ai/glm4.7","name":"GLM-4.7","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm5":{"id":"z-ai/glm5","name":"GLM5","api":"openai-completions","provider":"nvidia","baseUrl":"https://integrate.api.nvidia.com/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":202752,"maxTokens":131000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/ollama-cloud.json b/packages/ai/src/model-shards/ollama-cloud.json new file mode 100644 index 0000000000..83d30abc8b --- /dev/null +++ b/packages/ai/src/model-shards/ollama-cloud.json @@ -0,0 +1 @@ +{"gemma4:31b":{"id":"gemma4:31b","name":"Gemma 4","api":"ollama-chat","provider":"ollama-cloud","baseUrl":"https://ollama.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-oss:120b":{"id":"gpt-oss:120b","name":"GPT OSS (120B)","api":"ollama-chat","provider":"ollama-cloud","baseUrl":"https://ollama.com","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-oss:20b":{"id":"gpt-oss:20b","name":"GPT OSS (20B)","api":"ollama-chat","provider":"ollama-cloud","baseUrl":"https://ollama.com","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3-next:80b":{"id":"qwen3-next:80b","name":"Qwen 3 Next (80B)","api":"ollama-chat","provider":"ollama-cloud","baseUrl":"https://ollama.com","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/openai-codex.json b/packages/ai/src/model-shards/openai-codex.json new file mode 100644 index 0000000000..9a87b6eba6 --- /dev/null +++ b/packages/ai/src/model-shards/openai-codex.json @@ -0,0 +1 @@ +{"codex-auto-review":{"id":"codex-auto-review","name":"OpenAI code Auto Review","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":43,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"preferWebsockets":true,"priority":16,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-OpenAI code","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":15,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5-codex-mini":{"id":"gpt-5-codex-mini","name":"gpt-5-openai-code-mini","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":20,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.13,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"preferWebsockets":true,"priority":12,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":11,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 OpenAI code Max","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":10,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 OpenAI code mini","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":19,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":29,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":8,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":25,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 OpenAI code Spark","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"preferWebsockets":true,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"contextPromotionTarget":"openai-codex/gpt-5.5","thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":0,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":1,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":2,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":7,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh","defaultLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":3,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":0.4,"output":1.8,"cacheRead":0.04,"cacheWrite":0.5}}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":1,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":10,"output":45,"cacheRead":1,"cacheWrite":12.5}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-codex-responses","provider":"openai-codex","baseUrl":"https://chatgpt.com/backend-api","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":272000,"maxTokens":128000,"preferWebsockets":true,"priority":2,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":4,"output":18,"cacheRead":0.4,"cacheWrite":5}}},"gpt-image-2":{"id":"gpt-image-2","name":"GPT Image 2","reasoning":false,"input":["text"],"output":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"api":"openai-codex-responses","provider":"openai-codex","baseUrl":""}} diff --git a/packages/ai/src/model-shards/openai.json b/packages/ai/src/model-shards/openai.json new file mode 100644 index 0000000000..09e977c7e9 --- /dev/null +++ b/packages/ai/src/model-shards/openai.json @@ -0,0 +1 @@ +{"codex-mini-latest":{"id":"codex-mini-latest","name":"OpenAI code Mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text"],"cost":{"input":1.5,"output":6,"cacheRead":0.375,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-4":{"id":"gpt-4","name":"GPT-4","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text"],"cost":{"input":30,"output":60,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":1.6,"cacheRead":0.1,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-4o-2024-05-13":{"id":"gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":5,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"gpt-4o-2024-08-06":{"id":"gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-4o-2024-11-20":{"id":"gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5-chat-latest":{"id":"gpt-5-chat-latest","name":"GPT-5 Chat Latest","api":"openai-responses","baseUrl":"","provider":"openai","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-OpenAI code","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":0.05,"output":0.4,"cacheRead":0.005,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":120,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":272000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"GPT-5.1 Chat","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 OpenAI code Max","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 OpenAI code mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"},"applyPatchToolType":"freeform"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"GPT-5.2 Chat","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"GPT-5.2 Pro","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":21,"output":168,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat (latest)","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":false,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 OpenAI code Spark","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform","contextPromotionTarget":"openai/gpt-5.5"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"applyPatchToolType":"freeform"},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.6":{"id":"gpt-5.6","name":"GPT-5.6","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":10,"output":45,"cacheRead":1,"cacheWrite":12.5}}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":0.4,"output":1.8,"cacheRead":0.04,"cacheWrite":0.5}}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":10,"output":45,"cacheRead":1,"cacheWrite":12.5}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"},"applyPatchToolType":"freeform","longContextPricing":{"threshold":272000,"cost":{"input":4,"output":18,"cacheRead":0.4,"cacheWrite":5}}},"gpt-image-2":{"id":"gpt-image-2","name":"GPT Image 2","reasoning":false,"input":["text"],"output":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"api":"openai-responses","provider":"openai","baseUrl":""},"gpt-realtime-2.1":{"id":"gpt-realtime-2.1","name":"GPT-Realtime-2.1","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":4,"output":24,"cacheRead":0.4,"cacheWrite":0},"contextWindow":128000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o1":{"id":"o1","name":"o1","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":60,"cacheRead":7.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o1-pro":{"id":"o1-pro","name":"o1-pro","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":150,"output":600,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o3":{"id":"o3","name":"o3","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o3-deep-research":{"id":"o3-deep-research","name":"o3-deep-research","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":40,"cacheRead":2.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o3-mini":{"id":"o3-mini","name":"o3-mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o3-pro":{"id":"o3-pro","name":"o3-pro","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":20,"output":80,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o4-mini":{"id":"o4-mini","name":"o4-mini","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"o4-mini-deep-research":{"id":"o4-mini-deep-research","name":"o4-mini-deep-research","api":"openai-responses","provider":"openai","baseUrl":"","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/opencode-go.json b/packages/ai/src/model-shards/opencode-go.json new file mode 100644 index 0000000000..2308a4f032 --- /dev/null +++ b/packages/ai/src/model-shards/opencode-go.json @@ -0,0 +1 @@ +{"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"},"compat":{"supportsToolChoice":false,"reasoningContentField":"reasoning_content","requiresReasoningContentForToolCalls":true}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.74,"output":3.48,"cacheRead":0.0145,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"},"compat":{"supportsToolChoice":false,"reasoningContentField":"reasoning_content","requiresReasoningContentForToolCalls":true}},"glm-5":{"id":"glm-5","name":"GLM-5","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"hy3-preview":{"id":"hy3-preview","name":"Hy3 preview","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.066,"output":0.26,"cacheRead":0.029,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.9,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.2,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3 (2x usage)","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.08,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.74,"output":3.48,"cacheRead":0.0145,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax M2.5","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax M2.7","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax M3","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text"],"cost":{"input":2.5,"output":7.5,"cacheRead":0.5,"cacheWrite":3.125},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":1.2,"output":4.8,"cacheRead":0.12,"cacheWrite":1.5},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/opencode-zen.json b/packages/ai/src/model-shards/opencode-zen.json new file mode 100644 index 0000000000..b40730e644 --- /dev/null +++ b/packages/ai/src/model-shards/opencode-zen.json @@ -0,0 +1 @@ +{"big-pickle":{"id":"big-pickle","name":"Big Pickle","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-3-5-haiku":{"id":"claude-3-5-haiku","name":"Anthropic Haiku 3.5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"claude-fable-5":{"id":"claude-fable-5","name":"Anthropic Fable 5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"xhigh"}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Anthropic Haiku 4.5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Anthropic Opus 4.1","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Anthropic Opus 4.5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Anthropic Opus 4.6","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Anthropic Opus 4.7","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Anthropic Opus 4.8","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Anthropic Sonnet 4","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Anthropic Sonnet 4.5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Anthropic Sonnet 4.6","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Anthropic Sonnet 5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-v4-flash-free":{"id":"deepseek-v4-flash-free","name":"DeepSeek V4 Flash Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.74,"output":3.84,"cacheRead":0.145,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"google-generative-ai","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro":{"id":"gemini-3-pro","name":"Gemini 3 Pro","api":"google-generative-ai","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","api":"google-generative-ai","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"google-generative-ai","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","api":"google-generative-ai","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","api":"google-generative-ai","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"google-level","minLevel":"minimal","maxLevel":"high"}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0.1,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0.1,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5":{"id":"glm-5","name":"GLM-5","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5 OpenAI code","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.05,"output":0.4,"cacheRead":0.005,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 OpenAI code Max","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 OpenAI code Mini","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 OpenAI code Spark","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"},"contextPromotionTarget":"opencode-zen/gpt-5.5"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"hy3-preview-free":{"id":"hy3-preview-free","name":"Hy3 preview Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2.5,"cacheRead":0.4,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.4,"output":2.5,"cacheRead":0.4,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0.08,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"laguna-s-2.1-free":{"id":"laguna-s-2.1-free","name":"Laguna S 2.1 Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"ling-2.6-flash-free":{"id":"ling-2.6-flash-free","name":"Ling 2.6 Flash Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262100,"maxTokens":32800},"mimo-v2-flash-free":{"id":"mimo-v2-flash-free","name":"MiMo V2 Flash Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2-omni-free":{"id":"mimo-v2-omni-free","name":"MiMo V2 Omni Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2-pro-free":{"id":"mimo-v2-pro-free","name":"MiMo V2 Pro Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mimo-v2.5-free":{"id":"mimo-v2.5-free","name":"MiMo V2.5 Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax M2.1","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.1,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.5-free":{"id":"minimax-m2.5-free","name":"MiniMax M2.5 Free","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nemotron-3-super-free":{"id":"nemotron-3-super-free","name":"Nemotron 3 Super Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"nemotron-3-ultra-free":{"id":"nemotron-3-ultra-free","name":"Nemotron 3 Ultra Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"north-mini-code-free":{"id":"north-mini-code-free","name":"North Mini Code Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.625},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"qwen3.6-plus-free":{"id":"qwen3.6-plus-free","name":"Qwen3.6 Plus Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"ring-2.6-1t-free":{"id":"ring-2.6-1t-free","name":"Ring 2.6 1T Free","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":66000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"trinity-large-preview-free":{"id":"trinity-large-preview-free","name":"Trinity Large Preview","api":"openai-completions","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"claude-opus-5":{"id":"claude-opus-5","name":"Anthropic Opus 5","api":"anthropic-messages","provider":"opencode-zen","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}}} diff --git a/packages/ai/src/model-shards/opencode.json b/packages/ai/src/model-shards/opencode.json new file mode 100644 index 0000000000..1770d3ffac --- /dev/null +++ b/packages/ai/src/model-shards/opencode.json @@ -0,0 +1 @@ +{"glm-5-free":{"id":"glm-5-free","name":"GLM-5 Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 OpenAI code Spark","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2.5-free":{"id":"kimi-k2.5-free","name":"Kimi K2.5 Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/opengateway.json b/packages/ai/src/model-shards/opengateway.json new file mode 100644 index 0000000000..52d3495087 --- /dev/null +++ b/packages/ai/src/model-shards/opengateway.json @@ -0,0 +1 @@ +{"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o (OpenGateway)","api":"openai-completions","provider":"opengateway","baseUrl":"https://apis.opengateway.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (OpenGateway)","api":"openai-completions","provider":"opengateway","baseUrl":"https://apis.opengateway.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro (OpenGateway)","api":"openai-completions","provider":"opengateway","baseUrl":"https://apis.opengateway.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/openrouter.json b/packages/ai/src/model-shards/openrouter.json new file mode 100644 index 0000000000..9c53ce6195 --- /dev/null +++ b/packages/ai/src/model-shards/openrouter.json @@ -0,0 +1 @@ +{"~anthropic/claude-fable-latest":{"id":"~anthropic/claude-fable-latest","name":"Anthropic: Anthropic Fable Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~anthropic/claude-haiku-latest":{"id":"~anthropic/claude-haiku-latest","name":"Anthropic Anthropic Haiku Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.09999999999999999,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~anthropic/claude-opus-latest":{"id":"~anthropic/claude-opus-latest","name":"Anthropic: Anthropic Opus Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~anthropic/claude-sonnet-latest":{"id":"~anthropic/claude-sonnet-latest","name":"Anthropic Anthropic Sonnet Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.19999999999999998,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~google/gemini-flash-latest":{"id":"~google/gemini-flash-latest","name":"Google Gemini Flash Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~google/gemini-pro-latest":{"id":"~google/gemini-pro-latest","name":"Google Gemini Pro Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~moonshotai/kimi-latest":{"id":"~moonshotai/kimi-latest","name":"MoonshotAI Kimi Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~openai/gpt-latest":{"id":"~openai/gpt-latest","name":"OpenAI GPT Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~openai/gpt-mini-latest":{"id":"~openai/gpt-mini-latest","name":"OpenAI GPT Mini Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"~x-ai/grok-latest":{"id":"~x-ai/grok-latest","name":"xAI: Grok Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"ai21/jamba-large-1.7":{"id":"ai21/jamba-large-1.7","name":"AI21: Jamba Large 1.7","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2,"output":8,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":4096},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"AionLabs: Aion-2.0","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.7999999999999999,"output":1.5999999999999999,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"AionLabs: Aion-3.0","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":3,"output":6,"cacheRead":0.75,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"AionLabs: Aion-3.0-Mini","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.7,"output":1.4,"cacheRead":0.18,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"alibaba/tongyi-deepresearch-30b-a3b":{"id":"alibaba/tongyi-deepresearch-30b-a3b","name":"Tongyi DeepResearch 30B A3B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.09,"output":0.44999999999999996,"cacheRead":0.09,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"allenai/olmo-3.1-32b-instruct":{"id":"allenai/olmo-3.1-32b-instruct","name":"AllenAI: Olmo 3.1 32B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":16384},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon: Nova 2 Lite","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65535,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.06,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":300000,"maxTokens":5120,"compat":{"supportsToolChoice":false}},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.035,"output":0.14,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":5120,"compat":{"supportsToolChoice":false}},"amazon/nova-premier-v1":{"id":"amazon/nova-premier-v1","name":"Amazon: Nova Premier 1.0","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":12.5,"cacheRead":0.625,"cacheWrite":0},"contextWindow":1000000,"maxTokens":32000,"compat":{"supportsToolChoice":false}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.7999999999999999,"output":3.1999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":300000,"maxTokens":5120,"compat":{"supportsToolChoice":false}},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Anthropic Haiku 3","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.25,"cacheRead":0.03,"cacheWrite":0.3},"contextWindow":200000,"maxTokens":4096},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Anthropic 3.5 Haiku","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.7999999999999999,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.5-sonnet":{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic Sonnet 3.5 v2","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":6,"output":30,"cacheRead":0.6,"cacheWrite":7.5},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic 3.7 Sonnet","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-3.7-sonnet:thinking":{"id":"anthropic/claude-3.7-sonnet:thinking","name":"Anthropic: Anthropic 3.7 Sonnet (thinking)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Anthropic Fable 5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Anthropic Haiku 4.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.09999999999999999,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic Opus 4 (latest)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Anthropic Opus 4.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Anthropic Opus 4.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Anthropic Opus 4.6","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.6-fast":{"id":"anthropic/claude-opus-4.6-fast","name":"Anthropic: Anthropic Opus 4.6 (Fast)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":150,"cacheRead":3,"cacheWrite":37.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Anthropic Opus 4.7","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.7-fast":{"id":"anthropic/claude-opus-4.7-fast","name":"Anthropic: Anthropic Opus 4.7 (Fast)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":150,"cacheRead":3,"cacheWrite":37.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Anthropic Opus 4.8","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-4.8-fast":{"id":"anthropic/claude-opus-4.8-fast","name":"Anthropic: Anthropic Opus 4.8 (Fast)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic Sonnet 4","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Anthropic Sonnet 4.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Anthropic Sonnet 5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.19999999999999998,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"arcee-ai/trinity-large-preview":{"id":"arcee-ai/trinity-large-preview","name":"Arcee AI: Trinity Large Preview","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.44999999999999996,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":8888,"compat":{"supportsToolChoice":false}},"arcee-ai/trinity-large-preview:free":{"id":"arcee-ai/trinity-large-preview:free","name":"Arcee AI: Trinity Large Preview (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":8888,"compat":{"supportsToolChoice":false}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Arcee AI: Trinity Large Thinking","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.7999999999999999,"cacheRead":0.06,"cacheWrite":0},"contextWindow":262144,"maxTokens":80000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"arcee-ai/trinity-large-thinking:free":{"id":"arcee-ai/trinity-large-thinking:free","name":"Arcee AI: Trinity Large Thinking (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":80000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"arcee-ai/trinity-mini":{"id":"arcee-ai/trinity-mini","name":"Arcee AI: Trinity Mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.045,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"arcee-ai/trinity-mini:free":{"id":"arcee-ai/trinity-mini:free","name":"Arcee AI: Trinity Mini (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"arcee-ai/virtuoso-large":{"id":"arcee-ai/virtuoso-large","name":"Arcee AI: Virtuoso Large","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.75,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":64000},"auto":{"id":"auto","name":"Auto","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"baidu/cobuddy:free":{"id":"baidu/cobuddy:free","name":"Baidu Qianfan: CoBuddy (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"compat":{"supportsToolChoice":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"baidu/ernie-4.5-21b-a3b":{"id":"baidu/ernie-4.5-21b-a3b","name":"Baidu: ERNIE 4.5 21B A3B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.07,"output":0.28,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8000},"baidu/ernie-4.5-vl-28b-a3b":{"id":"baidu/ernie-4.5-vl-28b-a3b","name":"Baidu: ERNIE 4.5 VL 28B A3B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.56,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"bytedance-seed/seed-1.6":{"id":"bytedance-seed/seed-1.6","name":"ByteDance Seed: Seed 1.6","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"bytedance-seed/seed-1.6-flash":{"id":"bytedance-seed/seed-1.6-flash","name":"ByteDance Seed: Seed 1.6 Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"ByteDance Seed: Seed-2.0-Lite","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"bytedance-seed/seed-2.0-mini":{"id":"bytedance-seed/seed-2.0-mini","name":"ByteDance Seed: Seed-2.0-Mini","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Cohere: Command R (08-2024)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+ (08-2024)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"cohere/north-mini-code:free":{"id":"cohere/north-mini-code:free","name":"Cohere: North Mini Code (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek-V3.2 (Non-thinking Mode)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.20020000000000002,"output":0.8000999999999999,"cacheRead":0.15,"cacheWrite":0},"contextWindow":163840,"maxTokens":16000},"deepseek/deepseek-chat-v3-0324":{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek: DeepSeek V3 0324","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.27,"output":1.12,"cacheRead":0.135,"cacheWrite":0},"contextWindow":163840,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek: DeepSeek V3.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.95,"cacheRead":0.13,"cacheWrite":0},"contextWindow":163840,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek: R1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.7,"output":2.5,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":16000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek: R1 0528","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":2.1500000000000004,"cacheRead":0.35,"cacheWrite":0},"contextWindow":163840,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek: DeepSeek V3.1 Terminus","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.27,"output":1,"cacheRead":0.135,"cacheWrite":0},"contextWindow":163840,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v3.1-terminus:exacto":{"id":"deepseek/deepseek-v3.1-terminus:exacto","name":"DeepSeek: DeepSeek V3.1 Terminus (exacto)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.21,"output":0.7899999999999999,"cacheRead":0.16799999999999998,"cacheWrite":0},"contextWindow":163840,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.26899999999999996,"output":0.39999999999999997,"cacheRead":0.13449999999999998,"cacheWrite":0},"contextWindow":163840,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek-V3.2-Exp","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.27,"output":0.41,"cacheRead":0,"cacheWrite":0},"contextWindow":163840,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.09380000000000001,"output":0.18760000000000002,"cacheRead":0.01876,"cacheWrite":0},"contextWindow":1048576,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v4-flash:free":{"id":"deepseek/deepseek-v4-flash:free","name":"DeepSeek: DeepSeek V4 Flash (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"contextWindow":1048576,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"essentialai/rnj-1-instruct":{"id":"essentialai/rnj-1-instruct","name":"EssentialAI: Rnj 1 Instruct","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":8888},"google/gemini-2.0-flash-001":{"id":"google/gemini-2.0-flash-001","name":"Google: Gemini 2.0 Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.024999999999999998,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":8192},"google/gemini-2.0-flash-lite-001":{"id":"google/gemini-2.0-flash-lite-001","name":"Google: Gemini 2.0 Flash Lite","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.01,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65535},"google/gemini-2.5-flash-lite-preview-09-2025":{"id":"google/gemini-2.5-flash-lite-preview-09-2025","name":"Google: Gemini 2.5 Flash Lite Preview 09-2025","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.01,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-preview-09-2025":{"id":"google/gemini-2.5-flash-preview-09-2025","name":"Google: Gemini 2.5 Flash Preview 09-2025","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-pro-preview":{"id":"google/gemini-2.5-pro-preview","name":"Google: Gemini 2.5 Pro Preview 06-05","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-pro-preview-05-06":{"id":"google/gemini-2.5-pro-preview-05-06","name":"Google: Gemini 2.5 Pro Preview 05-06","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.049999999999999996,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65535,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Google: Nano Banana Pro (Gemini 3 Pro Image)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.024999999999999998,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.024999999999999998,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Google: Gemini 3.1 Pro Preview Custom Tools","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0.375},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Google: Gemini 3.5 Flash-Lite","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Google: Gemini 3.6 Flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0.08333333333333334},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Google: Gemma 3 12B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.049999999999999996,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Google: Gemma 3 27B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.015,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemma-3-27b-it:free":{"id":"google/gemma-3-27b-it:free","name":"Google: Gemma 3 27B (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Google: Gemma 4 26B A4B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.07,"output":0.33999999999999997,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemma-4-26b-a4b-it:free":{"id":"google/gemma-4-26b-a4b-it:free","name":"Google: Gemma 4 26B A4B (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.12,"output":0.37,"cacheRead":0.09,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemma-4-31b-it:free":{"id":"google/gemma-4-31b-it:free","name":"Google: Gemma 4 31B (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"IBM: Granite 4.1 8B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.09999999999999999,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"inception/mercury":{"id":"inception/mercury","name":"Inception: Mercury","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":0.75,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":128000,"maxTokens":32000},"inception/mercury-2":{"id":"inception/mercury-2","name":"Inception: Mercury 2","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.75,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":128000,"maxTokens":50000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"inception/mercury-coder":{"id":"inception/mercury-coder","name":"Inception: Mercury Coder","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":0.75,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":128000,"maxTokens":32000},"inclusionai/ling-2.6-1t":{"id":"inclusionai/ling-2.6-1t","name":"inclusionAI: Ling-2.6-1T","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.075,"output":0.625,"cacheRead":0.015,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"inclusionai/ling-2.6-1t:free":{"id":"inclusionai/ling-2.6-1t:free","name":"inclusionAI: Ling-2.6-1T (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"inclusionai/ling-2.6-flash":{"id":"inclusionai/ling-2.6-flash","name":"inclusionAI: Ling-2.6-flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.01,"output":0.03,"cacheRead":0.002,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"inclusionai/ling-2.6-flash:free":{"id":"inclusionai/ling-2.6-flash:free","name":"inclusionAI: Ling-2.6-flash (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"inclusionAI: Ring-2.6-1T","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.625,"cacheRead":0.015,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"inclusionai/ring-2.6-1t:free":{"id":"inclusionai/ring-2.6-1t:free","name":"inclusionAI: Ring-2.6-1T (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"kwaipilot/kat-coder-air-v2.5":{"id":"kwaipilot/kat-coder-air-v2.5","name":"Kwaipilot: KAT-Coder-Air V2.5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.03,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000},"kwaipilot/kat-coder-pro":{"id":"kwaipilot/kat-coder-pro","name":"Kwaipilot: KAT-Coder-Pro V1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.207,"output":0.828,"cacheRead":0.0414,"cacheWrite":0},"contextWindow":256000,"maxTokens":128000},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"Kwaipilot: KAT-Coder-Pro V2","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":262144,"maxTokens":80000},"kwaipilot/kat-coder-pro-v2.5":{"id":"kwaipilot/kat-coder-pro-v2.5","name":"Kwaipilot: KAT-Coder-Pro V2.5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.74,"output":2.96,"cacheRead":0.15,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000},"liquid/lfm-2.5-1.2b-thinking:free":{"id":"liquid/lfm-2.5-1.2b-thinking:free","name":"LiquidAI: LFM2.5-1.2B-Thinking (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"meituan/longcat-2.0":{"id":"meituan/longcat-2.0","name":"Meituan: LongCat 2.0","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.006,"cacheWrite":0},"contextWindow":1048756,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"meituan/longcat-flash-chat":{"id":"meituan/longcat-flash-chat","name":"Meituan: LongCat Flash Chat","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":0.7999999999999999,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"meta-llama/llama-3-8b-instruct":{"id":"meta-llama/llama-3-8b-instruct","name":"Meta: Llama 3 8B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.03,"output":0.04,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":16384},"meta-llama/llama-3.1-405b-instruct":{"id":"meta-llama/llama-3.1-405b-instruct","name":"Meta: Llama 3.1 405B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":4,"output":4,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":8888},"meta-llama/llama-3.1-70b-instruct":{"id":"meta-llama/llama-3.1-70b-instruct","name":"Meta: Llama 3.1 70B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.39999999999999997,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Meta: Llama 3.1 8B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.08,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Meta: Llama 3.3 70B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.13,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":128000},"meta-llama/llama-3.3-70b-instruct:free":{"id":"meta-llama/llama-3.3-70b-instruct:free","name":"Meta: Llama 3.3 70B Instruct (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.7999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":16384},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":1310720,"maxTokens":16384},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Meta: Muse Spark 1.1","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m1":{"id":"minimax/minimax-m1","name":"MiniMax: MiniMax M1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.55,"output":2.2,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":40000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.8999999999999999,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":204800,"maxTokens":196608,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m2.5:free":{"id":"minimax/minimax-m2.5:free","name":"MiniMax: MiniMax M2.5 (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192,"compat":{"supportsToolChoice":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":1,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1048576,"maxTokens":512000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Mistral: Codestral 2508","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.8999999999999999,"cacheRead":0.03,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Mistral: Devstral 2 2512","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"mistralai/devstral-medium":{"id":"mistralai/devstral-medium","name":"Mistral: Devstral Medium","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/devstral-small":{"id":"mistralai/devstral-small","name":"Mistral: Devstral Small 1.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Mistral: Ministral 3 14B 2512","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.19999999999999998,"cacheRead":0.02,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Mistral: Ministral 3 3B 2512","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.09999999999999999,"cacheRead":0.01,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Mistral: Ministral 3 8B 2512","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"mistralai/mistral-large-2407":{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/mistral-large-2411":{"id":"mistralai/mistral-large-2411","name":"Mistral Large 2411","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral: Mistral Large 3 2512","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral: Mistral Medium 3","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/mistral-medium-3-5":{"id":"mistralai/mistral-medium-3-5","name":"Mistral: Mistral Medium 3.5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral: Mistral Medium 3.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral: Mistral Nemo","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.019000000000000003,"output":0.03,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral: Saba","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":0.6,"cacheRead":0.02,"cacheWrite":0},"contextWindow":32768,"maxTokens":8888},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral: Mistral Small 3","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.08,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":16384},"mistralai/mistral-small-2603":{"id":"mistralai/mistral-small-2603","name":"Mistral: Mistral Small 4","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral: Mistral Small 3.1 24B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.03,"output":0.11,"cacheRead":0.015,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"mistralai/mistral-small-3.1-24b-instruct:free":{"id":"mistralai/mistral-small-3.1-24b-instruct:free","name":"Mistral: Mistral Small 3.1 24B (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral: Mistral Small 3.2 24B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888},"mistralai/mistral-small-creative":{"id":"mistralai/mistral-small-creative","name":"Mistral: Mistral Small Creative","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":32768,"maxTokens":8888},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":65536,"maxTokens":13108},"mistralai/mixtral-8x7b-instruct":{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.54,"output":0.54,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":16384},"mistralai/pixtral-large-2411":{"id":"mistralai/pixtral-large-2411","name":"Mistral: Pixtral Large 2411","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"mistralai/voxtral-small-24b-2507":{"id":"mistralai/voxtral-small-24b-2507","name":"Mistral: Voxtral Small 24B 2507","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"MoonshotAI: Kimi K2 0711","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.5700000000000001,"output":2.3,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":100352},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":100352},"moonshotai/kimi-k2-0905:exacto":{"id":"moonshotai/kimi-k2-0905:exacto","name":"MoonshotAI: Kimi K2 0905 (exacto)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":100352,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.5700000000000001,"output":2.8499999999999996,"cacheRead":0.095,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.684,"output":3.42,"cacheRead":0.144,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"moonshotai/kimi-k2.6:free":{"id":"moonshotai/kimi-k2.6:free","name":"MoonshotAI: Kimi K2.6 (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.82,"output":3.75,"cacheRead":0.16,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nex-agi/deepseek-v3.1-nex-n1":{"id":"nex-agi/deepseek-v3.1-nex-n1","name":"Nex AGI: DeepSeek V3.1 Nex N1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.135,"output":0.5,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":163840},"nex-agi/nex-n2-mini":{"id":"nex-agi/nex-n2-mini","name":"Nex AGI: Nex-N2-Mini","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.024999999999999998,"output":0.09999999999999999,"cacheRead":0.0025,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nex-agi/nex-n2-pro":{"id":"nex-agi/nex-n2-pro","name":"Nex AGI: Nex-N2-Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nex-agi/nex-n2-pro:free":{"id":"nex-agi/nex-n2-pro:free","name":"Nex AGI: Nex-N2-Pro (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nousresearch/deephermes-3-mistral-24b-preview":{"id":"nousresearch/deephermes-3-mistral-24b-preview","name":"Nous: DeepHermes 3 Mistral 24B Preview","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.02,"output":0.09999999999999999,"cacheRead":0.01,"cacheWrite":0},"contextWindow":32768,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nousresearch/hermes-4-70b":{"id":"nousresearch/hermes-4-70b","name":"Nous: Hermes 4 70B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.11,"output":0.38,"cacheRead":0.055,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/llama-3.1-nemotron-70b-instruct":{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"Llama 3.1 Nemotron 70b Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":1.2,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{"id":"nvidia/llama-3.3-nemotron-super-49b-v1.5","name":"NVIDIA: Llama 3.3 Nemotron Super 49B V1.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.39999999999999997,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.19999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":228000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-nano-30b-a3b:free":{"id":"nvidia/nemotron-3-nano-30b-a3b:free","name":"NVIDIA: Nemotron 3 Nano 30B A3B (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","name":"NVIDIA: Nemotron 3 Nano Omni (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.08,"output":0.44999999999999996,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":1000000,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-super-120b-a12b:free":{"id":"nvidia/nemotron-3-super-120b-a12b:free","name":"NVIDIA: Nemotron 3 Super (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":3.5999999999999996,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":512288,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-3-ultra-550b-a55b:free":{"id":"nvidia/nemotron-3-ultra-550b-a55b:free","name":"NVIDIA: Nemotron 3 Ultra (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-nano-12b-v2-vl:free":{"id":"nvidia/nemotron-nano-12b-v2-vl:free","name":"NVIDIA: Nemotron Nano 12B 2 VL (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"NVIDIA: Nemotron Nano 9B V2","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.04,"output":0.16,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"nvidia/nemotron-nano-9b-v2:free":{"id":"nvidia/nemotron-nano-9b-v2:free","name":"NVIDIA: Nemotron Nano 9B V2 (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"OpenAI: GPT-3.5 Turbo","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":16385,"maxTokens":4096},"openai/gpt-3.5-turbo-0613":{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":1,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":4095,"maxTokens":4096},"openai/gpt-3.5-turbo-16k":{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":3,"output":4,"cacheRead":0,"cacheWrite":0},"contextWindow":16385,"maxTokens":4096},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":30,"output":60,"cacheRead":0,"cacheWrite":0},"contextWindow":8191,"maxTokens":8192},"openai/gpt-4-0314":{"id":"openai/gpt-4-0314","name":"OpenAI: GPT-4 (older v0314)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":30,"output":60,"cacheRead":0,"cacheWrite":0},"contextWindow":8191,"maxTokens":4096},"openai/gpt-4-1106-preview":{"id":"openai/gpt-4-1106-preview","name":"OpenAI: GPT-4 Turbo (older v1106)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4-turbo-preview":{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"OpenAI: GPT-4.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"OpenAI: GPT-4.1 Mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"OpenAI: GPT-4.1 Nano","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"OpenAI: GPT-4o (2024-05-13)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":5,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"OpenAI: GPT-4o (2024-08-06)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"OpenAI: GPT-4o (2024-11-20)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-audio-preview":{"id":"openai/gpt-4o-audio-preview","name":"OpenAI: GPT-4o Audio","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini-2024-07-18":{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o:extended":{"id":"openai/gpt-4o:extended","name":"OpenAI: GPT-4o (extended)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":6,"output":18,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 OpenAI code","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-image":{"id":"openai/gpt-5-image","name":"OpenAI: GPT-5 Image","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-image-mini":{"id":"openai/gpt-5-image-mini","name":"OpenAI: GPT-5 Image Mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":2,"cacheRead":0.25,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"OpenAI: GPT-5 Mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"OpenAI: GPT-5 Nano","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.049999999999999996,"output":0.39999999999999997,"cacheRead":0.005,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"OpenAI: GPT-5 Pro","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":120,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"OpenAI: GPT-5.1-OpenAI code-Max","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-OpenAI code-Mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":272000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"OpenAI: GPT-5.2 Chat","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":21,"output":168,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.09999999999999999,"cacheWrite":1.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"OpenAI: GPT-5.6 Luna Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.09999999999999999,"cacheWrite":1.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"OpenAI: GPT-5.6 Sol Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"OpenAI: GPT-5.6 Terra Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-audio":{"id":"openai/gpt-audio","name":"OpenAI: GPT Audio","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-audio-mini":{"id":"openai/gpt-audio-mini","name":"OpenAI: GPT Audio Mini","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"OpenAI: GPT Chat Latest","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.037,"output":0.16999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-oss-120b:exacto":{"id":"openai/gpt-oss-120b:exacto","name":"OpenAI: gpt-oss-120b (exacto)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.039,"output":0.19,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-oss-120b:free":{"id":"openai/gpt-oss-120b:free","name":"OpenAI: gpt-oss-120b (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.03,"output":0.13,"cacheRead":0.03,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-oss-20b:free":{"id":"openai/gpt-oss-20b:free","name":"OpenAI: gpt-oss-20b (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.0375,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o1":{"id":"openai/o1","name":"o1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":60,"cacheRead":7.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o3":{"id":"openai/o3","name":"o3","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"OpenAI: o3 Deep Research","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":40,"cacheRead":2.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":20,"output":80,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o4-mini-deep-research":{"id":"openai/o4-mini-deep-research","name":"OpenAI: o4 Mini Deep Research","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/aurora-alpha":{"id":"openrouter/aurora-alpha","name":"Aurora Alpha","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":50000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/auto":{"id":"openrouter/auto","name":"Auto Router","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":-1000000,"output":-1000000,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/auto-beta":{"id":"openrouter/auto-beta","name":"Auto Router (Beta)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":-1000000,"output":-1000000,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/elephant-alpha":{"id":"openrouter/elephant-alpha","name":"Elephant","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"openrouter/free":{"id":"openrouter/free","name":"Free Models Router","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/healer-alpha":{"id":"openrouter/healer-alpha","name":"Healer Alpha","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/hunter-alpha":{"id":"openrouter/hunter-alpha","name":"Hunter Alpha","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openrouter/owl-alpha":{"id":"openrouter/owl-alpha","name":"Owl Alpha","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048756,"maxTokens":262144,"compat":{"supportsToolChoice":false}},"poolside/laguna-m.1":{"id":"poolside/laguna-m.1","name":"Poolside: Laguna M.1","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":0.39999999999999997,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-m.1:free":{"id":"poolside/laguna-m.1:free","name":"Poolside: Laguna M.1 (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Poolside: Laguna S 2.1","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.19999999999999998,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-s-2.1:free":{"id":"poolside/laguna-s-2.1:free","name":"Poolside: Laguna S 2.1 (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Poolside: Laguna XS 2.1","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.12,"cacheRead":0.03,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-xs-2.1:free":{"id":"poolside/laguna-xs-2.1:free","name":"Poolside: Laguna XS 2.1 (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-xs.2":{"id":"poolside/laguna-xs.2","name":"Poolside: Laguna XS.2","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.19999999999999998,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"poolside/laguna-xs.2:free":{"id":"poolside/laguna-xs.2:free","name":"Poolside: Laguna XS.2 (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"prime-intellect/intellect-3":{"id":"prime-intellect/intellect-3","name":"Prime Intellect: INTELLECT-3","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.1,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.36,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":16384},"qwen/qwen-2.5-7b-instruct":{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen: Qwen2.5 7B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.04,"output":0.09999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":32768},"qwen/qwen-max":{"id":"qwen/qwen-max","name":"Qwen: Qwen-Max","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":1.04,"output":4.16,"cacheRead":0.20800000000000002,"cacheWrite":0},"contextWindow":32768,"maxTokens":8192},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen: Qwen-Plus","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.26,"output":0.78,"cacheRead":0.052000000000000005,"cacheWrite":0.325},"contextWindow":1000000,"maxTokens":32768},"qwen/qwen-plus-2025-07-28":{"id":"qwen/qwen-plus-2025-07-28","name":"Qwen: Qwen Plus 0728","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.26,"output":0.78,"cacheRead":0,"cacheWrite":0.325},"contextWindow":1000000,"maxTokens":32768},"qwen/qwen-plus-2025-07-28:thinking":{"id":"qwen/qwen-plus-2025-07-28:thinking","name":"Qwen: Qwen Plus 0728 (thinking)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.26,"output":0.78,"cacheRead":0,"cacheWrite":0.325},"contextWindow":1000000,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen-turbo":{"id":"qwen/qwen-turbo","name":"Qwen: Qwen-Turbo","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.0325,"output":0.13,"cacheRead":0.006500000000000001,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"qwen/qwen-vl-max":{"id":"qwen/qwen-vl-max","name":"Qwen: Qwen VL Max","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.52,"output":2.08,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen: Qwen3 14B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.12,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen: Qwen3 235B A22B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.45499999999999996,"output":1.8199999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen: Qwen3 235B A22B Instruct 2507","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.09,"output":0.55,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen: Qwen3 235B A22B Thinking 2507","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":3,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen: Qwen3 30B A3B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.13,"output":0.52,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen: Qwen3 30B A3B Instruct 2507","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"qwen/qwen3-30b-a3b-thinking-2507":{"id":"qwen/qwen3-30b-a3b-thinking-2507","name":"Qwen: Qwen3 30B A3B Thinking 2507","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.13,"output":1.56,"cacheRead":0.08,"cacheWrite":0},"contextWindow":81920,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3-32B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.08,"output":0.28,"cacheRead":0.04,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-4b":{"id":"qwen/qwen3-4b","name":"Qwen: Qwen3 4B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.0715,"output":0.273,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-4b:free":{"id":"qwen/qwen3-4b:free","name":"Qwen: Qwen3 4B (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":40960,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-8b":{"id":"qwen/qwen3-8b","name":"Qwen: Qwen3 8B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.117,"output":0.45499999999999996,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen: Qwen3 Coder 480B A35B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen: Qwen3 Coder 30B A3B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.07,"output":0.27,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen: Qwen3 Coder Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.195,"output":0.975,"cacheRead":0.039,"cacheWrite":0.24375},"contextWindow":1000000,"maxTokens":65536},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen: Qwen3 Coder Next","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.11,"output":0.7999999999999999,"cacheRead":0.07,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.65,"output":3.25,"cacheRead":0.13,"cacheWrite":0.8125},"contextWindow":1000000,"maxTokens":65536},"qwen/qwen3-coder:exacto":{"id":"qwen/qwen3-coder:exacto","name":"Qwen: Qwen3 Coder 480B A35B (exacto)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.22,"output":1.7999999999999998,"cacheRead":0.022,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536},"qwen/qwen3-coder:free":{"id":"qwen/qwen3-coder:free","name":"Qwen: Qwen3 Coder 480B A35B (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":262000},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.78,"output":3.9,"cacheRead":0.156,"cacheWrite":0.975},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-max-thinking":{"id":"qwen/qwen3-max-thinking","name":"Qwen: Qwen3 Max Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.78,"output":3.9,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next-80B-A3B-Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":1.1,"cacheRead":0.07,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"qwen/qwen3-next-80b-a3b-instruct:free":{"id":"qwen/qwen3-next-80b-a3b-instruct:free","name":"Qwen: Qwen3 Next 80B A3B Instruct (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen: Qwen3 Next 80B A3B Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.0975,"output":0.78,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen: Qwen3 VL 235B A22B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.21,"output":1.9,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen: Qwen3 VL 235B A22B Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.26,"output":2.6,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen: Qwen3 VL 30B A3B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.13,"output":0.52,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"Qwen: Qwen3 VL 30B A3B Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.13,"output":1.56,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-vl-32b-instruct":{"id":"qwen/qwen3-vl-32b-instruct","name":"Qwen: Qwen3 VL 32B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.10400000000000001,"output":0.41600000000000004,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"Qwen: Qwen3 VL 8B Instruct","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text","image"],"cost":{"input":0.117,"output":0.45499999999999996,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"qwen/qwen3-vl-8b-thinking":{"id":"qwen/qwen3-vl-8b-thinking","name":"Qwen: Qwen3 VL 8B Thinking","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.117,"output":1.365,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.26,"output":2.08,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen: Qwen3.5-27B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.26,"output":2.6,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":81920,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen: Qwen3.5-35B-A3B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":1,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.39,"output":2.34,"cacheRead":0.195,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen: Qwen3.5-9B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-flash-02-23":{"id":"qwen/qwen3.5-flash-02-23","name":"Qwen: Qwen3.5-Flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.065,"output":0.26,"cacheRead":0,"cacheWrite":0.08125},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-plus-02-15":{"id":"qwen/qwen3.5-plus-02-15","name":"Qwen: Qwen3.5 Plus 2026-02-15","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.26,"output":1.56,"cacheRead":0,"cacheWrite":0.325},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-plus-20260420":{"id":"qwen/qwen3.5-plus-20260420","name":"Qwen: Qwen3.5 Plus 2026-04-20","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.7999999999999998,"cacheRead":0,"cacheWrite":0.375},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen: Qwen3.6 27B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.44999999999999996,"output":2.7,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen: Qwen3.6 35B A3B","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":1,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen: Qwen3.6 Flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1875,"output":1.125,"cacheRead":0,"cacheWrite":0.234375},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen: Qwen3.6 Max Preview","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.04,"output":6.24,"cacheRead":0,"cacheWrite":1.3},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6-Plus","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.325,"output":1.95,"cacheRead":0,"cacheWrite":0.40625},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-plus-preview:free":{"id":"qwen/qwen3.6-plus-preview:free","name":"Qwen: Qwen3.6 Plus Preview (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":32000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-plus:free":{"id":"qwen/qwen3.6-plus:free","name":"Qwen: Qwen3.6 Plus (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.475,"output":4.425,"cacheRead":0.295,"cacheWrite":1.84375},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.32,"output":1.28,"cacheRead":0.064,"cacheWrite":0.39999999999999997},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwq-32b":{"id":"qwen/qwq-32b","name":"Qwen: QwQ 32B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.58,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"reka/reka-edge":{"id":"reka/reka-edge","name":"Reka Edge","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.09999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":16384,"maxTokens":16384},"rekaai/reka-edge":{"id":"rekaai/reka-edge","name":"Reka Edge","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.09999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":16384,"maxTokens":16384},"relace/relace-search":{"id":"relace/relace-search","name":"Relace: Relace Search","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":128000},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Sakana: Fugu Ultra","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"sao10k/l3-euryale-70b":{"id":"sao10k/l3-euryale-70b","name":"Sao10k: Llama 3 Euryale 70B v2.1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":1.48,"output":1.48,"cacheRead":0,"cacheWrite":0},"contextWindow":8192,"maxTokens":8192},"sao10k/l3.1-euryale-70b":{"id":"sao10k/l3.1-euryale-70b","name":"Sao10K: Llama 3.1 Euryale 70B v2.2","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.85,"output":0.85,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.02,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"supportsToolChoice":false}},"stepfun/step-3.5-flash:free":{"id":"stepfun/step-3.5-flash:free","name":"StepFun: Step 3.5 Flash (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsToolChoice":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":1.15,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":256000,"compat":{"supportsToolChoice":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"tencent/hy3":{"id":"tencent/hy3","name":"Tencent: Hy3","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.58,"cacheRead":0.035,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.063,"output":0.21,"cacheRead":0.020999999999999998,"cacheWrite":0},"contextWindow":262144,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"tencent/hy3-preview:free":{"id":"tencent/hy3-preview:free","name":"Tencent: Hy3 preview (free)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"thedrummer/rocinante-12b":{"id":"thedrummer/rocinante-12b","name":"TheDrummer: Rocinante 12B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.16999999999999998,"output":0.43,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":32768},"thedrummer/unslopnemo-12b":{"id":"thedrummer/unslopnemo-12b","name":"TheDrummer: UnslopNemo 12B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.39999999999999997,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":32768},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Thinking Machines: Inkling","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":4.05,"cacheRead":0.16999999999999998,"cacheWrite":0},"contextWindow":524288,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"tngtech/deepseek-r1t2-chimera":{"id":"tngtech/deepseek-r1t2-chimera","name":"TNG: DeepSeek R1T2 Chimera","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.1,"cacheRead":0.15,"cacheWrite":0},"contextWindow":163840,"maxTokens":163840,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"tngtech/tng-r1t-chimera":{"id":"tngtech/tng-r1t-chimera","name":"TNG: R1T Chimera","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.85,"cacheRead":0.125,"cacheWrite":0},"contextWindow":163840,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Upstage: Solar Pro 3","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"upstage/solar-pro-3:free":{"id":"upstage/solar-pro-3:free","name":"Upstage: Solar Pro 3 (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-3":{"id":"x-ai/grok-3","name":"xAI: Grok 3","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"x-ai/grok-3-beta":{"id":"x-ai/grok-3-beta","name":"xAI: Grok 3 Beta","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"x-ai/grok-3-mini":{"id":"x-ai/grok-3-mini","name":"xAI: Grok 3 Mini","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":0.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-3-mini-beta":{"id":"x-ai/grok-3-mini-beta","name":"xAI: Grok 3 Mini Beta","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":0.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"Grok 4 Fast","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"xAI: Grok 4.20","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4.20-beta":{"id":"x-ai/grok-4.20-beta","name":"xAI: Grok 4.20 Beta","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.5,"cacheRead":0.02,"cacheWrite":0},"contextWindow":256000,"maxTokens":10000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0.08,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1050000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1050000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4-32b":{"id":"z-ai/glm-4-32b","name":"Z.ai: GLM 4 32B","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.09999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0.11,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM 4.5 Air","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.13,"output":0.85,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.5-air:free":{"id":"z-ai/glm-4.5-air:free","name":"Z.ai: GLM 4.5 Air (free)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":96000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"Z.ai: GLM 4.5V","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":1.7999999999999998,"cacheRead":0.11,"cacheWrite":0},"contextWindow":65536,"maxTokens":16384,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":2,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.6:exacto":{"id":"z-ai/glm-4.6:exacto","name":"Z.ai: GLM 4.6 (exacto)","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.44,"output":1.76,"cacheRead":0.11,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":0.8999999999999999,"cacheRead":0.055,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.39999999999999997,"output":1.75,"cacheRead":0.08,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"Z.ai: GLM 4.7 Flash","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.060500000000000005,"output":0.39999999999999997,"cacheRead":0.01,"cacheWrite":0},"contextWindow":202752,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","api":"openai-completions","baseUrl":"https://openrouter.ai/api/v1","provider":"openrouter","reasoning":true,"input":["text"],"cost":{"input":0.95,"output":2.5500000000000003,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.2,"output":4,"cacheRead":0.24,"cacheWrite":0},"contextWindow":202752,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.966,"output":3.036,"cacheRead":0.1794,"cacheWrite":0},"contextWindow":204800,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.8246,"output":2.5915999999999997,"cacheRead":0.15314,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.2,"output":4,"cacheRead":0.24,"cacheWrite":0},"contextWindow":202752,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Anthropic Opus 5","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-opus-5-fast":{"id":"anthropic/claude-opus-5-fast","name":"Anthropic Opus 5 (Fast)","api":"openai-completions","provider":"openrouter","baseUrl":"https://openrouter.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/qianfan.json b/packages/ai/src/model-shards/qianfan.json new file mode 100644 index 0000000000..70d60609f7 --- /dev/null +++ b/packages/ai/src/model-shards/qianfan.json @@ -0,0 +1 @@ +{"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","provider":"qianfan","baseUrl":"https://qianfan.baidubce.com/v2","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":98304,"maxTokens":32768}} diff --git a/packages/ai/src/model-shards/qwen-portal.json b/packages/ai/src/model-shards/qwen-portal.json new file mode 100644 index 0000000000..4a0771e6ec --- /dev/null +++ b/packages/ai/src/model-shards/qwen-portal.json @@ -0,0 +1 @@ +{"coder-model":{"id":"coder-model","name":"Qwen Coder","api":"openai-completions","provider":"qwen-portal","baseUrl":"https://portal.qwen.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"vision-model":{"id":"vision-model","name":"Qwen Vision","api":"openai-completions","provider":"qwen-portal","baseUrl":"https://portal.qwen.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192}} diff --git a/packages/ai/src/model-shards/synthetic.json b/packages/ai/src/model-shards/synthetic.json new file mode 100644 index 0000000000..960a6cefe5 --- /dev/null +++ b/packages/ai/src/model-shards/synthetic.json @@ -0,0 +1 @@ +{"hf:deepseek-ai/DeepSeek-R1-0528":{"id":"hf:deepseek-ai/DeepSeek-R1-0528","name":"deepseek-ai/DeepSeek-R1-0528","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"hf:deepseek-ai/DeepSeek-V3":{"id":"hf:deepseek-ai/DeepSeek-V3","name":"deepseek-ai/DeepSeek-V3","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"hf:deepseek-ai/DeepSeek-V3-0324":{"id":"hf:deepseek-ai/DeepSeek-V3-0324","name":"deepseek-ai/DeepSeek-V3-0324","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"hf:deepseek-ai/DeepSeek-V3.2":{"id":"hf:deepseek-ai/DeepSeek-V3.2","name":"deepseek-ai/DeepSeek-V3.2","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":162816,"maxTokens":8192},"hf:meta-llama/Llama-3.3-70B-Instruct":{"id":"hf:meta-llama/Llama-3.3-70B-Instruct","name":"meta-llama/Llama-3.3-70B-Instruct","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"hf:MiniMaxAI/MiniMax-M2.1":{"id":"hf:MiniMaxAI/MiniMax-M2.1","name":"MiniMaxAI/MiniMax-M2.1","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":8192},"hf:MiniMaxAI/MiniMax-M2.5":{"id":"hf:MiniMaxAI/MiniMax-M2.5","name":"MiniMaxAI/MiniMax-M2.5","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":191488,"maxTokens":8192},"hf:moonshotai/Kimi-K2-Instruct-0905":{"id":"hf:moonshotai/Kimi-K2-Instruct-0905","name":"moonshotai/Kimi-K2-Instruct-0905","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:moonshotai/Kimi-K2-Thinking":{"id":"hf:moonshotai/Kimi-K2-Thinking","name":"moonshotai/Kimi-K2-Thinking","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:moonshotai/Kimi-K2.5":{"id":"hf:moonshotai/Kimi-K2.5","name":"moonshotai/Kimi-K2.5","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:moonshotai/Kimi-K2.6":{"id":"hf:moonshotai/Kimi-K2.6","name":"moonshotai/Kimi-K2.6","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:nvidia/Kimi-K2.5-NVFP4":{"id":"hf:nvidia/Kimi-K2.5-NVFP4","name":"nvidia/Kimi-K2.5-NVFP4","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{"id":"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","name":"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:openai/gpt-oss-120b":{"id":"hf:openai/gpt-oss-120b","name":"openai/gpt-oss-120b","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"hf:Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"hf:Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen/Qwen3-235B-A22B-Thinking-2507","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:Qwen/Qwen3.5-397B-A17B":{"id":"hf:Qwen/Qwen3.5-397B-A17B","name":"Qwen/Qwen3.5-397B-A17B","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192},"hf:zai-org/GLM-4.7":{"id":"hf:zai-org/GLM-4.7","name":"zai-org/GLM-4.7","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":202752,"maxTokens":8192},"hf:zai-org/GLM-4.7-Flash":{"id":"hf:zai-org/GLM-4.7-Flash","name":"zai-org/GLM-4.7-Flash","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":8192},"hf:zai-org/GLM-5":{"id":"hf:zai-org/GLM-5","name":"zai-org/GLM-5","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":8192},"hf:zai-org/GLM-5.1":{"id":"hf:zai-org/GLM-5.1","name":"zai-org/GLM-5.1","api":"openai-completions","provider":"synthetic","baseUrl":"https://api.synthetic.new/openai/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":196608,"maxTokens":8192}} diff --git a/packages/ai/src/model-shards/together.json b/packages/ai/src/model-shards/together.json new file mode 100644 index 0000000000..8ac37186b0 --- /dev/null +++ b/packages/ai/src/model-shards/together.json @@ -0,0 +1 @@ +{"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek R1","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":true,"input":["text"],"cost":{"input":3,"output":7,"cacheRead":3,"cacheWrite":3},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":1.25,"cacheRead":0.6,"cacheWrite":0.6},"contextWindow":131072,"maxTokens":8192},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B Turbo","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":false,"input":["text"],"cost":{"input":0.88,"output":0.88,"cacheRead":0.88,"cacheWrite":0.88},"contextWindow":131072,"maxTokens":8192},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B 128E Instruct FP8","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.27,"output":0.85,"cacheRead":0.27,"cacheWrite":0.27},"contextWindow":20000000,"maxTokens":32768},"meta-llama/Llama-4-Scout-17B-16E-Instruct":{"id":"meta-llama/Llama-4-Scout-17B-16E-Instruct","name":"Llama 4 Scout 17B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.18,"output":0.59,"cacheRead":0.18,"cacheWrite":0.18},"contextWindow":10000000,"maxTokens":32768},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi K2-Instruct 0905","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":false,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":1,"cacheWrite":3},"contextWindow":262144,"maxTokens":8192},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":2.8,"cacheRead":0.5,"cacheWrite":2.8},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","api":"openai-completions","provider":"together","baseUrl":"https://api.together.xyz/v1","reasoning":true,"input":["text"],"cost":{"input":0.45,"output":2,"cacheRead":0.45,"cacheWrite":2},"contextWindow":202752,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/venice.json b/packages/ai/src/model-shards/venice.json new file mode 100644 index 0000000000..b9c63fdafe --- /dev/null +++ b/packages/ai/src/model-shards/venice.json @@ -0,0 +1 @@ +{"aion-labs-aion-2-0":{"id":"aion-labs-aion-2-0","name":"aion-labs-aion-2-0","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"aion-labs-aion-3-0":{"id":"aion-labs-aion-3-0","name":"aion-labs-aion-3-0","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"aion-labs-aion-3-0-mini":{"id":"aion-labs-aion-3-0-mini","name":"aion-labs-aion-3-0-mini","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"aion-labs.aion-2-0":{"id":"aion-labs.aion-2-0","name":"aion-labs.aion-2-0","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"arcee-trinity-large-thinking":{"id":"arcee-trinity-large-thinking","name":"arcee-trinity-large-thinking","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"claude-fable-5":{"id":"claude-fable-5","name":"Anthropic Fable 5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Anthropic Opus 4.5 (latest)","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":64000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Anthropic Opus 4.6","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-6-fast":{"id":"claude-opus-4-6-fast","name":"anthropic-opus-4-6-fast","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Anthropic Opus 4.7","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-7-fast":{"id":"claude-opus-4-7-fast","name":"anthropic-opus-4-7-fast","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Anthropic Opus 4.8","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-4-8-fast":{"id":"claude-opus-4-8-fast","name":"anthropic-opus-4-8-fast","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"claude-opus-45":{"id":"claude-opus-45","name":"Anthropic Opus 4.5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Anthropic Sonnet 4.5 (latest)","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":64000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Anthropic Sonnet 4.6","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-45":{"id":"claude-sonnet-45","name":"Anthropic Sonnet 4.5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Anthropic Sonnet 5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":160000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"e2ee-deepseek-v4-flash":{"id":"e2ee-deepseek-v4-flash","name":"e2ee-deepseek-v4-flash","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-gemma-3-27b-p":{"id":"e2ee-gemma-3-27b-p","name":"e2ee-gemma-3-27b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":40000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-gemma-4-26b-a4b-uncensored-p":{"id":"e2ee-gemma-4-26b-a4b-uncensored-p","name":"e2ee-gemma-4-26b-a4b-uncensored-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":64000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-gemma-4-31b":{"id":"e2ee-gemma-4-31b","name":"e2ee-gemma-4-31b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-glm-4-7-flash-p":{"id":"e2ee-glm-4-7-flash-p","name":"e2ee-glm-4-7-flash-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-glm-4-7-p":{"id":"e2ee-glm-4-7-p","name":"e2ee-glm-4-7-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-glm-5":{"id":"e2ee-glm-5","name":"e2ee-glm-5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-glm-5-1":{"id":"e2ee-glm-5-1","name":"e2ee-glm-5-1","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-glm-5-2-p":{"id":"e2ee-glm-5-2-p","name":"e2ee-glm-5-2-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":524288,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-gpt-oss-120b-p":{"id":"e2ee-gpt-oss-120b-p","name":"e2ee-gpt-oss-120b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-gpt-oss-20b-p":{"id":"e2ee-gpt-oss-20b-p","name":"e2ee-gpt-oss-20b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen-2-5-7b-p":{"id":"e2ee-qwen-2-5-7b-p","name":"e2ee-qwen-2-5-7b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen3-30b-a3b-p":{"id":"e2ee-qwen3-30b-a3b-p","name":"e2ee-qwen3-30b-a3b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen3-5-122b-a10b":{"id":"e2ee-qwen3-5-122b-a10b","name":"e2ee-qwen3-5-122b-a10b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen3-6-27b":{"id":"e2ee-qwen3-6-27b","name":"e2ee-qwen3-6-27b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen3-6-35b-a3b":{"id":"e2ee-qwen3-6-35b-a3b","name":"e2ee-qwen3-6-35b-a3b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen3-6-35b-a3b-uncensored-p":{"id":"e2ee-qwen3-6-35b-a3b-uncensored-p","name":"e2ee-qwen3-6-35b-a3b-uncensored-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-qwen3-vl-30b-a3b-p":{"id":"e2ee-qwen3-vl-30b-a3b-p","name":"e2ee-qwen3-vl-30b-a3b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"e2ee-venice-uncensored-24b-p":{"id":"e2ee-venice-uncensored-24b-p","name":"e2ee-venice-uncensored-24b-p","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"gemini-3-1-pro-preview":{"id":"gemini-3-1-pro-preview","name":"gemini-3-1-pro-preview","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"gemini-3-5-flash","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"gemini-3-5-flash-lite":{"id":"gemini-3-5-flash-lite","name":"gemini-3-5-flash-lite","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"gemini-3-6-flash","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"gemma-4-uncensored":{"id":"gemma-4-uncensored","name":"gemma-4-uncensored","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"google-gemma-3-27b-it":{"id":"google-gemma-3-27b-it","name":"Google Gemma 3 27B Instruct","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"google-gemma-4-26b-a4b-it":{"id":"google-gemma-4-26b-a4b-it","name":"google-gemma-4-26b-a4b-it","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"google-gemma-4-31b-it":{"id":"google-gemma-4-31b-it","name":"google-gemma-4-31b-it","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"google.gemma-4-26b-a4b-it":{"id":"google.gemma-4-26b-a4b-it","name":"google.gemma-4-26b-a4b-it","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"google.gemma-4-31b-it":{"id":"google.gemma-4-31b-it","name":"google.gemma-4-31b-it","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-4-20":{"id":"grok-4-20","name":"grok-4-20","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-4-20-beta":{"id":"grok-4-20-beta","name":"grok-4-20-beta","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-4-20-multi-agent":{"id":"grok-4-20-multi-agent","name":"grok-4-20-multi-agent","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-4-20-multi-agent-beta":{"id":"grok-4-20-multi-agent-beta","name":"grok-4-20-multi-agent-beta","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-4-3":{"id":"grok-4-3","name":"grok-4-3","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-4-5":{"id":"grok-4-5","name":"grok-4-5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-41-fast":{"id":"grok-41-fast","name":"Grok 4.1 Fast","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"grok-build-0-1":{"id":"grok-build-0-1","name":"grok-build-0-1","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":10000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"hermes-3-llama-3.1-405b":{"id":"hermes-3-llama-3.1-405b","name":"Hermes 3 Llama 3.1 405b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"inkling":{"id":"inkling","name":"inkling","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"kimi-k2-5":{"id":"kimi-k2-5","name":"Kimi K2.5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k2-6":{"id":"kimi-k2-6","name":"kimi-k2-6","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"kimi-k2-7-code","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":262144,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3 (2x usage)","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"llama-3.2-3b":{"id":"llama-3.2-3b","name":"Llama 3.2 3B","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"llama-3.3-70b":{"id":"llama-3.3-70b","name":"Llama 3.3 70B","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"mercury-2":{"id":"mercury-2","name":"mercury-2","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"minimax-m21":{"id":"minimax-m21","name":"MiniMax M2.1","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m25":{"id":"minimax-m25","name":"MiniMax M2.5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m27":{"id":"minimax-m27","name":"minimax-m27","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax-m3-preview":{"id":"minimax-m3-preview","name":"minimax-m3-preview","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":524288,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"mistral-31-24b":{"id":"mistral-31-24b","name":"Venice Medium","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistral-small-3-2-24b-instruct":{"id":"mistral-small-3-2-24b-instruct","name":"mistral-small-3-2-24b-instruct","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"nvidia-nemotron-3-nano-30b-a3b":{"id":"nvidia-nemotron-3-nano-30b-a3b","name":"nvidia-nemotron-3-nano-30b-a3b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"nvidia-nemotron-3-ultra-550b-a55b":{"id":"nvidia-nemotron-3-ultra-550b-a55b","name":"nvidia-nemotron-3-ultra-550b-a55b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"nvidia-nemotron-cascade-2-30b-a3b":{"id":"nvidia-nemotron-cascade-2-30b-a3b","name":"nvidia-nemotron-cascade-2-30b-a3b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"olafangensan-glm-4.7-flash-heretic":{"id":"olafangensan-glm-4.7-flash-heretic","name":"GLM 4.7 Flash Heretic","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai-gpt-4o-2024-11-20":{"id":"openai-gpt-4o-2024-11-20","name":"openai-gpt-4o-2024-11-20","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-4o-mini-2024-07-18":{"id":"openai-gpt-4o-mini-2024-07-18","name":"openai-gpt-4o-mini-2024-07-18","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-52":{"id":"openai-gpt-52","name":"GPT-5.2","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai-gpt-52-codex":{"id":"openai-gpt-52-codex","name":"GPT-5.2 OpenAI code","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai-gpt-53-codex":{"id":"openai-gpt-53-codex","name":"openai-gpt-53-openai-code","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-54":{"id":"openai-gpt-54","name":"openai-gpt-54","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-54-mini":{"id":"openai-gpt-54-mini","name":"openai-gpt-54-mini","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-54-pro":{"id":"openai-gpt-54-pro","name":"openai-gpt-54-pro","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-55":{"id":"openai-gpt-55","name":"openai-gpt-55","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-55-pro":{"id":"openai-gpt-55-pro","name":"openai-gpt-55-pro","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-56-luna":{"id":"openai-gpt-56-luna","name":"openai-gpt-56-luna","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-56-luna-pro":{"id":"openai-gpt-56-luna-pro","name":"openai-gpt-56-luna-pro","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-56-sol":{"id":"openai-gpt-56-sol","name":"openai-gpt-56-sol","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-56-sol-pro":{"id":"openai-gpt-56-sol-pro","name":"openai-gpt-56-sol-pro","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-56-terra":{"id":"openai-gpt-56-terra","name":"openai-gpt-56-terra","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-56-terra-pro":{"id":"openai-gpt-56-terra-pro","name":"openai-gpt-56-terra-pro","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"openai-gpt-oss-120b":{"id":"openai-gpt-oss-120b","name":"OpenAI GPT OSS 120B","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"qwen-3-6-plus":{"id":"qwen-3-6-plus","name":"qwen-3-6-plus","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen-3-7-max":{"id":"qwen-3-7-max","name":"qwen-3-7-max","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen-3-7-plus":{"id":"qwen-3-7-plus","name":"qwen-3-7-plus","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen 3 235B A22B Instruct 2507","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen 3 235B A22B Thinking 2507","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3-4b":{"id":"qwen3-4b","name":"Venice Small","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen3-5-35b-a3b":{"id":"qwen3-5-35b-a3b","name":"qwen3-5-35b-a3b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-5-397b-a17b":{"id":"qwen3-5-397b-a17b","name":"qwen3-5-397b-a17b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-5-9b":{"id":"qwen3-5-9b","name":"qwen3-5-9b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-6-27b":{"id":"qwen3-6-27b","name":"qwen3-6-27b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-6-35b-a3b":{"id":"qwen3-6-35b-a3b","name":"qwen3-6-35b-a3b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":222222,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen 3 Coder 480b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"qwen3-coder-480b-a35b-instruct-turbo":{"id":"qwen3-coder-480b-a35b-instruct-turbo","name":"qwen3-coder-480b-a35b-instruct-turbo","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"qwen3-next-80b":{"id":"qwen3-next-80b","name":"Qwen 3 Next 80b","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3 VL 235B","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"venice-uncensored":{"id":"venice-uncensored","name":"Venice Uncensored 1.1","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false}},"venice-uncensored-1-2":{"id":"venice-uncensored-1-2","name":"venice-uncensored-1-2","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"venice-uncensored-role-play":{"id":"venice-uncensored-role-play","name":"venice-uncensored-role-play","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"xiaomi-mimo-v2-5":{"id":"xiaomi-mimo-v2-5","name":"xiaomi-mimo-v2-5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"z-ai-glm-5-turbo":{"id":"z-ai-glm-5-turbo","name":"z-ai-glm-5-turbo","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"z-ai-glm-5v-turbo":{"id":"z-ai-glm-5v-turbo","name":"z-ai-glm-5v-turbo","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"zai-org-glm-4.6":{"id":"zai-org-glm-4.6","name":"zai-org-glm-4.6","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"zai-org-glm-4.7":{"id":"zai-org-glm-4.7","name":"GLM 4.7","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org-glm-4.7-flash":{"id":"zai-org-glm-4.7-flash","name":"GLM 4.7 Flash","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org-glm-5":{"id":"zai-org-glm-5","name":"GLM 5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":198000,"maxTokens":8192,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"zai-org-glm-5-1":{"id":"zai-org-glm-5-1","name":"zai-org-glm-5-1","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"zai-org-glm-5-2":{"id":"zai-org-glm-5-2","name":"zai-org-glm-5-2","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}},"claude-opus-5":{"id":"claude-opus-5","name":"Anthropic Opus 5","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsUsageInStreaming":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"claude-opus-5-fast":{"id":"claude-opus-5-fast","name":"anthropic-opus-5-fast","api":"openai-completions","provider":"venice","baseUrl":"https://api.venice.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"compat":{"supportsUsageInStreaming":false}}} diff --git a/packages/ai/src/model-shards/vercel-ai-gateway.json b/packages/ai/src/model-shards/vercel-ai-gateway.json new file mode 100644 index 0000000000..4c6b421c66 --- /dev/null +++ b/packages/ai/src/model-shards/vercel-ai-gateway.json @@ -0,0 +1 @@ +{"alibaba/qwen-3-14b":{"id":"alibaba/qwen-3-14b","name":"Qwen3-14B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.12,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":40960,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen-3-235b":{"id":"alibaba/qwen-3-235b","name":"Qwen3 235B A22B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.22,"output":0.88,"cacheRead":0.6,"cacheWrite":0},"contextWindow":262144,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen-3-30b":{"id":"alibaba/qwen-3-30b","name":"Qwen3-30B-A3B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.12,"output":0.5,"cacheRead":0,"cacheWrite":0},"contextWindow":40960,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen-3-32b":{"id":"alibaba/qwen-3-32b","name":"Qwen 3 32B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.16,"output":0.64,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen-3.6-max-preview":{"id":"alibaba/qwen-3.6-max-preview","name":"Qwen 3.6 Max Preview","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.3,"output":7.8,"cacheRead":0.26,"cacheWrite":1.625},"contextWindow":240000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-235b-a22b-thinking":{"id":"alibaba/qwen3-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":4,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-coder":{"id":"alibaba/qwen3-coder","name":"Qwen3 Coder 480B A35B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.3,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-coder-30b-a3b":{"id":"alibaba/qwen3-coder-30b-a3b","name":"Qwen 3 Coder 30B A3B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-coder-next":{"id":"alibaba/qwen3-coder-next","name":"Qwen3 Coder Next","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-coder-plus":{"id":"alibaba/qwen3-coder-plus","name":"Qwen3 Coder Plus","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":1,"output":5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536},"alibaba/qwen3-max":{"id":"alibaba/qwen3-max","name":"Qwen3 Max","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0.24,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"alibaba/qwen3-max-preview":{"id":"alibaba/qwen3-max-preview","name":"Qwen3 Max Preview","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0.24,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768},"alibaba/qwen3-max-thinking":{"id":"alibaba/qwen3-max-thinking","name":"Qwen 3 Max Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0.24,"cacheWrite":0},"contextWindow":256000,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-next-80b-a3b-instruct":{"id":"alibaba/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768},"alibaba/qwen3-next-80b-a3b-thinking":{"id":"alibaba/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3-vl-235b-a22b-instruct":{"id":"alibaba/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":129024},"alibaba/qwen3-vl-instruct":{"id":"alibaba/qwen3-vl-instruct","name":"Qwen3 VL 235B A22B Instruct","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":129024},"alibaba/qwen3-vl-thinking":{"id":"alibaba/qwen3-vl-thinking","name":"Qwen3 VL 235B A22B Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":4,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3.5-flash":{"id":"alibaba/qwen3.5-flash","name":"Qwen 3.5 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.001,"cacheWrite":0.125},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3.5-plus":{"id":"alibaba/qwen3.5-plus","name":"Qwen 3.5 Plus","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2.4,"cacheRead":0.04,"cacheWrite":0.5},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3.6-27b":{"id":"alibaba/qwen3.6-27b","name":"Qwen 3.6 27B","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3.5999999999999996,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3.6-plus":{"id":"alibaba/qwen3.6-plus","name":"Qwen 3.6 Plus","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.09999999999999999,"cacheWrite":0.625},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen 3.7 Max","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":3.75,"cacheRead":0.25,"cacheWrite":1.5625},"contextWindow":991000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen 3.7 Plus","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cacheRead":0.08,"cacheWrite":0.5},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"amazon/nova-2-lite":{"id":"amazon/nova-2-lite","name":"Nova 2 Lite","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"amazon/nova-lite":{"id":"amazon/nova-lite","name":"Nova Lite","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.06,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":300000,"maxTokens":8192},"amazon/nova-micro":{"id":"amazon/nova-micro","name":"Nova Micro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.035,"output":0.14,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"amazon/nova-pro":{"id":"amazon/nova-pro","name":"Nova Pro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.7999999999999999,"output":3.1999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":300000,"maxTokens":8192},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Anthropic Haiku 3","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.25,"cacheRead":0.03,"cacheWrite":0.3},"contextWindow":200000,"maxTokens":4096},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Anthropic 3.5 Haiku","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.7999999999999999,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.5-sonnet":{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic Sonnet 3.5 v2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.5-sonnet-20240620":{"id":"anthropic/claude-3.5-sonnet-20240620","name":"Anthropic 3.5 Sonnet (2024-06-20)","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic 3.7 Sonnet","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Anthropic Fable 5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Anthropic Haiku 4.5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.09999999999999999,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic Opus 4 (latest)","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Anthropic Opus 4.1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Anthropic Opus 4.5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Anthropic Opus 4.6","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Anthropic Opus 4.7","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-opus-4.7-fast":{"id":"anthropic/claude-opus-4.7-fast","name":"Anthropic Opus 4.7 (Fast)","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":150,"cacheRead":3,"cacheWrite":37.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Anthropic Opus 4.8","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-opus-4.8-fast":{"id":"anthropic/claude-opus-4.8-fast","name":"Anthropic Opus 4.8 (Fast)","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic Sonnet 4","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Anthropic Sonnet 4.5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Anthropic Sonnet 5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.19999999999999998,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"arcee-ai/trinity-large-preview":{"id":"arcee-ai/trinity-large-preview","name":"Trinity Large Preview","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":1,"cacheRead":0,"cacheWrite":0},"contextWindow":131000,"maxTokens":131000},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.8999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":262100,"maxTokens":80000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"arcee-ai/trinity-mini":{"id":"arcee-ai/trinity-mini","name":"Trinity Mini","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.045,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"bytedance/seed-1.6":{"id":"bytedance/seed-1.6","name":"Seed 1.6","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/seed-1.8":{"id":"bytedance/seed-1.8","name":"Bytedance Seed 1.8","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"cohere/command-a":{"id":"cohere/command-a","name":"Command A","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":2.5,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8000},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":1.35,"output":5.4,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3":{"id":"deepseek/deepseek-v3","name":"DeepSeek V3 0324","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.27,"output":1.12,"cacheRead":0.135,"cacheWrite":0},"contextWindow":163840,"maxTokens":163840},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.95,"cacheRead":0.13,"cacheWrite":0},"contextWindow":163840,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.27,"output":1,"cacheRead":0.135,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.28,"output":0.42,"cacheRead":0.028,"cacheWrite":0},"contextWindow":128000,"maxTokens":8000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-thinking":{"id":"deepseek/deepseek-v3.2-thinking","name":"DeepSeek V3.2 Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.62,"output":1.85,"cacheRead":0.028,"cacheWrite":0},"contextWindow":128000,"maxTokens":8000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemini-2.0-flash":{"id":"google/gemini-2.0-flash","name":"Gemini 2.0 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"google/gemini-2.0-flash-lite":{"id":"google/gemini-2.0-flash-lite","name":"Gemini 2.0 Flash Lite","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.02,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8192},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536},"google/gemini-2.5-flash-lite-preview-09-2025":{"id":"google/gemini-2.5-flash-lite-preview-09-2025","name":"Gemini 2.5 Flash Lite Preview 09-2025","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-preview-09-2025":{"id":"google/gemini-2.5-flash-preview-09-2025","name":"Gemini 2.5 Flash Preview 09-2025","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-flash":{"id":"google/gemini-3-flash","name":"Gemini 3 Flash","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65000},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Mercury 2","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.25,"output":0.75,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"inception/mercury-coder-small":{"id":"inception/mercury-coder-small","name":"Mercury Coder Small Beta","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":1,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":16384},"interfaze/interfaze-beta":{"id":"interfaze/interfaze-beta","name":"Interfaze Beta","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":3.5,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"kwaipilot/kat-coder-air-v2.5":{"id":"kwaipilot/kat-coder-air-v2.5","name":"Kat Coder Air V2.5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.03,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"kwaipilot/kat-coder-pro-v1":{"id":"kwaipilot/kat-coder-pro-v1","name":"KAT-Coder-Pro V1","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"Kat Coder Pro V2","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"kwaipilot/kat-coder-pro-v2.5":{"id":"kwaipilot/kat-coder-pro-v2.5","name":"Kat Coder Pro V2.5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.74,"output":2.96,"cacheRead":0.15,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"meituan/longcat-flash-chat":{"id":"meituan/longcat-flash-chat","name":"LongCat Flash Chat","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":100000},"meituan/longcat-flash-thinking":{"id":"meituan/longcat-flash-thinking","name":"LongCat Flash Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"meta/llama-3.1-70b":{"id":"meta/llama-3.1-70b","name":"Llama 3.1 70B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.72,"output":0.72,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-3.1-8b":{"id":"meta/llama-3.1-8b","name":"Llama 3.1 8B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.22,"output":0.22,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-3.2-11b":{"id":"meta/llama-3.2-11b","name":"Llama 3.2 11B Vision Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.16,"output":0.16,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-3.2-90b":{"id":"meta/llama-3.2-90b","name":"Llama 3.2 90B Vision Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.72,"output":0.72,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-3.3-70b":{"id":"meta/llama-3.3-70b","name":"Llama 3.3 70B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.72,"output":0.72,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-4-maverick":{"id":"meta/llama-4-maverick","name":"Llama 4 Maverick 17B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.24,"output":0.9700000000000001,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/llama-4-scout":{"id":"meta/llama-4-scout","name":"Llama 4 Scout 17B Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.16999999999999998,"output":0.66,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8192},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":1048576,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":205000,"maxTokens":205000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":2.4,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 High Speed","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 highspeed","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131100,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"mistral/codestral":{"id":"mistral/codestral","name":"Mistral Codestral","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.8999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"mistral/devstral-2":{"id":"mistral/devstral-2","name":"Devstral 2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"mistral/devstral-small":{"id":"mistral/devstral-small","name":"Devstral Small 1.1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"mistral/devstral-small-2":{"id":"mistral/devstral-small-2","name":"Devstral Small 2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"mistral/magistral-medium":{"id":"mistral/magistral-medium","name":"Magistral Medium 2509","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"mistral/magistral-small":{"id":"mistral/magistral-small","name":"Magistral Small 2509","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"mistral/ministral-14b":{"id":"mistral/ministral-14b","name":"Ministral 14B","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.19999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"mistral/ministral-3b":{"id":"mistral/ministral-3b","name":"Ministral 3B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.09999999999999999,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"mistral/ministral-8b":{"id":"mistral/ministral-8b","name":"Ministral 8B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"mistral/mistral-large-3":{"id":"mistral/mistral-large-3","name":"Mistral Large 3","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"mistral/mistral-medium":{"id":"mistral/mistral-medium","name":"Mistral Medium 3.1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":2,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"mistral/mistral-medium-3.5":{"id":"mistral/mistral-medium-3.5","name":"Mistral Medium Latest","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"mistral/mistral-nemo":{"id":"mistral/mistral-nemo","name":"Mistral Nemo 12B","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral/mistral-small":{"id":"mistral/mistral-small","name":"Mistral Small","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":32000,"maxTokens":4000},"mistral/pixtral-12b":{"id":"mistral/pixtral-12b","name":"Pixtral 12B 2409","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"mistral/pixtral-large":{"id":"mistral/pixtral-large","name":"Pixtral Large","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4000},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2 Instruct","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.5700000000000001,"output":2.3,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0.3,"cacheWrite":0},"contextWindow":256000,"maxTokens":128000},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.47,"output":2,"cacheRead":0.14100000000000001,"cacheWrite":0},"contextWindow":216144,"maxTokens":216144,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-thinking-turbo":{"id":"moonshotai/kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":1.15,"output":8,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262114,"maxTokens":262114,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-turbo":{"id":"moonshotai/kimi-k2-turbo","name":"Kimi K2 Turbo","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":1.15,"output":8,"cacheRead":0.15,"cacheWrite":0},"contextWindow":256000,"maxTokens":16384},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":262114,"maxTokens":262114,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"contextWindow":262000,"maxTokens":262000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"contextWindow":256000,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code High Speed","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.9,"output":8,"cacheRead":0.38,"cacheWrite":0},"contextWindow":262144,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.24,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.65,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.4,"cacheRead":0.12,"cacheWrite":0},"contextWindow":1000000,"maxTokens":65000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-nano-12b-v2-vl":{"id":"nvidia/nemotron-nano-12b-v2-vl","name":"Nvidia Nemotron Nano 12B V2 VL","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"Nvidia Nemotron Nano 9B V2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.22999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/codex-mini":{"id":"openai/codex-mini","name":"OpenAI code Mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":6,"cacheRead":0.375,"cacheWrite":0},"contextWindow":272000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":16385,"maxTokens":4096},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":10,"output":30,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cacheRead":0.09999999999999999,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":1047576,"maxTokens":32768},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-chat":{"id":"openai/gpt-5-chat","name":"GPT 5 Chat","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 OpenAI code","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 nano","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.049999999999999996,"output":0.39999999999999997,"cacheRead":0.005,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 pro","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":120,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":272000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 OpenAI code","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT 5.1 OpenAI code Max","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-OpenAI code-Mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.024999999999999998,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"medium","maxLevel":"high"}},"openai/gpt-5.1-instant":{"id":"openai/gpt-5.1-instant","name":"GPT-5.1 Instant","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.1-thinking":{"id":"openai/gpt-5.1-thinking","name":"GPT 5.1 Thinking","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"GPT 5.2 Chat","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 OpenAI code","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":21,"output":168,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.09999999999999999,"cacheWrite":1.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"low","maxLevel":"max"}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.5,"cacheRead":0.25,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.049999999999999996,"output":0.19999999999999998,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.037,"cacheWrite":0},"contextWindow":131072,"maxTokens":65536,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o1":{"id":"openai/o1","name":"o1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":60,"cacheRead":7.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3":{"id":"openai/o3","name":"o3","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"o3-deep-research","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":40,"cacheRead":2.5,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.55,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":20,"output":80,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":1,"output":1,"cacheRead":0,"cacheWrite":0},"contextWindow":127000,"maxTokens":8000},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":8000},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.19999999999999998,"cacheRead":0.01,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"poolside/laguna-s-2.1-free":{"id":"poolside/laguna-s-2.1-free","name":"Laguna S 2.1 Free","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"prime-intellect/intellect-3":{"id":"prime-intellect/intellect-3","name":"INTELLECT 3","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.1,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text"],"cost":{"input":0.09,"output":0.3,"cacheRead":0.02,"cacheWrite":0},"contextWindow":262114,"maxTokens":262114},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":1.15,"cacheRead":0.04,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":4.05,"cacheRead":0.16999999999999998,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"vercel/v0-1.0-md":{"id":"vercel/v0-1.0-md","name":"v0-1.0-md","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":32000},"vercel/v0-1.5-md":{"id":"vercel/v0-1.5-md","name":"v0-1.5-md","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":32768},"xai/grok-2-vision":{"id":"xai/grok-2-vision","name":"Grok 2 Vision","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0,"cacheWrite":0},"contextWindow":32768,"maxTokens":32768},"xai/grok-3":{"id":"xai/grok-3","name":"Grok 3 Beta","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"xai/grok-3-fast":{"id":"xai/grok-3-fast","name":"Grok 3 Fast Beta","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":5,"output":25,"cacheRead":1.25,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"xai/grok-3-mini":{"id":"xai/grok-3-mini","name":"Grok 3 Mini Beta","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"xai/grok-3-mini-fast":{"id":"xai/grok-3-mini-fast","name":"Grok 3 Mini Fast Beta","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":4,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"xai/grok-4":{"id":"xai/grok-4","name":"Grok 4","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4-fast-non-reasoning":{"id":"xai/grok-4-fast-non-reasoning","name":"Grok 4 Fast Non-Reasoning","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":2000000,"maxTokens":256000},"xai/grok-4-fast-reasoning":{"id":"xai/grok-4-fast-reasoning","name":"Grok 4 Fast Reasoning","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":2000000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.1-fast-non-reasoning":{"id":"xai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":false,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000},"xai/grok-4.1-fast-reasoning":{"id":"xai/grok-4.1-fast-reasoning","name":"Grok 4.1 Fast Reasoning","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.19999999999999998,"output":0.5,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.20-multi-agent":{"id":"xai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":2000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.20-multi-agent-beta":{"id":"xai/grok-4.20-multi-agent-beta","name":"Grok 4.20 Multi Agent Beta","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":2000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.20-non-reasoning":{"id":"xai/grok-4.20-non-reasoning","name":"Grok 4.20 Non-Reasoning","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":2000000},"xai/grok-4.20-non-reasoning-beta":{"id":"xai/grok-4.20-non-reasoning-beta","name":"Grok 4.20 Beta Non-Reasoning","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":2000000},"xai/grok-4.20-reasoning":{"id":"xai/grok-4.20-reasoning","name":"Grok 4.20 Reasoning","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":2000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.20-reasoning-beta":{"id":"xai/grok-4.20-reasoning-beta","name":"Grok 4.20 Beta Reasoning","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":2000000,"maxTokens":2000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xai/grok-code-fast-1":{"id":"xai/grok-code-fast-1","name":"Grok Code Fast 1","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.5,"cacheRead":0.02,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.09999999999999999,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":262144,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1050000,"maxTokens":131100,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1050000,"maxTokens":131000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM 4.5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0.11,"cacheWrite":0},"contextWindow":128000,"maxTokens":96000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM 4.5 Air","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.19999999999999998,"output":1.1,"cacheRead":0.03,"cacheWrite":0},"contextWindow":128000,"maxTokens":96000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"GLM 4.5V","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":1.7999999999999998,"cacheRead":0.11,"cacheWrite":0},"contextWindow":66000,"maxTokens":16000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM 4.6","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0.11,"cacheWrite":0},"contextWindow":200000,"maxTokens":96000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.6v":{"id":"zai/glm-4.6v","name":"GLM-4.6V","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":0.8999999999999999,"cacheRead":0.049999999999999996,"cacheWrite":0},"contextWindow":128000,"maxTokens":24000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.6v-flash":{"id":"zai/glm-4.6v-flash","name":"GLM-4.6V-Flash","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":24000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM 4.7","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.2,"cacheRead":0.12,"cacheWrite":0},"contextWindow":200000,"maxTokens":120000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.7-flash":{"id":"zai/glm-4.7-flash","name":"GLM 4.7 Flash","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.39999999999999997,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM 4.7 FlashX","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.06,"output":0.39999999999999997,"cacheRead":0.01,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM 5","api":"anthropic-messages","baseUrl":"https://ai-gateway.vercel.sh","provider":"vercel-ai-gateway","reasoning":true,"input":["text"],"cost":{"input":0.95,"output":3.15,"cacheRead":0.19999999999999998,"cacheWrite":0},"contextWindow":202800,"maxTokens":131100,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM 5 Turbo","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":1.2,"output":4,"cacheRead":0.24,"cacheWrite":0},"contextWindow":202800,"maxTokens":131100,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM 5.1","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.3,"output":4.300000000000001,"cacheRead":0.26,"cacheWrite":0},"contextWindow":202000,"maxTokens":202000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM 5.2","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"contextWindow":1040000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-5.2-fast":{"id":"zai/glm-5.2-fast","name":"GLM 5.2 Fast","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text"],"cost":{"input":2.0999999999999996,"output":6.6000000000000005,"cacheRead":0.21,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"zai/glm-5v-turbo":{"id":"zai/glm-5v-turbo","name":"GLM 5V Turbo","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":1.2,"output":4,"cacheRead":0.24,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Anthropic Opus 5","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-opus-5-fast":{"id":"anthropic/claude-opus-5-fast","name":"Anthropic Opus 5 (Fast)","api":"anthropic-messages","provider":"vercel-ai-gateway","baseUrl":"https://ai-gateway.vercel.sh","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}}} diff --git a/packages/ai/src/model-shards/xai.json b/packages/ai/src/model-shards/xai.json new file mode 100644 index 0000000000..7601052c99 --- /dev/null +++ b/packages/ai/src/model-shards/xai.json @@ -0,0 +1 @@ +{"grok-2":{"id":"grok-2","name":"Grok 2","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":2,"output":10,"cacheRead":2,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-2-1212":{"id":"grok-2-1212","name":"Grok 2 (1212)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":2,"output":10,"cacheRead":2,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-2-latest":{"id":"grok-2-latest","name":"Grok 2 Latest","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":2,"output":10,"cacheRead":2,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-2-vision":{"id":"grok-2-vision","name":"Grok 2 Vision","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":2,"cacheWrite":0},"contextWindow":8192,"maxTokens":4096},"grok-2-vision-1212":{"id":"grok-2-vision-1212","name":"Grok 2 Vision (1212)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":2,"cacheWrite":0},"contextWindow":8192,"maxTokens":4096},"grok-2-vision-latest":{"id":"grok-2-vision-latest","name":"Grok 2 Vision Latest","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":2,"cacheWrite":0},"contextWindow":8192,"maxTokens":4096},"grok-3":{"id":"grok-3","name":"Grok 3","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-3-fast":{"id":"grok-3-fast","name":"Grok 3 Fast","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":5,"output":25,"cacheRead":1.25,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-3-fast-latest":{"id":"grok-3-fast-latest","name":"Grok 3 Fast Latest","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":5,"output":25,"cacheRead":1.25,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-3-latest":{"id":"grok-3-latest","name":"Grok 3 Latest","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192},"grok-3-mini":{"id":"grok-3-mini","name":"Grok 3 Mini","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":0.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-3-mini-fast":{"id":"grok-3-mini-fast","name":"Grok 3 Mini Fast","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":4,"cacheRead":0.15,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-3-mini-fast-latest":{"id":"grok-3-mini-fast-latest","name":"Grok 3 Mini Fast Latest","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":4,"cacheRead":0.15,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-3-mini-latest":{"id":"grok-3-mini-latest","name":"Grok 3 Mini Latest","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":0.5,"cacheRead":0.075,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4":{"id":"grok-4","name":"Grok 4","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4-1-fast":{"id":"grok-4-1-fast","name":"Grok 4.1 Fast","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"grok-4-fast":{"id":"grok-4-fast","name":"Grok 4 Fast","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"Grok 4 Fast (Non-Reasoning)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"grok-4.20-0309-non-reasoning":{"id":"grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000},"grok-4.20-0309-reasoning":{"id":"grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4.20-beta-latest-non-reasoning":{"id":"grok-4.20-beta-latest-non-reasoning","name":"Grok 4.20 Beta (Non-Reasoning)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"grok-4.20-beta-latest-reasoning":{"id":"grok-4.20-beta-latest-reasoning","name":"Grok 4.20 Beta (Reasoning)","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4.20-multi-agent-beta-latest":{"id":"grok-4.20-multi-agent-beta-latest","name":"Grok 4.20 Multi-Agent Beta","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-beta":{"id":"grok-beta","name":"Grok Beta","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text"],"cost":{"input":5,"output":15,"cacheRead":5,"cacheWrite":0},"contextWindow":131072,"maxTokens":4096},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0.2,"output":1.5,"cacheRead":0.02,"cacheWrite":0},"contextWindow":256000,"maxTokens":10000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-composer-2.5-fast":{"id":"grok-composer-2.5-fast","name":"Grok Composer 2.5 Fast","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"compat":{"supportsReasoningEffort":false},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"grok-vision-beta":{"id":"grok-vision-beta","name":"Grok Vision Beta","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":5,"output":15,"cacheRead":5,"cacheWrite":0},"contextWindow":8192,"maxTokens":4096}} diff --git a/packages/ai/src/model-shards/xiaomi-token-plan-ams.json b/packages/ai/src/model-shards/xiaomi-token-plan-ams.json new file mode 100644 index 0000000000..ed98ab4606 --- /dev/null +++ b/packages/ai/src/model-shards/xiaomi-token-plan-ams.json @@ -0,0 +1 @@ +{"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":1.305,"output":2.61,"cacheRead":0.0108,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/xiaomi-token-plan-cn.json b/packages/ai/src/model-shards/xiaomi-token-plan-cn.json new file mode 100644 index 0000000000..47eeaf9b2c --- /dev/null +++ b/packages/ai/src/model-shards/xiaomi-token-plan-cn.json @@ -0,0 +1 @@ +{"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":1.305,"output":2.61,"cacheRead":0.0108,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/xiaomi-token-plan-sgp.json b/packages/ai/src/model-shards/xiaomi-token-plan-sgp.json new file mode 100644 index 0000000000..d2d94a8a04 --- /dev/null +++ b/packages/ai/src/model-shards/xiaomi-token-plan-sgp.json @@ -0,0 +1 @@ +{"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":1.305,"output":2.61,"cacheRead":0.0108,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/xiaomi.json b/packages/ai/src/model-shards/xiaomi.json new file mode 100644 index 0000000000..ec9e24debc --- /dev/null +++ b/packages/ai/src/model-shards/xiaomi.json @@ -0,0 +1 @@ +{"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","reasoning":true,"input":["text"],"cost":{"input":1.305,"output":2.61,"cacheRead":0.0108,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsStore":false,"thinkingFormat":"zai"},"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}}} diff --git a/packages/ai/src/model-shards/zai.json b/packages/ai/src/model-shards/zai.json new file mode 100644 index 0000000000..4020970948 --- /dev/null +++ b/packages/ai/src/model-shards/zai.json @@ -0,0 +1 @@ +{"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.5-flash":{"id":"glm-4.5-flash","name":"GLM-4.5-Flash","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":98304,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":64000,"maxTokens":16384,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":32768,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.4,"cacheRead":0.01,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5":{"id":"glm-5","name":"GLM-5","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","api":"anthropic-messages","provider":"zai","baseUrl":"https://api.z.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/model-shards/zenmux.json b/packages/ai/src/model-shards/zenmux.json new file mode 100644 index 0000000000..817c2817ec --- /dev/null +++ b/packages/ai/src/model-shards/zenmux.json @@ -0,0 +1 @@ +{"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Anthropic 3.5 Haiku","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":4,"cacheRead":0.08,"cacheWrite":1},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-3.5-sonnet":{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic Sonnet 3.5 v2","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":8192},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic 3.7 Sonnet","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Anthropic Fable 5","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Anthropic Haiku 4.5","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":false,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic Opus 4","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":32000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Anthropic Opus 4.1","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":75,"cacheRead":1.5,"cacheWrite":18.75},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Anthropic Opus 4.5","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Anthropic Opus 4.6","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max","levels":["minimal","low","medium","high","max"]}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Anthropic Opus 4.7","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Anthropic Opus 4.8","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"max"}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic Sonnet 4","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"budget","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Anthropic Sonnet 4.5","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-budget-effort","minLevel":"minimal","maxLevel":"xhigh"}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Anthropic Sonnet 4.6","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Anthropic Sonnet 5","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":4},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"anthropic/claude-sonnet-5-free":{"id":"anthropic/claude-sonnet-5-free","name":"Anthropic Sonnet 5 (Free)","api":"anthropic-messages","provider":"zenmux","baseUrl":"https://zenmux.ai/api/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"anthropic-adaptive","minLevel":"minimal","maxLevel":"high"}},"baidu/ernie-5.0-thinking-preview":{"id":"baidu/ernie-5.0-thinking-preview","name":"ERNIE 5.0","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.84,"output":3.37,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"baidu/ernie-5.1":{"id":"baidu/ernie-5.1","name":"Baidu: ERNIE 5.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.588,"output":2.646,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"baidu/ernie-x1.1-preview":{"id":"baidu/ernie-x1.1-preview","name":"Baidu: ERNIE-X1.1-Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.56,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/doubao-seed-1.8":{"id":"bytedance/doubao-seed-1.8","name":"ByteDance: Doubao-Seed-1.8","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.11,"output":0.28,"cacheRead":0.023,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/doubao-seed-2.0-code":{"id":"bytedance/doubao-seed-2.0-code","name":"ByteDance: Doubao-Seed-2.0-Code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.45,"output":2.24,"cacheRead":0.09,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/doubao-seed-2.0-lite":{"id":"bytedance/doubao-seed-2.0-lite","name":"ByteDance: Doubao-Seed-2.0-lite","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.09,"output":0.51,"cacheRead":0.02,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/doubao-seed-2.0-mini":{"id":"bytedance/doubao-seed-2.0-mini","name":"ByteDance: Doubao-Seed-2.0-mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.03,"output":0.28,"cacheRead":0.01,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/doubao-seed-2.0-pro":{"id":"bytedance/doubao-seed-2.0-pro","name":"ByteDance: Doubao-Seed-2.0-pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.45,"output":2.24,"cacheRead":0.09,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"bytedance/doubao-seed-code":{"id":"bytedance/doubao-seed-code","name":"ByteDance: Doubao-Seed-Code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.17,"output":1.12,"cacheRead":0.034,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek-V3.2 (Non-thinking Mode)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.28,"output":0.42,"cacheRead":0.03,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek: DeepSeek V3.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.28,"output":1.11,"cacheRead":0.056,"cacheWrite":0},"contextWindow":163840,"maxTokens":8888},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek: DeepSeek R1 0528","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.56,"output":2.23,"cacheRead":0.112,"cacheWrite":0},"contextWindow":64000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-reasoner":{"id":"deepseek/deepseek-reasoner","name":"DeepSeek: DeepSeek-V3.2 (Thinking Mode)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.28,"output":0.43,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek-V3.2-Exp","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.22,"output":0.33,"cacheRead":0,"cacheWrite":0},"contextWindow":163000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-flash-free":{"id":"deepseek/deepseek-v4-flash-free","name":"DeepSeek: DeepSeek V4 Flash (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"contextWindow":1000000,"maxTokens":384000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"deepseek/deepseek-v4-pro-free":{"id":"deepseek/deepseek-v4-pro-free","name":"DeepSeek: DeepSeek V4 Pro (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"google/gemini-2.0-flash":{"id":"google/gemini-2.0-flash","name":"Google: Gemini 2.0 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.0375,"cacheWrite":1},"contextWindow":1048576,"maxTokens":8888},"google/gemini-2.0-flash-lite-001":{"id":"google/gemini-2.0-flash-lite-001","name":"Google: Gemini 2.0 Flash Lite","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.075,"output":0.3,"cacheRead":0.01875,"cacheWrite":1},"contextWindow":1048576,"maxTokens":8888},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.07,"cacheWrite":1},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.03,"cacheWrite":1},"contextWindow":1048000,"maxTokens":64000},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.31,"cacheWrite":4.5},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":1},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Gemini 3 Pro Image Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":4.5},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":4.5},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":65530},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":4.5},"contextWindow":1048000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"high","levels":["low","high"]}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemini-3.5-flash-free":{"id":"google/gemini-3.5-flash-free","name":"Google: Gemini 3.5 Flash Free","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Google: Gemma 3 12B","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.024,"output":0.096,"cacheRead":0.0048,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"inclusionai/ling-1t":{"id":"inclusionai/ling-1t","name":"Ling-1T","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.56,"output":2.24,"cacheRead":0.11,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"inclusionai/ling-2.6-1t":{"id":"inclusionai/ling-2.6-1t","name":"inclusionAI: Ling-2.6-1T","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.06,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"inclusionai/ling-2.6-flash":{"id":"inclusionai/ling-2.6-flash","name":"inclusionAI: Ling-2.6-flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.02,"cacheWrite":0},"contextWindow":262144,"maxTokens":8888},"inclusionai/ling-flash-2.0":{"id":"inclusionai/ling-flash-2.0","name":"inclusionAI: Ling-flash-2.0","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.28,"output":2.8,"cacheRead":0.056,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"inclusionai/ling-mini-2.0":{"id":"inclusionai/ling-mini-2.0","name":"inclusionAI: Ling-mini-2.0","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.07,"output":0.28,"cacheRead":0.014,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"inclusionai/llada2.0-flash-cap":{"id":"inclusionai/llada2.0-flash-cap","name":"inclusionAI: LLaDA2-flash-CAP","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.28,"output":2.85,"cacheRead":0.057,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888},"inclusionai/llada2.1-flash":{"id":"inclusionai/llada2.1-flash","name":"inclusionAI: LLaDA2.1-flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.28,"output":2.85,"cacheRead":0.057,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888},"inclusionai/ming-flash-omni-2.0":{"id":"inclusionai/ming-flash-omni-2.0","name":"inclusionAI: Ming-flash-omni-2.0","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.8,"output":1.8,"cacheRead":0,"cacheWrite":0},"contextWindow":64000,"maxTokens":8888},"inclusionai/ring-1t":{"id":"inclusionai/ring-1t","name":"Ring-1T","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.56,"output":2.24,"cacheRead":0.11,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"inclusionAI: Ring-2.6-1T","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.06,"cacheWrite":0},"contextWindow":262000,"maxTokens":65000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"inclusionai/ring-flash-2.0":{"id":"inclusionai/ring-flash-2.0","name":"inclusionAI: Ring-flash-2.0","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.28,"output":2.8,"cacheRead":0.056,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"inclusionai/ring-mini-2.0":{"id":"inclusionai/ring-mini-2.0","name":"inclusionAI: Ring-mini-2.0","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.7,"cacheRead":0.014,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"kuaishou/kat-coder-pro-v1":{"id":"kuaishou/kat-coder-pro-v1","name":"KwaiKAT: KAT-Coder-Pro-V1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.31,"output":1.22,"cacheRead":0.061,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888},"kuaishou/kat-coder-pro-v1-free":{"id":"kuaishou/kat-coder-pro-v1-free","name":"KAT-Coder-Pro-V1 Free","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000},"kuaishou/kat-coder-pro-v2":{"id":"kuaishou/kat-coder-pro-v2","name":"KAT-Coder-Pro-V2","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":256000,"maxTokens":80000},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":4096},"meta/llama-4-scout-17b-16e-instruct":{"id":"meta/llama-4-scout-17b-16e-instruct","name":"Meta: Llama 4 Scout Instruct","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.08,"output":0.4,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8888},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.38},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax: MiniMax M2-her","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0,"cacheWrite":0},"contextWindow":64000,"maxTokens":8888},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.38},"contextWindow":204000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.03,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.5-lightning":{"id":"minimax/minimax-m2.5-lightning","name":"MiniMax M2.5 highspeed","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":4.8,"cacheRead":0.06,"cacheWrite":0.75},"contextWindow":204800,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.3055,"output":1.2219,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131070,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 highspeed","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.611,"output":2.4439,"cacheRead":0,"cacheWrite":0},"contextWindow":204800,"maxTokens":131070,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":2.4,"cacheRead":0,"cacheWrite":0},"contextWindow":512000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral: Mistral Large 3","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888},"moonshotai/kimi-k2-0711":{"id":"moonshotai/kimi-k2-0711","name":"MoonshotAI: Kimi K2 0711","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.56,"output":2.23,"cacheRead":0.2,"cacheWrite":0.003},"contextWindow":32768,"maxTokens":8888},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.6,"output":2.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2-thinking-turbo":{"id":"moonshotai/kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.15,"output":8,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.58,"output":3.02,"cacheRead":0.1,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"contextWindow":262140,"maxTokens":262140,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k2.7-code-free":{"id":"moonshotai/kimi-k2.7-code-free","name":"Kimi K2.7 Code (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"moonshotai/kimi-k3-free":{"id":"moonshotai/kimi-k3-free","name":"Kimi K3 (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/chat-latest":{"id":"openai/chat-latest","name":"OpenAI: Chat Latest (GPT-5.5 Instant)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":400000,"maxTokens":8888},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"OpenAI: GPT-4.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":8,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1047576,"maxTokens":8888},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"OpenAI: GPT-4.1 Mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":1.6,"cacheRead":0.1,"cacheWrite":0},"contextWindow":1047576,"maxTokens":8888},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"OpenAI: GPT-4.1 Nano","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0.025,"cacheWrite":0},"contextWindow":1047576,"maxTokens":8888},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":2.5,"output":10,"cacheRead":1.25,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.075,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.12,"cacheWrite":0},"contextWindow":400000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-chat":{"id":"openai/gpt-5-chat","name":"OpenAI: GPT-5 Chat","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 OpenAI code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.12,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"OpenAI: GPT-5 Mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"contextWindow":400000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"OpenAI: GPT-5 Nano","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.05,"output":0.4,"cacheRead":0.005,"cacheWrite":0},"contextWindow":400000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"OpenAI: GPT-5 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":15,"output":120,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.12,"cacheWrite":0},"contextWindow":400000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.12,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-OpenAI code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.12,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-OpenAI code-Mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.03,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"medium","maxLevel":"high"}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.17,"cacheWrite":0},"contextWindow":400000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"OpenAI: GPT-5.2 Chat","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-OpenAI code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.17,"cacheWrite":0},"contextWindow":272000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":21,"output":168,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":16380},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 OpenAI code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.75,"output":14,"cacheRead":0,"cacheWrite":0},"contextWindow":272000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3.75,"output":18.75,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.75,"output":4.5,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.2,"output":1.25,"cacheRead":0,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":45,"output":225,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":1000000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"xhigh"}},"openai/gpt-5.5-instant":{"id":"openai/gpt-5.5-instant","name":"GPT-5.5 Instant","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"contextWindow":400000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":0,"cacheWrite":0},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":6,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"contextWindow":1050000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"low","maxLevel":"max"}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.1,"output":4.4,"cacheRead":0.275,"cacheWrite":0},"contextWindow":200000,"maxTokens":100000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen: Qwen3-14B","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":1.4,"cacheRead":0.028,"cacheWrite":0},"contextWindow":32000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen: Qwen3 235B A22B Instruct 2507","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.28,"output":1.11,"cacheRead":0.056,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen: Qwen3 235B A22B Thinking 2507","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.28,"output":2.78,"cacheRead":0.056,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen: Qwen3-Coder","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":1.25,"output":5.01,"cacheRead":0.25,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":1000000,"maxTokens":64000},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-max-preview":{"id":"qwen/qwen3-max-preview","name":"Qwen: Qwen3 Max Thinking Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.2,"output":6,"cacheRead":0.24,"cacheWrite":1.5},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3-vl-plus":{"id":"qwen/qwen3-vl-plus","name":"Qwen: Qwen3-VL-Plus","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.6,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.4,"cacheRead":0,"cacheWrite":0},"contextWindow":1020000,"maxTokens":1020000},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.8,"output":4.8,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen: Qwen3.6 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":1.5,"cacheRead":0.025,"cacheWrite":0.3125},"contextWindow":1000000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen: Qwen3.6 Max Preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.3,"output":7.8,"cacheRead":0.13,"cacheWrite":1.625},"contextWindow":262144,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6-Plus","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.625},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":2.5,"output":7.5,"cacheRead":0.5,"cacheWrite":3.125},"contextWindow":1000000,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":1.6,"cacheRead":0.08,"cacheWrite":0.5},"contextWindow":1000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"high"}},"sapiens-ai/agnes-1.5-flash":{"id":"sapiens-ai/agnes-1.5-flash","name":"Sapiens AI: Agnes-1.5-Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.07,"output":0.15,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"sapiens-ai/agnes-1.5-lite":{"id":"sapiens-ai/agnes-1.5-lite","name":"Agnes 1.5 Lite","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.12,"output":0.6,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"sapiens-ai/agnes-1.5-pro":{"id":"sapiens-ai/agnes-1.5-pro","name":"Agnes 1.5 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.16,"output":0.8,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"sapiens-ai/agnes-2.0-flash":{"id":"sapiens-ai/agnes-2.0-flash","name":"Sapiens AI: Agnes-2.0-Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.2,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3":{"id":"stepfun/step-3","name":"Step-3","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.21,"output":0.57,"cacheRead":0,"cacheWrite":0},"contextWindow":65536,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000},"stepfun/step-3.5-flash-free":{"id":"stepfun/step-3.5-flash-free","name":"Step 3.5 Flash (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.15,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"stepfun/step-3.7-flash-free":{"id":"stepfun/step-3.7-flash-free","name":"Step 3.7 Flash (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"tencent/hunyuan-2.0-thinking":{"id":"tencent/hunyuan-2.0-thinking","name":"Tencent: HY 2.0 Think","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.57,"output":2.29,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.172,"output":0.572,"cacheRead":0.058,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-1-6-vision":{"id":"volcengine/doubao-seed-1-6-vision","name":"VolcanoEngine: Doubao-Seed-1.6-vision","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.11,"output":1.13,"cacheRead":0.023,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":8888,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-1.8":{"id":"volcengine/doubao-seed-1.8","name":"Doubao-Seed-1.8","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.11,"output":0.28,"cacheRead":0.02,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-2.0-code":{"id":"volcengine/doubao-seed-2.0-code","name":"Doubao Seed 2.0 Code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text"],"cost":{"input":0.9,"output":4.48,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":32000},"volcengine/doubao-seed-2.0-lite":{"id":"volcengine/doubao-seed-2.0-lite","name":"Doubao-Seed-2.0-lite","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.09,"output":0.51,"cacheRead":0.02,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-2.0-mini":{"id":"volcengine/doubao-seed-2.0-mini","name":"Doubao-Seed-2.0-mini","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.03,"output":0.28,"cacheRead":0.01,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-2.0-pro":{"id":"volcengine/doubao-seed-2.0-pro","name":"Doubao-Seed-2.0-pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.45,"output":2.24,"cacheRead":0.09,"cacheWrite":0.0024},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"volcengine/doubao-seed-code":{"id":"volcengine/doubao-seed-code","name":"Doubao-Seed-Code","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.17,"output":1.12,"cacheRead":0.03,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.75,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"Grok 4 Fast","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4-fast-non-reasoning":{"id":"x-ai/grok-4-fast-non-reasoning","name":"xAI: Grok 4 Fast None Reasoning","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":8888},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.1-fast-non-reasoning":{"id":"x-ai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast Non Reasoning","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.2,"output":0.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":2000000,"maxTokens":64000},"x-ai/grok-4.2-fast":{"id":"x-ai/grok-4.2-fast","name":"Grok 4.2 Fast","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":9,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.2-fast-non-reasoning":{"id":"x-ai/grok-4.2-fast-non-reasoning","name":"Grok 4.2 Fast Non Reasoning","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":9,"cacheRead":0,"cacheWrite":0},"contextWindow":2000000,"maxTokens":30000},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":1000000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"Grok Code Fast 1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.2,"output":1.5,"cacheRead":0.02,"cacheWrite":0},"contextWindow":256000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-flash-free":{"id":"xiaomi/mimo-v2-flash-free","name":"MiMo-V2-Flash Free","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.08,"cacheWrite":0},"contextWindow":265000,"maxTokens":265000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":256000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.08,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.35,"output":1.54,"cacheRead":0.07,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM 4.5 Air","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.11,"output":0.56,"cacheRead":0.02,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.35,"output":1.54,"cacheRead":0.07,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.42,"cacheRead":0.03,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6v-flash":{"id":"z-ai/glm-4.6v-flash","name":"GLM 4.6V FlashX","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.02,"output":0.21,"cacheRead":0.0043,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.6v-flash-free":{"id":"z-ai/glm-4.6v-flash-free","name":"GLM 4.6V Flash (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.28,"output":1.14,"cacheRead":0.06,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7-flash-free":{"id":"z-ai/glm-4.7-flash-free","name":"GLM 4.7 Flash (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-4.7-flashx":{"id":"z-ai/glm-4.7-flashx","name":"GLM 4.7 FlashX","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.07,"output":0.42,"cacheRead":0.01,"cacheWrite":0},"contextWindow":200000,"maxTokens":64000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.58,"output":2.6,"cacheRead":0.14,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.88,"output":3.48,"cacheRead":0,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0.8781,"output":3.5126,"cacheRead":0.1903,"cacheWrite":0},"contextWindow":200000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM 5.2","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.5,"cacheRead":0.26,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5.2-free":{"id":"z-ai/glm-5.2-free","name":"GLM 5.2 (Free)","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","api":"openai-completions","provider":"zenmux","baseUrl":"https://zenmux.ai/api/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.726,"output":3.1946,"cacheRead":0.1743,"cacheWrite":0},"contextWindow":200000,"maxTokens":128000,"thinking":{"mode":"effort","minLevel":"minimal","maxLevel":"xhigh"}}} diff --git a/packages/ai/src/models.ts b/packages/ai/src/models.ts index e6616b3314..5c35faf6be 100644 --- a/packages/ai/src/models.ts +++ b/packages/ai/src/models.ts @@ -1,18 +1,13 @@ import { readFileSync } from "node:fs"; import { getOpenAIModelCost } from "./model-pricing"; import { isRetiredModelKey } from "./model-retirements"; +import { bundledProviderNames, bundledProviderShardPaths } from "./model-shards.generated"; import { applyGeneratedModelPolicies, enrichModelThinking } from "./model-thinking"; -// `with { type: "file" }` is embedded by `bun build --compile` and resolves to -// the bunfs path inside standalone binaries (and to the on-disk path in dev). -// A plain `createRequire` of a `.json` listed as an extra compile entrypoint is -// NOT emitted into the bunfs, and its cwd-fallback masks the failure whenever -// the process runs inside a repo checkout — see PR body for the minimal repro. -import modelsJsonPath from "./models.json" with { type: "file" }; import type { Api, KnownProvider, Model, Usage } from "./types"; import { isClaudeForcedToolChoiceIncapableModelId } from "./utils/tool-choice-capability"; /** - * Static bundled model registry loaded lazily from `models.json`. + * Static bundled model registry loaded lazily from deterministic provider shards. * * This module intentionally exposes compile-time defaults only. * It does not include runtime discovery, models.dev overlays, or on-disk cache state. @@ -21,28 +16,21 @@ import { isClaudeForcedToolChoiceIncapableModelId } from "./utils/tool-choice-ca */ type BundledCatalog = typeof import("./models.json"); -let bundledCatalog: BundledCatalog | undefined; let providerNames: KnownProvider[] | undefined; const providerModelRegistry: Map>> = new Map(); -function getBundledCatalog(): BundledCatalog { - // TS types a .json import as its contents; at runtime `with { type: "file" }` - // yields the file path (bunfs path in compiled binaries, disk path in dev). - bundledCatalog ??= JSON.parse(readFileSync(modelsJsonPath as unknown as string, "utf8")) as BundledCatalog; - return bundledCatalog; -} - function getProviderModels(provider: GeneratedProvider): Map> | undefined { const cached = providerModelRegistry.get(provider); if (cached) return cached; - const models = getBundledCatalog()[provider]; - if (!models) return undefined; + const shardPath = bundledProviderShardPaths[provider]; + if (!shardPath) return undefined; + const models = JSON.parse(readFileSync(shardPath as unknown as string, "utf8")) as Record>; const providerModels = new Map>(); for (const [id, model] of Object.entries(models)) { if (isRetiredModelKey(provider, id)) { continue; } - providerModels.set(id, applyBundledCompatDefaults(enrichModelThinking(model as Model))); + providerModels.set(id, applyBundledCompatDefaults(enrichModelThinking(model))); } providerModelRegistry.set(provider, providerModels); return providerModels; @@ -81,9 +69,8 @@ export function getBundledModel(provider: GeneratedProvi } export function getBundledProviders(): KnownProvider[] { - // Defensive copy: the old eager path returned a fresh Array.from(...), so - // callers may freely mutate their result without corrupting enumeration. - providerNames ??= Object.keys(getBundledCatalog()) as KnownProvider[]; + // Defensive copy: callers may freely mutate their result without corrupting enumeration. + providerNames ??= bundledProviderNames.slice() as KnownProvider[]; return providerNames.slice(); } diff --git a/packages/ai/test/generate-models.test.ts b/packages/ai/test/generate-models.test.ts index 9d99961af3..59ab0d9d6f 100644 --- a/packages/ai/test/generate-models.test.ts +++ b/packages/ai/test/generate-models.test.ts @@ -1,7 +1,80 @@ import { describe, expect, it } from "bun:test"; -import { injectAlibabaTokenPlanModels, injectImageGenerationModels } from "../scripts/generate-models"; +import * as fs from "node:fs/promises"; +import * as os from "node:os"; +import * as path from "node:path"; +import { + injectAlibabaTokenPlanModels, + injectImageGenerationModels, + mergePreviousModelFallbacks, + writeModelCatalogArtifacts, +} from "../scripts/generate-models"; import type { Model } from "../src/types"; +const TEST_MODEL: Model = { + id: "fixture-model", + name: "Fixture Model", + api: "openai-completions", + provider: "openai", + baseUrl: "https://example.test/v1", + reasoning: false, + input: ["text"], + cost: { input: 1, output: 2, cacheRead: 0.5, cacheWrite: 1.5 }, + contextWindow: 8192, + maxTokens: 2048, +}; + +describe("writeModelCatalogArtifacts", () => { + it("derives deterministic shards from the full catalog and removes stale shards", async () => { + const outputDirectory = await fs.mkdtemp(path.join(os.tmpdir(), "gjc-model-shards-")); + try { + const catalog = { openai: { [TEST_MODEL.id]: TEST_MODEL } }; + await writeModelCatalogArtifacts(catalog, outputDirectory); + const generatedPath = path.join(outputDirectory, "model-shards.generated.ts"); + const shardPath = path.join(outputDirectory, "model-shards/openai.json"); + const firstGenerated = await Bun.file(generatedPath).text(); + const firstShard = await Bun.file(shardPath).text(); + + await Bun.write(path.join(outputDirectory, "model-shards/stale.json"), "{}\n"); + await writeModelCatalogArtifacts(catalog, outputDirectory); + + expect(await Bun.file(path.join(outputDirectory, "models.json")).json()).toEqual(catalog); + expect(await Bun.file(shardPath).json()).toEqual(catalog.openai); + expect(await Bun.file(generatedPath).text()).toBe(firstGenerated); + expect(await Bun.file(shardPath).text()).toBe(firstShard); + expect(await Bun.file(path.join(outputDirectory, "model-shards/stale.json")).exists()).toBe(false); + expect(firstGenerated).toContain('import shard0 from "./model-shards/openai.json" with { type: "file" };'); + } finally { + await fs.rm(outputDirectory, { recursive: true, force: true }); + } + }); + + it("rejects provider names that cannot be safe deterministic shard names", async () => { + const outputDirectory = await fs.mkdtemp(path.join(os.tmpdir(), "gjc-model-shards-")); + try { + await expect( + writeModelCatalogArtifacts({ "../escape": { [TEST_MODEL.id]: TEST_MODEL } }, outputDirectory), + ).rejects.toThrow("invalid provider name"); + } finally { + await fs.rm(outputDirectory, { recursive: true, force: true }); + } + }); +}); + +describe("mergePreviousModelFallbacks", () => { + it("retains seed-only models when discovery is offline without replacing fetched models", () => { + const fetched = { ...TEST_MODEL, id: "fetched", name: "Fetched" }; + const staleFetchedSeed = { ...fetched, name: "Seed Copy" }; + const seedOnly = { ...TEST_MODEL, id: "seed-only", name: "Seed Only" }; + + const merged = mergePreviousModelFallbacks( + [fetched], + { openai: { fetched: staleFetchedSeed, "seed-only": seedOnly } }, + new Set(), + ); + + expect(merged).toEqual([fetched, { ...seedOnly, baseUrl: "" }]); + }); +}); describe("injectImageGenerationModels", () => { it("adds typed image-output models once for OpenAI and Codex", () => { const models: Model[] = []; diff --git a/packages/ai/test/models-lazy.test.ts b/packages/ai/test/models-lazy.test.ts index 7f738105c7..26db4cee35 100644 --- a/packages/ai/test/models-lazy.test.ts +++ b/packages/ai/test/models-lazy.test.ts @@ -22,49 +22,66 @@ function runIsolationScript(script: string): unknown { } describe("bundled models catalog lazy loading", () => { - it("does not read models.json until the first synchronous accessor call", () => { + it("enumerates without parsing bodies and reads only the requested provider shard once", () => { const modelsUrl = pathToFileURL(path.resolve(import.meta.dir, "../src/models.ts")).href; const modelsJsonPath = path.resolve(import.meta.dir, "../src/models.json"); - // The catalog is embedded via `import ... with { type: "file" }` and read - // lazily with fs.readFileSync. The lazy contract is therefore observable as - // "no filesystem read of models.json at import time; exactly one read on - // first accessor use" (module-cache presence no longer discriminates, - // because the file-type import registers the path eagerly without parsing). + const openAIShardPath = path.resolve(import.meta.dir, "../src/model-shards/openai.json"); const result = runIsolationScript(` import { createRequire } from "node:module"; const require = createRequire(${JSON.stringify(modelsUrl)}); const fs = require("node:fs"); const realReadFileSync = fs.readFileSync; -let catalogReads = 0; +const bodyReads = []; fs.readFileSync = function (file, ...args) { - if (String(file).endsWith("models.json")) catalogReads += 1; + const fileName = String(file); + if (fileName.includes("/model-shards/") || fileName.endsWith("/models.json")) { + bodyReads.push(fileName); + } return realReadFileSync.call(this, file, ...args); }; const modelsModule = await import(${JSON.stringify(modelsUrl)}); -const before = catalogReads > 0; -const directCatalog = JSON.parse(realReadFileSync(${JSON.stringify(modelsJsonPath)}, "utf8")); +const readsAfterImport = bodyReads.length; const providers = modelsModule.getBundledProviders(); +const readsAfterEnumeration = bodyReads.length; const model = modelsModule.getBundledModel("openai", "gpt-4o-mini"); -const after = catalogReads > 0; -modelsModule.getBundledProviders(); +const readsAfterLookup = bodyReads.length; +modelsModule.getBundledModel("openai", "gpt-4o-mini"); +modelsModule.getBundledModels("openai"); +const readsAfterRepeat = bodyReads.length; +const directCatalog = JSON.parse(realReadFileSync(${JSON.stringify(modelsJsonPath)}, "utf8")); console.log(JSON.stringify({ - before, - after, - catalogReads, + readsAfterImport, + readsAfterEnumeration, + readsAfterLookup, + readsAfterRepeat, + bodyReads, providers, directProviders: Object.keys(directCatalog), model, directModel: directCatalog.openai["gpt-4o-mini"], + fullCatalogBytes: fs.statSync(${JSON.stringify(modelsJsonPath)}).size, + shardBytes: fs.statSync(${JSON.stringify(openAIShardPath)}).size, })); `); - expect(result).toMatchObject({ before: false, after: true, catalogReads: 1 }); - expect((result as { providers: string[]; directProviders: string[] }).providers).toEqual( - (result as { providers: string[]; directProviders: string[] }).directProviders, - ); - expect((result as { model: unknown; directModel: unknown }).model).toEqual( - (result as { model: unknown; directModel: unknown }).directModel, - ); + expect(result).toMatchObject({ + readsAfterImport: 0, + readsAfterEnumeration: 0, + readsAfterLookup: 1, + readsAfterRepeat: 1, + bodyReads: [openAIShardPath], + }); + const measured = result as { + providers: string[]; + directProviders: string[]; + model: unknown; + directModel: unknown; + fullCatalogBytes: number; + shardBytes: number; + }; + expect(measured.providers).toEqual(measured.directProviders); + expect(measured.model).toEqual(measured.directModel); + expect(measured.shardBytes).toBeLessThan(measured.fullCatalogBytes * 0.4); }); it("keeps public accessors synchronous", () => { From 26252a74223a28fb21bec745654f0b42f7011d10 Mon Sep 17 00:00:00 2001 From: Yeachan-Heo Date: Thu, 6 Aug 2026 21:10:09 +0900 Subject: [PATCH 2/2] fix: restore CHANGELOG history after rebase --- packages/ai/CHANGELOG.md | 3122 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 3122 insertions(+) diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 8b13789179..ebfd3a4723 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -1 +1,3123 @@ +# Changelog +## [Unreleased] + +### Changed + +- Reduced first-provider model-catalog parsing while preserving the full public JSON catalog. + +- Anthropic prompt caching now defaults to top-level automatic caching (`cache_control: { type: "ephemeral" }`) on the canonical Anthropic API and explicit block-level caching for Claude-family models on non-canonical Anthropic-compatible gateways (Cloudflare AI Gateway, GitHub Copilot, GitLab Duo, Vercel AI Gateway, zenmux, CLIProxyAPI, etc.). Explicit mode is the safer compatible default because gateways commonly inject, rewrite, or reject the top-level field; verified gateways can opt into it with `compat.promptCacheMode: "automatic"`. Non-Claude models on unknown compatible endpoints keep the no-cache default; `promptCacheMode: "none"` and configured or per-request `cacheRetention: "none"` still opt out. Non-canonical Claude models get the default ~5m lifetime unless the endpoint sets `compat.supportsLongCacheRetention: true`. + +### Fixed + +- `todo_write` raw argument rejections now carry bounded, authority-controlled correction codes for each rejected shape: unknown root keys, unknown operation-entry keys, done/drop entries missing a task or phase target, and unknown init list-entry keys. Each code maps to a fixed correction message naming the accepted shape (never echoing the offending input), so invalid calls surface specific guidance while valid payloads keep the existing passthrough/coercion path (#3916). +- Anthropic Sonnet 5 now exposes Anthropic's real `xhigh` and `max` thinking efforts on the Messages API (`minimal`/`low`/`medium`/`high`/`xhigh`/`max`), matching official support. The previous generic `kind === opus` gate excluded it from the full preset range; the capability predicate is now an explicit version-scoped list (Opus 4.7+, Sonnet 5+), so older Sonnet generations and Bedrock Converse routes stay fail-closed at their previously advertised levels (issue #3913). +- Alibaba Token Plan now exposes Qwen 3.8 Max under the provider-supported `qwen3.8-max` wire id instead of the rejected `qwen-3.8-max` spelling; catalog regeneration canonicalizes a legacy discovered alias rather than retaining a broken duplicate (#3909). +- Canonicalized first-class MiniMax M3 catalog ids (issue #3896). The bundled catalog previously shipped stale lowercase `minimax-m3` duplicates (512K) next to the canonical `MiniMax-M3` (1M) on all four first-class MiniMax providers, plus a non-official `minimax-v3` entry under `minimax-code`. The lowercase `minimax-m3` entries and `minimax-v3` are removed; `MiniMax-M3` is the single canonical first-class id (the regen-safe 1M pin in `applyGeneratedModelPolicy` now keys on `MiniMax-M3` / `MiniMax-M3[1m]` instead of the removed lowercase id), `DEFAULT_MODEL_PER_PROVIDER` points at `MiniMax-M3`, and the official Anthropic Token Plan id `MiniMax-M3[1m]` is first-class on the `minimax` / `minimax-cn` Anthropic routes with 1M context semantics. Unrelated catalog providers keep their own `minimax-m3` contracts. +- Anthropic thinking-replay repair now also triggers when the mutation/signature `invalid_request_error` arrives as a statusless in-stream SSE `error` event (issue #3900). Proxies such as CLIProxyAPI forward the upstream 400 body over an HTTP 200 SSE stream, so the thrown error carries no HTTP status; the classifiers previously required `status === 400` and let the session loop on an unrecoverable replay rejection. Statusless errors still require the full `invalid_request_error` thinking wording, so unrelated transport failures never claim the one-shot repair. +- Anthropic thinking-replay repair now also recovers when a proxy masks the rejection entirely (issue #3900). Live CLIProxyAPI captures replace the upstream 400 body with a generic `{"type":"api_error","message":"An error occurred while processing the request."}` SSE event on an HTTP 200 response, which names no cause and matches no transient phrase, so the turn died on the first attempt. Such a masked rejection now takes the same one-shot latest-then-full-history repair, but only before the first token and only while the request actually replays signed `thinking`/`redacted_thinking` blocks; masked failures on requests without replayed thinking still surface immediately. The classifier is exported as `isAnthropicMaskedProxyRejection`. + +- Anthropic cache-control resolution now falls back to `model.cacheRetention` at the provider boundary, preserving configured retention and request-over-model precedence through special dispatch wrappers such as GitLab Duo. A configured `cacheRetention: "none"` can no longer be dropped and replaced by the new automatic Claude-family cache marker. +- Anthropic explicit prompt caching now advances its conversation breakpoint during tool-use loops by marking the latest completed assistant tool-use turn while leaving the newest tool result uncached. Previously it kept refreshing only the original human message until another human turn arrived, pinning proxy cache reads to the static tools/system prefix throughout long agentic runs. +## [0.12.12] - 2026-08-05 + +### Fixed + +- OpenAI Responses and Azure OpenAI Responses now map the first-event timeout into the SDK request/setup timeout the same way Completions does, so a never-resolving pre-headers fetch on a provider-owned lazy stream cannot wait the SDK's 10-minute default before any transport watchdog exists. Alibaba Responses honors an explicit shorter first-event override before headers; Azure/env-pinned setup timeouts normalize to the typed `stream_first_event_timeout` failure. +- OpenAI Codex cost estimates now treat an explicit response `service_tier` as authoritative, so a request for priority processing that the provider serves at the default tier is no longer charged the priority multiplier; the requested tier remains the fallback when the terminal response omits the field. +- Added shared `isReasoningContentReplayError` classifier and `stripUnusableReasoningItems` repair for the DeepSeek-family reasoning-content replay rejection ("The `reasoning_content` in the thinking mode must be passed back to the API"). The classifier detects the error across message carrier shapes; the repair removes only `reasoning` items whose `encrypted_content` a proxy stripped to empty, preserving all non-reasoning history (text, tool calls, tool outputs). The agent loop consumes both for a bounded repair-and-resend circuit breaker. +- Codex statusless HTTP 200 SSE `invalid_request_error` events retry once without a forced named function choice only when the exact rejected name is still present in the request's serialized tools, before any output is emitted (#3669). + +## [0.12.11] - 2026-08-03 + +## [0.12.10] - 2026-08-03 +### Added + +- Anthropic OAuth can now pair by pasting the authorization code Anthropic displays (`https://platform.claude.com/oauth/code/callback`) instead of waiting on `http://localhost:54545/callback`, so a browser with no network route back to the machine running gjc can complete the login. Opt in per login with `OAuthLoginOptions.manualCode`; the loopback flow stays the default and is unchanged. Callback flows can now opt out of binding a local listener entirely (`OAuthCallbackFlowOptions.skipCallbackServer`), which fails fast when no manual code handler is supplied instead of idling until the five-minute timeout. The hosted redirect is a hard-coded constant with no env or config override, so it cannot be repointed at an attacker-controlled collector. + +### Fixed + +- Composer shell-policy failures now expose a stable structured marker plus provider-specific recovery guidance, while retaining recognition of prefix-only errors from older sessions. Cursor Composer requests use a native `read`/`grep`/`write`/`delete` discipline prompt rather than the generic hashline-tool vocabulary. +- Alibaba Token Plan streams now allow 600 seconds for the first semantic event, matching observed long-context TTFT above the previous 300-second cutoff. The outer lazy watchdog and both OpenAI transports share one provider fallback; OpenAI Completions also applies it before response headers, and Alibaba SDK connection timeouts from that pre-stream phase are normalized to the typed first-event failure so session retry policy does not replay the request as an unknown timeout. +- A plain `forbidden` failure no longer mutates credential state. `classifyFallbackTrigger` still returns the same `auth` class for HTTP 401 and 403, but now carries an `authDisposition` refinement of `"credential"` or `"forbidden"`. The refinement reads every code field (`openaiErrorCode`, `anthropicErrorType`, `providerCode`) and orders by specificity: a concrete credential fault wins, a `forbidden` in any field is otherwise terminal (so `{status: 401, providerCode: "forbidden"}` does not rotate), and the status decides only when no auth code is present. `transportFailureFacts` also reads `anthropicErrorType` back from its own key so re-normalizing already-built facts no longer drops it. `streamSimple` consults the disposition at both auth-capture exits — the error-event path and the thrown-error path, the latter unwrapping a nested `error.transportFailure` carrier that the shared `transportFailureFacts` extractor does not dereference — so a forbidden failure never reaches `onAuthError`, and `createAssistantAuthError` now preserves the structured transport facts on the callback error instead of reducing it to a status. The auth gateway's managed-failure bookkeeping likewise stops invalidating a credential on a forbidden response. Previously a single 403 could block an otherwise-healthy credential, and in a multi-credential pool could cycle through and block every row. +- `AuthStorage` gains `hasRuntimeCredentialSelector()` and `getSessionCredentialRowId()`. The first reports the `--credential` runtime pin, which lives in a different map from the `--api-key` override and previously had no accessor, so callers that must not rotate away from a pinned credential could not see it. The second returns the opaque stored row id for a session's current credential — never an email, account, project, or key material. + +## [0.12.8] - 2026-08-02 +### Added + +- Added read-only OpenCodex provider discovery with runtime-port resolution, identity-checked health probing, cached `/api/models` catalogs, raw wire model ids, and `/login opencodex` status reprobes without credential persistence. +- Added the Alibaba Token Plan `deepseek-v4-flash-0731` model with its 1M context, 384K output limit, OpenAI Completions routing, and documented low/high/max reasoning efforts. + +### Changed + +- OpenAI-compatible discovery and OpenAI Completions/Responses transports now preserve query-bearing endpoint routing, including repeated query parameters. Model resolution records whether a provider discovery result was fetched so consumers can distinguish current discovery evidence from cached data. + +### Fixed + +- Closed the two remaining ingress holes behind bare `Request Blocked` failures on OpenAI codex models. (1) The chatgpt.com/backend-api pre-model gate rejects with an HTTP 400 bare-`detail` body (`{"detail": "Request blocked."}`) carrying no `error.*` envelope and no `code=invalid_prompt`, so `parseCodexError` surfaced an unexplained message, `isInvalidPromptError` and the codex non-retryable classification missed it, and the session-level `invalid_prompt` circuit breaker never attempted a repaired resend. `parseCodexError` now reads top-level `detail` (string or `{message}`) bodies and classifies a leading `Request blocked` message without an explicit provider code as `invalid_prompt`, surfacing `Request blocked (code=invalid_prompt)` so every existing invalid_prompt contract engages. (2) Outgoing tool definitions (descriptions and JSON-schema strings) bypassed every request-boundary sanitizer on both the OpenAI Responses and OpenAI-codex-responses transports, so a `<|channel|>`-quoting MCP/skill tool description poisoned every request on the session in a way no history repair could fix. Both `convertTools` paths now neutralize reserved control tokens across the whole tool payload via the shared idempotent zero-width-space insertion (ref openai/codex#35838). +- Lazy built-in streams no longer place a normalized-event watchdog in front of providers that already monitor raw transport progress. This prevents active Anthropic, Azure OpenAI, and OpenAI-family streams from being replaced by a blank `Provider stream stalled while waiting for the next event` error when transport-only events refresh the provider watchdog; providers without their own watchdog keep the shared lazy-stream protection. + +### Fixed + +- Updated GPT-5.6 Sol, Terra, and Luna to current OpenAI Standard pricing, including Responses API cache-write attribution and full-request long-context pricing above 272K input tokens. + +## [0.12.7] - 2026-07-31 + +## [0.12.6] - 2026-07-31 + +## [0.12.5] - 2026-07-30 +### Fixed + +- Alibaba Token Plan requests now carry Qwen Code's canonical DashScope request fingerprint on both transports. The built-in `alibaba-token-plan` provider (openai-responses `qwen3.8-max-preview` and openai-completions `glm-5.2`/`deepseek-v4-pro`) now emits the four upstream identity/cache/auth headers (`User-Agent`, `X-DashScope-CacheControl: enable`, `X-DashScope-UserAgent`, `X-DashScope-AuthType: openai`) matching `QwenLM/qwen-code` v0.21.1 (commit `f4cd6e1`) exactly, via a shared helper. DashScope is compatibility-sensitive to this client fingerprint, so a non-identical set can cause request instability and affect first-event latency. Caller headers still win per key (upstream `{...default, ...customHeaders}` precedence); non-Alibaba providers are byte-unchanged (#3557). + +### Added + +- Reproducible Alibaba Token Plan header-parity A/B latency benchmark (`packages/ai/scripts/alibaba-token-plan-latency-ab.ts`): a fixed-seed interleaved A/B comparison of legacy vs Qwen-identical headers against a deterministic local HTTP server, reporting n/success/error/timeout and TTFT/total latency median/p90/p95/mean/stddev. No live credentials are required; a public-safe blocked-live-data receipt is included (`packages/ai/test/fixtures/alibaba-token-plan-latency-blocked-receipt.md`) (#3557). + + +## [0.12.4] - 2026-07-30 + +### Fixed + +- Mara Cloud login now validates pasted credentials against the authenticated chat-completions endpoint instead of the public `/v1/models` catalog. The catalog returns `200` even for random invalid bearer tokens, so the previous check could persist unusable keys. + +## [0.12.3] - 2026-07-30 + +### Added + +- Added first-class support for **Mara Cloud**, an OpenAI-compatible enterprise AI inference platform. Registers the `mara` provider descriptor, `/login` entry (API-key paste validated against `https://api.cloud.mara.com/v1/models`), `MARA_API_KEY` environment resolution, and bundled `models.json` seed models. Models are discovered dynamically from `GET /v1/models` (base URL `https://api.cloud.mara.com/v1`). + +## [0.12.2] - 2026-07-30 + +## [0.12.1] - 2026-07-29 + +### Fixed + +- Lazy-stream first-event timeouts now abort with `FirstEventTimeoutError` so `transportFailure.providerCode` is `stream_first_event_timeout` on the outer watchdog path shared by all bundled providers via `createLazyStream`. Idle stalls remain bare `Error`s (distinct class intentionally) (#3496). + +- Provider streams now surface first-event watchdog expiry as a typed timeout so callers can apply bounded retry policy without parsing error prose. +- Codex websocket first-event timeouts now discard the timed-out connection before the outer retry/fallback layer handles the typed failure, preventing late frames from the abandoned request from being consumed by the replayed turn. +- Codex named-tool requests now recognize provider `Tool choice '' not found in 'tools' parameter` errors as runtime capability failures and retry once without forcing the choice. +- The Kimi OAuth host (`KIMI_CODE_OAUTH_HOST` / `KIMI_OAUTH_HOST`) is now resolved from trusted environment sources only. That host receives the device-authorization request, the authorization-code exchange, and the refresh call that carries the existing refresh token, so reading it through the merged view that includes the caller's `cwd/.env` let a repository redirect the login flow and collect the user's Kimi credentials. Resolution now uses the non-project resolver; shell and user-level configuration is unchanged. +- The documented `GJC_NO_STRICT` environment variable now takes effect. `adaptSchemaForStrict` read only the legacy `PI_NO_STRICT`, so an operator hitting a provider that rejects strict function schemas set the documented name and strict mode stayed on. Both names are honoured, canonical name first, and `GJC_NO_STRICT` is now listed in the environment-variable reference rather than only in the schema-normalisation note. +- The documented `GJC_AUTH_NO_BORROW` environment variable now takes effect. Only the legacy `PI_AUTH_NO_BORROW` was read, so an operator who followed the documentation to disable macOS native-app token borrowing still had a JWT read out of the Perplexity desktop application during login. Both names are now honoured, and the contract stays presence-based as documented so that setting it to `0` cannot silently re-enable borrowing. +- The Azure client's `AZURE_OPENAI_API_KEY` fallback is now resolved from trusted environment sources only. It read the merged view that includes the caller's `cwd/.env`, so a repository could supply the credential the client authenticates with; provider credential resolution is documented as excluding the project `.env`, and this fallback now matches. An explicit caller-supplied key still takes precedence, and shell / user-level configuration is unchanged. +- Anthropic and Ollama tool calls cut off by an output-token limit are now marked incomplete before dispatch, so repaired partial JSON is rejected instead of executing with truncated arguments. +- The Anthropic "thinking blocks in the latest assistant message cannot be modified" 400 now escalates its one-shot replay repair. The error names the latest assistant message but its cited `messages.N.content.M` path can point at an earlier replayed turn, so the latest-only repair was rejected identically and killed the turn; recovery now retries once more with thinking dropped from every replayed assistant message. +- Anthropic adaptive-thinking `display` support is now decided by the canonical model-version parser instead of a provider-local `claude-opus-(\d+)-(\d+)` regex. The regex only matched two-component ids, so a single-component alias such as `claude-opus-5` was classified as pre-4.7 while its dated snapshot `claude-opus-5-20260101` was not: the alias sent `thinking: { type: "adaptive" }` without `display: "summarized"`, additionally requested the `interleaved-thinking-2025-05-14` beta, and had its returned thinking blocks recorded as raw rather than summarized. Both Anthropic and Bedrock providers now share `supportsAnthropicAdaptiveThinkingDisplay`, so alias and dated ids of the same model send an identical request shape. +- Anthropic requests that force a tool choice no longer replay signed thinking blocks. Forcing `tool_choice` strips `thinking` from the request (the API rejects the combination), but the converted history still carried native `thinking`/`redacted_thinking` blocks from thinking-enabled turns, so eager tool-forcing turns (e.g. the todo bootstrap) sent a request whose history contradicted its own thinking setting and drew a 400. The replay now degrades in the same rebuild; the forced request trades its prompt-cache prefix for a shape the API accepts. +- A definitively failed OAuth refresh can no longer loop forever instead of disabling the credential. The refresh-failure path disables the row with a CAS conditioned on its serialized `data`, and treated a lost CAS as proof that a peer had rotated the token: it reloaded the store and re-resolved, without bound. That predicate also misses when nothing was rotated — an account switcher that replaces the provider's rows leaves the attempted id gone, and an unrelated identity-metadata write leaves the row byte-different — so a revoked credential was never disabled and every subsequent request re-issued the same `invalid_grant` refresh (observed in the wild as ~3k `OAuth token refresh failed` / `disable lost CAS` log pairs in 3.5 hours, one wasted refresh round-trip per request). When the row still holds the refresh token that just failed, it is now disabled by id (no peer rotation exists to clobber); otherwise the reload-and-retry recovery is capped, so resolution terminates instead of recursing until the runtime dies. + +## [0.12.0] - 2026-07-28 + +### Added + +- Added first-class support for **BizRouter**, an OpenAI-compatible Korean enterprise LLM gateway. Registers the `bizrouter` provider descriptor, `/login` entry (API-key paste validated against `https://api.bizrouter.ai/v1/models`), `BIZROUTER_API_KEY` environment resolution, and bundled `models.json` seed models. Models are discovered dynamically from `GET /v1/models` (base URL `https://api.bizrouter.ai/v1`). +### Fixed + +- Anthropic subscription OAuth requests now use the current Claude Code compatibility attribution (`2.1.219`, `sdk-cli`) instead of the stale `2.1.63` CLI fingerprint that Anthropic can misclassify as extra usage. +- Connection failures now name the transport code and the target URL. Bun reports DNS and socket failures as a bare `Error` whose message is a standalone hint ("Was there a typo in the url or port?", "Unable to connect. Is the computer able to access the url?") and keeps the actionable facts on `code` and `path`, but only `message` reached the assistant message. A provider outage, a local DNS failure, and a mistyped custom base URL therefore all rendered as the same context-free sentence with no host in it. Such failures now read `... (transport=FailedToOpenSocket url=https://chatgpt.com/backend-api/codex/responses)`; the URL is reduced to origin and path so a key carried in the query string is not surfaced. + +### Documentation + +- `docs/environment-variables.md` now names the Anthropic Foundry gateway variables that are actually read: `CLAUDE_CODE_USE_FOUNDRY`, `CLAUDE_CODE_CLIENT_CERT`, and `CLAUDE_CODE_CLIENT_KEY`. The page advertised `ANTHROPIC_MODEL_CODE_*` spellings that no code path reads, so an operator following it could not enable Foundry mode at all, and the mTLS client material was silently ignored. + +## [0.11.11] - 2026-07-26 + +### Fixed + +- The Kimi usage endpoint base (`KIMI_CODE_BASE_URL`) is now resolved from trusted environment sources only. That base becomes the URL the usage request sends `Authorization: Bearer ` to, so reading it through the merged view that includes the caller's `cwd/.env` let a repository collect the user's Kimi access token. An explicit caller-supplied base URL still takes precedence, and shell / user-level configuration is unchanged. +- The Gemini CLI compatibility version used in the outbound `User-Agent` is refreshed from `0.50.0` to `0.52.0`, matching the current upstream release. The repository ships `check-spoofed-versions` for exactly this, but that check is not wired into CI, so the value had drifted two minor releases behind. +- The OpenAI and Azure endpoint decisions are now resolved from trusted environment sources only: `OPENAI_BASE_URL` (streaming responses, completions, and the model manager) and `AZURE_OPENAI_BASE_URL`. `Bun.env` is `process.env` and the env module merges the caller's `cwd/.env` into it, so a repository could previously plant a `.env` that redirected authenticated requests; the two provider paths already reached for `$inheritedEnv` but re-admitted the project `.env` through a fallback. Resolution now goes through the non-project resolver (launching shell plus GJC/user-owned `.env` files); shell and user-level configuration is unchanged. +- The OpenAI and Azure endpoint decisions are now resolved from trusted environment sources only: `OPENAI_BASE_URL` (streaming responses, completions, and the model manager), `AZURE_OPENAI_BASE_URL`, and `AZURE_OPENAI_RESOURCE_NAME` (the alternate constructor for the same Azure host). `Bun.env` is `process.env` and the env module merges the caller's `cwd/.env` into it, so a repository could previously plant a `.env` that redirected authenticated requests; the two provider paths already reached for `$inheritedEnv` but re-admitted the project `.env` through a fallback. Resolution now goes through the non-project resolver (launching shell plus GJC/user-owned `.env` files); shell and user-level configuration is unchanged. +- Google credential material is now resolved from trusted environment sources only: the `GOOGLE_APPLICATION_CREDENTIALS` service-account / authorized-user file path used by the ADC loader, and `GOOGLE_CLOUD_API_KEY` used as the Vertex API key. Both were read through the merged view that includes the caller's `cwd/.env`, so a repository could ship a key file and point the agent at it, making it authenticate to Google as an identity the repository chose. `stream.ts` already resolved the same ADC variable through the non-project resolver; the two now agree. An explicit caller-supplied API key still takes precedence. +- The Grok usage token fallback (`GROK_CLI_OAUTH_TOKEN`) is now resolved from trusted environment sources only. It authenticates the billing/usage call, and reading it through the merged view that includes the caller's `cwd/.env` let a repository decide which account that call ran against. Stored credentials keep precedence, and shell / user-level configuration is unchanged. +- The Vertex AI location (`GOOGLE_CLOUD_LOCATION`) can no longer redirect authenticated requests off Google. It is interpolated into the request host (`${location}-aiplatform.googleapis.com`), so a value containing `/` terminated the authority component and sent the Google access token to an arbitrary origin — and it was read through the merged view that includes the caller's `cwd/.env`. It now resolves from trusted sources only and must be a region label; `GOOGLE_CLOUD_PROJECT` / `GCLOUD_PROJECT` moved to the same trusted resolver. +- HTTP 400 request dumps are now bounded. Every 400 wrote a file containing the full sanitized request body and nothing ever removed one, so the directory grew without limit — a developer machine reached 27,249 files totalling 7.0 GB, which was 96% of everything under `~/.gjc`. The newest 50 are retained, matching the bounded retention the rotating application log already uses, and pruning stays best-effort so diagnostics never turn a request failure into a second failure. +- Anthropic `ping` keepalives no longer reset stream progress, so responses that stop producing content now reach the idle timeout instead of hanging indefinitely. +- The Anthropic endpoint decision is now resolved from trusted environment sources only: `ANTHROPIC_BASE_URL`, `FOUNDRY_BASE_URL`, `ZCODE_PLAN_ANTHROPIC_BASE_URL`, and the `CLAUDE_CODE_USE_FOUNDRY` mode switch. `Bun.env` is `process.env` and the env module merges the caller's `cwd/.env` into it, so a repository could previously plant a `.env` that redirected authenticated Anthropic requests — the resolved base URL becomes `${baseUrl}/v1/messages` while the headers carry the API key or OAuth token. Resolution now goes through the non-project resolver (launching shell plus GJC/user-owned `.env` files); shell and user-level configuration is unchanged. +- The documented `GJC_OPENAI_STREAM_IDLE_TIMEOUT_MS` environment variable now takes effect: the stream-watchdog idle-timeout helpers resolve it GJC-first before the legacy `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` / `PI_STREAM_IDLE_TIMEOUT_MS` aliases (previously only the `PI_`-prefixed names were read, so setting the documented GJC name was a silent no-op). +- The documented OpenAI-code provider knobs now take effect: `GJC_OPENAI_CODE_DEBUG`, `GJC_OPENAI_CODE_WEBSOCKET`, `GJC_OPENAI_CODE_WEBSOCKET_IDLE_TIMEOUT_MS`, `GJC_OPENAI_CODE_WEBSOCKET_RETRY_BUDGET`, and `GJC_OPENAI_CODE_WEBSOCKET_RETRY_DELAY_MS` are resolved GJC-first ahead of the legacy `PI_CODEX_*` names. The Codex → OpenAI-code rename had updated the documentation but not the reads, so every documented name was a silent no-op. + +## [0.11.9] - 2026-07-24 +### Fixed + +- Credential selection and aggregate usage callers now stop awaiting immediately when their own signal aborts without cancelling shared usage fetches, and ranking deadlines no longer re-await the same stalled usage request during credential resolution. +- Kimi Code now allows one continuous 300-second first-event wait before aborting, while preserving explicit caller and environment timeout overrides and the existing inter-event idle timeout. + +### Added + +- Added first-class support for **OpenGateway by Sionic AI**, an OpenAI-compatible gateway. Registers the `opengateway` provider descriptor, `/login` OAuth entry (API-key paste validated against `https://apis.opengateway.ai/v1/models`), `OPENGATEWAY_API_KEY` environment resolution, and bundled `models.json` seed models. Models are discovered dynamically from the OpenAI-compatible `/v1/models` endpoint (base URL `https://apis.opengateway.ai/v1`). + +## [0.11.8] - 2026-07-23 + +### Fixed + +- OpenAI Responses / Codex native history replay no longer submits missing resident-image placeholders as `input_image.image_url`. Invalid values (including `[Session resident imageUrl blob missing: …]`) are dropped, or retained as `file_id`-only parts when a non-empty `file_id` is present, so a single unavailable historical image cannot brick `/retry` (#2924). +- Raised the first-event stream timeout floor to five minutes for `alibaba-token-plan` models at both the OpenAI provider and outer lazy-stream watchdogs, while preserving caller and environment overrides and the existing inter-event idle timeout. +- OAuth refresh peer-rotation recovery now runs before failure classification instead of only on the definitive-failure path, and the definitive matcher recognizes the "grant is invalid" phrasing. Providers whose invalid-grant response does not contain the literal `invalid_grant` (e.g. Kimi's 400 "The provided authorization grant is invalid") previously had rotation races misclassified as transient, temp-blocking a healthy credential for five minutes on every race; with Kimi's ~12-minute access tokens and multiple processes sharing the credential store this surfaced as repeated logouts. Genuine revocations are now disabled with a cause instead of looping temp-blocks. +- Anthropic 400 `Invalid \`signature\` in \`thinking\` block` responses now trigger the one-shot thinking replay repair instead of failing the turn. The existing repair matcher only recognized the "latest assistant message ... cannot be modified" wording, so the signature-validation variant — which can cite a `thinking`/`redacted_thinking` block anywhere in the replayed history (e.g. after compaction/pruning rewrote an earlier turn) — was treated as a fatal request error. The retry now rebuilds the request with thinking blocks dropped from every replayed assistant message (`repairAllAssistantThinking`), while the latest-message mutation variant keeps the targeted latest-only repair. + +### Changed + +- Raw tool-argument rejection hooks can now select from bounded, authority-controlled correction codes. Unknown or extension-supplied values retain the byte-for-byte generic rejection instead of reaching model-visible validation errors. + +## [0.11.7] - 2026-07-22 + +### Changed + +- Replaced the `alibaba-coding-plan` provider with first-class `alibaba-token-plan` support. The `/login` OAuth list, provider descriptor, model manager, models.dev descriptor, and bundled `models.json` now target the maintained Alibaba Token Plan endpoint (`https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1`, env `ALIBABA_TOKEN_PLAN_API_KEY`) and validate logins against `deepseek-v4-pro`. The retired `alibaba-coding-plan` provider pointed at `coding-intl.dashscope.aliyuncs.com`, which rejected real token-plan keys with 401 and was the only Alibaba entry exposed in `/login`. + +## [0.11.4] - 2026-07-20 + +### Added + +- Added the native Kimi Code `k3` catalog entry with its 1M-token context window, multimodal input, and reasoning support. + +## [0.11.2] - 2026-07-19 + +### Fixed + +- `transportFailureFacts` now reduces transport headers to a plain record containing only the retained retry signals (`retry-after`, `retry-after-ms`). Providers attach these facts to error `AssistantMessage`s, and the previous shape carried the live fetch/SDK `Headers` instance — which is not structured-cloneable (`structuredClone` throws `DataCloneError`, "The object can not be cloned." under Bun) and not JSON-serializable (persisted as `{}` in session files, silently dropping the retry hint). Under a managed model fallback chain, snapshotting such an error message replaced the real provider failure with the local clone error and exhausted the whole chain. Normalization is idempotent (re-running facts on facts is structurally stable; errors carrying only unretained headers with no status/code now yield no facts instead of an empty facts object), Retry-After classification (`classifyFallbackTrigger`) is unchanged, and arbitrary response headers no longer reach persisted facts. + +## [0.11.0] - 2026-07-15 +### Added + +- Exported the canonical thinking-control mode runtime vocabulary so packed SDK consumers can validate provider metadata against the same public `@gajae-code/ai` contract. + +### Fixed + +- Fixed frequent `Request blocked (code=invalid_prompt)` failures on gpt-5.6 (Sol/Terra/Luna) subagent, default-agent, and compaction turns (ref openai/codex#32028, oh-my-pi#5184). Leaked Harmony control-token markers (e.g. `<|channel|>analysis`) were only neutralized on the replayed-history payload path, so markers in assistant reasoning summaries, live-converted message/tool-output text, and user-authored content reached the OpenAI Responses and OpenAI-codex-responses transports verbatim and wedged the session (the poisoned item was re-sent every turn). Both transports now neutralize reserved control tokens across the entire outgoing `input` array at the request boundary via an idempotent zero-width-space insertion that keeps the text human-readable. + +- Closed the remaining `Request blocked (code=invalid_prompt)` wedge on gpt-5.6 caused by header-form leaked Harmony markers. The reserved-control-token sanitizer only matched the simple `<|ident|>` shape, so a header-form marker carrying a recipient (e.g. `<|assistant to=functions.bash|>`) survived every sanitizer path (replay, request boundary, compaction) and kept re-poisoning history even after the earlier fixes. The pattern now also matches the scoped header grammar — a known Harmony role (`system`/`developer`/`user`/`assistant`/`tool`) plus a `to=` assignment with unbounded recipient length — while leaving ordinary delimiter/pipe text untouched (arbitrary `<|foo bar=baz|>`, F# `value <| f |> g`, compact `sum<|a+b|>c`, and multi-line bodies never match). The simple branch remains a strict superset of the prior identifier-only pattern (#2267). + +- Made the `Request blocked (code=invalid_prompt)` classification explicit and shared across transports (#2282). `invalid_prompt` was only non-retryable by omission — it appeared in neither the codex retryable nor non-retryable event set, and the plain OpenAI Responses transport surfaced it as a generic error with no durable marker. It is now in the codex `CODEX_NON_RETRYABLE_EVENT_CODES` set (code and message forms), the Responses error path tags `transportFailure.providerCode = "invalid_prompt"`, and a new exported `isInvalidPromptError` predicate is the single contract both transports and the session-level circuit breaker key on. Ordinary control-token / pipe text (F# `value <| f |> g`, `sum<|a+b|>c`, `<|foo bar=baz|>`) is unaffected; genuinely transient errors (`server_error`, `model_error`) stay retryable. + +## [0.10.2] - 2026-07-14 + +### Fixed + +- Fixed frequent `Request blocked (code=invalid_prompt)` failures on gpt-5.6 (Sol/Terra/Luna) subagent, default-agent, and compaction turns (ref openai/codex#32028, oh-my-pi#5184). Leaked Harmony control-token markers (e.g. `<|channel|>analysis`) were only neutralized on the replayed-history payload path, so markers in assistant reasoning summaries, live-converted message/tool-output text, and user-authored content reached the OpenAI Responses and OpenAI-codex-responses transports verbatim and wedged the session (the poisoned item was re-sent every turn). Both transports now neutralize reserved control tokens across the entire outgoing `input` array at the request boundary via an idempotent zero-width-space insertion that keeps the text human-readable. +### Fixed + +- Fixed Fable 5 adaptive thinking being billed but never displayed: model discovery now classifies `claude-fable-*` as `anthropic-adaptive` (was cached as `budget`, sending `enabled`+`budget_tokens` that Fable answers with signature-only thinking), and `supportsAdaptiveThinkingDisplay` opts Fable into `display: "summarized"` on both Anthropic Messages and Bedrock Converse transports (#2791). + +## [0.10.0] - 2026-07-12 +### Fixed + +- Made Bedrock model visibility reflect credential-only static/shared AWS sources with supported profile shapes, authenticated real bearer-token requests, and stopped advertising unsupported ECS/IRSA sources (#1934). +- Added a typed provider safety-stop classification across Anthropic, OpenAI-compatible, and Google streams so callers can distinguish policy terminations from generic provider errors without parsing display text. + +## [0.9.6] - 2026-07-10 +### Fixed + +- Normalized the GPT-5.6 Sol/Terra/Luna context window to the 373K usable prompt budget on both OpenAI and OpenAI code transports (was 1,050K / 272K), matching the live openai-codex catalog. + +## [0.9.5] - 2026-07-09 +### Added + +- Added GPT-5.6 Sol, Terra, and Luna catalog/parser support for OpenAI and OpenAI code transports, including `low` through canonical `max` reasoning efforts, verified pricing/limits, and GPT-5.6 cache-write pricing (#1925; OmX #3103). + +### Fixed + +- Stopped requesting `strict: true` tool use on Anthropic OAuth requests: the Claude Code OAuth surface mishandles strict tools, returning tool calls with empty/undefined arguments and occasionally corrupted tool names. API-key requests keep strict tool use; `PI_NO_STRICT=1` is no longer needed as a workaround. + +## [0.9.4] - 2026-07-09 +### Fixed + +- Preserved Anthropic OAuth tool-call names and streamed arguments across interleaved tool-use blocks, preventing prefixed tool names and partial JSON deltas from being dropped or misattributed. +- Embedded `models.json` via a `with { type: "file" }` import so compiled release binaries load the bundled model catalog from bunfs instead of crashing at startup with `Cannot find module './packages/ai/src/models.json'` (v0.9.3 regression, #1914). + +## [0.9.2] - 2026-07-09 +### Added + +- Added runtime credential selectors so callers can pin stored multi-account credentials by id, email, account id, or project id instead of using automatic rotation/ranking. + +### Fixed + +- Refreshed the default Gemini CLI impersonation version to 0.50.0 so the spoofed User-Agent freshness gate passes for the 0.9.2 release. +- Hid the non-callable `google-antigravity/gemini-3.1-pro-high` selector from bundled, dynamic, and cached Antigravity catalogs after live Cloud Code Assist calls returned HTTP 400; `google-antigravity/gemini-3.1-pro-low:high` remains the working high-thinking path. +- Preserved Anthropic tool-use arguments supplied on `content_block_start` when no `input_json_delta` chunks follow, preventing finished tool calls from collapsing back to `{}`. +- Refreshed the default Gemini CLI impersonation version to 0.50.0 so the spoofed User-Agent freshness gate passes for the 0.9.2 release. + +## [0.9.1] - 2026-07-08 + +### Fixed + +- Unified the Cursor client version used across provider requests and discovery. +- Detected ZAI weekly limit exhaustion as a structured rate-limit condition. +- Pointed Sakana Fugu OAuth/login guidance at the Sakana platform console and documented the `fish_` key prefix expectation. + +## [0.9.0] - 2026-07-07 + +### Fixed + +- Capped OpenCode Go Kimi reasoning efforts that the Go chat-completions endpoint rejects (`kimi-k2.5:minimal` → `low`, `kimi-k2.7-code:xhigh|max` → `high`) and degraded forced `tool_choice` for those models so Kimi Go sessions and title-generation turns no longer fail with generic upstream 400s. + +## [0.8.2] - 2026-07-06 + +### Fixed + +- Refreshed matching existing OAuth credentials during `importCredentialIfAbsent` and cleared provider usage caches after the write, so external credential import no longer keeps stale tokens or stale usage-limit reports for the same account. + +## [0.7.9] - 2026-07-01 + +### Fixed + +- Mapped DeepSeek-style `prompt_cache_hit_tokens` and `prompt_cache_miss_tokens` usage fields into OpenAI-compatible prompt-cache accounting (#1329). + +## [0.7.5] - 2026-06-27 + +### Fixed + +- Sanitized Codex history replay text fields so malformed/non-string replay text no longer corrupts the rebuilt request payload (#1199). +- Preserved object-valued tool replay fields when rebuilding Codex history payloads instead of coercing them to strings (#1200). + +## [0.7.4] - 2026-06-27 + +### Fixed + +- Treated `openai-codex-device` as an auth-storage alias for `openai-codex`, so headless/device Codex logins show as authenticated and logout/remove the stored Codex credential instead of appearing unsaved (#1151). +- Disabled thinking for OpenCode Go forced tool calls so forced-tool turns no longer emit unsupported thinking content (#1185). +- Restored the GPT-5.5 context window to its correct size (#1186). + +## [0.7.3] - 2026-06-25 +### Added + +- Added the Sakana Fugu provider (`fugu`) with API-key auth (`FUGU_API_KEY`) and bundled catalog models (#1086). + +### Fixed + +- Wired Fugu API-key auth login so `gjc login fugu` stores a reusable `FUGU_API_KEY` credential instead of the provider having no supported login flow (#1090). +- Matched the real google-antigravity IDE request headers, system prompt, and preamble config so requests are accepted by Cloud Code Assist (#1080). +- `isContextOverflow` now detects a third proxy-level overflow case — an empty response with `stopReason: "stop"` and anomalously low usage (input + output ≤ 5 tokens), as emitted by some proxies (notably LiteLLM) when the upstream context window is exceeded — so callers surface overflow instead of treating it as a clean completion (#1102). + +### Security + +- In no-auth (tokenless) auth-gateway mode, requests carrying a browser `Origin` header are now rejected before CORS preflight handling or route dispatch, while local non-browser CLI clients keep the existing tokenless flow and token-configured browser clients keep the bearer-token/preflight flow (#1115). + +## [0.7.2] - 2026-06-24 + +### Fixed + +- Reject truncated or incomplete streamed tool calls instead of executing them with partial arguments, so a cut-off tool-call payload fails fast rather than running against a mismatched schema. + +## [0.7.1] - 2026-06-23 + +### Changed + +- Reworked the unofficial, opt-in `glm-zcode` provider to mirror how the ZCode desktop app actually reaches GLM: after the ZCode OAuth handshake it now auto-provisions a real Z.AI API key and calls `api.z.ai/api/anthropic` directly, instead of the `zcode.z.ai` coding-plan gateway that required an Aliyun captcha and a ZCode-JWT-bound plan entitlement. Requests also carry ZCode client source headers (`User-Agent: ZCode/`, `X-ZCode-Agent: glm`, plus platform/locale/timezone), so Z.AI recognizes the caller as the ZCode client (#1013, #1016, #1017). + +## [0.7.0] - 2026-06-22 + +### Added + +- Added the bundled `google-gemini-cli/gemini-3.5-flash` model entry so Gemini CLI users can select the model from the static registry (#965). + +## [0.6.4] - 2026-06-20 + +### Fixed + +- Fixed argument mis-attribution in the OpenAI-compatible Responses API streaming decoder when a single response emits multiple tool-call items. The decoder buffered streamed argument deltas against a single most-recent item/block slot, so interleaved or back-to-back `function_call`/`custom_tool_call` argument deltas could be applied to the wrong item — finalizing a tool call with another call's arguments (e.g. one tool's payload landing on a different tool's schema and tripping validation). Streamed deltas now accumulate against a per-item buffer keyed on stable item identity (`item_id` primary; positional `output_index` only when finite), each block records its content index at registration time, and finalization writes onto the same block stored in the message content while reading only the matching item's buffer. Single-tool-call streams, reasoning/text streaming, and the Chat Completions path are unchanged. + +## [0.6.2] - 2026-06-19 +### Added + +- Added opt-in `compat.sendSessionHeaders` for the `openai-completions` provider. When enabled (default off), the agent session id is forwarded as vendor-neutral `session_id` and `x-session-id` request headers to any OpenAI-compatible endpoint, letting relays/proxies do session-affinity routing and reuse a server-side prompt cache keyed by the session. Previously only the `openai-responses` provider injected session headers, and only against a first-party OpenAI base URL. Injection runs after the caller's `headers`/`extraHeaders` are merged and before `requestTransform`, and uses `??=` so any header the caller already set always wins; it is skipped entirely when the flag is off or no session id is available, leaving existing provider behavior byte-identical. The first-party `openai-responses` gating is unchanged. + +### Fixed + +- Prevented OpenAI Codex Responses `invalid_function_parameters` / tool-schema validation error events from being treated as retryable `server_error`s, so malformed request schemas fail fast instead of burning the full retry budget. +- Read LM Studio `/v1/models` nested metadata such as `meta.n_ctx`, `meta.n_ctx_train`, and `details.max_tokens` when normalizing dynamically discovered GGUF-backed local models. +- Corrected the bundled `openai-codex/gpt-5.5` context window from an overstated 400K back to its true 272K (272,000-token) window, so context-cap / auto-compaction thresholds no longer let gpt-5.5 sessions overrun the model's real limit before compaction (#873). + +## [0.6.1] - 2026-06-18 + +### Fixed + +- Generalized tool `input_schema` root-combinator flattening across providers so discriminated-union tool inputs (e.g. the `computer` tool, a `z.union`) no longer ship a bare top-level `anyOf`/`oneOf`/`allOf` root that strict validators reject. The Anthropic-only fix from 0.5.4 is now the shared, provider-agnostic `flattenToolRootCombinators` (in `utils/schema`) and is applied by Amazon Bedrock, OpenAI Chat Completions / Responses / Codex-Responses / Azure-Responses, Ollama, and Cursor. Previously only Anthropic flattened the root, so those providers forwarded the union root verbatim and a union-root tool failed upstream — Bedrock Converse (including via Kiro/CodeWhisperer relays) returned `400 TOOL_SCHEMA_INVALID: The value at toolConfig.tools.N.toolSpec.inputSchema.json.type must be one of the following: object`. Anthropic behavior is unchanged (it now calls the shared util), Google / Cloud Code Assist keep their own object-merge, and object-root tools, nested combinators, and runtime Zod validation are all untouched. + +## [0.6.0] - 2026-06-18 +### Fixed + +- Corrected the bundled `zai/glm-5.2` context window from 200K to its true 1M (1,000,000-token) lossless window. GLM-5.2 was added in #579 by copying GLM-5.1's 200K entry, and that stale value survived every `generate-models` run because provider-scoped models bypass the models.dev refresh in `applyGlobalModelsDevFallback`. Added a regen-safe pin in `applyGeneratedModelPolicy` (mirroring the Bedrock-Opus-4.6 precedent) so the 1M value persists, and updated the bundled catalog entry. The wrong 200K tripped auto-compaction / context-cap thresholds ~5x early for GLM-5.2 sessions. +- Corrected the bundled `minimax-m3` context window from 512K to its true 1M (1,000,000-token) window per the official MiniMax docs (platform.minimax.io documents MiniMax-M3 as a 1M-context frontier coding model). All four provider copies (`minimax`, `minimax-cn`, `minimax-code`, `minimax-code-cn`) carried the stale 512K, which survived `generate-models` (provider-scoped models bypass the models.dev refresh in `applyGlobalModelsDevFallback`) and tripped auto-compaction / context-cap thresholds 2x early on MiniMax sessions. Added a regen-safe pin in `applyGeneratedModelPolicy` keyed on `model.id === "minimax-m3"` and updated the bundled entries. `minimax-v3` (an undocumented catalog alias) is intentionally left untouched. + +## [0.5.4] - 2026-06-17 + +### Fixed + +- Fixed Anthropic tool schema compatibility for discriminated-union tool inputs by flattening only the model-facing input-schema root, avoiding top-level `oneOf`/`anyOf`/`allOf` request rejections while preserving nested combinators and runtime validation authority. + +- Made the "No API key for provider" error from `stream`/`complete` actionable for OpenCode Go/Zen subscription providers in headless runs (#755). The subscription is itself an API key (`OPENCODE_API_KEY`, created at https://opencode.ai/auth), not a separate OAuth/session token; the new `formatProviderCredentialHint` helper (composed into `formatMissingApiKeyError`) names the env var GJC reads, warns that a project `.env` is intentionally ignored for provider credentials, and points OpenCode users at the one-time interactive `gjc auth-broker login ` credential capture to run before headless/print mode. No auth behavior changed. + +## [0.5.3] - 2026-06-16 + +### Added + +- Added opt-in `AuthStorageOptions.credentialRankingMode` (`balanced` (default) | `earliest-reset`) for multi-account OAuth credential selection. `earliest-reset` ranks non-blocked credentials earliest-expiry-first — draining the soonest-to-reset account before its perishable tumbling-window quota (e.g. Claude 5h/7d) is lost at reset — keeping the existing drain-rate/used-fraction metrics as tiebreakers. `balanced` is byte-identical to prior behavior, and ranking only runs at session start (or when the session's preferred credential is blocked), so this never thrashes accounts mid-session. + +### Fixed + +- Allowed `openai-codex-responses` custom backends to use opaque `apiKey` bearer tokens by omitting `chatgpt-account-id` when the token does not expose a Codex account id. +- Fixed OpenAI code websocket continuations to treat codex-lb's `codex_previous_response_stale` response failures as expired `previous_response_id` anchors and retry with full context instead of surfacing the transient failure. +- Bounded the Cursor provider's conversation cache with an LRU(64) + 1h TTL and added `disposeCursorConversation`, so long-running sessions no longer retain Cursor conversation state without limit (#717). + +## [0.5.2] - 2026-06-15 + +### Changed + +- Changed the Anthropic provider's default prompt-cache retention to `long` (`ttl: "1h"`) when a request and model omit `cacheRetention`. The previous default (~5m) was too fragile for long-running Codex/Gajae-Code subagent workflows, where the cached prefix was frequently evicted between turns. The 1h `ttl` marker is only emitted on the canonical Anthropic API (`api.anthropic.com`) for models advertising `supportsLongCacheRetention`; proxies, gateways, and models without that capability still fall back to the default ephemeral breakpoint (Anthropic services it at ~5m). Explicit request/model `cacheRetention` and the `GJC_CACHE_RETENTION`/`PI_CACHE_RETENTION` env overrides continue to win, and `resolveCacheRetention` now accepts a `fallback` argument (defaulting to `"short"`) so non-Anthropic providers are unaffected. + +## [0.5.1] - 2026-06-14 + +### Fixed + +- Classified model/message limit exhaustion as persistent usage-limit errors so hosts fail fast or switch credentials instead of leaving sessions in an unbounded retry/working state. + +## [0.5.0] - 2026-06-13 + +### Added + +- Added a generic tool-choice capability model: `toolChoiceSupport` compat enum (`none`/`auto`/`required`/`named`) available on every forced-choice-capable API, derived from the legacy `supportsToolChoice`/`supportsForcedToolChoice` booleans when absent, with a shared `resolveToolChoice` helper that clamps requested tool choices (`named` → `required` → omit) and returns structured degradation metadata. +- Added a transparent one-shot fallback for forced `tool_choice` 400s ("tool_choice forces tool use is not compatible with this model" and equivalents): transports retry once without the forced field at a pre-content streaming boundary, record the discovery in an in-memory per-process incapability registry, and emit an internal non-rendered `toolChoiceIncapability` event. Applies to Anthropic, OpenAI Completions/Responses, Azure Responses, OpenAI code Responses, Bedrock (including event-stream `validationException`), Ollama, Google, and Gemini CLI transports. +- Added bundled catalog entries for `kimi-code/kimi-k2.7-code`, `minimax-code/minimax-v3`, and `xai/grok-composer-2.5-fast`. +- Added composer-harness anchor/edit discipline injection for Cursor Composer and Grok Composer models so provider-specific coding harness priors do not override GJC hashline/edit contracts. + +### Removed + +- Removed the retired `anthropic/claude-fable-5` bundled catalog entry. + +### Changed + +- Moved the Claude Mythos forced-tool-use incapability knowledge out of Anthropic request code into catalog compat defaults (`toolChoiceSupport: "auto"`), applied during catalog generation, dynamic discovery, and bundled-model loading via a shared predicate. +- Google `toolConfig` mapping now sends `FunctionCallingConfig` mode `ANY` for both `required` and `any` requests instead of silently relaxing `required` to `AUTO`. +- Optimized `EventStream` queue draining with a head-indexed queue to avoid repeated array shifts in hot streaming paths. +- Clarified lazy builtin provider registration as the main provider loading path. + +### Fixed + +- Stripped `OpenAI-Beta` in the `openai-proxy` request transform profile so OpenAI-compatible proxies do not receive SDK beta headers. + +## [0.4.5] - 2026-06-12 + +### Changed + +- Bumped the spoofed Gemini CLI User-Agent version to 0.46.0 to track the upstream release. + +### Fixed + +- Fixed direct Anthropic requests for Claude Mythos-style models that support tools but reject forced tool use by omitting forced `tool_choice` while preserving `auto`/`none` choices. +- Preserved catalog transport metadata for opencode-go `qwen3.7-max` model resolution. +- Set SQLite auth-store `busy_timeout` before enabling WAL so initialization is reliable under contention. +- Resolved provider credentials from inherited or GJC-owned environment sources instead of trusting the caller project's `.env` overlays. +- Rendered and executed Cursor-native tool calls without dropping provider-specific call details. + +## [0.4.4] - 2026-06-10 + +- Version aligned with the 0.4.4 monorepo release; no functional changes in this package. + +## [0.4.2] - 2026-06-09 + +### Fixed + +- Treated `gpt-5.5` as a 400K-context model wherever context caps / auto-promote thresholds are resolved, so a ~272K session is no longer considered over-cap and no longer demotes to `gpt-5.4`. Pinned the OpenAI Codex `gpt-5.5` context window to 400K and removed its `gpt-5.4` promotion target (the smaller window made it a demotion) ([#428](https://github.com/Yeachan-Heo/gajae-code/issues/428)). + +## [0.4.0] - 2026-06-06 + +### Added + +- Added minimax-m3 model support across MiniMax providers. +- Honored the `GJC_CACHE_RETENTION` environment variable and `cacheRetention` model config so hosts can control provider prompt-cache retention (#379/#381). +- Added an Opus max reasoning preset to the model thinking presets (#372). +- Refreshed the generated models schema for the new model/config surface (#382). + +### Changed + +- Pinned the OpenAI Codex provider default to GPT-5.5 at `xhigh` reasoning effort (#352). This changes the default model and effort for Codex users (latency/cost/quality impact) and is a behavior change, not an API break; pass an explicit model/effort to override. +- Bumped the spoofed Gemini CLI user-agent version to 0.45.2 to track the upstream release. + +## [0.3.0] - 2026-06-03 + +### Added + +- Added xAI to the `/login` provider catalog as a Grok OAuth login with PKCE, refresh-token storage, and mocked login/refresh coverage. + +## [0.2.4] - 2026-06-02 + +### Added + +- Added configurable provider request and stream retry budgets so hosts can bound transient upstream/server retry behavior separately from session-level retries. + +## [0.2.2] - 2026-05-31 + +### Fixed + +- Fixed Anthropic extended-thinking replay after aborted turns by dropping partial `thinking`/`redacted_thinking` blocks before the next request, preserving/synthesizing matching tool results, and retrying once with repaired latest-assistant thinking when Anthropic rejects a replay with the immutable-thinking HTTP 400 ([#107](https://github.com/Yeachan-Heo/gajae-code/issues/107)). +- Fixed first-class `azure-openai` catalog models so normal provider auth resolution reads `AZURE_OPENAI_API_KEY` when streaming `azure-openai/gpt-*` models. + +## [0.2.1] - 2026-05-30 + +### Changed + +- Refreshed AI package metadata for the GJC 0.2.1 release. + +## [0.2.0] - 2026-05-28 + +### Fixed + +- Fixed OpenAI-compatible base URL handling so configured proxy URLs and inherited environment overrides are respected at model discovery, completions, responses, and streaming call sites. +- Fixed OpenAI direct-provider feature gates so prompt-cache/session behavior uses the resolved Responses base URL and only treats exact default `api.openai.com` hosts/paths as direct OpenAI. + +## [0.1.3] - 2026-05-28 + +### Changed + +- Released the current dev branch fixes with refreshed 0.1.3 package metadata. + +## [0.1.2] - 2026-05-28 + +### Changed + +- Updated package metadata for the Gajae Code npm publication. + +## [0.1.1] - 2026-05-28 +### Breaking Changes + +- Removed `findAnthropicAuth` from `anthropic-auth` and replaced store-driven auth discovery with `buildAnthropicAuthConfig`, requiring callers to provide an already-resolved API key before building Anthropic auth config + +### Added + +- Added `AuthStorage.getOAuthAccess` to return a refreshed OAuth access token with identity metadata (`accountId`, `email`, `projectId`, `enterpriseUrl`) for callers that need bearer-token headers together + +### Changed + +- Changed OAuth selection in `AuthStorage` to treat credentials as stale when they are within 60 seconds of expiry and rotate them preemptively +- Changed Google Gemini CLI, Google Gemini usage, Antigravity usage, and Kimi usage flows to stop refreshing OAuth tokens directly and rely on `AuthStorage` for token rotation + +### Removed + +- Removed provider-local OAuth refresh helpers from Google Gemini CLI and Google/Kimi/Antigravity usage probes, preventing direct refresh calls from those usage paths + +### Fixed + +- Fixed expired OAuth handling so provider-level paths no longer attempt direct token refresh calls for expired credentials and instead rely on `AuthStorage` for rotation +- Fixed `google-gemini-cli` / `google-antigravity` aborting heavy reasoning runs with "Provider stream timed out while waiting for the first event" before the upstream had a chance to emit its first SSE frame. Cloud Code Assist routinely takes >100s on Gemini 3.x Pro at high thinking levels; the lazy-stream wrapper now floors the first-event watchdog at 5 minutes for these two providers when neither `StreamOptions.streamFirstEventTimeoutMs` nor `PI_STREAM_FIRST_EVENT_TIMEOUT_MS` pins a value. Other providers keep the 100s default. Internally, `getStreamIdleTimeoutMs` and `getStreamFirstEventTimeoutMs` now accept an optional per-provider `fallbackMs` so other slow-first-token providers can opt into the same widening without leaking through to the global default. +- Fixed Anthropic model Opus 4.7 on Amazon Bedrock streaming no reasoning output (and appearing to hang on long reasoning runs) because Anthropic silently switched the adaptive-thinking display default to `"omitted"`. The Bedrock provider now sends `thinking.display = "summarized"` by default on Opus 4.7+ adaptive models and on budget-based Anthropic model models, mirroring the existing direct-Anthropic behavior. `BedrockOptions.thinkingDisplay` (`"summarized" | "omitted"`) is exposed for callers that want to opt out, and `hideThinkingSummary` now wires through to the Bedrock case ([#1373](https://github.com/can1357/gajae-code/issues/1373)). +- Fixed Cursor Composer resume/tool-continuation turns failing with `Cannot send empty user message to Cursor API`. Empty current user turns now use Cursor's `resumeAction` instead of constructing an invalid `userMessageAction` ([#1376](https://github.com/can1357/gajae-code/issues/1376)). + +## [15.3.2] - 2026-05-25 +### Added + +- Added `GET /v1/snapshot/stream` for live auth-broker snapshot updates via SSE with `snapshot`, `entry`, and `removed` event frames +- Added `AuthBrokerClient.openSnapshotStream()` for consuming SSE snapshot streams from `/v1/snapshot/stream` +- Added `streamSnapshots` option to `RemoteAuthCredentialStore` (default `true`) to enable or disable SSE-based snapshot synchronization +- Added `streamKeepaliveMs` to `startAuthBroker()` to tune heartbeat frequency for the SSE stream +- Added `AuthStorage.checkCredentials({ signal?, timeoutMs?, baseUrlResolver? })` that returns a per-credential `CredentialHealthResult` with tri-state `ok` (`true` / `false` / `null`-unverifiable), the credential's identity (provider, type, email/accountId, broker-refresh flag), and the upstream error string when the probe fails. Iterates sequentially over `listAuthCredentials()`, exercises OAuth refresh on expiry, then calls the per-provider `UsageProvider.fetchUsage` without swallowing errors — so callers can identify which row in a multi-account broker is producing 401s instead of getting a silently-deduplicated `fetchUsageReports` list. +- Added `GET /v1/credentials/check` to `startAuthGateway()` that forwards to `AuthStorage.checkCredentials` and returns `{ generatedAt, credentials }`. Gated by the same bearer as the rest of the gateway. + +### Changed + +- Changed `RemoteAuthCredentialStore` to prefer SSE snapshot streaming and automatically fall back to long-polling when a broker returns 404 for `/v1/snapshot/stream` +- Changed snapshot write-refresh flow so `RemoteAuthCredentialStore` skips immediate `/v1/snapshot` refreshes when SSE streaming is active +- Changed broker SSE stream behavior to keep connections open with periodic keepalives and an increased server idle timeout + +## [15.3.0] - 2026-05-25 + +### Added + +- Added DeepSeek to the built-in API-key login provider catalog so `gjc login deepseek` stores a reusable `DEEPSEEK_API_KEY` credential for the bundled DeepSeek models. + +### Fixed + +- Fixed `openai-responses` requests intermittently 400ing with `No tool call found for function call output with call_id …` after an aborted turn or a locally-rejected tool call (e.g. argument-validation failure). `convertConversationMessages` now folds orphan `function_call_output` / `custom_tool_call_output` items — those whose matching `function_call` was wiped by an earlier `dt: false` snapshot splice or never landed in any persisted provider payload — into assistant text notes, preserving the payload while keeping the request grammatically valid ([#1351](https://github.com/can1357/gajae-code/issues/1351)). + +## [15.2.4] - 2026-05-22 + +### Fixed + +- Fixed ChatGPT Plus/Pro (OpenAI code) OAuth login returning `Token exchange failed: 403` on Windows. When port 1455 was in use, the callback server silently fell back to a random port; OpenAI's authorization endpoint accepts any localhost redirect URI (loose validation), so the browser callback succeeds and shows "Authentication Successful", but the token endpoint rejects the non-registered port with 403. The `OpenAIOpenAI codeOAuthFlow` now enforces a fixed `redirectUri` option so a busy port immediately surfaces as "port unavailable" instead of producing a confusing 403 ([#1277](https://github.com/can1357/gajae-code/issues/1277)). +- Improved `exchangeCodeForToken` error diagnostics: the 403 response body (`error` / `error_description` fields) is now included in the thrown message, matching the existing `refreshOpenAIOpenAI codeToken` behaviour. + +### Added + +- Added `ChatGPT Plus/Pro (OpenAI code, headless/device)` (`openai-code-device`) as an alternative login method for the OpenAI code provider. Uses OpenAI's device-code flow (`/api/accounts/deviceauth/usercode` → poll `/api/accounts/deviceauth/token`), which avoids a local callback server and port 1455 entirely. Credentials are stored under the existing `openai-code` provider key so all models and tooling continue to work without reconfiguration ([#1277](https://github.com/can1357/gajae-code/issues/1277)). + +## [15.2.2] - 2026-05-22 + +### Fixed + +- Fixed `gemini-3.1-pro-high` and `gemini-3.1-pro-low` on the `google-antigravity` provider always returning HTTP 400 from Cloud Code Assist. The `ANTIGRAVITY_SYSTEM_INSTRUCTION` identity header was not injected for these models because the internal check matched the string `"gemini-3-pro-high"` (hyphen) instead of the versioned `"gemini-3.1-pro-..."` form. The guard now matches all `gemini-3` model variants ([#1274](https://github.com/can1357/gajae-code/issues/1274)). + +## [15.2.0] - 2026-05-21 + +### Fixed + +- Fixed `/login` (and `/logout`, plus any `AuthStorage.set` / `remove` call) against a remote auth-broker throwing `RemoteAuthCredentialStore is read-only on the client. Use 'gjc auth-broker login ' to mutate credentials.` Added three optional async write hooks to `AuthCredentialStore` (`upsertAuthCredentialRemote`, `replaceAuthCredentialsRemote`, `deleteAuthCredentialsRemote`); `RemoteAuthCredentialStore` implements them via the broker's `POST /v1/credential` and `POST /v1/credential/:id/disable` endpoints and applies the broker's authoritative post-write entries to the local snapshot. `AuthStorage` routes through the hooks when present, so OAuth and API-key logins (and logouts) initiated from a broker-backed client now persist server-side and surface immediately without waiting for the long-poll snapshot tick. + +## [15.1.9] - 2026-05-21 + +### Fixed + +- Fixed Ollama named tool forcing to send only the requested tool when the caller passes a named `toolChoice`, preserving `tool_choice: "required"` while preventing local models from selecting a different tool. ([#1236](https://github.com/can1357/gajae-code/issues/1236)) +- Fixed `/btw` (and IRC background replies) returning a `BedrockException` 400 (`The toolConfig field must be defined when using toolUse and toolResult content blocks.`) on LiteLLM → Bedrock once the session has tool-call history. Two source fixes in `buildParams`: (1) `if (context.tools)` → `if (context.tools?.length)` so an explicit `context.tools = []` (the /btw opt-out) never routes through `convertTools` and never emits an empty `"tools"` array; (2) `else if (hasToolHistory(...))` → `else if (context.tools === undefined && hasToolHistory(...))` so the Anthropic-proxy sentinel that injects `tools: []` for tool-history turns is suppressed when the caller explicitly opted out, preventing it from re-introducing the empty array. As defence-in-depth, `tool_choice: "none"` is also dropped when the resolved tools list is missing or empty. ([#1227](https://github.com/can1357/gajae-code/issues/1227)) + +## [15.1.8] - 2026-05-20 +### Added + +- Added Fireworks Fire Pass as a separate `firepass` provider with API-key login flow, bundled `kimi-k2.6-turbo` model entry (Kimi K2.6 Turbo), and wire-id translation from the friendly catalog id to the `accounts/fireworks/routers/kimi-k2p6-turbo` router endpoint. Fire Pass keys (`fpk_…`) authorize only the dedicated router and reject `/v1/models`, so login validation pings chat completions against the router id directly. Extended the openai-completions Kimi-family safety net so the firepass entry inherits the per-Fireworks-docs "always send `max_tokens`" default ([Kimi K2 guide](https://docs.fireworks.ai/models/kimi-k2)); the router's accepted `reasoning_effort` set includes `xhigh`, so it is forwarded verbatim rather than remapped. See https://docs.fireworks.ai/firepass. + +### Fixed + +- Fixed DeepSeek V4 direct API requests with tools to keep documented thinking mode instead of dropping reasoning: lower GJC efforts now map to DeepSeek's supported `high`, `tool_choice` is omitted, `thinking: { type: "enabled" }` and `max_tokens` are sent, and partial user `reasoningEffortMap` overrides merge with DeepSeek defaults. ([#1207](https://github.com/can1357/gajae-code/issues/1207)) +- Fixed model cache schema v2 databases so offline refreshes preserve cached provider discoveries after upgrading to schema v3 and subsequent online refreshes can overwrite the cache. ([#1219](https://github.com/can1357/gajae-code/issues/1219)) +- Fixed Perplexity OAuth credentials being treated as expired one hour after login. `getJwtExpiry` was fabricating `expires = now + 1h` whenever the JWT had no `exp` claim (the common case — Perplexity sessions are server-side). Once the hour elapsed, `getOAuthApiKey` would mark the cred expired and the search provider's loader would silently skip it, surfacing as "logged out". Logins with no `exp` now persist a far-future sentinel; `getOAuthApiKey` also normalizes any stale `expires` written by older builds. + +## [15.1.7] - 2026-05-19 +### Added + +- Added Anthropic realization of `serviceTier: "priority"`. The anthropic-messages provider now sets `speed: "fast"` on the request and appends the `fast-mode-2026-02-01` beta to `Anthropic-Beta` whenever the caller passes `serviceTier: "priority"`. When the server rejects an unsupported model with `invalid_request_error`, the provider transparently retries the same turn without the fast-mode signal (mirroring the strict-tools fallback pattern), persists the disable via a new `providerSessionState.fastModeDisabled` flag so subsequent requests in the session skip the field, and surfaces the action via the new `AssistantMessage.disabledFeatures` array (id `"priority"`) so callers can sync user-facing toggles. A new `clearAnthropicFastModeFallback(providerSessionState)` helper lets callers re-arm priority after the auto-fallback fired. +- Added scoped `ServiceTier` values: `"openai-only"` (priority on `openai`/`openai-code`, ignored elsewhere) and `"anthropic-model-only"` (priority on direct `anthropic`, ignored on Bedrock/Vertex Anthropic model and elsewhere). A new `resolveServiceTier(serviceTier, provider)` helper computes the effective tier for the provider; existing OpenAI/Anthropic provider code routes through it, so `service_tier` and Anthropic fast-mode emission both respect scope. `getPriorityPremiumRequests` now counts Anthropic+priority as one premium request (previously zero) and continues to ignore providers that drop the field on the wire. + +### Fixed + +- Fixed Anthropic fast mode (`serviceTier: "priority"`) looping on 429 `rate_limit_error: "Extra usage is required for fast mode."` for accounts without the extra-usage entitlement. `isAnthropicFastModeUnsupportedError` now matches the 429 phrasing in addition to the 400 `invalid_request_error` "does not support the `speed` parameter" case, so the provider drops `speed: "fast"` on the in-turn retry, sets `providerSessionState.fastModeDisabled` for the remainder of the session, and surfaces `disabledFeatures: ["priority"]` to the caller instead of retrying with the same payload until `PROVIDER_MAX_RETRIES` is exhausted. +- Fixed MiniMax Coding Plan CN streaming `...` reasoning as visible assistant text. The OpenAI-compatible stream parser now enables the existing MiniMax tag parser for both `minimax-code` and `minimax-code-cn`, so CN responses become structured `thinking` blocks instead of raw text. ([#1203](https://github.com/can1357/gajae-code/issues/1203)) + +## [15.1.6] - 2026-05-19 + +### Fixed + +- Fixed `{}` (empty JSON Schema, the wire representation of `z.unknown()`) being passed verbatim to grammar-constrained samplers (llama.cpp, etc.) in `additionalProperties`, `items`, and other schema-valued positions across **every provider** (OpenAI, Anthropic, Google, Ollama, Bedrock, Cursor). Grammar builders treat `{}` as "generate an empty object" rather than "any JSON value", causing open-typed fields (e.g. `extra.title` from `z.record(z.string(), z.unknown())`) to always emit `{}` instead of the intended string/number/etc. `toolWireSchema` now applies a new `normalizeEmptySchemas` pass (exported) to both the Zod and TypeBox/raw-JSON-Schema branches, converting `{}` → `true` (semantically identical per JSON Schema draft 2020-12 §4.3.1) in all schema-valued positions. Strict-mode opt-out is preserved across all providers: OpenAI's `hasUnrepresentableStrictObjectMap` hits the `=== true` branch instead of the `isJsonObject({})` branch (same result); Anthropic's `normalizeAnthropicStrictSchemaNode` opts out via `additionalProperties !== false` (still true for `true`); Google's `normalizeSchemaForGoogle` strips `additionalProperties` regardless (pre-existing). ([#1179](https://github.com/can1357/gajae-code/issues/1179)) +- Fixed `pi-ai login ` crashing with `Unknown provider` for providers that only the `auth-storage` `login()` switch knew about (perplexity, alibaba-coding-plan, gitlab-duo, huggingface, opencode-zen/go, lm-studio, ollama, cerebras, fireworks, qianfan, synthetic, venice, litellm, moonshot, together, cloudflare/vercel ai gateways, vllm, qwen-portal, nvidia, xiaomi, and any custom OAuth provider). The CLI now delegates to `SqliteAuthCredentialStore.login()` instead of duplicating a smaller switch, so the auth-broker `gjc auth-broker login ` flow works for every registered OAuth provider. + +## [15.1.4] - 2026-05-19 +### Changed + +- Updated auth-gateway format and pi-native request handling to invalidate the failed API key and retry the provider request with a replacement key when authentication fails + +### Fixed + +- Fixed OpenCode-Go and OpenCode-Zen chat-completions replay to omit stored reasoning fields on Kimi assistant tool-call messages, avoiding provider 400s for rejected `messages[].reasoning` payloads. ([#1157](https://github.com/can1357/gajae-code/issues/1157)) +- Fixed OpenAI Responses and OpenAI code tool schema normalization to emit `properties: {}` for no-argument object schemas without rewriting literal payloads. ([#1147](https://github.com/can1357/gajae-code/issues/1147)) +- Fixed Anthropic 400 (`unexpected tool_use_id found in tool_result blocks ... Each tool_result block must have a corresponding tool_use block in the previous message`) when handoff/compaction folds an assistant `tool_use` into the handoff summary string but leaves the matching user-side `tool_result` message in the history. `transformMessages` now indexes every `tool_use` id surviving the first pass and drops orphan `tool_result` messages whose originator was compacted away, preserving the text payload as a user-level `` note so the model still sees what the tool returned. The note is emitted with `role: "user"` rather than `role: "developer"` so providers that elevate developer-role messages (Ollama: `developer` → `system`; OpenAI chat-completions reasoning models: `developer` → `developer`) cannot lift stale tool output to an instruction-priority tier above the surrounding user/developer messages. +- Fixed streaming authentication retry to trigger when a provider emits a 401 `error` event after a `start` event but before any replay-unsafe content is emitted +- Added `credential_process` support to the Bedrock provider's AWS credential resolver so profiles delegating to external brokers (`aws-vault`, `granted`, in-house tools) resolve instead of falling through to `Unable to resolve AWS credentials`. Parses the AWS SDK `Version: 1` JSON envelope, honors `Expiration` in the per-profile cache, propagates `AbortSignal` to the spawned helper, routes Windows `.cmd`/`.bat` helpers through `cmd.exe /c`, and ships a POSIX-shell-style tokenizer that preserves backslashes inside double quotes so Windows paths survive ([#1142](https://github.com/can1357/gajae-code/issues/1142)) + +## [15.1.3] - 2026-05-17 +### Breaking Changes + +- Changed `AuthBrokerClient.fetchSnapshot()` to return status-based results (`200` or `304`) instead of always returning a raw snapshot body, so callers now need to branch on `status` +- Renamed public schema utilities in `@gajae-code/ai/utils/schema` by replacing `sanitizeSchemaForGoogle`, `sanitizeSchemaForCCA`, `prepareSchemaForCCA`, and `sanitizeSchemaForMCP` with `normalizeSchemaForGoogle`, `normalizeSchemaForCCA`, and `normalizeSchemaForMCP` +- Added MCP schema normalization via `normalizeSchemaForMCP` for compatibility checks +- Removed the `StringEnum` helper from `@gajae-code/ai/utils/schema`. Use `z.enum([...])` directly; Zod's emitted JSON Schema is already wire-compatible with Google and other providers. +- Renamed the concrete SQLite credential store class from `AuthCredentialStore` to `SqliteAuthCredentialStore`. `AuthCredentialStore` is now the persistence interface implemented by both the SQLite store and the new `RemoteAuthCredentialStore`. Update `new AuthCredentialStore(db)` / `AuthCredentialStore.open(...)` call-sites to `SqliteAuthCredentialStore`; type-position uses (`store: AuthCredentialStore`) continue to work unchanged. + +### Added + +- Added `onAuthError` to `StreamOptions` and wired `streamSimple()` to retry once with a replacement API key when the first provider response is a 401 before any assistant events are emitted +- Added generation-aware snapshot metadata (`generation`, `serverNowMs`, `refresher`, and `rotatesInMs`) to auth-broker snapshot responses to support client-side credential-rotation planning +- Added `transport: "pi-native"` on `Model` and the matching `streamPiNative` client. When `model.transport === "pi-native"`, `streamSimple` short-circuits the per-provider dispatch and POSTs the canonical `Context` to the auth-gateway's `POST /v1/pi/stream` endpoint. The response is SSE-framed `AssistantMessageEvent`s parsed by `readSseJson` and pushed verbatim into the local `AssistantMessageEventStream` — no wire-format translation, no partial-stripping reconstruction. Used by containerized GJC deployments and swarm extensions to route every LLM call through a credential-holding sidecar; the container never sees the real provider tokens. Server-controlled fields (`apiKey`, `signal`, `fetch`, lifecycle callbacks, the provider-session map) are stripped from the wire body — `apiKey` rides in the `Authorization` header as the gateway bearer. +- Added `POST /v1/pi/stream` to the auth-gateway. Same auth + abort + model-resolution + openai-code-compat + prefix-cache plumbing as the foreign-wire routes; only the wire-format translation is skipped. Request body is `{ modelId, context, options?, stream? }` where `context` is the canonical pi-ai `Context` and `options` is `SimpleStreamOptions` with non-serializable fields stripped. Response is SSE-framed `AssistantMessageEvent` (terminated by `data: [DONE]`) when streaming, or `{ message: AssistantMessage }` JSON when `stream: false`. +- Added Vertex AI authentication via Google Application Default Credentials from `GOOGLE_APPLICATION_CREDENTIALS`, `~/.config/gcloud/application_default_credentials.json`, or metadata server tokens, with token caching and refresh skew control via `GOOGLE_VERTEX_REFRESH_SKEW_MS` +- Added support for Anthropic image message parts with `type: "url"` and `type: "file"` sources +- Added `stopSequences` and `frequencyPenalty` to shared stream options and wired them through to OpenAI request translation +- Added optional request cancellation support to auth-broker interactions by propagating `AbortSignal` into health, snapshot, usage, and refresh calls +- Added `AuthStorage.setConfigApiKey` / `removeConfigApiKey` / `clearConfigApiKeys` for config-sourced per-provider bearers (e.g. `models.yml` `providers..apiKey`). The new tier sits between runtime `--api-key` and stored credentials in `getApiKey`/`peekApiKey` resolution, so a bearer pinned in config now beats the broker's OAuth access token. Also suppresses OAuth `account_uuid` attribution when active, since outbound auth is the explicit config bearer, not OAuth. `describeCredentialSource` reports `"config override (models.yml)"` for visibility. +- Added per-model `additional_rate_limits` parsing to `openaiOpenAI codeUsageProvider`. The OpenAI code `wham/usage` endpoint surfaces a separate `GPT-5.3-OpenAI code-Spark` rate limit (`metered_feature: openai-code_bengalfox`) on Pro accounts; these now emit dedicated `openai-code:spark:{primary,secondary}` `UsageLimit` entries with `scope.tier = "spark"`, mirroring how Anthropic exposes `anthropic:7d:sonnet` separately from the umbrella `anthropic:7d` bucket. The osx-widgets client already keyed spark detection off `limit.id.includes("spark")`; this populates that contract end-to-end. +- Added `GET /v1/usage` to the auth-broker API to expose aggregated usage reports from `AuthStorage.fetchUsageReports` +- Added auth-broker usage polling response handling that returns normalized usage reports plus generation timestamp for clients (5-min per-credential cache via `AuthStorage`) +- Added the auth-broker subsystem (`@gajae-code/ai/auth-broker`) for sharing OAuth credentials across machines without leaking refresh tokens. +- `startAuthBroker(...)` boots a `Bun.serve` HTTP server exposing `GET /v1/healthz`, `GET /v1/snapshot`, `POST /v1/credential` (upsert), `POST /v1/credential/:id/refresh`, and `POST /v1/credential/:id/disable`. +- `AuthBrokerClient` is the matching HTTP client used by remote clients. +- `RemoteAuthCredentialStore` is a client-side `AuthCredentialStore` that mirrors a broker snapshot in memory; mutating methods (`replace*`, `upsert*`, `delete*ForProvider`) throw because writes are server-side only. +- `AuthBrokerRefresher` is the background refresh loop that pre-refreshes credentials within `refreshSkewMs` and disables on definitive failure (`invalid_grant` / non-network 401-403). +- Added `AuthStorage.exportSnapshot()`, `AuthStorage.upsertCredential(provider, credential)`, `AuthStorage.forceRefreshCredentialById(id)`, and `AuthStorage.disableCredentialById(id, cause)` public methods consumed by the auth-broker server. +- Added `AuthStorageOptions.refreshOAuthCredential` override so a remote-store client can route every OAuth refresh through the broker instead of the local OAuth endpoint. +- Added `REMOTE_REFRESH_SENTINEL` (`"__remote__"`) — the wire placeholder substituted for OAuth refresh tokens in broker snapshots; clients never see the real refresh token. +- Exposed the OAuth provider catalog (`getOAuthProviders`, `OAuthProvider`, `OAuthProviderInfo`) and `refreshOAuthToken` through the package barrel so the coding-agent CLI can target them without reaching into `utils/oauth`. +- Added the auth-gateway subsystem (`@gajae-code/ai/auth-gateway`) — a forward-proxy that sits between unauthenticated clients (the macOS usage widget, llm-git, containerized GJC deployments, …) and the broker. Clients send standard provider-format requests; the gateway parses them into gjc's canonical `Context`, dispatches through pi-ai's `streamSimple()`, and translates the canonical event stream back to the matching wire format. `Authorization` is injected server-side so access tokens never leave the gateway host. Wire surface: +- `GET /healthz` — unauth liveness. +- `GET /v1/usage` — aggregated provider usage; 5-min per-credential cache via `AuthStorage.fetchUsageReports`. +- `GET /v1/models` — model catalog (scoped to providers with credentials). +- `POST /v1/chat/completions` — OpenAI chat-completions in/out. +- `POST /v1/messages` — Anthropic messages in/out (text + thinking + tool_use blocks, SSE event taxonomy preserved). +- `POST /v1/responses` — OpenAI Responses in/out (reasoning items + function_call output items, SSE pass-through). +- Added exports from `@gajae-code/ai/auth-gateway`: `startAuthGateway`, `AuthGatewayServerOptions`, `AuthGatewayBootOptions`, `AuthGatewayServerHandle`, `ModelResolver`, `DEFAULT_AUTH_GATEWAY_BIND`. Per-format `parseRequest` / `encodeResponse` / `encodeStream` triples are reachable via the `./providers/*` subpath as `openai-chat-server`, `anthropic-messages-server`, and `openai-responses-server`. +- Added `listProvidersWithEnvKey()` to enumerate every provider with an env-var fallback (used by the new migrate command in coding-agent). + +### Changed + +- Changed `GET /v1/snapshot` to support generation-based polling with `If-None-Match` and `wait` for long-poll updates and to return `304` when no snapshot changes are available +- Changed Bedrock credential resolution for streaming calls to prefer environment keys, AWS profile/SSO credentials, and IMDSv2 fallback when available +- Changed auth-gateway parsing for OpenAI chat-completions and Responses to ignore unsupported SDK-only fields instead of rejecting requests +- Changed auth-gateway protocol handling to include CORS headers on responses and support browser-origin requests +- Changed prompt-cache handling to resolve cache keys from request metadata and headers and preserve them through protocol translation +- Changed Anthropic messages parsing to forward request `metadata` through to downstream execution +- Changed usage report caching to use a 5-minute per-credential TTL with jittered refresh timing to reduce usage endpoint rate-limit collisions +- Changed usage polling failure handling so transient errors continue serving the last known report instead of returning null and dropping the credential from usage aggregates after cache expiry +- Changed `sanitizeSchemaForGoogle` to normalize snake_case schema keys (such as `any_of` and `additional_properties`) to camelCase and auto-generate `propertyOrdering` for multi-property objects +- Changed strict-mode sanitization to resolve `$ref` nodes with sibling keys by inlining and merging referenced local definitions +- Changed strict-mode sanitization to flatten single-entry `allOf` nodes and remove the `allOf` wrapper +- Changed Anthropic tool schema normalization to preserve supported metadata keywords such as `$ref`, `$defs`, `$schema`, `enum`, `const`, `default`, `title`, and `nullable` instead of stripping them +- Changed string schema processing to retain only supported `format` values (`date-time`, `time`, `date`, `duration`, `email`, `hostname`, `uri`, `ipv4`, `ipv6`, `uuid`) and demote unsupported `format` values to `description` hints + +### Fixed + +- Fixed OAuth credential refresh flow so concurrent manual and background refreshes now share one in-flight attempt per credential, and `RemoteAuthCredentialStore` now re-synchronizes before using near-expiring OAuth credentials +- Fixed stale-credential handling after auth failures by waiting for updated broker snapshots and refreshing suspect credentials through broker endpoints before continuing +- Fixed Google Generative AI startup behavior to throw a clear API-key-required error when no key is configured +- Fixed AWS Bedrock image message serialization to preserve base64 `source.bytes` payloads instead of decoding and rebuilding them +- Fixed Google provider error handling to extract the API-reported `error.message` from JSON response bodies when available +- Fixed `RemoteAuthCredentialStore.getUsageReport` to return the matching credential-specific usage report and coalesce parallel callers into one broker `/v1/usage` fetch +- Fixed auth-broker credential upload validation to reject the remote refresh-token sentinel and prevent storing a non-refresh value +- Fixed OpenAI Responses streaming output to emit `reasoning_summary_text` events and parse/send `summary_text` reasoning payloads +- Fixed Anthropic stop-sequence handling by trimming requests to the API limit of four entries before forwarding +- Fixed prompt caching behavior across protocol translations so cached-token usage is preserved when Anthropic and OpenAI requests are routed through each other +- Fixed Anthropic model usage fetching to retry transient `429` and `5xx` responses with exponential backoff, respecting `Retry-After` before returning failure +- Fixed auth-gateway request translation to preserve OpenAI Responses string/system message content, reasoning replay payloads, completed item text in stream item-done events, Anthropic tool-result ordering, and OpenAI Chat/Responses cached-token usage totals +- Fixed auth-gateway failure handling so unsupported request controls, upstream terminal errors, non-streaming aborts, and already-aborted client requests fail explicitly instead of being accepted, ignored, or encoded as successful HTTP 200 responses +- Fixed Gemini CLI / Antigravity tool schema normalization to run the full Cloud Code Assist pipeline, matching shared Google schema handling for union/object merging and nullable extraction +- Fixed stripped validation hints to be preserved as description spill text (`{key: value}` blocks) when `normalizeSchemaForGoogle` and `normalizeSchemaForCCA` drop unsupported schema keywords +- Fixed `sanitizeSchemaForGoogle` to collapse nullability forms (`type:'null'` and null-bearing `anyOf` variants) into `nullable` while preserving remaining variants +- Fixed `sanitizeSchemaForGoogle` to inline local `$defs` references instead of dropping `$ref`/`$defs` structure during Google schema sanitization +- Fixed `normalizeAnthropicToolSchema` to handle self-referential schemas without infinite recursion +- Fixed object schema normalization so explicit open-map declarations (`additionalProperties: true` and schema-valued `additionalProperties`) are preserved instead of being converted to closed objects +- Fixed unsupported schema constraints on arrays and strings (`maxItems`, `uniqueItems`, `pattern`, `minLength`, `maxLength`, and `minItems` when greater than 1) by demoting them into `description` rather than dropping them + +### Security + +- Hardened auth-gateway bearer-token checks with constant-time comparison to avoid timing-side-channel leaks + +## [15.1.2] - 2026-05-15 +### Breaking Changes + +- Rejected draft-07 tuple and dependency keywords (`items` arrays, `dependencies`, `additionalItems`) in JSON Schema validation + +### Added + +- Added `responseHeaders`, `responseStatus`, and `responseRequestId` fields to `MockResponse` so mock providers can provide synthetic `ProviderResponseMetadata` +- Added `onResponse` metadata emission for mocks that sends lowercased headers and a default status of 200 before streaming when response headers are configured +- Added recursive strict-mode sanitization for array `prefixItems` entries so tuple schemas now enforce object constraints per item + +### Changed + +- Normalized legacy draft-07 JSON Schema constructs used in tool parameters (`items` arrays, `additionalItems`, `definitions`, `dependencies`) to draft 2020-12 before OpenAI/Google/CCA sanitization, wire conversion, and argument validation +- Reworked OpenAI response schema adaptation to rewrite `oneOf` into `anyOf` while preserving existing `anyOf` branches +- Changed tuple array validation to validate per-index schemas from `prefixItems` and apply `items` only to remaining elements + +### Fixed + +- Fixed validation of plain JSON Schema tool arguments that omitted a `$schema` URI so draft-07-shaped schemas now pass validation instead of being rejected +- Fixed tuple-array validation for legacy JSON Schema tool schemas to enforce `additionalItems: false` and per-position constraints after automatic draft upgrade +- Fixed Anthropic tool schema normalization to recurse into `prefixItems` so unsupported constraints inside tuple items are stripped in the generated input schema +- Fixed Anthropic tool-schema normalization stripping the body of explicit open `additionalProperties` (e.g. Zod's `z.record(z.string(), z.unknown())` compiling to `additionalProperties: {}`) by unconditionally overwriting it with `false`, which closed record-style fields and prevented models from supplying any key. The coding-agent's `resolve` tool exposes plan-approval titles via such a field, so Kimi K2 (and any other Anthropic-shaped provider) could not pass `extra: { title }`, blocking plan mode entirely ([#1104](https://github.com/can1357/gajae-code/issues/1104)) +- Fixed Anthropic strict tool planning to leave tools with open `additionalProperties` maps non-strict instead of sending schemas Anthropic rejects. + +## [15.1.0] - 2026-05-15 + +### Breaking Changes + +- Removed TypeBox root exports (`Type`, `Static`, and `TSchema`) from the package entrypoint, so callers importing those symbols from `@gajae-code/ai` must migrate to `zod` or `@gajae-code/ai/types` + +### Added + +- Added support for defining tool schemas with Zod (`z.object`, `z.string`, etc.) by allowing `Tool.parameters` to be either Zod schemas or legacy JSON Schema objects and converting them to provider wire format automatically +- Added package-level schema helpers in the `zod/v4` style by exporting `z` and `ZodType` from the root entrypoint +- Added a `mock` API provider via `createMockModel` to build `Model<"mock">` instances for fully in-memory, deterministic assistant streams in tests +- Added `streamMock` and `registerMockApi` so mock responses can be consumed through `stream()` and the global custom API registry without an external model backend +- Added async/sync response scripting with optional context-based handlers, and new `push()`/`reset()` controls to drive multi-turn mock interactions and inspect per-call invocation state +- Added support in mock responses for simulating tool calls, usage metadata, custom stop reasons, delayed emissions, and terminal error/aborted outcomes + +### Changed + +- Changed Azure OpenAI Responses tool schema conversion to sanitize tool parameter schemas and rewrite `oneOf` branches as `anyOf` so tool calls remain compatible with Azure's schema expectations +- Changed `Static` to extract a schema object’s `static` type when present, improving inferred tool argument types for non-Zod parameter definitions +- Changed `Static` typing behavior so it now infers argument types from Zod schemas and defaults to `unknown` for non-Zod JSON Schema parameter definitions +- Restored the default steady-state stream idle timeout to 120s (regressed in 15.0.0). 30s was too aggressive for reasoning models, slow proxies, and tool-call planning gaps, surfacing as repeated `Provider stream stalled while waiting for the next event` errors. Existing `PI_STREAM_IDLE_TIMEOUT_MS` / `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` overrides are unchanged. + +### Fixed + +- Preserved top-level unknown fields in validated tool-call arguments so extra root properties are retained after schema coercion +- Fixed coercion for Zod `record` fields by parsing JSON-stringified record arguments into objects +- Validated legacy draft-07 JSON Schema tool parameters directly instead of converting through Zod, improving support for features like `$ref`, `definitions`, `nullable`, and `uniqueItems` +- Fixed Cloud Code Assist schema preparation to strip unsupported `propertyNames` and fall back to a minimal tool schema when schema meta-validation detects malformed keywords +- Fixed OpenAI Completions streaming to avoid treating non-output chunks (including role-only preambles) as progress events so idle-timeout watchdog behavior no longer hangs on no-op streamed chunks +- Fixed Cloud Code Assist schema compatibility checks by replacing strict AJV meta-schema validation with structural JSON Schema validation to avoid rejecting structurally valid tool schemas +- Fixed lazy built-in provider streams (`anthropic-messages`, `bedrock-converse-stream`, `cursor-agent`, `google-*`, `ollama-chat`, `openai-*`) prematurely aborting slow first-token responses with `Provider stream stalled while waiting for the next event`. The lazy-stream watchdog wrapper was treating the synthetic `start` event (yielded immediately by every provider before the model emits any tokens) as the first real item, which caused the watchdog to drop from `firstItemTimeoutMs` (100s) to `idleTimeoutMs` (30s) before the upstream model had produced anything. The shared `iterateWithIdleTimeout` now keeps `awaitingFirstItem` true until a real progress item arrives, and the lazy-stream wrapper marks `start` as a non-progress keepalive ([#1073](https://github.com/can1357/gajae-code/pull/1073) regression). +- Heal leaked Kimi K2 chat-template tool-call tokens (`<|tool_calls_section_begin|>` … `<|tool_call_argument_begin|>` … `<|tool_calls_section_end|>`) that some hosts (native `kimi-code` API, OpenRouter, Fireworks, etc.) emit into `delta.content` instead of structured `tool_calls`. The OpenAI-completions stream consumer now strips the markers from visible text, reconstructs the embedded calls as proper `toolCall` content blocks (stream-aware, token-boundary-safe), and promotes `finish_reason: stop` to `toolUse` when calls were healed. +- Fixed OpenAI-completions Kimi K2 healed-call promotion clobbering non-stop terminal finish reasons (`error`, `length`, `aborted`); promotion now only fires when the prior stop reason is the natural-completion `stop` +- Fixed OpenAI-completions duplicate Kimi tool calls when a single chunk delivers both leaked markers and a structured `delta.tool_calls`; the healer now strips visible markers but discards its synthesized calls so structured payloads remain the single source of truth +- Fixed Kimi tool-call healer synthesizing a bogus empty call when assistant text mentions a literal `<|tool_call_end|>` (or `<|tool_call_begin|>` / `<|tool_call_argument_begin|>`) outside an active `<|tool_calls_section_begin|>…<|tool_calls_section_end|>` section; the tokens now survive as text +- Fixed OpenAI-completions ignoring per-request `StreamOptions.streamFirstEventTimeoutMs` when configuring the underlying OpenAI SDK HTTP timeout, causing slow-before-headers providers to be aborted at the env default before the wrapping watchdog armed +- Fixed JSON Schema validator silently accepting values that violate `propertyNames`, `patternProperties`, `dependentRequired`, `dependencies`, `if`/`then`/`else`, `contains`, and `prefixItems`; the in-tree validator now enforces these keywords instead of falling through. `unevaluatedProperties`/`unevaluatedItems` remain permissive but log a one-time warning so tool authors are not surprised. +- Fixed recursive `$ref` schemas being treated as universally valid: the validator previously short-circuited on the second occurrence of any ref it had already seen, so nested values violating the referenced sub-schema passed. Cycle detection now keys on (ref, value-identity) pairs with a depth cap for primitive values, so genuine sub-tree violations are still caught. +- Fixed JSON Schema meta-validator accepting malformed `if`/`then`/`else` and `dependencies` keywords; each conditional sub-schema is now structurally validated and draft-07 `dependencies` accepts either a schema or a string array of dependent keys. +- Fixed Zod-emitted wire schemas dropping null-valued unknown root fields before `preserveUnknownRootFields` could snapshot them, so callers like `task.simple` no longer lose a `schema: null` argument and downstream rejection paths fire as intended. +- Fixed mock provider partial `Usage` to recompute `totalTokens` (and `cost.total` when cost components are supplied) when omitted, instead of reporting 0 +- Fixed mock provider auto-generated tool-call IDs to use a per-instance counter (now reset by `reset()`), so test order no longer affects IDs across `createMockModel()` instances + +## [15.0.2] - 2026-05-15 +### Fixed + +- Fixed `StreamOptions.fetch` typing to accept fetch-compatible override functions that do not expose `preconnect`, allowing custom fetch implementations to be used without type errors across runtimes +- Fixed Moonshot Kimi K2.6 forced tool calls to send `thinking: { type: "disabled" }`, avoiding `tool_choice 'specified' is incompatible with thinking enabled` 400s while preserving the requested named tool ([#1077](https://github.com/can1357/gajae-code/issues/1077)). + +## [15.0.1] - 2026-05-14 +### Breaking Changes + +- Increased the minimum Bun runtime version to `>=1.3.14` for the `@aws-?` package + +### Added + +- Added `installH2Fetch` to patch `globalThis.fetch` so HTTPS requests attempt HTTP/2 over ALPN with automatic HTTP/1.1 fallback when HTTP/2 is unsupported +- Added priority service-tier traffic to the `premiumRequests` accounting on OpenAI and OpenAI code provider providers. Sending `serviceTier: "priority"` now increments `usage.premiumRequests` by 1 per request, matching the existing GitHub Copilot premium-request budget semantics so downstream consumers (e.g. the `gjc stats` "Premium Reqs" card and `/usage`) reflect priority traffic alongside Copilot premium calls. + +## [15.0.0] - 2026-05-13 + +### Added + +- Added `AuthStorage.onCredentialDisabled(listener)` — a multi-subscriber `on/off` API for `credential_disabled` events. Returns an unsubscribe function; calling it more than once is a no-op. Multiple subscribers all receive every disable event, with synchronous and async exceptions isolated per-listener so a misbehaving subscriber cannot starve the rest of the chain. Buffer-and-replay semantics are preserved: events emitted while no listener is subscribed are buffered (FIFO, capped at 32) and replayed once to the listener that triggers the empty→non-empty transition. After every subscriber unsubscribes, subsequent disable events buffer again until the next subscribe. + +### Fixed + +- Fixed OAuth credentials being silently disabled when two gjc processes (or any two `AuthStorage` instances sharing a `agent.db`) race on token refresh. Anthropic rotates refresh tokens on every use, so the loser's `invalid_grant` response previously soft-deleted the row that the winner just rotated, forcing the user to `/login` again. `#tryOAuthCredential` now re-reads the row from disk before declaring a definitive failure: if the persisted `refresh` differs from the snapshot it tried, the peer-rotated credential is reloaded and the request retries against the fresh token instead of disabling the live row. +- Closed a remaining race window in OAuth refresh-failure handling: between re-reading the credential row to check for peer rotation and the subsequent soft-delete, another process could still complete a refresh and rotate the row, leaving us to disable the freshly-rotated credential by `id`. The disable now runs as a single CAS update conditioned on the row's `data` still matching the snapshot we tried to refresh, and on `disabled_cause IS NULL`. If the CAS reports 0 rows changed (peer rotation, or row already disabled by a concurrent failure on the same snapshot), we reload from disk and retry instead of mutating the wrong row or emitting a spurious `credential_disabled` event. +### Changed +- Lowered the default steady-state stream idle timeout from 120s to 30s while preserving the existing environment overrides. + +### Fixed +- Lazy built-in provider streams now enforce the shared idle watchdog and abort stalled provider requests, so session auto-retry can continue after transient network drops instead of remaining stuck. Caller aborts still terminate as aborted. + +## [14.9.3] - 2026-05-10 + +### Fixed +- Anthropic provider now retries generic transient connect failures (`unable to connect`, `fetch failed`, `connection error`, etc.) by falling back to the shared `isRetryableError` allowlist after the provider-specific patterns. Previously these errors bypassed the hand-curated regex in `isProviderRetryableError` and aborted the stream on the first attempt, while the OpenAI SDK and OpenAI code `fetchWithRetry` paths already handled them. + +## [14.9.0] - 2026-05-10 + +### Added + +### Fixed +- Fixed silent forwarding of image content (for example Python plot output rendered in the terminal) to models without vision support, which produced opaque 404 errors from upstream. Image blocks are now stripped and replaced with a `[image omitted: model does not support vision]` placeholder for non-vision models, including tool-result payloads ([#967](https://github.com/can1357/gajae-code/issues/967), [#968](https://github.com/can1357/gajae-code/issues/968)). + +- Added `AuthStorage` `onCredentialDisabled` callback (sync or async) so embedders can react when a credential is automatically disabled (e.g. OAuth refresh fails with `invalid_grant`) — useful for surfacing a banner or auto-launching a re-login flow instead of letting the credential silently disappear. Sync throws and async rejections are both caught and logged so a misbehaving subscriber cannot break the disable path. +- Added Anthropic OAuth `account.uuid` and `account.email_address` extraction from the `/v1/oauth/token` exchange and refresh responses; both `AnthropicOAuthFlow.exchangeToken()` and `refreshAnthropicToken()` now populate `OAuthCredentials.{accountId, email}` so downstream consumers can attribute requests to the authenticated account without a separate `/api/oauth/profile` round-trip. +- Added `onSseEvent` stream diagnostics so HTTP SSE providers can expose raw SSE frames without changing parsed model output. +- Added `streamIdleTimeoutMs` option (and `PI_STREAM_IDLE_TIMEOUT_MS` env override; `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` remains a backward-compatible alias) for a steady-state inter-event watchdog. Set to `0` to disable. +- Added a semantic-progress predicate to OpenAI Responses and OpenAI code SSE/WebSocket transports so `response.in_progress`-style keepalives no longer reset the idle deadline on stalled tool calls. + +### Changed + +- Anthropic streams now enforce a steady-state idle timeout (defaults to 120s, same control as `PI_STREAM_IDLE_TIMEOUT_MS`) in addition to the first-event watchdog. Long-running responses that go fully silent between events will now surface as `Anthropic stream stalled while waiting for the next event` instead of hanging. +- Fixed `resolveAnthropicMetadataUserId()` to accept JSON-format `user_id` values that match real Anthropic Code's payload shape (`{ device_id, account_uuid, session_id, ... }` from `services/api/anthropic-model.ts:getAPIMetadata`). Previously only the synthetic `user__account__session_` cloaking format was accepted on OAuth, which caused stable session-keyed metadata supplied by callers to be discarded and replaced with fresh random entropy on every request — defeating session-count attribution on the Anthropic model OAuth path. + +## [14.8.0] - 2026-05-09 + +### Fixed +- Fixed Gemini 3 Pro thinking metadata so `medium` effort is rejected with the expected error instead of being silently accepted: `ThinkingConfig` now carries an optional explicit `levels` list that survives `expandEffortRange`, letting non-contiguous supported sets (e.g. `[low, high]`) round-trip through enrichment. +- Fixed Kimi Code OAuth expiry handling to refresh access tokens 5 minutes before server expiry, avoiding daily 401s from using tokens right up to the cutoff. +- Fixed OpenAI Responses custom tool replay to preserve custom tool call item IDs with the `ctc_` prefix instead of rewriting them as `fc_` function-call IDs ([#977](https://github.com/can1357/gajae-code/issues/977)). + +## [14.7.6] - 2026-05-07 + +### Added + +- Added `hideThinkingSummary` option to `SimpleStreamOptions`. When true, `streamSimple` requests that the underlying provider omit reasoning/thinking summaries: Anthropic receives `thinking.display = "omitted"` (where supported), and OpenAI Responses / Azure / OpenAI code providers leave `reasoning.summary` unset so the server skips emitting the human-readable summary stream entirely. + +### Changed + +- Changed OpenAI Responses, Azure OpenAI Responses, and OpenAI code provider providers to omit `reasoning.summary` from requests when `reasoningSummary` is explicitly `null` (previously fell back to `"auto"`). +## [14.7.5] - 2026-05-07 + +### Added + +- Added `OpenAICompat.supportsMultipleSystemMessages` so chat-completions hosts can opt out of separate leading system blocks. Auto-detected as `true` for OpenAI, Azure, OpenRouter, Cerebras, Together, Fireworks, Groq, DeepSeek, Mistral, xAI, Z.ai, GitHub Copilot, and Zenmux; `false` for MiniMax, Alibaba Dashscope, and Qwen Portal whose chat templates reject follow-up system messages. Unknown OpenAI-compatible hosts (custom vLLM/local) default to `false`; users can opt back in via `compat.supportsMultipleSystemMessages: true`. + +### Fixed + +- Fixed strict-template OpenAI-compatible hosts (e.g. Qwen 3.5+ via vLLM, MiniMax) rejecting follow-up `system`/`developer` messages by coalescing ordered system prompts into a single block joined by `\n\n` when `compat.supportsMultipleSystemMessages` is false. Canonical hosts continue to receive separate blocks so KV-cache reuse stays effective when only the trailing prompt changes ([#958](https://github.com/can1357/gajae-code/issues/958)). + +## [14.7.2] - 2026-05-06 + +### Fixed + +- Fixed VLLM model discovery to use `max_model_len` as the context window when the endpoint reports it. +- Fixed custom Ollama Cloud/local-proxy model aliases (for example `deepseek-v4-pro:cloud`) to inherit bundled cache-pricing metadata when the upstream model is known ([#937](https://github.com/can1357/gajae-code/issues/937)). +- Fixed local Ollama model discovery to apply `/api/show` thinking and vision capabilities in addition to native context windows ([#928](https://github.com/can1357/gajae-code/issues/928)). + +## [14.7.0] - 2026-05-04 +### Breaking Changes + +- Changed `Context.systemPrompt` from a string to `string[]`, so callers must now pass an array of prompts instead of a single string +- Changed behavior will throw at runtime for non-array system prompts because request builders now normalize system prompts as an array + +### Added + +- Added support for multiple system prompts by changing `Context.systemPrompt` to an ordered string array and preserving provider-appropriate instruction precedence + +### Changed + +- Changed request builders for Anthropic, OpenAI, Bedrock, Azure, Cursor, Google, and Ollama to propagate every non-empty system prompt entry without demoting durable instructions into ordinary conversation turns + +### Fixed + +- Filtered out empty normalized system prompts so blank entries are no longer sent to providers +- Removed blank system prompt strings from provider payloads to avoid unnecessary empty instruction messages + +## [14.6.6] - 2026-05-04 + +### Added + +- Added always-on OpenRouter response caching (1h TTL) by sending `X-OpenRouter-Cache: true` and `X-OpenRouter-Cache-TTL: 3600` on every OpenRouter request — identical requests replay from OpenRouter's edge cache for free. https://openrouter.ai/docs/features/response-caching + +## [14.6.4] - 2026-05-03 + +### Fixed + +- Fixed OpenAI code provider websocket continuations to retry with full context when `previous_response_id` expires server-side instead of surfacing `previous_response_not_found`. + +## [14.6.2] - 2026-05-03 +### Added + +- Added `EventStream.fail(err)` method to terminate the async iterator with an error, enabling consumers to catch stream-level failures via `for await` without hanging + +### Fixed + +- Fixed OpenAI Responses tool schema conversion to rewrite non-strict `oneOf` unions to `anyOf` before sending tools to the Responses API ([#920](https://github.com/can1357/gajae-code/issues/920)) + +## [14.6.0] - 2026-05-02 + +### Added + +- Added `disableReasoning` to stream and OpenAI completion options to force reasoning off for models that support it, sending `reasoning: { enabled: false }` for OpenRouter-compatible requests +- Added `thinkingDisplay` option to Anthropic options to control whether adaptive and explicit reasoning is returned as `summarized` or `omitted` +- Added Anthropic model compatibility flags `supportsEagerToolInputStreaming` and `supportsLongCacheRetention` for API-capability-specific request behavior + +### Changed + +- Changed Anthropic request payloads to send `thinking: { type: "disabled" }` when `thinkingEnabled` is explicitly `false` on reasoning-enabled models +- Changed Anthropic cache retention handling so `cacheRetention: "long"` now uses `ttl: "1h"` only for canonical Anthropic endpoints with long-cache support +- Changed Anthropic tool schema generation to include `eager_input_streaming` only on models that advertise support +- Changed Anthropic OAuth login flow to include browser fallback guidance and richer error context when token exchange or refresh fails + +### Fixed + +- Fixed Anthropic non-thinking requests to include the caller-provided `temperature` value in request payloads +- Fixed Anthropic `anthropic-model-opus-4-7` non-thinking payloads to omit sampling fields (`temperature`, `top_p`, and `top_k`) +- Fixed OpenAI code provider base URL normalization so configured base URLs with or without `/openai-code` or `/openai-code/responses` now resolve to `/openai-code/responses` +- Fixed OpenAI code provider websocket handling to parse JSON from non-string message payloads including `ArrayBuffer`, typed arrays, and `Blob` values +- Fixed OpenAI code provider websocket handshakes to replace stale `openai-beta` values with the websocket beta and avoid sending request-body headers over websocket transport +- Fixed abort tracking so caller-initiated cancellations are treated as user aborts even after local watchdog timeouts, preventing unintended automatic retries +- Fixed Anthropic stream handling to parse raw SSE envelopes directly, ignore unrelated events, and repair malformed JSON in SSE payloads +- Fixed Anthropic streaming to emit an explicit error when the SSE stream ends without a `message_stop` event +- Fixed OpenAI code provider websocket continuations to send true `previous_response_id` deltas for `store: false` transcripts, expose request stats, and default text verbosity to `low` unless explicitly overridden. +- Fixed OpenAI code provider websocket append reuse after `response.completed` terminal events. + +## [14.5.14] - 2026-05-01 +### Added + +- Added package-level `google-gemini-headers` exports (`getGeminiCliHeaders`, `getGeminiCliUserAgent`, `getAntigravityHeaders`, `extractRetryDelay`, and `ANTIGRAVITY_SYSTEM_INSTRUCTION`) for header and retry handling reuse without importing full Google providers + +### Changed + +- Changed package exports and streaming/provider wiring to load heavy Google/Kimi/GitLab/synthetic provider modules lazily through `register-builtins`, reducing startup import overhead from optional provider SDKs + +### Fixed + +- Fixed DeepSeek V4 tool-call follow-up 400 errors from three root causes: + - Mapped `reasoning_effort` "xhigh" to "max" for DeepSeek-family models on any provider (NVIDIA, OpenCode-Go, etc.), not just `deepseek` + - Recovered `reasoning_content` from thinking blocks with valid signatures that were filtered by the non-empty-text check +- Added empty-string fallback when `reasoning_content` is genuinely absent (e.g. proxy-stripped) but the provider requires the field + +## [14.5.13] - 2026-05-01 + +### Breaking Changes + +- Removed `utils/oauth` re-exports from the package entrypoint, so OAuth helper imports from the root module must be updated + +## [14.5.10] - 2026-04-30 + +### Added + +- Added provider response metadata callbacks for Anthropic and OpenAI streaming requests. + +## [14.5.9] - 2026-04-30 + +### Added + +- Added `usage.reasoningTokens` to OpenAI and Google usage output when providers report reasoning/thinking tokens +- Added `usage.cttl.ephemeral5m` and `usage.cttl.ephemeral1h` to report Anthropic cache-write TTL token buckets +- Added `usage.server.webSearch` and `usage.server.webFetch` to report Anthropic server tool-call request counts + +### Fixed + +- Fixed OpenAI usage attribution to avoid double-counting `reasoning_tokens` in output totals +- Fixed Anthropic streaming usage handling so a previously populated cache TTL breakdown is preserved when later events omit `cache_creation` + +## [14.5.4] - 2026-04-28 + +### Changed + +- Changed OpenAI custom Lark grammar payloads to strip comments and blank lines before sending provider requests. + +### Fixed + +- Fixed OpenAI code provider GPT model pricing by inheriting matching OpenAI catalog rates for zero-priced discovered OpenAI code entries. + +## [14.5.3] - 2026-04-27 + +### Added + +- Added `fireworks` as a supported provider with API key login flow and credential storage +- Added Fireworks model catalog support with `fireworks`-scoped openai-completions models `glm-5`, `glm-5.1`, `kimi-k2.5`, `kimi-k2.6`, and `minimax-m2.7` +- Added built-in discovery wiring so providers with base URL `api.fireworks.ai` are recognized as OpenAI-compatible and can use streaming token control + +### Changed + +- Updated the built-in model catalog to use corrected `contextWindow` and `maxTokens` values for many existing models instead of placeholder limits +- Updated several model cost entries, including cache-read pricing, to corrected values + +### Fixed + +- Fixed Fireworks request formatting by translating between public model IDs and API wire IDs when sending OpenAI-completions requests +- Fixed OpenAI-compatible model parameter handling for Fireworks by allowing `max_tokens` to be sent during requests + +## [14.5.1] - 2026-04-26 + +### Fixed + +- Fixed NVIDIA NIM DeepSeek-V4 models leaking chat-template tool-call markers (e.g. `<|DSML|tool_calls|>`) into visible response text by stripping the special tokens from streamed `delta.content` ([#798](https://github.com/can1357/gajae-code/issues/798)) + +## [14.4.0] - 2026-04-26 + +### Added + +- Added an `examples` option to `StringEnum` to include example values in the generated schema + +### Changed + +- Changed Anthropic tool schema generation to strip unsupported schema fields (including `patternProperties`), add `additionalProperties: false` for object types, and apply Anthropic strict-mode limits when marking tools as strict +- Changed Anthropic strict tool planning to cap strict `tools` at twenty entries and convert excess optional/union parameters to nullable schemas to stay within provider constraints + +### Fixed + +- Fixed Anthropic tool schema compilation failures by keeping the `write` tool out of the strict-tool allowlist when the full coding-agent tool set is active +- Fixed Anthropic 400 `tools.*.custom: For 'object' type, property 'minItems' is not supported` by stripping `minItems` from object-shaped JSON schema nodes (array nodes still keep supported `minItems` values) +- Fixed Anthropic tool schemas that used tuple-style arrays by stripping unsupported `maxItems` and only preserving provider-supported `minItems` values +- Fixed Anthropic and OpenRouter Anthropic tool calls that previously failed with `compiled grammar is too large` by retrying automatically without strict tool schemas and reusing non-strict mode for subsequent requests in the same provider session +- Fixed parsing of JSON tool arguments containing raw control characters inside string values (such as embedded newlines) by escaping them before JSON parsing +- Fixed `validateToolArguments` to accept stringified objects and arrays that include literal control characters inside string fields +- Fixed OpenAI code provider Spark OAuth selection to fall back to non-Pro accounts when no ChatGPT Pro account is connected, so users without a Pro account can still attempt Spark requests in case the server permits access. + +## [14.3.0] - 2026-04-25 + +### Added + +- Added support for Anthropic model Opus 4.7 (`anthropic-model-opus-4-7`) model ([#726](https://github.com/can1357/gajae-code/issues/726)) + - Suppresses sampling parameters (temperature/top_p/top_k) that Opus 4.7 rejects + - Enables `display: "summarized"` for adaptive thinking to restore visible thinking content + +### Fixed + +- Fixed Cursor provider losing conversation history on follow-up turns (model responding "this appears to be the start of our session") by populating `ConversationStateStructure.rootPromptMessagesJson` with JSON blob IDs for the system prompt plus prior user/assistant/tool-result messages. Cursor's server builds the model prompt from `rootPromptMessagesJson`, not from the protobuf `turns[]` tree, so sending only the system prompt there caused prior turns to be dropped +- Fixed Cursor provider multi-turn conversations failing with `Connect error internal: Blob not found` on the second message by storing `ConversationStateStructure.turns`, `AgentConversationTurnStructure.user_message`, and `AgentConversationTurnStructure.steps` as content-addressed blob IDs in the KV store (matching the existing handling for `rootPromptMessagesJson`) rather than sending the raw serialized bytes inline ([#678](https://github.com/can1357/gajae-code/issues/678)) + +## [14.2.1] - 2026-04-24 + +### Fixed + +- Fixed OpenAI code provider Spark OAuth selection to require a verified ChatGPT Pro account instead of falling back to Plus or unknown-plan accounts. + +## [14.2.0] - 2026-04-23 + +### Added + +- Added `gpt-5.5` to the built-in model catalog for both OpenAI Responses (`openai`) and local `litellm` (`openai-completions`) providers +- Added `gpt-image-2` to the `litellm` built-in model catalog +- Added `isCopilotTransientModelError()` and `callWithCopilotModelRetry()` helpers in `utils/retry` that detect GitHub Copilot's intermittent `HTTP 400 model_not_supported` responses for preview models (`gpt-5.3-openai-code`, `gpt-5.4`, `gpt-5.4-mini`, ...) and retry the request up to three times with backoff. OpenAI Responses, OpenAI Completions, and Anthropic provider paths now participate in this retry when the model is served through Copilot. +- Added OpenAI Responses custom-tool grammar support for patch-envelope `apply_patch` calls, including freeform streaming, history replay, and forced tool-choice mapping to the custom wire name. + +### Changed + +- Updated built-in model metadata with revised `contextWindow`, `maxTokens`, and pricing values for existing entries +- Changed generated model policies to assign `applyPatchToolType: "freeform"` for first-party GPT-5 OpenAI Responses and OpenAI code models, so regenerated `models.json` preserves the `apply_patch` custom-tool metadata. +- Renamed `rewriteCopilotAuthError` to `rewriteCopilotError` and extended it to rewrite `HTTP 400 model_not_supported` after retries are exhausted with guidance about Copilot's OAuth-client-specific rollout gap (see opencode#13313). + +### Fixed + +- Fixed Amazon Bedrock proxy handling to honor lowercase `http_proxy`, `https_proxy`, and `all_proxy` environment variables when using HTTP/1 fallback +- Fixed Amazon Bedrock streaming behind corporate HTTP proxies by using a proxy-aware HTTP/1 transport when `HTTPS_PROXY`, `HTTP_PROXY`, or `ALL_PROXY` is configured, including AWS SSO credential calls. +- Fixed Amazon Bedrock requests to retry once with HTTP/1 when the AWS SDK's default HTTP/2 transport fails before streaming begins. +- Fixed OpenAI Responses streaming to display thinking tokens from local providers (llama.cpp, etc.) that send raw `reasoning_text.delta` events and empty `summary` arrays in `output_item.done`. Previously, thinking content was silently dropped during streaming while non-streaming mode worked correctly. +- Synced the bundled OpenCode Go catalog with the current docs so `kimi-k2.6`, `mimo-v2.5`, and `mimo-v2.5-pro` appear in offline/default model lists. + +## [14.1.3] - 2026-04-17 + +### Fixed + +- Preserved user-provided `session_id` and `x-client-request-id` headers in OpenAI Responses requests instead of overriding them with automatic session-derived values +- Stopped sending `session_id` and `x-client-request-id` headers for OpenAI Responses requests when `cacheRetention` is set to `none` +- Fixed direct OpenAI Responses requests to send `session_id` and `x-client-request-id` from the same session-derived value as `prompt_cache_key`, improving prompt cache affinity for append-only sessions + +## [14.1.1] - 2026-04-14 + +### Added + +- Added `toolStrictMode` compatibility option (`"all_strict"` or `"none"`) to OpenAI-compatible model config to force tool schemas to be sent uniformly strict, uniformly non-strict, or keep mixed per-tool behavior + +### Changed + +- Changed Cerebras OpenAI-compatible providers to default `toolStrictMode` to `"all_strict"` unless explicitly overridden + +### Fixed + +- Fixed OpenAI Completions handling for providers that reject mixed `strict` flags by automatically retrying with non-strict tool schemas when an initial all-strict tool request fails with strict-format 400/422 errors +- Fixed OpenAI-completions error reporting by including captured JSON error body details such as type, param, and code when a request fails without a body in the thrown SDK error +- Fixed shell execution failure responses to preserve all result fields when sanitizing, preventing truncated metadata in stream results +- Fixed context overflow detection to recognize `model_context_window_exceeded` from z.ai / GLM providers, preventing infinite retry loops when context window is exceeded ([#638](https://github.com/can1357/gajae-code/issues/638)) +- Fixed strict tool schema enforcement to preserve `additionalProperties: false` and required keys for reused nested object schemas, preventing invalid `todo_write` function schemas in OpenAI code/OpenAI requests +- Fixed GitHub Copilot reasoning regressions by preserving GPT-5.x / Anthropic model 4.x reasoning controls instead of stripping them from requests ([#773](https://github.com/can1357/gajae-code/issues/773)) + +## [14.1.0] - 2026-04-11 + +### Added + +- Added `accountId` to usage report metadata + +### Changed + +- Changed usage parsing to emit a usage report with available fields when parsing fails, rather than returning null + +### Fixed + +- Fixed `planType` resolution to fall back to the raw payload `plan_type` when parsed value is absent +- Fixed usage metadata `raw` fallback to preserve the original payload when parsed raw output is missing + +## [14.0.5] - 2026-04-11 + +### Changed + +- Replaced GitHub Copilot authentication from VSCode extension impersonation to the opencode OAuth flow, eliminating TOS concerns. Existing users will need to re-authenticate once with `/login github-copilot`. +- Simplified Copilot token handling: GitHub OAuth token is used directly for all API requests (no JWT exchange or refresh cycle). +- Changed GitHub Copilot API base URL from `api.individual.githubcopilot.com` to `api.githubcopilot.com`. +- Updated default OpenAI stream idle timeout to 120,000 milliseconds to keep stream generation alive longer + +### Fixed + +- Fixed duplicate synthetic tool results being generated when a real tool result appears later in message history +- Fixed GitHub Copilot `/models` discovery to unwrap structured OAuth credentials before sending the bearer token, preserving dynamic catalog refresh for OAuth-backed callers. + +### Removed + +- Removed Copilot JWT proxy-ep base URL resolution (no longer needed with opencode auth). + +## [14.0.3] - 2026-04-09 + +### Fixed + +- Fixed Ollama discovery cache normalization so cached models upgrade to the OpenAI Responses transport after the provider change + +## [14.0.0] - 2026-04-08 + +### Breaking Changes + +- Removed `coerceNullStrings` function and its automatic null-string coercion behavior from JSON parsing + +### Added + +- Added support for OpenRouter provider with strict mode detection +- Added automatic cleaning of literal escape sequences (`\n`, `\t`, `\r`) in JSON parsing to handle LLM encoding confusion +- Added support for healing JSON with trailing junk after balanced containers (e.g., `]\n`) +- Added `OPENAI_CODE_STARTUP_EVENT_CHANNEL` constant and `OpenAI codeStartupEvent` type for monitoring OpenAI code provider initialization status +- Added automatic healing of malformed JSON with single-character bracket errors at the end of strings, improving LLM tool argument parsing robustness + +## [13.19.0] - 2026-04-05 + +### Fixed + +- Fixed GitHub Copilot model context window detection by correcting fallback priority for maxContextWindowTokens and maxPromptTokens +- Fixed Gemini 2.5 Pro context window detection in GitHub Copilot model limits test +- Fixed Anthropic model Opus 4.6 context window detection in GitHub Copilot model limits test +- Fixed Anthropic streaming to suppress transient SDK console errors for malformed SSE keep-alive frames so the TUI only shows surfaced provider errors + +- Added environment-based credential fallback for the OpenAI code provider provider. + +## [13.17.6] - 2026-04-01 + +### Fixed + +- Fixed Anthropic first-event timeouts to exclude stream connection setup from the watchdog, preserve timeout-specific retry classification after local aborts, and reset retry state cleanly between attempts + +## [13.17.5] - 2026-04-01 + +### Changed + +- Increased default first-event timeout from 15s to 45s to better accommodate longer request setup times +- Modified first-event watchdog to inherit idle timeout when it exceeds the default, ensuring consistent timeout behavior across different configurations + +### Fixed + +- Fixed first-event watchdog initialization timing so it no longer starts before the actual stream request is created, preventing premature timeouts during request setup +- Fixed first-event watchdog timing so OpenAI-family providers no longer count slow request setup against the first streamed event timeout, and raised the default first-event timeout to avoid false aborts after long tool turns + +## [13.17.2] - 2026-04-01 + +### Fixed + +- Fixed OpenAI-family first-event timeouts to preserve provider-specific timeout errors for retry classification instead of flattening them to generic aborts ([#591](https://github.com/can1357/gajae-code/issues/591)) + +## [13.17.1] - 2026-04-01 + +### Added + +- Added `thinkingSignature` field to thinking content blocks to preserve the original reasoning field name (e.g., `reasoning_text`, `reasoning_content`) for accurate follow-up requests +- Added first-event timeout detection for streaming responses to abort stuck requests before user-visible content arrives +- Added `PI_STREAM_FIRST_EVENT_TIMEOUT_MS` environment variable to configure first-event timeout (defaults to 15 seconds or idle timeout, whichever is lower) + +### Changed + +- Changed thinking block handling to track and distinguish between different reasoning field types, enabling proper field name preservation across multiple turns + +### Fixed + +- Fixed Anthropic stream timeout errors to be properly retried by recognizing first-event timeout messages +- Fixed stream stall detection to distinguish between first-event timeouts and idle timeouts, enabling faster recovery for stuck connections + +### Added + +- Added Vercel AI Gateway to `/login` providers for interactive API key setup + +### Fixed + +- Fixed `gjc commit` failing with HTTP 400 errors when using reasoning-enabled models on OpenAI-compatible endpoints that don't support the `developer` role (e.g., GitHub Copilot, custom proxies). Now falls back to `system` role when `developer` is unsupported. + +## [13.17.0] - 2026-03-30 + +### Changed + +- Bumped zai provider default model from glm-4.6 to glm-5.1 + +## [13.16.5] - 2026-03-29 + +### Added + +- Added Gemma 3 27B model support for Google Generative AI + +### Changed + +- Updated Kwaipilot KAT-Coder-Pro V2 model display name and pricing information +- Updated Kwaipilot KAT-Coder-Pro V2 context window from 222,222 to 256,000 tokens and max tokens from 8,888 to 80,000 + +### Fixed + +- Fixed normalizeAnthropicBaseUrl returning empty string instead of undefined when baseUrl is empty + +## [13.16.4] - 2026-03-28 + +### Added + +- Added support for Groq Compound and Compound Mini models with extended context window (131K tokens) and configurable thinking levels +- Added support for OpenAI GPT-OSS-Safeguard-20B model with reasoning capabilities across multiple providers +- Added support for Kwaipilot KAT-Coder-Pro V2 model across Kilo, NanoGPT, and OpenRouter providers +- Added support for GLM-5.1 model with extended context window (200K tokens) and max output of 131K tokens +- Added support for Qwen3.5-27B-Musica-v1 model +- Added support for zai-org/glm-5.1 model with reasoning capabilities +- Added support for Sapiens AI Agnes-1.5-Lite model with multimodal input (text and image) and reasoning +- Added support for Venice openai-gpt-54-mini model + +### Changed + +- Updated Qwen QwQ 32B max tokens from 16,384 to 40,960 across multiple providers +- Updated OpenAI GPT-OSS-Safeguard-20B model name to 'Safety GPT OSS 20B' and enabled reasoning capabilities +- Updated OpenAI GPT-OSS-Safeguard-20B context window from 222,222 to 131,072 tokens and max tokens from 8,888 to 65,536 +- Updated OpenRouter Qwen QwQ 32B pricing: input from 0.2 to 0.19, output from 1.17 to 1.15, cache read from 0.1 to 0.095 +- Updated OpenRouter Anthropic model 3.5 Sonnet pricing: input from 0.45 to 0.42, cache read from 0.225 to 0.21 + +## [13.16.3] - 2026-03-28 + +### Changed + +- Modified OAuth credential saving to preserve unrelated identities instead of replacing all credentials for a provider +- Updated credential identity resolution to use provider context for more accurate email deduplication + +### Fixed + +- Fixed OAuth credential updates to replace matching credentials in-place rather than creating disabled rows, preventing unbounded accumulation of soft-deleted credentials + +## [13.15.0] - 2026-03-23 + +### Added + +- Added `isUsageLimitError()` to `rate-limit-utils` as a single source of truth for detecting usage/quota limit errors across all providers + +### Fixed + +- Fixed lazy stream forwarding to properly handle final results from source streams with `result()` methods +- Fixed lazy stream error handling to convert iterator failures into terminal error results instead of silently failing +- Fixed `parseRateLimitReason` to recognize "usage limit" in error messages and correctly classify them as `QUOTA_EXHAUSTED` +- Fixed OpenAI code `fetchWithRetry` retrying 429 responses for `usage_limit_reached` errors for up to 5 minutes instead of returning immediately for credential switching +- Removed `usage.?limit` from `TRANSIENT_MESSAGE_PATTERN` in retry utils since usage limits are not transient and require credential rotation +- Fixed `parseRateLimitReason` not recognizing "usage limit" in OpenAI code error messages, causing incorrect fallback to `UNKNOWN` classification instead of `QUOTA_EXHAUSTED` + +## [13.14.2] - 2026-03-21 + +### Changed + +- Updated thinking configuration format from `levels` array to `minLevel` and `maxLevel` properties for improved clarity +- Corrected context window from 400000 to 272000 tokens for GPT-5.4 mini and nano variants on OpenAI code transport +- Normalized GPT-5.4 variant priority handling to use parsed variant instead of special-casing raw model IDs +- Added support for `mini` variant in OpenAI model parsing regex + +### Fixed + +- Fixed inconsistent thinking level configuration across multiple model definitions + +## [13.14.0] - 2026-03-20 + +### Fixed + +- Fixed resumed OpenAI Responses sessions to avoid replaying stale same-provider native history on the first follow-up after process restart ([#488](https://github.com/can1357/gajae-code/issues/488)) + +### Added + +- Added bundled GPT-5.4 mini model metadata for OpenAI, OpenAI code provider, and GitHub Copilot, including low-to-xhigh thinking support and GitHub Copilot premium multiplier metadata +- Added bundled GPT-5.4 nano model metadata for OpenAI and OpenAI code provider, including low-to-xhigh thinking support + +## [13.13.2] - 2026-03-18 + +### Changed + +- Modified tool result handling for aborted assistant messages to preserve existing tool results when already recorded, instead of always replacing them with synthetic 'aborted' results + +## [13.13.0] - 2026-03-18 + +### Changed + +- Changed tool argument validation to always normalize optional null values before type coercion, ensuring consistent handling of LLM-generated 'null' strings + +### Fixed + +- Fixed tool argument validation to properly handle string 'null' values from LLMs on optional fields by stripping them during normalization +- Improved type safety of `validateToolCall` and `validateToolArguments` functions by returning properly typed `ToolCall["arguments"]` instead of `any` + +## [13.12.9] - 2026-03-17 + +### Changed + +- Extracted OpenAI compatibility detection and resolution logic into dedicated `openai-completions-compat` module for improved maintainability and reusability + +### Fixed + +- Fixed `openai-responses` manual history replay to strip replay-only item IDs and preserve normalized tool `call_id` values for GitHub Copilot follow-up turns ([#457](https://github.com/can1357/gajae-code/issues/457)) + +## [13.12.0] - 2026-03-14 + +### Added + +- Added support for `qwen-chat-template` thinking format to enable reasoning via `chat_template_kwargs.enable_thinking` +- Added `reasoningEffortMap` option to `OpenAICompat` for mapping pi-ai reasoning levels to provider-specific `reasoning_effort` values +- Added `extraBody` to `OpenAICompat` to support provider-specific request body routing fields in OpenAI-completions requests +- Added support for reading token usage from choice-level `usage` field as fallback when root-level usage is unavailable +- Added new models: DeepSeek-V3.2 (Bedrock), Llama 3.1 405B Instruct, Magistral Small 1.2, Ministral 3 3B, Mistral Large 3, Pixtral Large (25.02), NVIDIA Nemotron Nano 3 30B, and Qwen3-5-9b +- Added `close()` method to `AuthStorage` for properly closing the underlying credential store +- Added `initiatorOverride` option in OpenAI and Anthropic providers to customize message attribution + +### Changed + +- Changed assistant message content serialization to always use plain string format instead of text block arrays to prevent recursive nesting in OpenAI-compatible backends +- Changed Bedrock Opus 4.6 context window from 1M to 1M and added max tokens limit of 128K +- Changed OpenCode Zen/Go Sonnet 4.0/4.5 context window from 1M to 200K +- Changed GitHub Copilot context windows from 200K to 128K for both gpt-4o and gpt-4o-mini +- Changed Anthropic model 3.5 Sonnet (Anthropic API) pricing: input from $0.5 to $0.25, output from $3 to $1.5, cache read from $0.05 to $0.025, cache write from $0 to $1 +- Changed Devstral 2 model name from '135B' to '123B' +- Changed ByteDance Seed 2.0-Lite to support reasoning with effort-based thinking mode and image inputs +- Changed Qwen3-32b (Groq) reasoning effort mapping to normalize all levels to 'default' +- Changed finish_reason 'end' to map to 'stop' for improved compatibility with additional providers +- Changed Anthropic reference model merging to prioritize bundled metadata for known models while using models.dev for newly discovered IDs + +### Fixed + +- Fixed reasoning_effort parameter handling to use provider-specific mappings instead of raw effort values +- Fixed assistant content serialization for GitHub Copilot and other OpenAI-compatible backends that mirror array payloads +- Fixed token usage calculation to properly extract cached tokens from both root and nested `prompt_tokens_details` fields +- Fixed stop reason mapping to handle string values and unknown finish reasons gracefully +- Fixed resource cleanup in `AuthCredentialStore.close()` to properly finalize all prepared statements before closing the database + +## [13.11.1] - 2026-03-13 + +### Fixed + +- Added `llama.cpp` as local provider +- Fixed auth schema V0-to-V1 migration crash when the V0 table lacks a `disabled` column + +## [13.11.0] - 2026-03-12 + +### Added + +- Added support for Parallel AI provider with API key authentication +- Added `PARALLEL_API_KEY` environment variable support for Parallel provider configuration +- Added automatic websocket reconnection handling for connection limit errors, with fallback to SSE replay when content has already been emitted + +### Changed + +- Enhanced `OpenAI codeProviderStreamError` to include an optional error code field for better error categorization and handling + +### Fixed + +- Improved retry logic to handle HTTP/2 stream errors and internal_error responses from Anthropic API + +## [13.9.16] - 2026-03-10 + +### Added + +- Support for `onPayload` callback to replace provider request payloads before sending, enabling request interception and modification +- Support for structured text signature metadata with phase information (commentary/final_answer) in OpenAI and Azure OpenAI Responses providers +- Support for OpenAI code provider Spark model selection with plan-based account prioritization +- Added `modelId` option to `getApiKey()` to enable model-specific credential ranking + +### Changed + +- Enhanced `onPayload` callback signature to accept model parameter and support async payload replacement +- Improved error messages for `response.failed` events to include detailed error codes, messages, and incomplete reasons +- Refactored OpenAI code provider response streaming to improve code organization and maintainability with extracted helper functions and type definitions +- Enhanced websocket fallback logic to safely replay buffered output over SSE when websocket connections fail mid-stream +- Improved error recovery for websocket streams by distinguishing between fatal connection errors and retryable stream errors +- Updated credential ranking strategy to prioritize Pro plan accounts when requesting OpenAI code provider Spark models + +### Fixed + +- Fixed websocket stream recovery to properly reset output state and clear buffered items when falling back to SSE after partial output +- Fixed handling of malformed JSON messages in websocket streams to trigger immediate fallback to SSE without retry attempts + +## [13.9.13] - 2026-03-10 + +### Added + +- Added `isSpecialServiceTier` utility function to validate OpenAI service tier values + +## [13.9.12] - 2026-03-09 + +### Added + +- Added Tavily web search provider support with API key authentication + +### Fixed + +- Fixed OpenAI-family streaming transports to fail with an explicit idle-timeout error instead of hanging indefinitely when the provider stops sending events mid-response +- Fixed OpenAI code provider OAuth refresh and usage-limit lookups to respect request timeouts instead of waiting indefinitely during account selection or rotation +- Fixed OpenAI code provider prewarmed websocket requests to fall back quickly when the socket connects but never starts the response stream + +## [13.9.10] - 2026-03-08 + +### Added + +- Added `identity_key` column to auth credentials storage for improved credential deduplication +- Added schema versioning system to auth credentials database for safer migrations +- Added automatic backfilling of identity keys during database schema migrations + +### Changed + +- Changed credential deduplication logic to use single identity key instead of multiple identifiers for better performance +- Changed database schema to store normalized identity keys alongside credentials +- Changed auth schema migration to support upgrading from legacy database versions with automatic data backfill + +### Fixed + +- Fixed API key credential matching to correctly identify when the same key is re-stored, preventing unnecessary row duplication on re-login +- Fixed credential deduplication to correctly handle OAuth accounts with matching emails but different account IDs +- Fixed API key replacement to reuse existing stored rows instead of accumulating disabled duplicates +- Fixed auth storage to preserve newer recorded schema versions when opened by older binaries + +## [13.9.8] - 2026-03-08 + +### Fixed + +- Fixed WebSocket stream fallback logic to safely replay buffered output over SSE when WebSocket fails after partial content has been streamed + +## [13.9.4] - 2026-03-07 + +### Changed + +- Simplified API key credential storage to always replace existing credentials on re-login instead of accumulating multiple keys +- Updated Kagi API key placeholder from `kagi_...` to `KG_...` to match current API key format +- Updated Kagi login instructions to clarify Search API access is beta-only and provide support contact +- Disabled usage reporting in streaming responses for Cerebras models due to compatibility issues + +### Fixed + +- Fixed Cerebras model compatibility by preventing `stream_options` usage requests in chat completions + +## [13.9.3] - 2026-03-07 + +### Breaking Changes + +- Changed `reasoning` parameter from `ThinkingLevel | undefined` to `Effort | undefined` in `SimpleStreamOptions`; 'off' is no longer valid (omit the field instead) +- Removed `supportsXhigh()` function; check `model.thinking?.maxLevel` instead +- Removed `ThinkingLevel` and `ThinkingEffort` types; use `Effort` enum +- Removed `getAvailableThinkingLevels()` and `getAvailableThinkingEfforts()` functions +- Changed `transformRequestBody()` signature to require `Model` parameter as second argument for effort validation +- Removed `thinking.ts` module export; import from `model-thinking.ts` instead + +### Added + +- Added `incremental` flag to `OpenAIResponsesHistoryPayload` to support building conversation history from multiple assistant messages instead of replacing it +- Added `dt` flag to `OpenAIResponsesHistoryPayload` for transport-level metadata +- Added `ThinkingConfig` interface to models for canonical thinking transport metadata with min/max effort levels and provider-specific mode +- Added `thinking` field to `Model` type containing per-model thinking capabilities used to clamp and map user-facing effort levels +- Added `Effort` enum (minimal, low, medium, high, xhigh) as canonical user-facing thinking levels replacing `ThinkingLevel` +- Added `enrichModelThinking()` function to automatically populate thinking metadata on models based on their capabilities +- Added `mapEffortToAnthropicAdaptiveEffort()` function to map user effort levels to Anthropic adaptive thinking effort +- Added `mapEffortToGoogleThinkingLevel()` function to map user effort levels to Google thinking levels +- Added `requireSupportedEffort()` function to validate and clamp effort levels per model, throwing errors for unsupported combinations +- Added `clampThinkingLevelForModel()` function to clamp thinking levels to model-supported range +- Added `applyGeneratedModelPolicies()` and `linkSparkPromotionTargets()` exports from model-thinking module +- Added `serviceTier` option to control OpenAI processing priority and cost (auto, default, flex, scale, priority) +- Added `providerPayload` field to messages and responses for reconstructing transport-native history +- Added Gemini usage provider for tracking quota and tier information +- Added `getOpenAI codeAccountId()` utility to extract account ID from OpenAI code JWT tokens +- Added email extraction from OpenAI code provider OAuth tokens for credential deduplication + +### Changed + +- Changed credential disabling mechanism from boolean `disabled` flag to `disabled_cause` text field for tracking why credentials were disabled +- Changed `deleteAuthCredential()` and `deleteAuthCredentialsForProvider()` methods to require a `disabledCause` parameter explaining the reason for disabling +- Changed Gemini model parsing to strip `-preview` suffix for consistent model identification +- Changed OpenAI code provider websocket error handling to detect fatal connection errors and immediately fall back to SSE without retrying +- Changed OpenAI code provider to always use websockets v2 protocol (removed v1 support) +- Changed `reasoning` parameter type from `ThinkingLevel` to `Effort` in `SimpleStreamOptions`, removing 'off' value (callers should omit the field instead) +- Changed thinking configuration to use model-specific metadata instead of hardcoded provider logic for effort mapping +- Changed OpenAI code provider request transformer to accept `Model` parameter for effort validation instead of string model ID +- Changed Anthropic provider to use model thinking metadata for determining adaptive thinking support instead of model ID pattern matching +- Changed Google Vertex and Google providers to use shorter variable names for thinking config construction +- Moved thinking-related utilities from `thinking.ts` to new `model-thinking.ts` module with expanded functionality +- Moved model policy functions from `provider-models/model-policies.ts` to `model-thinking.ts` +- Moved `googleGeminiCliUsageProvider` from `providers/google-gemini-cli-usage.ts` to `usage/gemini.ts` +- Changed default OpenAI model from gpt-5.1-openai-code to gpt-5.4 across all providers +- Changed `UsageFetchContext` to remove cache and now() dependencies—usage fetchers now use Date.now() directly +- Removed `resetInMs` field from usage windows; consumers should calculate from `resetsAt` timestamp +- Changed OpenAI code provider credential ranking to deduplicate by email when accountId matches +- Improved OpenAI code provider error handling with retryable error detection + +### Removed + +- Removed `thinking.ts` module; use `model-thinking.ts` instead +- Removed `provider-models/model-policies.ts` module; functionality moved to `model-thinking.ts` +- Removed `supportsXhigh()` function from models.ts; use model.thinking metadata instead +- Removed `ThinkingLevel` and `ThinkingEffort` types; use `Effort` enum instead +- Removed `getAvailableThinkingLevels()` and `getAvailableThinkingEfforts()` functions +- Removed `model-policies` export from `provider-models/index.ts` +- Removed hardcoded thinking level clamping logic from OpenAI code provider request transformer; now uses model metadata +- Removed `UsageCache` and `UsageCacheEntry` interfaces—caching is now handled internally by AuthStorage +- Removed `google-gemini-cli-usage` export; use new `gemini` usage provider instead +- Removed `resetInMs` computation from all usage providers +- Removed cache TTL constants and cache management from usage fetchers (anthropic-model, github-copilot, google-antigravity, kimi, openai-code, zai) + +### Fixed + +- Fixed credential purging to respect disabled credentials when deduplicating by email, preventing re-enablement of intentionally disabled credentials +- Fixed OpenAI code provider websocket error reporting to include detailed error messages from error events +- Fixed conversation history reconstruction to support incremental updates from multiple assistant messages while maintaining backward compatibility with full-snapshot payloads +- Fixed OpenAI code provider to reject unsupported effort levels instead of silently clamping them, providing clear error messages about supported efforts +- Fixed model cache normalization to properly apply thinking enrichment when loading cached models +- Fixed dynamic model merging to apply thinking enrichment to merged model results +- Fixed OpenAI code provider streaming to properly include service_tier in SSE payloads +- Fixed type safety in OpenAI responses by removing unsafe type casts on image content blocks +- Fixed credential purging to respect disabled credentials when deduplicating by email +- Fixed API-key provider re-login to replace the active stored key instead of appending stale credentials that were still selected first +- Fixed Kagi login guidance to use the correct `KG_...` key format and mention Search API beta access requirements + +## [13.9.2] - 2026-03-05 + +### Added + +- Support for redacted thinking blocks in Anthropic messages, enabling secure handling of encrypted reasoning content +- Preservation of latest Anthropic thinking blocks and redacted thinking content during message transformation, even when switching between Anthropic models + +### Changed + +- Assistant message content now includes `RedactedThinkingContent` type alongside existing text, thinking, and tool call blocks +- Message transformation logic now preserves signed thinking blocks and redacted thinking for the latest assistant message in Anthropic conversations + +### Fixed + +- Fixed Unicode normalization to consistently apply `toWellFormed()` to all text content, including thinking blocks, ensuring proper handling of malformed UTF-16 sequences + +## [13.9.1] - 2026-03-05 + +### Breaking Changes + +- Removed `THINKING_LEVELS`, `ALL_THINKING_LEVELS`, `ALL_THINKING_MODES`, `THINKING_MODE_DESCRIPTIONS`, and `THINKING_MODE_LABELS` exports +- Renamed `formatThinking()` to `getThinkingMetadata()` with changed return type from string to `ThinkingMetadata` object +- Renamed `getAvailableThinkingLevel()` to `getAvailableThinkingLevels()` and added default parameter +- Renamed `getAvailableEffort()` to `getAvailableEfforts()` and added default parameter + +### Added + +- Added `ThinkingMetadata` type to provide structured access to thinking mode information (value, label, description) + +## [13.9.0] - 2026-03-05 + +### Added + +- Exported new thinking module with `Effort`, `ThinkingLevel`, and `ThinkingMode` types for managing reasoning effort levels +- Added `getAvailableEffort()` function to determine supported thinking effort levels based on model capabilities +- Added `parseEffort()`, `parseThinkingLevel()`, and `parseThinkingMode()` functions for parsing thinking configuration strings +- Added `THINKING_LEVELS`, `ALL_THINKING_LEVELS`, and `ALL_THINKING_MODES` constants for iterating over available thinking options +- Added `THINKING_MODE_DESCRIPTIONS` and `THINKING_MODE_LABELS` for displaying thinking modes in user interfaces +- Added `formatThinking()` function to format thinking modes as compact display labels + +### Changed + +- Refactored thinking level handling to distinguish between `Effort` (provider-level, no "off") and `ThinkingLevel` (user-facing, includes "off") +- Updated `ThinkingBudgets` type to use `Effort` instead of `ThinkingLevel` for more precise token budget configuration +- Improved reasoning option handling to explicitly support "off" value for disabling reasoning across all providers +- Simplified thinking effort mapping logic by centralizing provider-specific clamping behavior + +## [13.7.8] - 2026-03-04 + +### Added + +- Added ZenMux provider support with mixed API routing: Anthropic-owned models discovered from `https://zenmux.ai/api/v1/models` now use the Anthropic transport (`https://zenmux.ai/api/anthropic`), while other ZenMux models use the OpenAI-compatible transport. + +## [13.7.7] - 2026-03-04 + +### Changed + +- Modified response ID normalization to preserve existing item ID prefixes when truncating oversized IDs +- Updated tool call ID normalization to use `fc_` prefix for generated item IDs instead of `item_` prefix + +### Fixed + +- Fixed handling of reasoning item IDs to remain untouched during response normalization while function call IDs are properly normalized + +## [13.7.2] - 2026-03-04 + +### Added + +- Added support for Kagi API key authentication via `login kagi` command +- Added Kagi to the list of available OAuth providers + +### Fixed + +- MCP tool schemas with `$ref`/`$defs` are now dereferenced before being sent to LLM providers, fixing dangling references that left models without type definitions +- Ajv schema validation no longer emits `console.warn()` for non-standard format keywords (e.g. `"uint"`) from MCP servers, preventing TUI corruption +- Tool schema compilation is now cached per schema identity, eliminating redundant recompilation on every tool call + +## [13.6.0] - 2026-03-03 + +### Added + +- Added Anthropic Foundry gateway mode controlled by `ANTHROPIC_MODEL_CODE_USE_FOUNDRY`, with support for `FOUNDRY_BASE_URL`, `ANTHROPIC_FOUNDRY_API_KEY`, `ANTHROPIC_CUSTOM_HEADERS`, and optional mTLS material (`ANTHROPIC_MODEL_CODE_CLIENT_CERT`, `ANTHROPIC_MODEL_CODE_CLIENT_KEY`, `NODE_EXTRA_CA_CERTS`) +- Added LM Studio provider support with OpenAI-compatible model discovery and OAuth login. +- Added support for `LM_STUDIO_API_KEY` and `LM_STUDIO_BASE_URL` environment variables for authentication and custom host configuration. + +### Changed + +- Anthropic key resolution now prefers `ANTHROPIC_FOUNDRY_API_KEY` over `ANTHROPIC_OAUTH_TOKEN` and `ANTHROPIC_API_KEY` when Foundry mode is enabled +- Anthropic auth base-URL fallback now prefers `FOUNDRY_BASE_URL` when `ANTHROPIC_MODEL_CODE_USE_FOUNDRY` is enabled + +## [13.5.8] - 2026-03-02 + +### Fixed + +- Fixed schema compatibility issue where patternProperties in tool parameters caused failures when converting to legacy Antigravity format + +## [13.5.5] - 2026-03-01 + +### Changed + +- Anthropic Anthropic model system-block cloaking now leaves the agent identity block uncached and applies `cache_control: { type: "ephemeral" }` to injected user system blocks without forcing `ttl: "1h"` + +### Fixed + +- Anthropic request payload construction now enforces a maximum of 4 `cache_control` breakpoints (tools/system/messages priority order) before dispatch +- Anthropic cache-control normalization now removes later `ttl: "1h"` entries when a default/5m block has already appeared earlier in evaluation order + +## [13.5.3] - 2026-03-01 + +### Fixed + +- Fixed tool argument coercion to handle malformed JSON with trailing wrapper braces by parsing leading JSON containers + +## [13.4.0] - 2026-03-01 + +### Breaking Changes + +- Removed `TInput` generic parameter from `ToolResultMessage` interface and removed `$normative` property + +### Added + +- `hasUnrepresentableStrictObjectMap()` pre-flight check in `tryEnforceStrictSchema`: schemas with `patternProperties` or schema-valued `additionalProperties` now degrade gracefully to non-strict mode instead of throwing during enforcement +- `generateAnthropic modelCloakingUserId()` generates structured user IDs for Anthropic OAuth metadata (`user_{hex64}_account_{uuid}_session_{uuid}`) +- `isAnthropic modelCloakingUserId()` validates whether a string matches the cloaking user-ID format +- `mapStainlessOs()` and `mapStainlessArch()` map `process.platform`/`process.arch` to Stainless header values; X-Stainless-Os and X-Stainless-Arch in `anthropic-modelCodeHeaders` are now runtime-computed +- `buildAnthropic modelCodeTlsFetchOptions()` attaches SNI and default TLS ciphers for direct `api.anthropic.com` connections +- `createAnthropic modelBillingHeader()` generates the `x-anthropic-billing-header` block (SHA-256 payload fingerprint + random build hash) +- `buildAnthropicSystemBlocks()` now injects a billing header block and the Anthropic model Agent SDK identity block with `ephemeral` 1h cache-control when `includeAnthropic modelCodeInstruction` is set +- `resolveAnthropicMetadataUserId()` auto-generates a cloaking user ID for OAuth requests when `metadata.user_id` is absent or invalid +- `AnthropicOAuthFlow` is now exported for direct use +- OAuth callback server timeout extended from 2 min to 5 min +- `parseGeminiCliCredentials()` parses Google Cloud credential JSON with support for legacy (`{token,projectId}`), alias (`project_id`/`refresh`/`expires`), and enriched formats +- `shouldRefreshGeminiCliCredentials()` and proactive token refresh before requests for both Gemini CLI and Antigravity providers (60s pre-expiry buffer) +- `normalizeAntigravityTools()` converts `parametersJsonSchema` → `parameters` in function declarations for Antigravity compatibility +- `ANTIGRAVITY_SYSTEM_INSTRUCTION` is now exported for use by search and other consumers +- `ANTIGRAVITY_LOAD_CODE_ASSIST_METADATA` constant exported from OAuth module with `ANTIGRAVITY` ideType +- Antigravity project onboarding: `onboardProjectWithRetries()` provisions a new project via `onboardUser` LRO when `loadCodeAssist` returns no existing project (up to 5 attempts, 2s interval) +- `getOAuthApiKey` now includes `refreshToken`, `expiresAt`, `email`, and `accountId` in the Gemini/Antigravity JSON credential payload to enable proactive refresh +- Antigravity model discovery now tries the production daily endpoint first, with sandbox as fallback +- `ANTIGRAVITY_DISCOVERY_DENYLIST` filters low-quality/internal models from discovery results + +### Changed + +- Replaced `sanitizeSurrogates()` utility with native `String.prototype.toWellFormed()` for handling unpaired Unicode surrogates across all providers +- Extended `ANTHROPIC_OAUTH_BETA` constant in the OpenAI-compat Anthropic route with `interleaved-thinking-2025-05-14`, `context-management-2025-06-27`, and `prompt-caching-scope-2026-01-05` beta flags +- `anthropic-modelCodeVersion` bumped to `2.1.63`; `anthropic-modelCodeSystemInstruction` updated to identify as Anthropic model Agent SDK +- `anthropic-modelCodeHeaders`: removed `X-Stainless-Helper-Method`, updated package version to `0.74.0`, runtime version to `v24.3.0` +- `applyAnthropic modelToolPrefix` / `stripAnthropic modelToolPrefix` now accept an optional prefix override and skip Anthropic built-in tool names (`web_search`, `code_execution`, `text_editor`, `computer`) +- Accept-Encoding header updated to `gzip, deflate, br, zstd` +- Non-Anthropic base URLs now receive `Authorization: Bearer` regardless of OAuth status +- Prompt-caching logic now skips applying breakpoints when any block already carries `cache_control`, instead of stripping then re-applying +- `fine-grained-tool-streaming-2025-05-14` removed from default beta set +- Anthropic OAuth token URL changed from `platform.anthropic-model.com` to `api.anthropic.com` +- Anthropic OAuth scopes reduced to `org:create_api_key user:profile user:inference` +- OAuth code exchange now strips URL fragment from callback code, using the fragment as state override when present +- Anthropic model usage headers aligned: user-agent updated to `anthropic-model-cli/2.1.63 (external, cli)`, anthropic-beta extended with full beta set +- Antigravity session ID format changed to signed decimal (negative int63 derived from SHA-256 of first user message, or random bounded int63) +- Antigravity `requestId` now uses `agent-{uuid}` format; non-Antigravity requests no longer include requestId/userAgent/requestType in the payload +- `ANTIGRAVITY_DAILY_ENDPOINT` corrected to `daily-cloudcode-pa.googleapis.com`; sandbox endpoint kept as fallback only +- Antigravity discovery: removed `recommended`/`agentModelSorts` filter; now includes all non-internal, non-denylisted models +- Antigravity discovery no longer sends `project` in the request body +- Gemini/Antigravity OAuth flows no longer use PKCE (code_challenge removed) +- Antigravity `loadCodeAssist` metadata ideType changed from `IDE_UNSPECIFIED` to `ANTIGRAVITY` +- Antigravity `discoverProject` now uses a single canonical production endpoint; falls back to project onboarding instead of a hardcoded default project ID +- `VALIDATED` tool calling config applied to Antigravity requests with Anthropic model models +- `maxOutputTokens` removed from Antigravity generation config for non-Anthropic model models +- System instruction injection for Antigravity scoped to Anthropic model and `gemini-3-pro-high` models only + +### Removed + +- Removed `sanitizeSurrogates()` utility function; use native `String.prototype.toWellFormed()` instead + +## [13.3.14] - 2026-02-28 + +### Added + +- Exported schema utilities from new `./utils/schema` module, consolidating JSON Schema handling across providers +- Added `CredentialRankingStrategy` interface for providers to implement usage-based credential selection +- Added `anthropic-modelRankingStrategy` for Anthropic OAuth credentials to enable smart multi-account selection based on usage windows +- Added `openai-codeRankingStrategy` for OpenAI code provider OAuth credentials with priority boost for fresh 5-hour window starts +- Added `adaptSchemaForStrict()` helper for unified OpenAI strict schema enforcement across providers +- Added schema equality and merging utilities: `areJsonValuesEqual()`, `mergeCompatibleEnumSchemas()`, `mergePropertySchemas()` +- Added Cloud Code Assist schema normalization: `copySchemaWithout()`, `stripResidualCombiners()`, `prepareSchemaForCCA()` +- Added `sanitizeSchemaForGoogle()` and `sanitizeSchemaForCCA()` for provider-specific schema sanitization +- Added `StringEnum()` helper for creating string enum schemas compatible with Google and other providers +- Added `enforceStrictSchema()` and `sanitizeSchemaForStrictMode()` for OpenAI strict mode schema validation +- Added package exports for `./utils/schema` and `./utils/schema/*` subpaths +- Added `validateSchemaCompatibility()` to statically audit a JSON Schema against provider-specific rules (`openai-strict`, `google`, `cloud-code-assist-anthropic-model`) and return structured violations +- Added `validateStrictSchemaEnforcement()` to verify the strict-fail-open contract: enforced schemas pass strict validation, failed schemas return the original object identity +- Added `COMBINATOR_KEYS` (`anyOf`, `allOf`, `oneOf`) and `CCA_UNSUPPORTED_SCHEMA_FIELDS` as exported constants in `fields.ts` to eliminate duplication across modules +- Added `tryEnforceStrictSchema` result cache (`WeakMap`) to avoid redundant sanitize + enforce work for the same schema object +- Added comprehensive schema normalization test suite (`schema-normalization.test.ts`) covering strict mode, Google, and Cloud Code Assist normalization paths +- Added schema compatibility validation test suite (`schema-compatibility.test.ts`) covering all three provider targets + +### Changed + +- Moved schema utilities from `./utils/typebox-helpers` to new `./utils/schema` module with expanded functionality +- Refactored OpenAI provider tool conversion to use unified `adaptSchemaForStrict()` helper across openai-code, completions, and responses +- Updated `AuthStorage` to support generic credential ranking via `CredentialRankingStrategy` instead of OpenAI code-only logic +- Moved Google schema sanitization functions from `google-shared.ts` to `./utils/schema` module +- Changed export path: `./utils/typebox-helpers` → `./utils/schema` in main index +- `sanitizeSchemaForGoogle()` / `sanitizeSchemaForCCA()` now accept a parameterized `unsupportedFields` set internally, enabling code reuse between the two sanitizers +- `copySchemaWithout()` rewritten using object-rest destructuring for clarity + +### Fixed + +- Fixed cycle detection: `WeakSet` guards added to all recursive schema traversals (`sanitizeSchemaForStrictMode`, `enforceStrictSchema`, `normalizeSchemaForCCA`, `normalizeNullablePropertiesForCloudCodeAssist`, `stripResidualCombiners`, `sanitizeSchemaImpl`, `hasResidualCloudCodeAssistIncompatibilities`) — circular schemas no longer cause infinite loops or stack overflows +- Fixed `hasResidualCloudCodeAssistIncompatibilities`: cycle detection now returns `false` (not `true`) for already-visited nodes, eliminating false positives that forced the CCA fallback schema on valid recursive inputs +- Fixed `stripResidualCombiners` to iterate to a fixpoint rather than making a single pass, ensuring chained combiner reductions (where one reduction enables another) are fully resolved +- Fixed `mergeObjectCombinerVariants` required-field computation: the flattened object now takes the intersection of all variants' `required` arrays (unioned with own-level required properties that exist in the merged schema), preventing required fields from being silently dropped or over-included +- Fixed `mergeCompatibleEnumSchemas` to use deep structural equality (`areJsonValuesEqual`) instead of `Object.is` when deduplicating object-valued enum members +- Fixed `sanitizeSchemaForGoogle` const-to-enum deduplication to use deep equality instead of reference equality +- Fixed `sanitizeSchemaForGoogle` type inference for `anyOf`/`oneOf`-flattened const enums: type is now derived from all variants (must agree), falling back to inference from enum values; mixed null/non-null infers the non-null type and sets `nullable` +- Fixed `sanitizeSchemaForGoogle` recursion to spread options when descending (previously only `insideProperties`, `normalizeTypeArrayToNullable`, `stripNullableKeyword` were forwarded; new fields `unsupportedFields` and `seen` were silently dropped) +- Fixed `sanitizeSchemaForGoogle` array-valued `type` filtering to exclude non-string entries before processing +- Removed incorrect `additionalProperties: false` stripping from `sanitizeSchemaForGoogle` (the field is valid in Google schemas when `false`) +- Fixed `sanitizeSchemaForStrictMode` to strip the `nullable` keyword and expand it into `anyOf: [schema, {type: "null"}]` in the output, matching what OpenAI strict mode actually expects +- Fixed `sanitizeSchemaForStrictMode` to infer `type: "array"` when `items` is present but `type` is absent +- Fixed `sanitizeSchemaForStrictMode` to infer a scalar `type` from uniform `enum` values when `type` is not explicitly set +- Fixed `sanitizeSchemaForStrictMode` const-to-enum merge to use deep equality, preventing duplicate enum entries when `const` and `enum` both exist with the same value +- Fixed `enforceStrictSchema` to drop `additionalProperties` unconditionally (previously only object-valued `additionalProperties` was recursed into; non-object values were passed through, violating strict schema requirements) +- Fixed `enforceStrictSchema` to recurse into `$defs` and `definitions` blocks so referenced sub-schemas are also made strict-compliant +- Fixed `enforceStrictSchema` to handle tuple-style `items` arrays (previously only single-schema `items` objects were recursed) +- Fixed `enforceStrictSchema` double-wrapping: optional properties already expressed as `anyOf: [..., {type: "null"}]` are not wrapped again +- Fixed `enforceStrictSchema` `Array.isArray` type-narrowing for `type` field to filter non-string entries before checking for `"object"` + +## [13.3.8] - 2026-02-28 + +### Fixed + +- Fixed response body reuse error when handling 429 rate limit responses with retry logic + +## [13.3.7] - 2026-02-27 + +### Added + +- Added `tryEnforceStrictSchema` function that gracefully downgrades to non-strict mode when schema enforcement fails, enabling better compatibility with malformed or circular schemas +- Added `sanitizeSchemaForStrictMode` function to normalize JSON schemas by stripping non-structural keywords, converting `const` to `enum`, and expanding type arrays into `anyOf` variants +- Added Kilo Gateway provider support with OpenAI-compatible model discovery, OAuth `/login kilo`, and `KILO_API_KEY` environment variable support ([#193](https://github.com/can1357/gajae-code/issues/193)) + +### Changed + +- Changed strict mode handling in OpenAI providers to use `tryEnforceStrictSchema` for safer schema enforcement with automatic fallback to non-strict mode +- Enhanced `enforceStrictSchema` to properly handle schemas with type arrays containing `object` (e.g., `type: ["object", "null"]`) + +### Fixed + +- Fixed `enforceStrictSchema` to properly handle malformed object schemas with required keys but missing properties +- Fixed `enforceStrictSchema` to correctly process nested object schemas within `anyOf`, `allOf`, and `oneOf` combinators + +## [13.3.1] - 2026-02-26 + +### Added + +- Added `topP`, `topK`, `minP`, `presencePenalty`, and `repetitionPenalty` options to `StreamOptions` for fine-grained control over model sampling behavior + +## [13.3.0] - 2026-02-26 + +### Changed + +- Allowed OAuth provider logins to supply a manual authorization code handler with a default prompt when none is provided + +## [13.2.0] - 2026-02-23 + +### Added + +- Added support for GitHub Copilot provider in strict mode for both openai-completions and openai-responses tool schemas + +### Fixed + +- Fixed tool descriptions being rejected when undefined by providing empty string fallback across all providers + +## [12.19.1] - 2026-02-22 + +### Added + +- Exported `isProviderRetryableError` function for detecting rate-limit and transient stream errors +- Support for retrying malformed JSON stream-envelope parse errors from Anthropic-compatible proxy endpoints + +### Changed + +- Expanded retry detection to include JSON parse errors (unterminated strings, unexpected end of input) in addition to rate-limit errors + +## [12.19.0] - 2026-02-22 + +### Added + +- Added GitLab Duo provider with support for Anthropic model, GPT-5, and other models via GitLab AI Gateway +- Added OAuth authentication for GitLab Duo with automatic token refresh and direct access caching +- Added 16 new GitLab Duo models including Anthropic model Opus/Sonnet/Haiku variants and GPT-5 series models +- Added `isOAuth` option to Anthropic provider to force OAuth bearer auth mode for proxy tokens +- Added `streamGitLabDuo` function to route requests through GitLab AI Gateway with direct access tokens +- Added `getGitLabDuoModels` function to retrieve available GitLab Duo model configurations +- Added `clearGitLabDuoDirectAccessCache` function to manually clear cached direct access tokens + +### Changed + +- Enhanced `getModelMapping()` to support both GitLab Duo alias IDs (e.g., `duo-chat-gpt-5-openai-code`) and canonical model IDs (e.g., `gpt-5-openai-code`) for improved model resolution flexibility +- Migrated `AuthCredentialStore` and `AuthStorage` into `@gajae-code/ai` as shared credential primitives for downstream packages +- Moved Anthropic auth helpers (`findAnthropicAuth`, `isOAuthToken`, `buildAnthropicSearchHeaders`, `buildAnthropicUrl`) into shared AI utilities for reuse across providers +- Replaced `CliAuthStorage` with `AuthCredentialStore` for improved credential management with multiple credentials per provider +- Updated models.json pricing for Anthropic model 3.5 Sonnet (input: 0.23→0.45, output: 3→2.2, added cache read: 0.225) and Anthropic model 3 Opus (input: 0.3→0.95) +- Moved `mapAnthropicToolChoice` function from gitlab-duo provider to stream module for broader reusability +- Enhanced HTTP status code extraction to handle string-formatted status codes in error objects + +### Removed + +- Removed `CliAuthStorage` class in favor of new `AuthCredentialStore` with enhanced functionality + +## [12.17.2] - 2026-02-21 + +### Added + +- Exported `getAntigravityUserAgent()` function for constructing Antigravity User-Agent headers + +### Changed + +- Updated default Antigravity version from 1.15.8 to 1.18.3 +- Unified User-Agent header generation across Antigravity API calls to use centralized `getAntigravityUserAgent()` function + +## [12.17.1] - 2026-02-21 + +### Added + +- Added new export paths for provider models via `./provider-models` and `./provider-models/*` +- Added new export paths for Cursor and OpenAI code provider providers via `./providers/cursor/gen/*` and `./providers/openai-code/*` +- Added new export paths for usage utilities via `./usage/*` +- Added new export paths for discovery and OAuth utilities via `./utils/discovery` and `./utils/oauth` with subpath exports + +### Changed + +- Simplified main export path to use wildcard pattern `./src/*.ts` for broader module access +- Updated `models.json` export to include TypeScript declaration file at `./src/models.json.d.ts` +- Reorganized package.json field ordering for improved readability + +## [12.17.0] - 2026-02-21 + +### Fixed + +- Cursor provider: bind `execHandlers` when passing handler methods to the exec protocol so handlers receive correct `this` context (fixes "undefined is not an object (evaluating 'this.options')" when using exec tools such as web search with Cursor) + +## [12.16.0] - 2026-02-21 + +### Added + +- Exported `readModelCache` and `writeModelCache` functions for direct SQLite-backed model cache access +- Added `` guidance marker as synthetic user message when assistant messages are aborted or errored, informing the model that tools may have partially executed +- Added support for Sonnet 4.6 models in adaptive thinking detection + +### Changed + +- Updated model cache schema version to support improved global model fallback resolution +- Improved GitHub Copilot model resolution to prefer provider-specific model definitions over global references when context window is larger, ensuring optimal model capabilities +- Migrated model cache from per-provider JSON files to unified SQLite database (models.db) for atomic cross-process access +- Renamed `cachePath` option to `cacheDbPath` in ModelManagerOptions to reflect database-backed storage +- Improved non-authoritative cache handling with 5-minute retry backoff instead of retrying on every startup +- Modified handling of aborted/errored assistant messages to preserve tool call structure instead of converting to text summaries, with synthetic 'aborted' tool results injected +- Updated tool call tracking to use status map (Resolved/Aborted) instead of separate sets for better handling of duplicate and aborted tool results + +## [12.15.0] - 2026-02-20 + +### Fixed + +- Improved error messages for OAuth token refresh failures by including detailed error information from the provider +- Separated rate limit and usage limit error handling to provide distinct user-friendly messages for ChatGPT rate limits vs subscription usage limits + +### Changed + +- Increased SDK retry attempts to 5 for OpenAI, Azure OpenAI, and Anthropic clients (was SDK default of 2) +- Changed 429 retry strategy for OpenAI code provider and Google Gemini CLI to use a 5-minute time budget when the server provides a retry delay, instead of a fixed attempt cap + +## [12.14.0] - 2026-02-19 + +### Added + +- Added `gemini-3.1-pro` model to opencode provider with text and image input support +- Added `trinity-large-preview-free` model to opencode provider +- Added `google/gemini-3.1-pro-preview` model to nanogpt provider +- Added `google/gemini-3.1-pro-preview` model to openrouter provider with text and image input support +- Added `gemini-3.1-pro` model to cursor provider +- Added optional `intent` field to `ToolCall` interface for harness-level intent metadata + +### Changed + +- Changed `big-pickle` model API from `openai-completions` to `anthropic-messages` +- Changed `big-pickle` model baseUrl from `https://opencode.ai/zen/v1` to `https://opencode.ai/zen` +- Changed `minimax-m2.5-free` model API from `openai-completions` to `anthropic-messages` +- Changed `minimax-m2.5-free` model baseUrl from `https://opencode.ai/zen/v1` to `https://opencode.ai/zen` + +### Fixed + +- Fixed tool argument validation to iteratively coerce nested JSON strings across multiple passes, enabling proper handling of deeply nested JSON-serialized objects and arrays + +## [12.13.0] - 2026-02-19 + +### Added + +- Added NanoGPT provider support with API-key login, dynamic model discovery from `https://nano-gpt.com/api/v1/models`, and text-model filtering for catalog/runtime discovery ([#111](https://github.com/can1357/gajae-code/issues/111)) + +## [12.12.3] - 2026-02-19 + +### Fixed + +- Fixed retry logic to recognize 'unable to connect' errors as transient failures + +## [12.11.3] - 2026-02-19 + +### Fixed + +- Fixed OpenAI code provider streaming to fail truncated responses that end without a terminal completion event, preventing partial outputs from being treated as successful completions. +- Fixed OpenAI code websocket append fallback by resetting stale turn-state/model-etag session metadata when request shape diverges from appendable history. + +## [12.11.1] - 2026-02-19 + +### Added + +- Added support for Anthropic model 4.6 Opus and Sonnet models via Cursor API +- Added support for Composer 1.5 model via Cursor API +- Added support for GPT-5.1 OpenAI code Mini and GPT-5.1 High models via Cursor API +- Added support for GPT-5.2 and GPT-5.3 OpenAI code variants (Fast, High, Low, Extra High) via Cursor API +- Added HTTP/2 transport support for Cursor API requests (required by Cursor API) + +### Changed + +- Updated pricing for Anthropic model 3.5 Sonnet model +- Updated Anthropic model 3.5 Sonnet context window from 262,144 to 131,072 tokens +- Simplified Cursor model display names by removing '(Cursor)' suffix +- Changed Cursor API timeout from 15 seconds to 5 seconds +- Switched Cursor API transport from HTTP/1.1 to HTTP/2 + +## [12.11.0] - 2026-02-19 + +### Added + +- Added `priority` field to Model interface for provider-assigned model prioritization +- Added `CatalogDiscoveryConfig` interface to standardize catalog discovery configuration across providers +- Added type guards `isCatalogDescriptor()` and `allowsUnauthenticatedCatalogDiscovery()` for safer descriptor handling +- Added `DEFAULT_MODEL_PER_PROVIDER` export from descriptors module for centralized default model management +- Support for 11 new AI providers: Cloudflare AI Gateway, Hugging Face Inference, LiteLLM, Moonshot, NVIDIA, Ollama, Qianfan, Qwen Portal, Together, Venice, vLLM, and Xiaomi MiMo +- Login flows for new providers with API key validation and OAuth token support +- Extended `KnownProvider` type to include all newly supported providers +- API key environment variable mappings for all new providers in service provider map +- Model discovery and configuration for Cloudflare AI Gateway, Hugging Face, LiteLLM, Moonshot, NVIDIA, Ollama, Qianfan, Qwen Portal, Together, Venice, vLLM, and Xiaomi MiMo + +### Changed + +- Refactored OAuth credential retrieval to simplify storage lifecycle management in model generation script +- Parallelized special model discovery sources (Antigravity, OpenAI code) for improved generation performance +- Reorganized model JSON structure to place `contextWindow` and `maxTokens` before `compat` field for consistency +- Added `priority` field to OpenAI code provider models for provider-assigned model prioritization +- Refactored provider descriptors to use helper functions (`descriptor`, `catalog`, `catalogDescriptor`) for reduced code duplication +- Refactored models.dev provider descriptors to use helper functions (`simpleModelsDevDescriptor`, `openAiCompletionsDescriptor`, `anthropicMessagesDescriptor`) for improved maintainability +- Unified provider descriptors into single source of truth in `descriptors.ts` for both runtime model discovery and catalog generation, improving maintainability +- Refactored model generation script to use declarative `CatalogProviderDescriptor` interface instead of separate descriptor types, reducing code duplication +- Reorganized models.dev provider descriptors into logical groups (Bedrock, Core, Coding Plans, Specialized) for better code organization +- Simplified API resolution for OpenCode and GitHub Copilot providers using rule-based matching instead of inline conditionals +- Refactored model generation script to use declarative provider descriptors instead of inline provider-specific logic, improving maintainability and reducing code duplication +- Extracted model post-processing policies (cache pricing corrections, context window normalization) into dedicated `model-policies.ts` module for better testability and clarity +- Removed static bundled models for Ollama and vLLM from `models.json` to rely on dynamic discovery instead, reducing static catalog size +- Updated `OAuthProvider` type to include new provider identifiers +- Expanded model registry (models.json) with thousands of new model entries across all new providers +- Modified environment variable resolution to use `$pickenv` for providers with multiple possible env var names +- Updated README documentation to list all newly supported providers and their authentication requirements + +## [12.10.1] - 2026-02-18 + +- Added Synthetic provider +- Added API-key login helpers for Synthetic and Cerebras providers + +## [12.10.0] - 2026-02-18 + +### Breaking Changes + +- Renamed public API functions: `getModel()` → `getBundledModel()`, `getModels()` → `getBundledModels()`, `getProviders()` → `getBundledProviders()` + +### Added + +- Exported `ModelManager` API for runtime-aware model resolution with dynamic endpoint discovery +- Exported provider-specific model manager configuration helpers for Google, OpenAI-compatible, OpenAI code, and Cursor providers +- Exported discovery utilities for fetching models from Antigravity, OpenAI code, Cursor, Gemini, and OpenAI-compatible endpoints +- Added `createModelManager()` function to manage bundled and dynamically discovered models with configurable refresh strategies +- Added support for on-disk model caching with TTL-based invalidation +- Added `resolveProviderModels()` function for runtime model resolution across multiple providers +- Added EU cross-region inference variants for Anthropic model Haiku 3.5 on Bedrock +- Added Anthropic model Sonnet 4.6 and Anthropic model Sonnet 4.6 Thinking models to Antigravity provider +- Added GLM-5 Free model via OpenCode provider +- Added GLM-4.7-FlashX model via ZAI provider +- Added MiniMax-M2.5-highspeed model across multiple providers (minimax-code, minimax-code-cn, minimax, minimax-cn) +- Added Anthropic model Sonnet 4.6 model to OpenRouter provider +- Added Qwen 3.5 Plus model to Vercel AI Gateway provider +- Added Anthropic model Sonnet 4.6 model to Vercel AI Gateway provider + +### Changed + +- Renamed `getModel()` to `getBundledModel()` to clarify it returns compile-time bundled models only +- Renamed `getModels()` to `getBundledModels()` for consistency +- Renamed `getProviders()` to `getBundledProviders()` for consistency +- Refactored model generation script to use modular discovery functions instead of monolithic provider-specific logic +- Updated models.json with new model entries and pricing updates across multiple providers +- Updated pricing for deepseek/deepseek-v3 model on OpenRouter +- Updated maxTokens from 65536 to 4096 for deepseek/deepseek-v3 on OpenRouter +- Updated pricing and maxTokens for mistralai/mistral-large-2411 on OpenRouter +- Updated pricing for qwen/qwen-max on Together AI +- Updated pricing for qwen/qwen-vl-plus on Together AI +- Updated pricing for qwen/qwen-plus on Together AI +- Updated pricing for qwen/qwen-turbo on Together AI +- Expanded EU cross-region inference variant support to all Anthropic model models on Bedrock (previously limited to Haiku, Sonnet, and Opus 4.5) + +## [12.8.0] - 2026-02-16 + +### Added + +- Added `contextPromotionTarget` model property to specify preferred fallback model when context promotion is triggered +- Added automatic context promotion target assignment for Spark models to their base model equivalents +- Added support for Brave search provider with BRAVE_API_KEY environment variable + +### Changed + +- Updated Qwen model context window and max token limits for improved accuracy + +## [12.7.0] - 2026-02-16 + +### Added + +- Added DeepSeek-V3.2 model support via Amazon Bedrock +- Added GLM-5 model support via OpenCode +- Added MiniMax M2.5 model support via OpenCode + +### Changed + +- Updated GLM-4.5, GLM-4.5-Air, GLM-4.5-Flash, GLM-4.5V, GLM-4.6, GLM-4.6V, GLM-4.7, GLM-4.7-Flash, and GLM-5 models to use anthropic-messages API instead of openai-completions +- Updated GLM models base URL from https://api.z.ai/api/coding/paas/v4 to https://api.z.ai/api/anthropic +- Updated pricing for multiple models including Mistral, Moonshot, and Qwen variants +- Updated context window and max tokens for several models to reflect accurate specifications + +### Removed + +- Removed compat field with supportsDeveloperRole and thinkingFormat properties from GLM models + +## [12.6.0] - 2026-02-16 + +### Added + +- Added source-scoped custom API and OAuth provider registration helpers for extension-defined providers. + +### Changed + +- Expanded `Api` typing to allow extension-defined API identifiers while preserving built-in API exhaustiveness checks. + +### Fixed + +- Fixed custom API registration to reject built-in API identifiers and prevent accidental provider overrides. + +## [12.2.0] - 2026-02-13 + +### Added + +- Added automatic retry logic for WebSocket stream closures before response completion, with configurable retry budget to improve reliability on flaky connections +- Added `providerSessionState` option to enable provider-scoped mutable state persistence across agent turns +- Added WebSocket retry logic with configurable retry budget and delay via `PI_OPENAI_CODE_WEBSOCKET_RETRY_BUDGET` and `PI_OPENAI_CODE_WEBSOCKET_RETRY_DELAY_MS` environment variables +- Added WebSocket idle timeout detection via `PI_OPENAI_CODE_WEBSOCKET_IDLE_TIMEOUT_MS` environment variable to fail stalled connections +- Added WebSocket v2 beta header support via `PI_OPENAI_CODE_WEBSOCKET_V2` environment variable for newer OpenAI API versions +- Added WebSocket handshake header capture to extract and replay session metadata (turn state, models etag, reasoning flags) across SSE fallback requests +- Added `preferWebsockets` option to enable WebSocket transport for OpenAI code provider responses when supported +- Added `prewarmOpenAIOpenAI codeResponses()` function to establish and reuse WebSocket connections across multiple requests +- Added `getOpenAIOpenAI codeTransportDetails()` function to inspect transport layer details including WebSocket status and fallback information +- Added `getProviderDetails()` function to retrieve formatted provider configuration and transport information +- Added automatic fallback from WebSocket to SSE when connection fails, with transparent retry logic +- Added session state management to reuse WebSocket connections and enable request appending across turns +- Added support for x-openai-code-turn-state header to maintain conversation state across SSE requests + +### Changed + +- Changed WebSocket session state storage from global maps to provider-scoped session state for multi-agent isolation +- Changed WebSocket connection initialization to accept idle timeout configuration and handshake header callbacks +- Changed WebSocket error handling to use standardized transport error messages with `OpenAI code websocket transport error` prefix +- Changed WebSocket retry behavior to retry transient failures before activating sticky fallback, improving reliability on flaky connections +- Changed OpenAI code provider model configuration to prefer WebSocket transport by default with `preferWebsockets: true` +- Changed header handling to use appropriate OpenAI-Beta header values for WebSocket vs SSE transports +- Perplexity OAuth token refresh now uses JWT expiry extraction instead of Socket.IO RPC, improving reliability when server is unreachable +- Removed Socket.IO client implementation for Perplexity token refresh; tokens are now validated using embedded JWT expiry claims + +### Removed + +- Removed `refreshPerplexityToken` export; token refresh is now handled internally via JWT expiry detection + +### Fixed + +- Fixed WebSocket stream retry logic to properly handle mid-stream connection closures and retry before falling back to SSE transport +- Fixed `preferWebsockets` option handling to correctly respect explicit `false` values when determining transport preference +- Fixed WebSocket append state not being reset after aborted requests, preventing stale state from affecting subsequent turns +- Fixed WebSocket append state not being reset after stream errors, preventing failed append attempts from blocking future requests +- Fixed OpenAI code model context window metadata to use 272000 input tokens (instead of 400000 total budget) for non-Spark OpenAI code variants + +## [12.0.0] - 2026-02-12 + +### Added + +- Added GPT-5.3 OpenAI code Spark model with 128K context window and extended reasoning capabilities +- Added MiniMax M2.5 and M2.5 Lightning models via OpenAI-compatible API (minimax-code provider) +- Added MiniMax M2.5 and M2.5 Lightning models via OpenAI-compatible API (minimax-code-cn provider for China region) +- Added MiniMax M2.5 and M2.5 Lightning models via Anthropic API (minimax and minimax-cn providers) +- Added Llama 3.1 8B model via Cerebras API +- Added MiniMax M2.5 model via OpenRouter +- Added MiniMax M2.5 model via Vercel AI Gateway +- Added MiniMax M2.5 Free model via OpenCode +- Added Qwen3 VL 32B Instruct multimodal model via OpenRouter + +### Changed + +- Updated Z.ai GLM-5 pricing and context window configuration on OpenRouter +- Updated Qwen3 Max Thinking max tokens from 32768 to 65536 on OpenRouter +- Updated OpenAI GPT-5 Image Mini pricing on OpenRouter +- Updated OpenAI GPT-5 Pro pricing and context window on OpenRouter +- Updated OpenAI o4-mini pricing and context window on OpenRouter +- Updated Anthropic model Opus 4.5 Thinking model name formatting (removed parentheses) +- Updated Anthropic model Opus 4.6 Thinking model name formatting (removed parentheses) +- Updated Anthropic model Sonnet 4.5 Thinking model name formatting (removed parentheses) +- Updated Gemini 2.5 Flash Thinking model name formatting (removed parentheses) +- Updated Gemini 3 Pro High and Low model name formatting (removed parentheses) +- Updated GPT-OSS 120B Medium model name formatting (removed parentheses) and context window to 131072 + +### Removed + +- Removed GLM-5 model from Z.ai provider +- Removed Trinity Large Preview Free model from OpenCode provider +- Removed MiniMax M2.1 Free model from OpenCode provider +- Removed deprecated Anthropic model entries: `anthropic-model-3-5-haiku-latest`, `anthropic-model-3-5-haiku-20241022`, `anthropic-model-3-7-sonnet-20250219`, `anthropic-model-3-7-sonnet-latest`, `anthropic-model-3-opus-20240229`, `anthropic-model-3-sonnet-20240229` ([#33](https://github.com/can1357/gajae-code/issues/33)) + +### Fixed + +- Added deprecation filter in model generation script to prevent re-adding deprecated Anthropic models ([#33](https://github.com/can1357/gajae-code/issues/33)) + +## [11.14.1] - 2026-02-12 + +### Added + +- Added prompt-caching-scope-2026-01-05 beta feature support + +### Changed + +- Updated Anthropic Code version header to 2.1.39 +- Updated runtime version header to v24.13.1 and package version to 0.73.0 +- Increased request timeout from 60s to 600s +- Reordered Accept-Encoding header values for compression preference +- Updated OAuth authorization and token endpoints to use platform.anthropic-model.com +- Expanded OAuth scopes to include user:sessions:anthropic-model_code and user:mcp_servers + +### Removed + +- Removed anthropic-model-code-20250219 beta feature from default models +- Removed fine-grained-tool-streaming-2025-05-14 beta feature + +## [11.13.1] - 2026-02-12 + +### Added + +- Added Perplexity (Pro/Max) OAuth login support via native macOS app extraction or email OTP authentication +- Added `loginPerplexity` and `refreshPerplexityToken` functions for Perplexity account integration +- Added Socket.IO v4 client implementation for authenticated WebSocket communication with Perplexity API + +## [11.12.0] - 2026-02-11 + +### Changed + +- Increased maximum retry attempts for OpenAI code requests from 2 to 5 to improve reliability on transient failures + +### Fixed + +- Fixed tool result content handling in Anthropic provider to provide fallback error message when content is empty +- Improved retry delay calculation to parse delay values from error response bodies (e.g., 'Please try again in 225ms') + +## [11.11.0] - 2026-02-10 + +### Breaking Changes + +- Replaced `./models.generated` export with `./models.json` - update imports from `import { MODELS } from './models.generated'` to `import MODELS from './models.json' with { type: 'json' }` + +### Added + +- Added TypeScript type declarations for `models.json` to enable proper type inference when importing the JSON file + +### Changed + +- Updated available models in google-antigravity provider with new model variants and updated context window/token limits +- Simplified type signatures for `getModel()` and `getModels()` functions for improved usability +- Changed models export from TypeScript module to JSON format for improved performance and reduced bundle size +- Updated `@anthropic-ai/sdk` dependency from ^0.72.1 to ^0.74.0 + +## [11.10.0] - 2026-02-10 + +### Added + +- Added support for Kimi K2, K2 Turbo Preview, and K2.5 models with reasoning capabilities + +### Fixed + +- Fixed Anthropic model Opus 4.6 context window to 200K across all providers (was incorrectly set to 1M) +- Fixed Anthropic model Sonnet 4 context window to 200K across multiple providers (was incorrectly set to 1M) + +## [11.8.0] - 2026-02-10 + +### Added + +- Added `auto` model alias for OpenRouter with automatic model routing +- Added `openrouter/aurora-alpha` model with reasoning capabilities +- Added `qwen/qwen3-max-thinking` model with extended context window support +- Added support for `parametersJsonSchema` in Google Gemini tool definitions for improved JSON Schema compatibility + +### Changed + +- Updated Anthropic model Sonnet 4 and 4.5 context window from 1M to 200K tokens to reflect actual limits +- Updated Anthropic model Opus 4.6 context window to 200K tokens across providers +- Changed default `reasoningSummary` for OpenAI code provider from `undefined` to `auto` +- Updated Qwen model pricing and context window specifications across multiple variants +- Modified Google Gemini CLI system instruction to use compact format +- Changed tool parameter handling for Anthropic model models on Google Cloud Code Assist to use legacy `parameters` field for API translation + +### Removed + +- Removed `glm-4.7-free` model from OpenCode provider +- Removed `qwen3-coder` model from OpenCode provider +- Removed `ai21/jamba-mini-1.7` model from OpenRouter +- Removed `stepfun-ai/step3` model from OpenRouter +- Removed duplicate test suite for Google Antigravity Provider with `gemini-3-pro-high` + +### Fixed + +- Fixed Amazon Bedrock HTTP/1.1 handler import to use direct import instead of dynamic import +- Fixed Qwen model context window and pricing inconsistencies across OpenRouter +- Fixed cache read pricing for multiple Qwen models +- Fixed OpenAI code provider reasoning effort clamping for `gpt-5.3-openai-code` model + +## [11.7.1] - 2026-02-07 + +### Added + +- Added Anthropic model Opus 4.6 Thinking model for Antigravity provider +- Added Gemini 2.5 Flash, Gemini 2.5 Flash Thinking, and Gemini 2.5 Pro models for Antigravity provider +- Added Pony Alpha model via OpenRouter + +### Changed + +- Updated Antigravity models to use free tier pricing (0 cost) across all models +- Changed Antigravity model fetching to dynamically load from API when credentials are available, with hardcoded fallback models +- Updated Anthropic model Opus 4.6 context window from 200,000 to 1,000,000 tokens across Bedrock regions +- Updated Anthropic model Opus 4.6 cache pricing from 1.5/18.75 to 0.5/6.25 for EU and US regions +- Updated Antigravity model pricing to free tier (0 cost) for Anthropic model Opus 4.5 Thinking, Anthropic model Sonnet 4.5 Thinking, Gemini 3 Flash, Gemini 3 Pro variants, and GPT-OSS 120B Medium +- Updated GPT-OSS 120B Medium reasoning capability from false to true +- Updated Gemini 3 Flash max tokens from 65,535 to 65,536 +- Updated Anthropic model Opus 4.5 Thinking display name formatting to include parentheses +- Updated various model pricing and context window parameters across OpenRouter and other providers +- Removed Anthropic model Opus 4.6 20260205 model from Anthropic provider + +### Fixed + +- Fixed Anthropic model Opus 4.6 model ID format by removing version suffix (:0) in Bedrock configurations +- Fixed Llama 3.1 70B Instruct pricing and context window parameters +- Fixed Mistral model pricing and cache read costs +- Fixed DeepSeek and other model pricing inconsistencies +- Fixed Qwen model pricing and token limits +- Fixed GLM model pricing and context window specifications + +## [11.6.0] - 2026-02-07 + +### Added + +- Added Bedrock cache retention support with `PI_CACHE_RETENTION` env var and per-request `cacheRetention` option +- Added adaptive thinking support for Bedrock Opus 4.6+ models +- Added `AWS_BEDROCK_SKIP_AUTH` env var to support unauthenticated Bedrock proxies +- Added `AWS_BEDROCK_FORCE_HTTP1` env var to force HTTP/1.1 for custom Bedrock endpoints +- Re-exported `Static`, `TSchema`, and `Type` from `@sinclair/typebox` + +### Fixed + +- Fixed OpenAI Responses storage disabled by default (`store: false`) +- Fixed reasoning effort clamping for gpt-5.3 OpenAI code models (minimal -> low) +- Fixed Bedrock `supportsPromptCaching` to also check model cost fields + +## [11.5.1] - 2026-02-07 + +### Fixed + +- Fixed schema normalization to handle array-valued `type` fields by converting them to a single type with nullable flag for Google provider compatibility + +## [11.3.0] - 2026-02-06 + +### Added + +- Added `cacheRetention` option to control prompt cache retention preference ('none', 'short', 'long') across providers +- Added `maxRetryDelayMs` option to cap server-requested retry delays and fail fast when delays exceed the limit +- Added `effort` option for Anthropic Opus 4.6+ models to control adaptive thinking effort levels ('low', 'medium', 'high', 'max') +- Added support for Anthropic Opus 4.6+ adaptive thinking mode that lets Anthropic model decide when and how much to think +- Added `PI_AI_ANTIGRAVITY_VERSION` environment variable to customize Antigravity sandbox endpoint version +- Exported `convertAnthropicMessages` function for converting message formats to Anthropic API +- Automatic fallback for Anthropic assistant-prefill requests: appends synthetic user "Continue." message when conversation ends with assistant turn to maintain API compatibility + +### Changed + +- Changed `supportsXhigh()` to include GPT-5.1 OpenAI code Max and broaden Anthropic support to all Anthropic Messages API models with budget-based thinking capability +- Changed Anthropic thinking mode to use adaptive thinking for Opus 4.6+ models instead of budget-based thinking +- Changed `supportsXhigh()` to support GPT-5.2/5.3 and Anthropic Opus 4.6+ models with adaptive thinking +- Changed prompt caching to respect `cacheRetention` option and support TTL configuration for Anthropic +- Changed OpenAI tool definitions to conditionally include `strict` field only when provider supports it +- Changed Qwen model support to use `enable_thinking` boolean parameter instead of OpenAI-style reasoning_effort + +### Fixed + +- Fixed indentation and formatting in `convertAnthropicMessages` function +- Fixed handling of conversations ending with assistant messages on Anthropic-routed models that reject assistant prefill requests + +## [11.2.3] - 2026-02-05 + +### Added + +- Added Anthropic model Opus 4.6 model support across multiple providers (Anthropic, Amazon Bedrock, GitHub Copilot, OpenRouter, OpenCode, Vercel AI Gateway) +- Added GPT-5.3 OpenAI code model support for OpenAI +- Added `readSseJson` utility import for improved SSE stream handling in Google Gemini CLI provider + +### Changed + +- Updated Google Gemini CLI provider to use `readSseJson` utility for cleaner SSE stream parsing +- Updated pricing for Llama 3.1 405B model on Vercel AI Gateway (cache read rate adjusted) +- Updated Llama 3.1 405B context window and max tokens on Vercel AI Gateway (256000 for both) + +### Removed + +- Removed Kimi K2, Kimi K2 Turbo Preview, and Kimi K2.5 models +- Removed Deep Cogito Cogito V2 Preview models from OpenRouter + +## [11.0.0] - 2026-02-05 + +### Changed + +- Replaced direct `Bun.env` access with `getEnv()` utility from `@gajae-code/utils` for consistent environment variable handling across all providers +- Updated environment variable names from `GJC_*` prefix to `PI_*` prefix for consistency (e.g., `GJC_CODING_AGENT_DIR` → `PI_CODING_AGENT_DIR`) + +### Removed + +- Removed automatic environment variable migration from `PI_*` to `GJC_*` prefixes via `migrate-env.ts` module + +## [10.5.0] - 2026-02-04 + +### Changed + +- Updated @anthropic-ai/sdk to ^0.72.1 +- Updated @aws-sdk/client-bedrock-runtime to ^3.982.0 +- Updated @google/genai to ^1.39.0 +- Updated @smithy/node-http-handler to ^4.4.9 +- Updated openai to ^6.17.0 +- Updated @types/node to ^25.2.0 + +### Removed + +- Removed proxy-agent dependency +- Removed undici dependency + +## [9.4.0] - 2026-01-31 + +### Added + +- Added `getEnv()` function to retrieve environment variables from Bun.env, cwd/.env, or ~/.env +- Added support for reading .env files from home directory and current working directory +- Added support for `exa` and `perplexity` as known providers in `getEnvApiKey()` + +### Changed + +- Changed `getEnvApiKey()` to check Bun.env, cwd/.env, and ~/.env files in order of precedence +- Refactored provider API key resolution to use a declarative service provider map + +## [9.2.2] - 2026-01-31 + +### Added + +- Added OpenCode Zen provider with API key authentication for accessing multiple AI models +- Added 4 new free models via OpenCode: glm-4.7-free, kimi-k2.5-free, minimax-m2.1-free, trinity-large-preview-free +- Added glm-4.7-flash model via Zai provider +- Added Kimi Code provider with OpenAI and Anthropic API format support +- Added prompt cache retention support with PI_CACHE_RETENTION env var +- Added overflow patterns for Bedrock, MiniMax, Kimi; reclassified 429 as rate limiting +- Added profile endpoint integration to resolve user emails with 24-hour caching +- Added automatic token refresh for expired Kimi OAuth credentials +- Added Kimi Code OAuth handler with device authorization flow +- Added Kimi Code usage provider with quota caching +- Added 4 new Kimi Code models (kimi-for-coding, kimi-k2, kimi-k2-turbo-preview, kimi-k2.5) +- Added Kimi Code provider integration with OAuth and token management +- Added tool-choice utility for mapping unified ToolChoice to provider-specific formats +- Added ToolChoice type for controlling tool selection (auto, none, any, required, function) + +### Changed + +- Updated Kimi K2.5 cache read pricing from 0.1 to 0.08 +- Updated MiniMax M2 pricing: input 0.6→0.6, output 3→3, cache read 0.1→0.09999999999999999 +- Updated OpenRouter DeepSeek V3.1 pricing and max tokens: input 0.6→0.5, output 3→2.8, maxTokens 262144→4096 +- Updated OpenRouter DeepSeek R1 pricing and max tokens: input 0.06→0.049999999999999996, output 0.24→0.19999999999999998, maxTokens 262144→4096 +- Updated Anthropic Anthropic model 3.5 Sonnet max tokens from 256000 to 65536 on OpenRouter +- Updated Vercel AI Gateway Anthropic model 3.5 Sonnet cache read pricing from 0.125 to 0.13 +- Updated Vercel AI Gateway Anthropic model 3.5 Sonnet New cache read pricing from 0.125 to 0.13 +- Updated Vercel AI Gateway GPT-5.2 cache read pricing from 0.175 to 0.18 and display name to 'GPT 5.2' +- Updated Zai GLM-4.6 cache read pricing from 0.024999999999999998 to 0.03 +- Updated Zai Qwen QwQ max tokens from 66000 to 16384 +- Added delta event batching and throttling (50ms, 20 updates/sec max) to AssistantMessageEventStream +- Updated MiniMax-M2 pricing: input 1.2→0.6, output 1.2→3, cacheRead 0.6→0.1 + +### Removed + +- Removed OpenRouter google/gemini-2.0-flash-exp:free model +- Removed Vercel AI Gateway stealth/sonoma-dusk-alpha and stealth/sonoma-sky-alpha models + +### Fixed + +- Fixed rate limit issues with Kimi models by always sending max_tokens +- Added handling for sensitive stop reason from Anthropic API safety filters +- Added optional chaining for safer JSON schema property access in Anthropic provider + +## [8.6.0] - 2026-01-27 + +### Changed + +- Replaced JSON5 dependency with Bun.JSON5 parsing + +### Fixed + +- Filtered empty user text blocks for OpenAI-compatible completions and normalized Kimi reasoning_content for OpenRouter tool-call messages + +## [8.4.0] - 2026-01-25 + +### Added + +- Added Azure OpenAI Responses provider with deployment mapping and resource-based base URL support + +### Changed + +- Added OpenRouter routing preferences for OpenAI-compatible completions + +### Fixed + +- Defaulted Google tool call arguments to empty objects when providers omit args +- Guarded Responses/OpenAI code streaming deltas against missing content parts and handled arguments.done events + +## [8.2.1] - 2026-01-24 + +### Fixed + +- Fixed handling of streaming function call arguments in OpenAI responses to properly parse arguments when sent via `response.function_call_arguments.done` events + +## [8.2.0] - 2026-01-24 + +### Changed + +- Migrated node module imports from named to namespace imports across all packages for consistency with project guidelines + +## [8.0.0] - 2026-01-23 + +### Fixed + +- Fixed OpenAI Responses API 400 error "function_call without required reasoning item" when switching between models (same provider, different model). The fix omits the `id` field for function_calls from different models to avoid triggering OpenAI's reasoning/function_call pairing validation +- Fixed 400 errors when reading multiple images via GitHub Copilot's Anthropic model models. Anthropic model requires tool_use -> tool_result adjacency with no user messages interleaved. Images from consecutive tool results are now batched into a single user message + +## [7.0.0] - 2026-01-21 + +### Added + +- Added usage tracking system with normalized schema for provider quota/limit endpoints +- Added Anthropic model usage provider for 5-hour and 7-day quota windows +- Added GitHub Copilot usage provider for chat, completions, and premium requests +- Added Google Antigravity usage provider for model quota tracking +- Added Google Gemini CLI usage provider for tier-based quota monitoring +- Added OpenAI code provider usage provider for primary and secondary rate limit windows +- Added ZAI usage provider for token and request quota tracking + +### Changed + +- Updated Anthropic model usage provider to extract account identifiers from response headers +- Updated GitHub Copilot usage provider to include account identifiers in usage reports +- Updated Google Gemini CLI usage provider to handle missing reset time gracefully + +### Fixed + +- Fixed GitHub Copilot usage provider to simplify token handling and improve reliability +- Fixed GitHub Copilot usage provider to properly resolve account identifiers for OAuth credentials +- Fixed API validation errors when sending empty user messages (resume with `.`) across all providers: +- Google Cloud Code Assist (google-shared.ts) +- OpenAI Responses API (openai-responses.ts) +- OpenAI code provider Responses API (openai-code-responses.ts) +- Cursor (cursor.ts) +- Amazon Bedrock (amazon-bedrock.ts) +- Clamped OpenAI code provider reasoning effort "minimal" to "low" for gpt-5.2 models to avoid API errors +- Fixed GitHub Copilot usage fallback to internal quota endpoints when billing usage is unavailable +- Fixed GitHub Copilot usage metadata to include account identifiers for report dedupe +- Fixed Anthropic usage metadata extraction to include account identifiers when provided by the usage endpoint +- Fixed Gemini CLI usage windows to consistently label quota windows for display suppression + +## [6.9.69] - 2026-01-21 + +### Added + +- Added duration and time-to-first-token (ttft) metrics to all AI provider responses +- Added performance tracking for streaming responses across all providers + +## [6.9.0] - 2026-01-21 + +### Removed + +- Removed openai-code provider exports from main package index +- Removed openai-code prompt utilities and moved them inline +- Removed vitest configuration file + +## [6.8.4] - 2026-01-21 + +### Changed + +- Updated prompt caching strategy to follow Anthropic's recommended hierarchy +- Fixed token usage tracking to properly handle cumulative output tokens from message_delta events +- Improved message validation to filter out empty or invalid content blocks +- Increased OAuth callback timeout from 120 seconds to 120,000 milliseconds + +## [6.8.3] - 2026-01-21 + +### Added + +- Added `headers` option to all providers for custom request headers +- Added `onPayload` hook to observe provider request payloads before sending +- Added `strictResponsesPairing` option for Azure OpenAI Responses API compatibility +- Added `originator` option to `loginOpenAIOpenAI code` for custom OAuth flow identification +- Added per-request `headers` and `onPayload` hooks to `StreamOptions` +- Added `originator` option to `loginOpenAIOpenAI code` + +### Fixed + +- Fixed tool call ID normalization for OpenAI Responses API cross-provider handoffs +- Skipped errored or aborted assistant messages during cross-provider transforms +- Detected AWS ECS/IRSA credentials for Bedrock authentication checks +- Detected AWS ECS/IRSA credentials for Bedrock authentication checks +- Normalized Responses API tool call IDs during handoffs and refreshed handoff tests +- Enforced strict tool call/result pairing for Azure OpenAI Responses API +- Skipped errored or aborted assistant messages during cross-provider transforms + +### Security + +- Enhanced AWS credential detection to support ECS task roles and IRSA web identity tokens + +## [6.8.2] - 2026-01-21 + +### Fixed + +- Improved error handling for aborted requests in Google Gemini CLI provider +- Enhanced OAuth callback flow to handle manual input errors gracefully +- Fixed login cancellation handling in GitHub Copilot OAuth flow +- Removed fallback manual input from OpenAI code provider OAuth flow + +### Security + +- Hardened database file permissions to prevent credential leakage +- Set secure directory permissions (0o700) for credential storage + +## [6.8.0] - 2026-01-20 + +### Added + +- Added `logout` command to CLI for OAuth provider logout +- Added `status` command to show logged-in providers and token expiry +- Added persistent credential storage using SQLite database +- Added OAuth callback server with automatic port fallback +- Added HTML callback page with success/error states +- Added support for Cursor OAuth provider + +### Changed + +- Updated Promise.withResolvers usage for better compatibility +- Replaced custom sleep implementations with Bun.sleep and abortableSleep +- Simplified SSE stream parsing using readLines utility +- Updated test framework from vitest to bun:test +- Replaced temp directory creation with TempDir API +- Changed credential storage from auth.json to ~/.gjc/agent/agent.db +- Changed CLI command examples from npx to bunx +- Refactored OAuth flows to use common callback server base class +- Updated OAuth provider interfaces to use controller pattern + +### Fixed + +- Fixed OAuth callback handling with improved error states +- Fixed token refresh for all OAuth providers + +## [6.7.670] - 2026-01-19 + +### Changed + +- Updated Anthropic Code compatibility headers and version +- Improved OAuth token handling with proper state generation +- Enhanced cache control for tool and user message blocks +- Simplified tool name prefixing for OAuth traffic +- Updated PKCE verifier generation for better security + +## [5.7.67] - 2026-01-18 + +### Fixed + +- Added error handling for unknown OAuth providers + +## [5.6.77] - 2026-01-18 + +### Fixed + +- Prevented duplicate tool results for errored or aborted messages when results already exist + +## [5.6.7] - 2026-01-18 + +### Added + +- Added automatic retry logic for OpenAI code provider responses with configurable delay and max retries +- Added tool call ID sanitization for Amazon Bedrock to ensure valid characters +- Added tool argument validation that coerces JSON-encoded strings for expected non-string types + +### Changed + +- Updated environment variable prefix from PI* to GJC* for better consistency +- Added automatic migration for legacy PI* environment variables to GJC* equivalents +- Adjusted Bedrock Anthropic model thinking budgets to reserve output tokens when maxTokens is too low + +### Fixed + +- Fixed orphaned tool call handling to ensure proper tool_use/tool_result pairing for all assistant messages +- Fixed message transformation to insert synthetic tool results for errored/aborted assistant messages with tool calls +- Fixed tool prefix handling in Anthropic model provider to use case-insensitive comparison +- Fixed Gemini 3 model handling to treat unsigned tool calls as context-only with anti-mimicry context +- Fixed message transformation to filter out empty error messages from conversation history +- Fixed OpenAI completions provider compatibility detection to use provider metadata +- Fixed OpenAI completions provider to avoid using developer role for opencode provider +- Fixed orphaned tool call handling to skip synthetic results for errored assistant messages + +## [5.5.0] - 2026-01-18 + +### Changed + +- Updated User-Agent header from 'opencode' to 'pi' for OpenAI code provider requests +- Simplified OpenAI code system prompt instructions +- Removed bridge text override from OpenAI code system prompt builder + +## [5.3.0] - 2026-01-15 + +### Changed + +- Replaced detailed OpenAI code system instructions with simplified pi assistant instructions +- Updated internal documentation references to use pi-internal:// protocol + +## [5.1.0] - 2026-01-14 + +### Added + +- Added Amazon Bedrock provider with `bedrock-converse-stream` API for Anthropic model models via AWS +- Added MiniMax provider with OpenAI-compatible API +- Added EU cross-region inference model variants for Anthropic model models on Bedrock + +### Fixed + +- Fixed Gemini CLI provider retries with proper error handling, retry delays from headers, and empty stream retry logic +- Fixed numbered list items showing "1." for all items when code blocks break list continuity (via `start` property) + +## [5.0.0] - 2026-01-12 + +### Added + +- Added support for `xhigh` thinking level in `thinkingBudgets` configuration + +### Changed + +- Changed Anthropic thinking token budgets: minimal (1024→3072), low (2048→6144), medium (8192→12288), high (16384→24576) +- Changed Google thinking token budgets: minimal (1024), low (2048→4096), medium (8192), high (16384), xhigh (24575) +- Changed `supportsXhigh()` to return true for all Anthropic models + +## [4.6.0] - 2026-01-12 + +### Fixed + +- Fixed incorrect classification of thought signatures in Google Gemini responses—thought signatures are now correctly treated as metadata rather than thinking content indicators +- Fixed thought signature handling in Google Gemini CLI and Vertex AI streaming to properly preserve signatures across text deltas +- Fixed Google schema sanitization stripping property names that match schema keywords (e.g., "pattern", "format") from tool definitions + +## [4.4.9] - 2026-01-12 + +### Fixed + +- Fixed Google provider schema sanitization to strip additional unsupported JSON Schema fields (patternProperties, additionalProperties, min/max constraints, pattern, format) + +## [4.4.8] - 2026-01-12 + +### Fixed + +- Fixed Google provider schema sanitization to properly collapse `anyOf`/`oneOf` with const values into enum arrays +- Fixed const-to-enum conversion to infer type from the const value when type is not specified + +## [4.4.6] - 2026-01-11 + +### Fixed + +- Fixed tool parameter schema sanitization to only apply Google-specific transformations for Gemini models, preserving original schemas for other model types + +## [4.4.5] - 2026-01-11 + +### Changed + +- Exported `sanitizeSchemaForGoogle` utility function for external use + +### Fixed + +- Fixed Google provider schema sanitization to strip additional unsupported JSON Schema fields ($schema, $ref, $defs, format, examples, and others) +- Fixed Google provider to ignore `additionalProperties: false` which is unsupported by the API + +## [4.4.4] - 2026-01-11 + +### Fixed + +- Fixed Cursor todo updates to bridge update_todos tool calls to the local todo_write tool + +## [4.3.0] - 2026-01-11 + +### Added + +- Added debug log filtering and display script for Cursor JSONL logs with follow mode and coalescing support +- Added protobuf definition extractor script to reconstruct .proto files from bundled JavaScript +- Added conversation state caching to persist context across multiple Cursor API requests in the same session +- Added shell streaming support for real-time stdout/stderr output during command execution +- Added JSON5 parsing for MCP tool arguments with Python-style boolean and None value normalization +- Added Cursor provider with support for Anthropic model, GPT, and Gemini models via Cursor's agent API +- Added OAuth authentication flow for Cursor including login, token refresh, and expiry detection +- Added `cursor-agent` API type with streaming support and tool execution handlers +- Added Cursor model definitions including Anthropic model 4.5, GPT-5.x, Gemini 3, and Grok variants +- Added model generation script to automatically fetch and update AI model definitions from models.dev and OpenRouter APIs + +### Changed + +- Changed Cursor debug logging to use structured JSONL format with automatic MCP argument decoding +- Changed MCP tool argument decoding to use protobuf Value schema for improved type handling +- Changed tool advertisement to filter Cursor native tools (bash, read, write, delete, ls, grep, lsp) instead of only exposing mcp\_ prefixed tools + +### Fixed + +- Fixed Cursor conversation history serialization so subagents retain task context and can call complete + +## [4.2.1] - 2026-01-11 + +### Changed + +- Updated `reasoningSummary` option to accept only `"auto"`, `"concise"`, `"detailed"`, or `null` (removed `"off"` and `"on"` values) +- Changed default `reasoningSummary` from `"auto"` to `"detailed"` +- OpenAI code provider: switched to bundled system prompt matching opencode, changed originator to "opencode", simplified prompt handling + +### Fixed + +- Fixed Cloud Code Assist tool schema conversion to avoid unsupported `const` fields + +## [4.0.0] - 2026-01-10 + +### Added + +- Added `betas` option in `AnthropicOptions` for passing custom Anthropic beta feature flags +- OpenCode Zen provider support with 26 models (Anthropic model, GPT, Gemini, Grok, Kimi, GLM, Qwen, etc.). Set `OPENCODE_API_KEY` env var to use. +- `thinkingBudgets` option in `SimpleStreamOptions` for customizing token budgets per thinking level on token-based providers +- `sessionId` option in `StreamOptions` for providers that support session-based caching. OpenAI code provider provider uses this to set `prompt_cache_key` and routing headers. +- `supportsUsageInStreaming` compatibility flag for OpenAI-compatible providers that reject `stream_options: { include_usage: true }`. Defaults to `true`. Set to `false` in model config for providers like gatewayz.ai. +- `GOOGLE_APPLICATION_CREDENTIALS` env var support for Vertex AI credential detection (standard for CI/production) +- Exported OpenAI code provider utilities: `CacheMetadata`, `getOpenAI codeInstructions`, `getModelFamily`, `ModelFamily`, `buildOpenAI codePiBridge`, `buildOpenAI codeSystemPrompt`, `OpenAI codeSystemPrompt` +- Headless OAuth support for all callback-server providers (Google Gemini CLI, Antigravity, OpenAI code provider): paste redirect URL when browser callback is unreachable +- Cancellable GitHub Copilot device code polling via AbortSignal +- Improved error messages for OpenRouter providers by including raw metadata from upstream errors + +### Changed + +- Changed Anthropic provider to include Anthropic Code system instruction for all API key types, not just OAuth tokens (except Haiku models) +- Changed Anthropic OAuth tool naming to use `proxy_` prefix instead of mapping to Anthropic Code tool names, avoiding potential name collisions +- Changed Anthropic provider to include Anthropic Code headers for all requests, not just OAuth tokens +- Anthropic provider now maps tool names to Anthropic Code's exact tool names (Read, Write, Edit, Bash, Grep, Glob) instead of using prefixed names +- OpenAI Completions provider now disables strict mode on tools to allow optional parameters without null unions + +### Fixed + +- Fixed Anthropic OAuth code parsing to accept full redirect URLs in addition to raw authorization codes +- Fixed Anthropic token refresh to preserve existing refresh token when server doesn't return a new one +- Fixed thinking mode being enabled when tool_choice forces a specific tool, which is unsupported +- Fixed max_tokens being too low when thinking budget is set, now auto-adjusts to model's maxTokens +- Google Cloud Code Assist OAuth for paid subscriptions: properly handles long-running operations for project provisioning, supports `GOOGLE_CLOUD_PROJECT` / `GOOGLE_CLOUD_PROJECT_ID` env vars for paid tiers +- `os.homedir()` calls at module load time; now resolved lazily when needed +- OpenAI Responses tool strict flag to use a boolean for LM Studio compatibility +- Gemini CLI abort handling: detect native `AbortError` in retry catch block, cancel SSE reader when abort signal fires +- Antigravity provider 429 errors by aligning request payload with CLIProxyAPI v6.6.89 +- Thinking block handling for cross-model conversations: thinking blocks are now converted to plain text when switching models +- OpenAI code provider context window from 400,000 to 272,000 tokens to match OpenAI code CLI defaults +- OpenAI code SSE error events to surface message, code, and status +- Context overflow detection for `context_length_exceeded` error codes +- OpenAI code provider now always includes `reasoning.encrypted_content` even when custom `include` options are passed +- OpenAI code requests now omit the `reasoning` field entirely when thinking is off +- Crash when pasting text with trailing whitespace exceeding terminal width + +## [3.37.1] - 2026-01-10 + +### Added + +- Added automatic type coercion for tool arguments when LLMs return JSON-encoded strings instead of native types (numbers, booleans, arrays, objects) + +### Changed + +- Changed tool argument validation to attempt JSON parsing and type coercion before rejecting mismatched types +- Changed validation error messages to include both original and normalized arguments when coercion was attempted + +## [3.37.0] - 2026-01-10 + +### Changed + +- Enabled type coercion in JSON schema validation to automatically convert compatible types + +## [3.35.0] - 2026-01-09 + +### Added + +- Enhanced error messages to include retry-after timing information from API rate limit headers + +## [0.42.0] - 2026-01-09 + +### Added + +- Added OpenCode Zen provider support with 26 models (Anthropic model, GPT, Gemini, Grok, Kimi, GLM, Qwen, etc.). Set `OPENCODE_API_KEY` env var to use. + +## [0.39.0] - 2026-01-08 + +### Fixed + +- Fixed Gemini CLI abort handling: detect native `AbortError` in retry catch block, cancel SSE reader when abort signal fires ([#568](https://github.com/badlogic/pi-mono/pull/568) by [@tmustier](https://github.com/tmustier)) +- Fixed Antigravity provider 429 errors by aligning request payload with CLIProxyAPI v6.6.89: inject Antigravity system instruction with `role: "user"`, set `requestType: "agent"`, and use `antigravity` userAgent. Added bridge prompt to override Antigravity behavior (identity, paths, web dev guidelines) with Pi defaults. ([#571](https://github.com/badlogic/pi-mono/pull/571) by [@ben-vargas](https://github.com/ben-vargas)) +- Fixed thinking block handling for cross-model conversations: thinking blocks are now converted to plain text (no `` tags) when switching models. Previously, `` tags caused models to mimic the pattern and output literal tags. Also fixed empty thinking blocks causing API errors. ([#561](https://github.com/badlogic/pi-mono/issues/561)) + +## [0.38.0] - 2026-01-08 + +### Added + +- `thinkingBudgets` option in `SimpleStreamOptions` for customizing token budgets per thinking level on token-based providers ([#529](https://github.com/badlogic/pi-mono/pull/529) by [@melihmucuk](https://github.com/melihmucuk)) + +### Breaking Changes + +- Removed OpenAI code provider model aliases (`gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `openai-code-mini-latest`, `gpt-5-openai-code`, `gpt-5.1-openai-code`, `gpt-5.1-chat-latest`). Use canonical model IDs: `gpt-5.1`, `gpt-5.1-openai-code-max`, `gpt-5.1-openai-code-mini`, `gpt-5.2`, `gpt-5.2-openai-code`. ([#536](https://github.com/badlogic/pi-mono/pull/536) by [@ghoulr](https://github.com/ghoulr)) + +### Fixed + +- Fixed OpenAI code provider context window from 400,000 to 272,000 tokens to match OpenAI code CLI defaults and prevent 400 errors. ([#536](https://github.com/badlogic/pi-mono/pull/536) by [@ghoulr](https://github.com/ghoulr)) +- Fixed OpenAI code SSE error events to surface message, code, and status. ([#551](https://github.com/badlogic/pi-mono/pull/551) by [@tmustier](https://github.com/tmustier)) +- Fixed context overflow detection for `context_length_exceeded` error codes. + +## [0.37.6] - 2026-01-06 + +### Added + +- Exported OpenAI code provider utilities: `CacheMetadata`, `getOpenAI codeInstructions`, `getModelFamily`, `ModelFamily`, `buildOpenAI codePiBridge`, `buildOpenAI codeSystemPrompt`, `OpenAI codeSystemPrompt` ([#510](https://github.com/badlogic/pi-mono/pull/510) by [@mitsuhiko](https://github.com/mitsuhiko)) + +## [0.37.3] - 2026-01-06 + +### Added + +- `sessionId` option in `StreamOptions` for providers that support session-based caching. OpenAI code provider provider uses this to set `prompt_cache_key` and routing headers. + +## [0.37.2] - 2026-01-05 + +### Fixed + +- OpenAI code provider now always includes `reasoning.encrypted_content` even when custom `include` options are passed ([#484](https://github.com/badlogic/pi-mono/pull/484) by [@kim0](https://github.com/kim0)) + +## [0.37.0] - 2026-01-05 + +### Breaking Changes + +- OpenAI code provider models no longer have per-thinking-level variants (e.g., `gpt-5.2-openai-code-high`). Use the base model ID and set thinking level separately. The OpenAI code provider clamps reasoning effort to what each model supports internally. (initial implementation by [@ben-vargas](https://github.com/ben-vargas) in [#472](https://github.com/badlogic/pi-mono/pull/472)) + +### Added + +- Headless OAuth support for all callback-server providers (Google Gemini CLI, Antigravity, OpenAI code provider): paste redirect URL when browser callback is unreachable ([#428](https://github.com/badlogic/pi-mono/pull/428) by [@ben-vargas](https://github.com/ben-vargas), [#468](https://github.com/badlogic/pi-mono/pull/468) by [@crcatala](https://github.com/crcatala)) +- Cancellable GitHub Copilot device code polling via AbortSignal + +### Fixed + +- OpenAI code requests now omit the `reasoning` field entirely when thinking is off, letting the backend use its default instead of forcing a value. ([#472](https://github.com/badlogic/pi-mono/pull/472)) + +## [0.36.0] - 2026-01-05 + +### Added + +- OpenAI code provider OAuth provider with Responses API streaming support: `openai-code-responses` streaming provider with SSE parsing, tool-call handling, usage/cost tracking, and PKCE OAuth flow ([#451](https://github.com/badlogic/pi-mono/pull/451) by [@kim0](https://github.com/kim0)) + +### Fixed + +- Vertex AI dummy value for `getEnvApiKey()`: Returns `""` when Application Default Credentials are configured (`~/.config/gcloud/application_default_credentials.json` exists) and both `GOOGLE_CLOUD_PROJECT` (or `GCLOUD_PROJECT`) and `GOOGLE_CLOUD_LOCATION` are set. This allows `streamSimple()` to work with Vertex AI without explicit `apiKey` option. The ADC credentials file existence check is cached per-process to avoid repeated filesystem access. + +## [0.32.3] - 2026-01-03 + +### Fixed + +- Google Vertex AI models no longer appear in available models list without explicit authentication. Previously, `getEnvApiKey()` returned a dummy value for `google-vertex`, causing models to show up even when Google Cloud ADC was not configured. + +## [0.32.0] - 2026-01-03 + +### Added + +- Vertex AI provider with ADC (Application Default Credentials) support. Authenticate with `gcloud auth application-default login`, set `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION`, and access Gemini models via Vertex AI. ([#300](https://github.com/badlogic/pi-mono/pull/300) by [@default-anton](https://github.com/default-anton)) + +### Fixed + +- **Gemini CLI rate limit handling**: Added automatic retry with server-provided delay for 429 errors. Parses delay from error messages like "Your quota will reset after 39s" and waits accordingly. Falls back to exponential backoff for other transient errors. ([#370](https://github.com/badlogic/pi-mono/issues/370)) + +## [0.31.0] - 2026-01-02 + +### Breaking Changes + +- **Agent API moved**: All agent functionality (`agentLoop`, `agentLoopContinue`, `AgentContext`, `AgentEvent`, `AgentTool`, `AgentToolResult`, etc.) has moved to `@mariozechner/pi-agent-core`. Import from that package instead of `@gajae-code/ai`. + +### Added + +- **`GoogleThinkingLevel` type**: Exported type that mirrors Google's `ThinkingLevel` enum values (`"THINKING_LEVEL_UNSPECIFIED" | "MINIMAL" | "LOW" | "MEDIUM" | "HIGH"`). Allows configuring Gemini thinking levels without importing from `@google/genai`. +- **`ANTHROPIC_OAUTH_TOKEN` env var**: Now checked before `ANTHROPIC_API_KEY` in `getEnvApiKey()`, allowing OAuth tokens to take precedence. +- **`event-stream.js` export**: `AssistantMessageEventStream` utility now exported from package index. + +### Changed + +- **OAuth uses Web Crypto API**: PKCE generation and OAuth flows now use Web Crypto API (`crypto.subtle`) instead of Node.js `crypto` module. This improves browser compatibility while still working in Node.js 20+. +- **Deterministic model generation**: `generate-models.ts` now sorts providers and models alphabetically for consistent output across runs. ([#332](https://github.com/badlogic/pi-mono/pull/332) by [@mrexodia](https://github.com/mrexodia)) + +### Fixed + +- **OpenAI completions empty content blocks**: Empty text or thinking blocks in assistant messages are now filtered out before sending to the OpenAI completions API, preventing validation errors. ([#344](https://github.com/badlogic/pi-mono/pull/344) by [@default-anton](https://github.com/default-anton)) +- **Thinking token duplication**: Fixed thinking content duplication with chutes.ai provider. The provider was returning thinking content in both `reasoning_content` and `reasoning` fields, causing each chunk to be processed twice. Now only the first non-empty reasoning field is used. +- **zAi provider API mapping**: Fixed zAi models to use `openai-completions` API with correct base URL (`https://api.z.ai/api/coding/paas/v4`) instead of incorrect Anthropic API mapping. ([#344](https://github.com/badlogic/pi-mono/pull/344), [#358](https://github.com/badlogic/pi-mono/pull/358) by [@default-anton](https://github.com/default-anton)) + +## [0.28.0] - 2025-12-25 + +### Breaking Changes + +- **OAuth storage removed** ([#296](https://github.com/badlogic/pi-mono/issues/296)): All storage functions (`loadOAuthCredentials`, `saveOAuthCredentials`, `setOAuthStorage`, etc.) removed. Callers are responsible for storing credentials. +- **OAuth login functions**: `loginAnthropic`, `loginGitHubCopilot`, `loginGeminiCli`, `loginAntigravity` now return `OAuthCredentials` instead of saving to disk. +- **refreshOAuthToken**: Now takes `(provider, credentials)` and returns new `OAuthCredentials` instead of saving. +- **getOAuthApiKey**: Now takes `(provider, credentials)` and returns `{ newCredentials, apiKey }` or null. +- **OAuthCredentials type**: No longer includes `type: "oauth"` discriminator. Callers add discriminator when storing. +- **setApiKey, resolveApiKey**: Removed. Callers must manage their own API key storage/resolution. +- **getApiKey**: Renamed to `getEnvApiKey`. Only checks environment variables for known providers. + +## [0.27.7] - 2025-12-24 + +### Fixed + +- **Thinking tag leakage**: Fixed Anthropic model mimicking literal `` tags in responses. Unsigned thinking blocks (from aborted streams) are now converted to plain text without `` tags. The TUI still displays them as thinking blocks. ([#302](https://github.com/badlogic/pi-mono/pull/302) by [@nicobailon](https://github.com/nicobailon)) + +## [0.25.1] - 2025-12-21 + +### Added + +- **xhigh thinking level support**: Added `supportsXhigh()` function to check if a model supports xhigh reasoning level. Also clamps xhigh to high for OpenAI models that don't support it. ([#236](https://github.com/badlogic/pi-mono/pull/236) by [@theBucky](https://github.com/theBucky)) + +### Fixed + +- **Gemini multimodal tool results**: Fixed images in tool results causing flaky/broken responses with Gemini models. For Gemini 3, images are now nested inside `functionResponse.parts` per the [docs](https://ai.google.dev/gemini-api/docs/function-calling#multimodal). For older models (which don't support multimodal function responses), images are sent in a separate user message. + +- **Queued message steering**: When `getQueuedMessages` is provided, the agent loop now checks for queued user messages after each tool call and skips remaining tool calls in the current assistant message when a queued message arrives (emitting error tool results). + +- **Double API version path in Google provider URL**: Fixed Gemini API calls returning 404 after baseUrl support was added. The SDK was appending its default apiVersion to baseUrl which already included the version path. ([#251](https://github.com/badlogic/pi-mono/pull/251) by [@shellfyred](https://github.com/shellfyred)) + +- **Anthropic SDK retries disabled**: Re-enabled SDK-level retries (default 2) for transient HTTP failures. ([#252](https://github.com/badlogic/pi-mono/issues/252)) + +## [0.23.5] - 2025-12-19 + +### Added + +- **Gemini 3 Flash thinking support**: Extended thinking level support for Gemini 3 Flash models (MINIMAL, LOW, MEDIUM, HIGH) to match Pro models' capabilities. ([#212](https://github.com/badlogic/pi-mono/pull/212) by [@markusylisiurunen](https://github.com/markusylisiurunen)) + +- **GitHub Copilot thinking models**: Added thinking support for additional Copilot models (o3-mini, o1-mini, o1-preview). ([#234](https://github.com/badlogic/pi-mono/pull/234) by [@aadishv](https://github.com/aadishv)) + +### Fixed + +- **Gemini tool result format**: Fixed tool result format for Gemini 3 Flash Preview which strictly requires `{ output: value }` for success and `{ error: value }` for errors. Previous format using `{ result, isError }` was rejected by newer Gemini models. Also improved type safety by removing `as any` casts. ([#213](https://github.com/badlogic/pi-mono/issues/213), [#220](https://github.com/badlogic/pi-mono/pull/220)) + +- **Google baseUrl configuration**: Google provider now respects `baseUrl` configuration for custom endpoints or API proxies. ([#216](https://github.com/badlogic/pi-mono/issues/216), [#221](https://github.com/badlogic/pi-mono/pull/221) by [@theBucky](https://github.com/theBucky)) + +- **GitHub Copilot vision requests**: Added `Copilot-Vision-Request` header when sending images to GitHub Copilot models. ([#222](https://github.com/badlogic/pi-mono/issues/222)) + +- **GitHub Copilot X-Initiator header**: Fixed X-Initiator logic to check last message role instead of any message in history. This ensures proper billing when users send follow-up messages. ([#209](https://github.com/badlogic/pi-mono/issues/209)) + +## [0.22.3] - 2025-12-16 + +### Added + +- **Image limits test suite**: Added comprehensive tests for provider-specific image limitations (max images, max size, max dimensions). Discovered actual limits: Anthropic (100 images, 5MB, 8000px), OpenAI (500 images, ≥25MB), Gemini (~2500 images, ≥40MB), Mistral (8 images, ~15MB), OpenRouter (~40 images context-limited, ~15MB). ([#120](https://github.com/badlogic/pi-mono/pull/120)) + +- **Tool result streaming**: Added `tool_execution_update` event and optional `onUpdate` callback to `AgentTool.execute()` for streaming tool output during execution. Tools can now emit partial results (e.g., bash stdout) that are forwarded to subscribers. ([#44](https://github.com/badlogic/pi-mono/issues/44)) + +- **X-Initiator header for GitHub Copilot**: Added X-Initiator header handling for GitHub Copilot provider to ensure correct call accounting (agent calls are not deducted from quota). Sets initiator based on last message role. ([#200](https://github.com/badlogic/pi-mono/pull/200) by [@kim0](https://github.com/kim0)) + +### Changed + +- **Normalized tool_execution_end result**: `tool_execution_end` event now always contains `AgentToolResult` (no longer `AgentToolResult | string`). Errors are wrapped in the standard result format. + +### Fixed + +- **Reasoning disabled by default**: When `reasoning` option is not specified, thinking is now explicitly disabled for all providers. Previously, some providers like Gemini with "dynamic thinking" would use their default (thinking ON), causing unexpected token usage. This was the original intended behavior. ([#180](https://github.com/badlogic/pi-mono/pull/180) by [@markusylisiurunen](https://github.com/markusylisiurunen)) + +## [0.22.2] - 2025-12-15 + +### Added + +- **Interleaved thinking for Anthropic**: Added `interleavedThinking` option to `AnthropicOptions`. When enabled, Anthropic model 4 models can think between tool calls and reason after receiving tool results. Enabled by default (no extra token cost, just unlocks the capability). Set `interleavedThinking: false` to disable. + +## [0.22.1] - 2025-12-15 + +_Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_ + +### Added + +- **Interleaved thinking for Anthropic**: Enabled interleaved thinking in the Anthropic provider, allowing Anthropic model models to output thinking blocks interspersed with text responses. + +## [0.22.0] - 2025-12-15 + +### Added + +- **GitHub Copilot provider**: Added `github-copilot` as a known provider with models sourced from models.dev. Includes Anthropic model, GPT, Gemini, Grok, and other models available through GitHub Copilot. ([#191](https://github.com/badlogic/pi-mono/pull/191) by [@cau1k](https://github.com/cau1k)) + +### Fixed + +- **GitHub Copilot gpt-5 models**: Fixed API selection for gpt-5 models to use `openai-responses` instead of `openai-completions` (gpt-5 models are not accessible via completions endpoint) + +- **GitHub Copilot cross-model context handoff**: Fixed context handoff failing when switching between GitHub Copilot models using different APIs (e.g., gpt-5 to anthropic-model-sonnet-4). Tool call IDs from OpenAI Responses API were incompatible with other models. ([#198](https://github.com/badlogic/pi-mono/issues/198)) + +- **Gemini 3 Pro thinking levels**: Thinking level configuration now works correctly for Gemini 3 Pro models. Previously all levels mapped to -1 (minimal thinking). Now LOW/MEDIUM/HIGH properly control test-time computation. ([#176](https://github.com/badlogic/pi-mono/pull/176) by [@markusylisiurunen](https://github.com/markusylisiurunen)) + +## [0.18.2] - 2025-12-11 + +### Changed + +- **Anthropic SDK retries disabled**: Set `maxRetries: 0` on Anthropic client to allow application-level retry handling. The SDK's built-in retries were interfering with coding-agent's retry logic. ([#157](https://github.com/badlogic/pi-mono/issues/157)) + +## [0.18.1] - 2025-12-10 + +### Added + +- **Mistral provider**: Added support for Mistral AI models via the OpenAI-compatible API. Includes automatic handling of Mistral-specific requirements (tool call ID format). Set `MISTRAL_API_KEY` environment variable to use. + +### Fixed + +- Fixed Mistral 400 errors after aborted assistant messages by skipping empty assistant messages (no content, no tool calls) ([#165](https://github.com/badlogic/pi-mono/issues/165)) + +- Removed synthetic assistant bridge message after tool results for Mistral (no longer required as of Dec 2025) ([#165](https://github.com/badlogic/pi-mono/issues/165)) + +- Fixed bug where `ANTHROPIC_API_KEY` environment variable was deleted globally after first OAuth token usage, causing subsequent prompts to fail ([#164](https://github.com/badlogic/pi-mono/pull/164)) + +## [0.17.0] - 2025-12-09 + +### Added + +- **`agentLoopContinue` function**: Continue an agent loop from existing context without adding a new user message. Validates that the last message is `user` or `toolResult`. Useful for retry after context overflow or resuming from manually-added tool results. + +### Breaking Changes + +- Removed provider-level tool argument validation. Validation now happens in `agentLoop` via `executeToolCalls`, allowing models to retry on validation errors. For manual tool execution, use `validateToolCall(tools, toolCall)` or `validateToolArguments(tool, toolCall)`. + +### Added + +- Added `validateToolCall(tools, toolCall)` helper that finds the tool by name and validates arguments. + +- **OpenAI compatibility overrides**: Added `compat` field to `Model` for `openai-completions` API, allowing explicit configuration of provider quirks (`supportsStore`, `supportsDeveloperRole`, `supportsReasoningEffort`, `maxTokensField`). Falls back to URL-based detection if not set. Useful for LiteLLM, custom proxies, and other non-standard endpoints. ([#133](https://github.com/badlogic/pi-mono/issues/133), thanks @fink-andreas for the initial idea and PR) + +- **xhigh reasoning level**: Added `xhigh` to `ReasoningEffort` type for OpenAI openai-code-max models. For non-OpenAI providers (Anthropic, Google), `xhigh` is automatically mapped to `high`. ([#143](https://github.com/badlogic/pi-mono/issues/143)) + +### Changed + +- **Updated SDK versions**: OpenAI SDK 5.21.0 → 6.10.0, Anthropic SDK 0.61.0 → 0.71.2, Google GenAI SDK 1.30.0 → 1.31.0 + +## [0.13.0] - 2025-12-06 + +### Breaking Changes + +- **Added `totalTokens` field to `Usage` type**: All code that constructs `Usage` objects must now include the `totalTokens` field. This field represents the total tokens processed by the LLM (input + output + cache). For OpenAI and Google, this uses native API values (`total_tokens`, `totalTokenCount`). For Anthropic, it's computed as `input + output + cacheRead + cacheWrite`. + +## [0.12.10] - 2025-12-04 + +### Added + +- Added `gpt-5.1-openai-code-max` model support + +### Fixed + +- **OpenAI Token Counting**: Fixed `usage.input` to exclude cached tokens for OpenAI providers. Previously, `input` included cached tokens, causing double-counting when calculating total context size via `input + cacheRead`. Now `input` represents non-cached input tokens across all providers, making `input + output + cacheRead + cacheWrite` the correct formula for total context size. + +- **Fixed Anthropic model Opus 4.5 cache pricing** (was 3x too expensive) + - Corrected cache_read: $1.50 → $0.50 per MTok + - Corrected cache_write: $18.75 → $6.25 per MTok + - Added manual override in `scripts/generate-models.ts` until upstream fix is merged + - Submitted PR to models.dev: https://github.com/sst/models.dev/pull/439 + +## [0.9.4] - 2025-11-26 + +Initial release with multi-provider LLM support.