Files
cline/apps/vscode/src/shared/api.ts
T
Saoud Rizwan 9da3c59553 fix(vscode): update Claude Sonnet 5 pricing (#12009)
* fix(vscode): update Claude Sonnet 5 pricing

* fix(vscode): restore Claude Sonnet 4.6 pricing
2026-06-30 12:48:11 -07:00

5628 lines
140 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { ApiFormat } from "./proto/cline/models"
import type { ApiHandlerSettings } from "./storage/state-keys"
export type ApiProvider =
| "anthropic"
| "claude-code"
| "openrouter"
| "bedrock"
| "vertex"
| "openai"
| "ollama"
| "lmstudio"
| "gemini"
| "openai-native"
| "openai-codex"
| "requesty"
| "together"
| "deepseek"
| "qwen"
| "qwen-code"
| "doubao"
| "mistral"
| "vscode-lm"
| "cline"
| "cline-pass"
| "litellm"
| "moonshot"
| "nebius"
| "fireworks"
| "asksage"
| "xai"
| "sambanova"
| "cerebras"
| "sapaicore"
| "groq"
| "huggingface"
| "huawei-cloud-maas"
| "dify"
| "baseten"
| "vercel-ai-gateway"
| "zai"
| "oca"
| "aihubmix"
| "minimax"
| "hicap"
| "nousResearch"
| "wandb"
export const DEFAULT_API_PROVIDER = "openrouter" as ApiProvider
export interface ApiHandlerOptions extends Partial<ApiHandlerSettings> {
ulid?: string // Used to identify the task in API requests
onRetryAttempt?: (attempt: number, maxRetries: number, delay: number, error: any) => void // Callback function
}
export type ApiConfiguration = ApiHandlerOptions
// Models
interface PriceTier {
tokenLimit: number // Upper limit (inclusive) of *input* tokens for this price. Use Infinity for the highest tier.
price: number // Price per million tokens for this tier.
}
export interface ModelInfo {
name?: string
maxTokens?: number
contextWindow?: number
supportsImages?: boolean
supportsPromptCache: boolean // this value is hardcoded for now
supportsReasoning?: boolean // Whether the model supports reasoning/thinking mode
inputPrice?: number // Keep for non-tiered input models
outputPrice?: number // Keep for non-tiered output models
thinkingConfig?: {
maxBudget?: number // Max allowed thinking budget tokens
outputPrice?: number // Output price per million tokens when budget > 0
outputPriceTiers?: PriceTier[] // Optional: Tiered output price when budget > 0
geminiThinkingLevel?: "low" | "high" // Optional: preset thinking level
supportsThinkingLevel?: boolean // Whether the model supports thinking level (low/high)
}
supportsGlobalEndpoint?: boolean // Whether the model supports a global endpoint with Vertex AI
cacheWritesPrice?: number
cacheReadsPrice?: number
description?: string
tiers?: {
contextWindow: number
inputPrice?: number
outputPrice?: number
cacheWritesPrice?: number
cacheReadsPrice?: number
}[]
temperature?: number
apiFormat?: ApiFormat // The API format used by this model
}
export interface OpenAiCompatibleModelInfo extends ModelInfo {
temperature?: number
isR1FormatRequired?: boolean
systemRole?: "developer" | "system"
supportsReasoningEffort?: boolean
supportsTools?: boolean
supportsStreaming?: boolean
}
export interface OcaModelInfo extends OpenAiCompatibleModelInfo {
modelName: string
surveyId?: string
banner?: string
surveyContent?: string
supportsReasoning?: boolean
reasoningEffortOptions: string[]
}
export const CLAUDE_SONNET_1M_SUFFIX = ":1m"
export const ANTHROPIC_FAST_MODE_SUFFIX = ":fast"
export const CLAUDE_SONNET_1M_TIERS = [
{
contextWindow: 200000,
inputPrice: 3.0,
outputPrice: 15,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
{
contextWindow: Number.MAX_SAFE_INTEGER, // storing infinity in vs storage is not possible, it converts to 'null', which causes crash in webview ModelInfoView
inputPrice: 6,
outputPrice: 22.5,
cacheWritesPrice: 7.5,
cacheReadsPrice: 0.6,
},
]
export const CLAUDE_OPUS_1M_TIERS = [
{
contextWindow: 200000,
inputPrice: 5.0,
outputPrice: 25,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
{
contextWindow: Number.MAX_SAFE_INTEGER,
inputPrice: 10,
outputPrice: 37.5,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1.0,
},
]
export const CLAUDE_FABLE_1M_TIERS = [
{
contextWindow: 200000,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
},
{
contextWindow: Number.MAX_SAFE_INTEGER,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
},
]
export interface HicapCompatibleModelInfo extends ModelInfo {
temperature?: number
}
export const hicapModelInfoSaneDefaults: HicapCompatibleModelInfo = {
maxTokens: -1,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0,
outputPrice: 0,
temperature: 1,
}
// Anthropic
// https://docs.anthropic.com/en/docs/about-claude/models // prices updated 2025-01-02
export type AnthropicModelId = keyof typeof anthropicModels
export const anthropicDefaultModelId: AnthropicModelId = "claude-sonnet-5"
export const ANTHROPIC_MIN_THINKING_BUDGET = 1_024
export const ANTHROPIC_MAX_THINKING_BUDGET = 6_000
export const anthropicModels = {
"claude-sonnet-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
},
"claude-sonnet-5:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-sonnet-4-6": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"claude-sonnet-4-6:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-sonnet-4-5-20250929": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"claude-sonnet-4-5-20250929:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-haiku-4-5-20251001": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 1,
outputPrice: 5.0,
cacheWritesPrice: 1.25,
cacheReadsPrice: 0.1,
},
"claude-sonnet-4-20250514": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"claude-sonnet-4-20250514:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-opus-4-6": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"claude-opus-4-6:fast": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 30.0,
outputPrice: 150.0,
cacheWritesPrice: 37.5,
cacheReadsPrice: 3.0,
description:
"Anthropic fast mode preview for Claude Opus 4.6. Same model and capabilities with higher output token speed at premium pricing. Requires fast mode access on your Anthropic account.",
},
"claude-opus-4-6:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"claude-opus-4-6:1m:fast": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 30.0,
outputPrice: 150.0,
cacheWritesPrice: 37.5,
cacheReadsPrice: 3.0,
description:
"Anthropic fast mode preview for Claude Opus 4.6 with the 1M context beta enabled. Same model and capabilities with higher output token speed at premium pricing across the full 1M context window. Requires both fast mode and 1M context access on your Anthropic account.",
},
"claude-opus-4-8": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"claude-opus-4-8:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"claude-fable-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
},
"claude-fable-5:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
tiers: CLAUDE_FABLE_1M_TIERS,
},
"claude-opus-4-7": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"claude-opus-4-7:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"claude-opus-4-5-20251101": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"claude-opus-4-1-20250805": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
},
"claude-opus-4-20250514": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
},
"claude-3-7-sonnet-20250219": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"claude-3-5-sonnet-20241022": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0, // $3 per million input tokens
outputPrice: 15.0, // $15 per million output tokens
cacheWritesPrice: 3.75, // $3.75 per million tokens
cacheReadsPrice: 0.3, // $0.30 per million tokens
},
"claude-3-5-haiku-20241022": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.8,
outputPrice: 4.0,
cacheWritesPrice: 1.0,
cacheReadsPrice: 0.08,
},
"claude-3-opus-20240229": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
},
"claude-3-haiku-20240307": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.25,
outputPrice: 1.25,
cacheWritesPrice: 0.3,
cacheReadsPrice: 0.03,
},
} as const satisfies Record<string, ModelInfo> // as const assertion makes the object deeply readonly
// Claude Code
export type ClaudeCodeModelId = keyof typeof claudeCodeModels
export const claudeCodeDefaultModelId: ClaudeCodeModelId = "claude-sonnet-5"
export const claudeCodeModels = {
sonnet: {
...anthropicModels["claude-sonnet-5"],
supportsImages: false,
supportsPromptCache: false,
},
"sonnet[1m]": {
...anthropicModels["claude-sonnet-5:1m"],
supportsImages: false,
supportsPromptCache: false,
},
opus: {
...anthropicModels["claude-opus-4-8"],
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
},
"opus[1m]": {
...anthropicModels["claude-opus-4-8:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-haiku-4-5-20251001": {
...anthropicModels["claude-haiku-4-5-20251001"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-5": {
...anthropicModels["claude-sonnet-5"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-5[1m]": {
...anthropicModels["claude-sonnet-5:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-4-6": {
...anthropicModels["claude-sonnet-4-6"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-4-6[1m]": {
...anthropicModels["claude-sonnet-4-6:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-4-5-20250929": {
...anthropicModels["claude-sonnet-4-5-20250929"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-4-5-20250929[1m]": {
...anthropicModels["claude-sonnet-4-5-20250929:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-sonnet-4-20250514": {
...anthropicModels["claude-sonnet-4-20250514"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-6": {
...anthropicModels["claude-opus-4-6"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-6[1m]": {
...anthropicModels["claude-opus-4-6:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-8": {
...anthropicModels["claude-opus-4-8"],
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-8[1m]": {
...anthropicModels["claude-opus-4-8:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-fable-5": {
...anthropicModels["claude-fable-5"],
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
},
"claude-fable-5[1m]": {
...anthropicModels["claude-fable-5:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-7": {
...anthropicModels["claude-opus-4-7"],
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-7[1m]": {
...anthropicModels["claude-opus-4-7:1m"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-5-20251101": {
...anthropicModels["claude-opus-4-5-20251101"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-1-20250805": {
...anthropicModels["claude-opus-4-1-20250805"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-20250514": {
...anthropicModels["claude-opus-4-20250514"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-3-7-sonnet-20250219": {
...anthropicModels["claude-3-7-sonnet-20250219"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-3-5-haiku-20241022": {
...anthropicModels["claude-3-5-haiku-20241022"],
supportsImages: true,
supportsPromptCache: false,
},
} as const satisfies Record<string, ModelInfo>
// AWS Bedrock
// https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html
export type BedrockModelId = keyof typeof bedrockModels
export const bedrockDefaultModelId: BedrockModelId = "anthropic.claude-sonnet-5"
export const bedrockModels = {
"anthropic.claude-sonnet-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
},
"anthropic.claude-sonnet-5:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"anthropic.claude-sonnet-4-6": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"anthropic.claude-sonnet-4-6:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"anthropic.claude-sonnet-4-5-20250929-v1:0": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"anthropic.claude-sonnet-4-5-20250929-v1:0:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"anthropic.claude-haiku-4-5-20251001-v1:0": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 1,
outputPrice: 5.0,
cacheWritesPrice: 1.25,
cacheReadsPrice: 0.1,
},
"anthropic.claude-sonnet-4-20250514-v1:0": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"anthropic.claude-sonnet-4-20250514-v1:0:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"anthropic.claude-opus-4-6-v1": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"anthropic.claude-opus-4-6-v1:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"anthropic.claude-opus-4-8": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"anthropic.claude-opus-4-8:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"anthropic.claude-fable-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
},
"anthropic.claude-fable-5:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
tiers: CLAUDE_FABLE_1M_TIERS,
},
"anthropic.claude-opus-4-7": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"anthropic.claude-opus-4-7:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"anthropic.claude-opus-4-5-20251101-v1:0": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"anthropic.claude-opus-4-20250514-v1:0": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
},
"anthropic.claude-opus-4-1-20250805-v1:0": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
},
"amazon.nova-premier-v1:0": {
maxTokens: 10_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 2.5,
outputPrice: 12.5,
},
"amazon.nova-pro-v1:0": {
maxTokens: 5000,
contextWindow: 300_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.8,
outputPrice: 3.2,
// cacheWritesPrice: 3.2, // not written
cacheReadsPrice: 0.2,
},
"amazon.nova-lite-v1:0": {
maxTokens: 5000,
contextWindow: 300_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.06,
outputPrice: 0.24,
// cacheWritesPrice: 0.24, // not written
cacheReadsPrice: 0.015,
},
"amazon.nova-2-lite-v1:0": {
maxTokens: 5000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 2.5,
// cacheWritesPrice: 2.5, // not written
cacheReadsPrice: 0.075,
supportsGlobalEndpoint: true,
},
"amazon.nova-micro-v1:0": {
maxTokens: 5000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.035,
outputPrice: 0.14,
// cacheWritesPrice: 0.14, // not written
cacheReadsPrice: 0.00875,
},
"anthropic.claude-3-7-sonnet-20250219-v1:0": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"anthropic.claude-3-5-sonnet-20241022-v2:0": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"anthropic.claude-3-5-haiku-20241022-v1:0": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.8,
outputPrice: 4.0,
cacheWritesPrice: 1.0,
cacheReadsPrice: 0.08,
},
"anthropic.claude-3-5-sonnet-20240620-v1:0": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 3.0,
outputPrice: 15.0,
},
"anthropic.claude-3-opus-20240229-v1:0": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 15.0,
outputPrice: 75.0,
},
"anthropic.claude-3-sonnet-20240229-v1:0": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 3.0,
outputPrice: 15.0,
},
"anthropic.claude-3-haiku-20240307-v1:0": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.25,
outputPrice: 1.25,
},
"deepseek.r1-v1:0": {
maxTokens: 8_000,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1.35,
outputPrice: 5.4,
},
"openai.gpt-oss-120b-1:0": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.6,
description:
"A state-of-the-art 120B open-weight Mixture-of-Experts language model optimized for strong reasoning, tool use, and efficient deployment on large GPUs",
},
"openai.gpt-oss-20b-1:0": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.07,
outputPrice: 0.3,
description:
"A compact 20B open-weight Mixture-of-Experts language model designed for strong reasoning and tool use, ideal for edge devices and local inference.",
},
"qwen.qwen3-coder-30b-a3b-v1:0": {
maxTokens: 8192,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.6,
description:
"Qwen3 Coder 30B MoE model with 3.3B activated parameters, optimized for code generation and analysis with 256K context window.",
},
"qwen.qwen3-coder-480b-a35b-v1:0": {
maxTokens: 8192,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.22,
outputPrice: 1.8,
description:
"Qwen3 Coder 480B flagship MoE model with 35B activated parameters, designed for complex coding tasks with advanced reasoning capabilities and 256K context window.",
},
} as const satisfies Record<string, ModelInfo>
// OpenRouter
// https://openrouter.ai/models?order=newest&supported_parameters=tools
export const openRouterDefaultModelId = "anthropic/claude-sonnet-5" // will always exist in openRouterModels
export const openRouterClaudeSonnet41mModelId = `anthropic/claude-sonnet-4${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeSonnet451mModelId = `anthropic/claude-sonnet-4.5${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeSonnet461mModelId = `anthropic/claude-sonnet-4.6${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeSonnet51mModelId = `anthropic/claude-sonnet-5${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeOpus461mModelId = `anthropic/claude-opus-4.6${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeOpus471mModelId = `anthropic/claude-opus-4.7${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeOpus481mModelId = `anthropic/claude-opus-4.8${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterClaudeFable51mModelId = `anthropic/claude-fable-5${CLAUDE_SONNET_1M_SUFFIX}`
export const openRouterDefaultModelInfo: ModelInfo = {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
description:
"Claude Sonnet 5 is Anthropic's latest Sonnet model for coding, agents, and professional work. It supports adaptive thinking, prompt caching, image inputs, and long-context workflows.",
}
// Cline custom model - Devstral
export const clineDevstralModelInfo: ModelInfo = {
contextWindow: 256000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
cacheReadsPrice: 0,
cacheWritesPrice: 0,
description: "A stealth model for agentic coding tasks",
}
export type ClinePassModelId = keyof typeof clinePassModels
export const clinePassDefaultModelId = "cline-pass/glm-5.2"
export const clinePassModelInfoSaneDefaults: ModelInfo = {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
supportsReasoning: true,
inputPrice: 0,
outputPrice: 0,
cacheReadsPrice: 0,
cacheWritesPrice: 0,
description: "",
}
export const clinePassModels = {
"cline-pass/glm-5.2": {
name: "cline-pass/glm-5.2",
maxTokens: 131_072,
contextWindow: 202_752,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.98,
outputPrice: 3.08,
cacheReadsPrice: 0.182,
cacheWritesPrice: 0,
description: "",
},
"cline-pass/glm-5.1": {
name: "cline-pass/glm-5.1",
maxTokens: 131_072,
contextWindow: 202_752,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.98,
outputPrice: 3.08,
cacheReadsPrice: 0.182,
cacheWritesPrice: 0,
description: "",
},
} as const satisfies Record<string, ModelInfo>
export function getModelSlug(modelId: string): string {
return modelId.split("/").at(-1) ?? modelId
}
export function buildModelInfoNameMap(models: Record<string, ModelInfo>): Record<string, ModelInfo> {
const nameMap: Record<string, ModelInfo> = {}
for (const [id, info] of Object.entries(models)) {
nameMap[getModelSlug(id)] = info
}
return nameMap
}
export function resolveClinePassModelInfo(modelId: string, modelInfoByName?: Record<string, ModelInfo>): ModelInfo {
const modelSlug = getModelSlug(modelId)
const clinePassSlugModelId = `cline-pass/${modelSlug}`
return (
modelInfoByName?.[modelSlug] ??
clinePassModels[modelId as keyof typeof clinePassModels] ??
clinePassModels[clinePassSlugModelId as keyof typeof clinePassModels] ??
clinePassModelInfoSaneDefaults
)
}
export const OPENROUTER_PROVIDER_PREFERENCES: Record<string, { order: string[]; allow_fallbacks: boolean }> = {
// Exacto Providers
"moonshotai/kimi-k2:exacto": {
order: ["groq", "moonshotai"],
allow_fallbacks: false,
},
"z-ai/glm-4.6:exacto": {
order: ["z-ai", "novita"],
allow_fallbacks: false,
},
"deepseek/deepseek-v3.1-terminus:exacto": {
order: ["novita", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-coder:exacto": {
order: ["baseten"],
allow_fallbacks: false,
},
"openai/gpt-oss-120b:exacto": {
order: ["groq", "novita"],
allow_fallbacks: false,
},
// Normal Providers
"moonshotai/kimi-k2": {
order: ["groq", "fireworks", "baseten", "parasail", "novita", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-coder": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-235b-a22b-thinking-2507": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-235b-a22b-07-25": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-30b-a3b-thinking-2507": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-30b-a3b-instruct-2507": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-30b-a3b:free": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-next-80b-a3b-thinking": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-next-80b-a3b-instruct": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"qwen/qwen3-max": {
order: ["nebius", "baseten", "fireworks", "together", "deepinfra"],
allow_fallbacks: false,
},
"deepseek/deepseek-v3.2-exp": {
order: ["deepseek", "novita", "fireworks", "nebius"],
allow_fallbacks: false,
},
"z-ai/glm-4.6": {
order: ["z-ai", "novita", "baseten", "fireworks", "chutes"],
allow_fallbacks: false,
},
"z-ai/glm-4.5v": {
order: ["z-ai", "novita", "baseten", "fireworks", "chutes"],
allow_fallbacks: false,
},
"z-ai/glm-4.5": {
order: ["z-ai", "novita", "baseten", "fireworks", "chutes"],
allow_fallbacks: false,
},
"z-ai/glm-4.5-air": {
order: ["z-ai", "novita", "baseten", "fireworks", "chutes"],
allow_fallbacks: false,
},
}
// Vertex AI
// https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude
// https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models
export type VertexModelId = keyof typeof vertexModels
export const vertexDefaultModelId: VertexModelId = "gemini-3-pro-preview"
export const vertexModels = {
"gemini-3.5-flash": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 1.5,
outputPrice: 9.0,
cacheReadsPrice: 0.15,
temperature: 1.0,
supportsReasoning: true,
thinkingConfig: {
geminiThinkingLevel: "low",
supportsThinkingLevel: true,
},
},
"gemini-3.1-pro-preview": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 2.0,
outputPrice: 12.0,
temperature: 1.0,
supportsReasoning: true,
thinkingConfig: {
geminiThinkingLevel: "high",
supportsThinkingLevel: true,
},
},
"gemini-3-pro-preview": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 2.0,
outputPrice: 12.0,
temperature: 1.0,
supportsReasoning: true,
thinkingConfig: {
geminiThinkingLevel: "high",
supportsThinkingLevel: true,
},
},
"gemini-3-flash-preview": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 0.5,
outputPrice: 3.0,
cacheWritesPrice: 0.05,
temperature: 1.0,
supportsReasoning: true,
thinkingConfig: {
geminiThinkingLevel: "high",
supportsThinkingLevel: true,
},
},
"claude-sonnet-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
supportsReasoning: true,
},
"claude-sonnet-5:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
supportsReasoning: true,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-sonnet-4-6": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
supportsReasoning: true,
},
"claude-sonnet-4-6:1m": {
maxTokens: 64_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
supportsReasoning: true,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-sonnet-4-5@20250929": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
supportsReasoning: true,
},
"claude-sonnet-4@20250514": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
supportsReasoning: true,
},
"claude-haiku-4-5@20251001": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.0,
outputPrice: 5.0,
cacheWritesPrice: 1.25,
cacheReadsPrice: 0.1,
supportsReasoning: true,
},
"claude-opus-4-6": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
},
"claude-opus-4-6:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"claude-opus-4-8": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
},
"claude-opus-4-8:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"claude-fable-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
supportsReasoning: true,
},
"claude-fable-5:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 10,
outputPrice: 50,
cacheWritesPrice: 12.5,
cacheReadsPrice: 1,
supportsReasoning: true,
tiers: CLAUDE_FABLE_1M_TIERS,
},
"claude-opus-4-7": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
},
"claude-opus-4-7:1m": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
tiers: CLAUDE_OPUS_1M_TIERS,
},
"claude-opus-4-5@20251101": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsReasoning: true,
},
"claude-opus-4-1@20250805": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
supportsReasoning: true,
},
"claude-opus-4@20250514": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
supportsReasoning: true,
},
"claude-3-7-sonnet@20250219": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
thinkingConfig: {
maxBudget: 64000,
outputPrice: 15.0,
},
supportsReasoning: true,
},
"claude-3-5-sonnet-v2@20241022": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"claude-3-5-sonnet@20240620": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
},
"claude-3-5-haiku@20241022": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.0,
outputPrice: 5.0,
cacheWritesPrice: 1.25,
cacheReadsPrice: 0.1,
},
"claude-3-opus@20240229": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 15.0,
outputPrice: 75.0,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
},
"claude-3-haiku@20240307": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.25,
outputPrice: 1.25,
cacheWritesPrice: 0.3,
cacheReadsPrice: 0.03,
},
"mistral-large-2411": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 6.0,
},
"mistral-small-2503": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"codestral-2501": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.9,
},
"llama-4-maverick-17b-128e-instruct-maas": {
maxTokens: 128_000,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.35,
outputPrice: 1.15,
},
"llama-4-scout-17b-16e-instruct-maas": {
maxTokens: 1_000_000,
contextWindow: 10_485_760,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.25,
outputPrice: 0.7,
},
"gemini-2.0-flash-001": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 0.15,
outputPrice: 0.6,
cacheWritesPrice: 1.0,
cacheReadsPrice: 0.025,
},
"gemini-2.0-flash-lite-001": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
supportsGlobalEndpoint: true,
inputPrice: 0.075,
outputPrice: 0.3,
},
"gemini-2.0-flash-thinking-exp-1219": {
maxTokens: 8192,
contextWindow: 32_767,
supportsImages: true,
supportsPromptCache: false,
supportsGlobalEndpoint: true,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.0-flash-exp": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
supportsGlobalEndpoint: true,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.5-pro-exp-03-25": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.5-pro": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 2.5,
outputPrice: 15,
cacheReadsPrice: 0.625,
thinkingConfig: {
maxBudget: 32767,
},
tiers: [
{
contextWindow: 200000,
inputPrice: 1.25,
outputPrice: 10,
cacheReadsPrice: 0.31,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 2.5,
outputPrice: 15,
cacheReadsPrice: 0.625,
},
],
},
"gemini-2.5-flash": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 0.3,
outputPrice: 2.5,
thinkingConfig: {
maxBudget: 24576,
outputPrice: 3.5,
},
},
"gemini-2.5-flash-lite-preview-06-17": {
maxTokens: 64000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 0.1,
outputPrice: 0.4,
cacheReadsPrice: 0.025,
description: "Preview version - may not be available in all regions",
thinkingConfig: {
maxBudget: 24576,
},
},
"gemini-2.0-flash-thinking-exp-01-21": {
maxTokens: 65_536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
supportsGlobalEndpoint: true,
inputPrice: 0,
outputPrice: 0,
},
"gemini-exp-1206": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-flash-002": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.15,
outputPrice: 0.6,
cacheWritesPrice: 1.0,
cacheReadsPrice: 0.0375,
tiers: [
{
contextWindow: 128000,
inputPrice: 0.075,
outputPrice: 0.3,
cacheReadsPrice: 0.01875,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 0.15,
outputPrice: 0.6,
cacheReadsPrice: 0.0375,
},
],
},
"gemini-1.5-flash-exp-0827": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-flash-8b-exp-0827": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-pro-002": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 1.25,
outputPrice: 5,
},
"gemini-1.5-pro-exp-0827": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
} as const satisfies Record<string, ModelInfo>
export const vertexGlobalModels: Record<string, ModelInfo> = Object.fromEntries(
Object.entries(vertexModels).filter(([_k, v]) => Object.hasOwn(v, "supportsGlobalEndpoint")),
) as Record<string, ModelInfo>
export const openAiModelInfoSaneDefaults: OpenAiCompatibleModelInfo = {
maxTokens: -1,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
isR1FormatRequired: false,
inputPrice: 0,
outputPrice: 0,
temperature: 0,
}
// Gemini
// https://ai.google.dev/gemini-api/docs/models/gemini
export type GeminiModelId = keyof typeof geminiModels
export const geminiDefaultModelId: GeminiModelId = "gemini-3.1-pro-preview"
export const geminiModels = {
"gemini-3.5-flash": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.5,
outputPrice: 9.0,
cacheReadsPrice: 0.15,
supportsReasoning: true,
thinkingConfig: {
geminiThinkingLevel: "low",
supportsThinkingLevel: true,
},
},
"gemini-3.1-pro-preview": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 4.0,
outputPrice: 18.0,
cacheReadsPrice: 0.4,
thinkingConfig: {
// If you don't specify a thinking level, Gemini will use the model's default
// dynamic thinking level, "high", for Gemini 3 Pro Preview.
geminiThinkingLevel: "high",
supportsThinkingLevel: true,
},
tiers: [
{
contextWindow: 200000,
inputPrice: 2.0,
outputPrice: 12.0,
cacheReadsPrice: 0.2,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 4.0,
outputPrice: 18.0,
cacheReadsPrice: 0.4,
},
],
},
"gemini-3-pro-preview": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 4.0,
outputPrice: 18.0,
cacheReadsPrice: 0.4,
thinkingConfig: {
geminiThinkingLevel: "high",
supportsThinkingLevel: true,
},
tiers: [
{
contextWindow: 200000,
inputPrice: 2.0,
outputPrice: 12.0,
cacheReadsPrice: 0.2,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 4.0,
outputPrice: 18.0,
cacheReadsPrice: 0.4,
},
],
},
"gemini-3-flash-preview": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 0.5,
outputPrice: 3.0,
cacheWritesPrice: 0.05,
supportsReasoning: true,
thinkingConfig: {
geminiThinkingLevel: "low",
supportsThinkingLevel: true,
},
tiers: [
{
contextWindow: 200000,
inputPrice: 0.3,
outputPrice: 2.5,
cacheReadsPrice: 0.03,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 0.3,
outputPrice: 2.5,
cacheReadsPrice: 0.03,
},
],
},
"gemini-2.5-pro": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.5,
outputPrice: 15,
cacheReadsPrice: 0.625,
thinkingConfig: {
maxBudget: 32767,
},
tiers: [
{
contextWindow: 200000,
inputPrice: 1.25,
outputPrice: 10,
cacheReadsPrice: 0.31,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 2.5,
outputPrice: 15,
cacheReadsPrice: 0.625,
},
],
},
"gemini-2.5-flash-lite-preview-06-17": {
maxTokens: 64000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsGlobalEndpoint: true,
inputPrice: 0.1,
outputPrice: 0.4,
cacheReadsPrice: 0.025,
description: "Preview version - may not be available in all regions",
thinkingConfig: {
maxBudget: 24576,
},
},
"gemini-2.5-flash": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 2.5,
cacheReadsPrice: 0.075,
thinkingConfig: {
maxBudget: 24576,
outputPrice: 3.5,
},
},
"gemini-2.0-flash-001": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.1,
outputPrice: 0.4,
cacheReadsPrice: 0.025,
cacheWritesPrice: 1.0,
},
"gemini-2.0-flash-lite-preview-02-05": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.0-pro-exp-02-05": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.0-flash-thinking-exp-01-21": {
maxTokens: 65_536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.0-flash-thinking-exp-1219": {
maxTokens: 8192,
contextWindow: 32_767,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-2.0-flash-exp": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-flash-002": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.15, // Default price (highest tier)
outputPrice: 0.6, // Default price (highest tier)
cacheReadsPrice: 0.0375,
cacheWritesPrice: 1.0,
tiers: [
{
contextWindow: 128000,
inputPrice: 0.075,
outputPrice: 0.3,
cacheReadsPrice: 0.01875,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 0.15,
outputPrice: 0.6,
cacheReadsPrice: 0.0375,
},
],
},
"gemini-1.5-flash-exp-0827": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-flash-8b-exp-0827": {
maxTokens: 8192,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-pro-002": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-1.5-pro-exp-0827": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gemini-exp-1206": {
maxTokens: 8192,
contextWindow: 2_097_152,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
} as const satisfies Record<string, ModelInfo>
// OpenAI Native
// https://openai.com/api/pricing/
export type OpenAiNativeModelId = keyof typeof openAiNativeModels
export const openAiNativeDefaultModelId: OpenAiNativeModelId = "gpt-5.5"
export const openAiNativeModels = {
"gpt-5.5": {
maxTokens: 8_192,
contextWindow: 1_050_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 30.0,
cacheReadsPrice: 0.5,
apiFormat: ApiFormat.OPENAI_RESPONSES,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.4": {
maxTokens: 8_192,
contextWindow: 1_050_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.5,
outputPrice: 15.0,
cacheReadsPrice: 0.25,
apiFormat: ApiFormat.OPENAI_RESPONSES,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.4-mini": {
maxTokens: 8_192,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.75,
outputPrice: 4.5,
cacheReadsPrice: 0.075,
apiFormat: ApiFormat.OPENAI_RESPONSES,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.4-nano": {
maxTokens: 8_192,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.2,
outputPrice: 1.25,
cacheReadsPrice: 0.02,
apiFormat: ApiFormat.OPENAI_RESPONSES,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.3-codex": {
maxTokens: 8_192, // 128000 breaks context window truncation
contextWindow: 400000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.75,
outputPrice: 14.0,
cacheReadsPrice: 0.175,
apiFormat: ApiFormat.OPENAI_RESPONSES_WEBSOCKET_MODE,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.3-chat-latest": {
maxTokens: 16_384,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.75,
outputPrice: 14.0,
cacheReadsPrice: 0.175,
temperature: 1,
systemRole: "developer",
},
"gpt-5.2-chat-latest": {
maxTokens: 16_384,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.75,
outputPrice: 14.0,
cacheReadsPrice: 0.175,
temperature: 1,
systemRole: "developer",
},
"gpt-5.2": {
maxTokens: 8_192,
contextWindow: 272000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.75,
outputPrice: 14.0,
cacheReadsPrice: 0.175,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.2-codex": {
maxTokens: 8_192, // 128000 breaks context window truncation
contextWindow: 400000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.75,
outputPrice: 14.0,
cacheReadsPrice: 0.175,
apiFormat: ApiFormat.OPENAI_RESPONSES_WEBSOCKET_MODE,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.1-2025-11-13": {
maxTokens: 8_192,
contextWindow: 272000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10.0,
cacheReadsPrice: 0.125,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.1": {
maxTokens: 8_192, // 128000 breaks context window truncation
contextWindow: 272000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10.0,
cacheReadsPrice: 0.125,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.1-codex": {
maxTokens: 8_192, // 128000 breaks context window truncation
contextWindow: 400000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10.0,
cacheReadsPrice: 0.125,
apiFormat: ApiFormat.OPENAI_RESPONSES_WEBSOCKET_MODE,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5.1-chat-latest": {
maxTokens: 8_192,
contextWindow: 400000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10,
cacheReadsPrice: 0.125,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5-2025-08-07": {
maxTokens: 8_192, // 128000 breaks context window truncation
contextWindow: 272000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10.0,
cacheReadsPrice: 0.125,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5-codex": {
maxTokens: 8_192, // 128000 breaks context window truncation
contextWindow: 400000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10.0,
cacheReadsPrice: 0.125,
apiFormat: ApiFormat.OPENAI_RESPONSES_WEBSOCKET_MODE,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5-mini-2025-08-07": {
maxTokens: 8_192,
contextWindow: 272000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.25,
outputPrice: 2.0,
cacheReadsPrice: 0.025,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5-nano-2025-08-07": {
maxTokens: 8_192,
contextWindow: 272000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.05,
outputPrice: 0.4,
cacheReadsPrice: 0.005,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
"gpt-5-chat-latest": {
maxTokens: 8_192,
contextWindow: 400000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.25,
outputPrice: 10,
cacheReadsPrice: 0.125,
temperature: 1,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
},
o3: {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.0,
outputPrice: 8.0,
cacheReadsPrice: 0.5,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
supportsTools: false,
},
"o4-mini": {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.1,
outputPrice: 4.4,
cacheReadsPrice: 0.275,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
supportsTools: false,
},
"gpt-4.1": {
maxTokens: 32_768,
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2,
outputPrice: 8,
cacheReadsPrice: 0.5,
temperature: 0,
},
"gpt-4.1-mini": {
maxTokens: 32_768,
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.4,
outputPrice: 1.6,
cacheReadsPrice: 0.1,
temperature: 0,
},
"gpt-4.1-nano": {
maxTokens: 32_768,
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.1,
outputPrice: 0.4,
cacheReadsPrice: 0.025,
temperature: 0,
},
"o3-mini": {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.1,
outputPrice: 4.4,
cacheReadsPrice: 0.55,
systemRole: "developer",
supportsReasoning: true,
supportsReasoningEffort: true,
supportsTools: false,
},
// don't support tool use yet
o1: {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 15,
outputPrice: 60,
cacheReadsPrice: 7.5,
supportsStreaming: false,
},
"o1-preview": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 15,
outputPrice: 60,
cacheReadsPrice: 7.5,
supportsStreaming: false,
},
"o1-mini": {
maxTokens: 65_536,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.1,
outputPrice: 4.4,
cacheReadsPrice: 0.55,
supportsStreaming: false,
},
"gpt-4o": {
maxTokens: 4_096,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.5,
outputPrice: 10,
cacheReadsPrice: 1.25,
temperature: 0,
},
"gpt-4o-mini": {
maxTokens: 16_384,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.15,
outputPrice: 0.6,
cacheReadsPrice: 0.075,
temperature: 0,
},
"chatgpt-4o-latest": {
maxTokens: 16_384,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 5,
outputPrice: 15,
temperature: 0,
},
} as const satisfies Record<string, OpenAiCompatibleModelInfo>
// OpenAI Codex (ChatGPT Plus/Pro subscription)
// Uses OAuth authentication via ChatGPT, routes to chatgpt.com/backend-api/codex/responses
// Subscription-based pricing (all costs are $0)
export type OpenAiCodexModelId = keyof typeof openAiCodexModels
export const openAiCodexDefaultModelId: OpenAiCodexModelId = "gpt-5.3-codex"
export const openAiCodexModels = {
"gpt-5.5": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
// Subscription-based: no per-token costs
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.5 Codex: OpenAI's latest flagship coding model via ChatGPT subscription",
},
"gpt-5.4": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
// Subscription-based: no per-token costs
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.4 Codex: OpenAI's latest flagship coding model via ChatGPT subscription",
},
"gpt-5.3-codex": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
// Subscription-based: no per-token costs
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.3 Codex: OpenAI's latest flagship coding model via ChatGPT subscription",
},
"gpt-5.2-codex": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
// Subscription-based: no per-token costs
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.2 Codex: OpenAI's flagship coding model via ChatGPT subscription",
},
"gpt-5.1-codex-max": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.1 Codex Max: Maximum capability coding model via ChatGPT subscription",
},
"gpt-5.1-codex-mini": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.1 Codex Mini: Faster version for coding tasks via ChatGPT subscription",
},
"gpt-5.2": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
apiFormat: ApiFormat.OPENAI_RESPONSES,
inputPrice: 0,
outputPrice: 0,
description: "GPT-5.2: Latest GPT model via ChatGPT subscription",
},
} as const satisfies Record<string, ModelInfo>
// Azure OpenAI
// https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation
// https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#api-specs
export const azureOpenAiDefaultApiVersion = "2024-08-01-preview"
// DeepSeek
// https://api-docs.deepseek.com/quick_start/pricing
export type DeepSeekModelId = keyof typeof deepSeekModels
export const deepSeekDefaultModelId: DeepSeekModelId = "deepseek-chat"
export const deepSeekModels = {
"deepseek-v4-flash": {
maxTokens: 384_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0, // all input is either a cache hit or miss
outputPrice: 0.28,
cacheWritesPrice: 0.14,
cacheReadsPrice: 0.0028,
},
"deepseek-v4-pro": {
maxTokens: 384_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0, // all input is either a cache hit or miss
outputPrice: 0.87,
cacheWritesPrice: 0.435,
cacheReadsPrice: 0.003625,
},
"deepseek-chat": {
maxTokens: 8_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true, // supports context caching, but not in the way anthropic does it (deepseek reports input tokens and reads/writes in the same usage report) FIXME: we need to show users cache stats how deepseek does it
inputPrice: 0, // technically there is no input price, it's all either a cache hit or miss (ApiOptions will not show this). Input is the sum of cache reads and writes
outputPrice: 1.1,
cacheWritesPrice: 0.27,
cacheReadsPrice: 0.07,
},
"deepseek-reasoner": {
maxTokens: 8_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true, // supports context caching, but not in the way anthropic does it (deepseek reports input tokens and reads/writes in the same usage report) FIXME: we need to show users cache stats how deepseek does it
inputPrice: 0, // technically there is no input price, it's all either a cache hit or miss (ApiOptions will not show this)
outputPrice: 2.19,
cacheWritesPrice: 0.55,
cacheReadsPrice: 0.14,
},
} as const satisfies Record<string, ModelInfo>
// Hugging Face Inference Providers
// https://huggingface.co/docs/inference-providers/en/index
export type HuggingFaceModelId = keyof typeof huggingFaceModels
export const huggingFaceDefaultModelId: HuggingFaceModelId = "moonshotai/Kimi-K2-Instruct"
export const huggingFaceModels = {
"openai/gpt-oss-120b": {
maxTokens: 32766,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description:
"Large open-weight reasoning model for high-end desktops and data centers, built for complex coding, math, and general AI tasks.",
},
"openai/gpt-oss-20b": {
maxTokens: 32766,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description:
"Medium open-weight reasoning model that runs on most desktops, balancing strong reasoning with broad accessibility.",
},
"moonshotai/Kimi-K2-Instruct": {
maxTokens: 131_072,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "Advanced reasoning model with superior performance across coding, math, and general capabilities.",
},
"deepseek-ai/DeepSeek-V3-0324": {
maxTokens: 8192,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "Advanced reasoning model with superior performance across coding, math, and general capabilities.",
},
"deepseek-ai/DeepSeek-R1": {
maxTokens: 8192,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "DeepSeek's reasoning model with step-by-step thinking capabilities.",
},
"deepseek-ai/DeepSeek-R1-0528": {
maxTokens: 64_000,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "DeepSeek's reasoning model's latest version with step-by-step thinking capabilities",
},
"meta-llama/Llama-3.1-8B-Instruct": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "Efficient 8B parameter Llama model for general-purpose tasks.",
},
} as const satisfies Record<string, ModelInfo>
// Qwen
// https://bailian.console.aliyun.com/
// The first model in the list is used as the default model for each region
export const internationalQwenModels = {
"qwen3-coder-plus": {
maxTokens: 65_536,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1,
outputPrice: 5,
},
"qwen3-coder-480b-a35b-instruct": {
maxTokens: 65_536,
contextWindow: 204_800,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1.5,
outputPrice: 7.5,
},
"qwen3-235b-a22b": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 8,
cacheWritesPrice: 2,
cacheReadsPrice: 8,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 20,
},
},
"qwen3-32b": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 8,
cacheWritesPrice: 2,
cacheReadsPrice: 8,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 20,
},
},
"qwen3-30b-a3b": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.75,
outputPrice: 3,
cacheWritesPrice: 0.75,
cacheReadsPrice: 3,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 7.5,
},
},
"qwen3-14b": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1,
outputPrice: 4,
cacheWritesPrice: 1,
cacheReadsPrice: 4,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 10,
},
},
"qwen3-8b": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.5,
outputPrice: 2,
cacheWritesPrice: 0.5,
cacheReadsPrice: 2,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 5,
},
},
"qwen3-4b": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.3,
cacheReadsPrice: 1.2,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 3,
},
},
"qwen3-1.7b": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.3,
cacheReadsPrice: 1.2,
thinkingConfig: {
maxBudget: 30_720,
outputPrice: 3,
},
},
"qwen3-0.6b": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.3,
cacheReadsPrice: 1.2,
thinkingConfig: {
maxBudget: 30_720,
outputPrice: 3,
},
},
"qwen2.5-coder-32b-instruct": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.002,
outputPrice: 0.006,
cacheWritesPrice: 0.002,
cacheReadsPrice: 0.006,
},
"qwen2.5-coder-14b-instruct": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.002,
outputPrice: 0.006,
cacheWritesPrice: 0.002,
cacheReadsPrice: 0.006,
},
"qwen2.5-coder-7b-instruct": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.001,
outputPrice: 0.002,
cacheWritesPrice: 0.001,
cacheReadsPrice: 0.002,
},
"qwen2.5-coder-3b-instruct": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen2.5-coder-1.5b-instruct": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen2.5-coder-0.5b-instruct": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen-coder-plus-latest": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 3.5,
outputPrice: 7,
cacheWritesPrice: 3.5,
cacheReadsPrice: 7,
},
"qwen-plus-latest": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 2,
cacheWritesPrice: 0.8,
cacheReadsPrice: 2,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 16,
},
},
"qwen-turbo-latest": {
maxTokens: 16_384,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.6,
cacheWritesPrice: 0.3,
cacheReadsPrice: 0.6,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 6,
},
},
"qwen-max-latest": {
maxTokens: 30_720,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.4,
outputPrice: 9.6,
cacheWritesPrice: 2.4,
cacheReadsPrice: 9.6,
},
"qwen-coder-plus": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 3.5,
outputPrice: 7,
cacheWritesPrice: 3.5,
cacheReadsPrice: 7,
},
"qwen-plus": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 2,
cacheWritesPrice: 0.8,
cacheReadsPrice: 0.2,
},
"qwen-turbo": {
maxTokens: 1_000_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.6,
cacheWritesPrice: 0.3,
cacheReadsPrice: 0.6,
},
"qwen-max": {
maxTokens: 30_720,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.4,
outputPrice: 9.6,
cacheWritesPrice: 2.4,
cacheReadsPrice: 9.6,
},
"deepseek-v3": {
maxTokens: 8_000,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0,
outputPrice: 0.28,
cacheWritesPrice: 0.14,
cacheReadsPrice: 0.014,
},
"deepseek-r1": {
maxTokens: 8_000,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0,
outputPrice: 2.19,
cacheWritesPrice: 0.55,
cacheReadsPrice: 0.14,
},
"qwen-vl-max": {
maxTokens: 30_720,
contextWindow: 32_768,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 3,
outputPrice: 9,
cacheWritesPrice: 3,
cacheReadsPrice: 9,
},
"qwen-vl-max-latest": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 3,
outputPrice: 9,
cacheWritesPrice: 3,
cacheReadsPrice: 9,
},
"qwen-vl-plus": {
maxTokens: 6_000,
contextWindow: 8_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 1.5,
outputPrice: 4.5,
cacheWritesPrice: 1.5,
cacheReadsPrice: 4.5,
},
"qwen-vl-plus-latest": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 1.5,
outputPrice: 4.5,
cacheWritesPrice: 1.5,
cacheReadsPrice: 4.5,
},
} as const satisfies Record<string, ModelInfo>
export const mainlandQwenModels = {
"qwen3-235b-a22b": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 8,
cacheWritesPrice: 2,
cacheReadsPrice: 8,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 20,
},
},
"qwen3-32b": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 8,
cacheWritesPrice: 2,
cacheReadsPrice: 8,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 20,
},
},
"qwen3-30b-a3b": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.75,
outputPrice: 3,
cacheWritesPrice: 0.75,
cacheReadsPrice: 3,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 7.5,
},
},
"qwen3-14b": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1,
outputPrice: 4,
cacheWritesPrice: 1,
cacheReadsPrice: 4,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 10,
},
},
"qwen3-8b": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.5,
outputPrice: 2,
cacheWritesPrice: 0.5,
cacheReadsPrice: 2,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 5,
},
},
"qwen3-4b": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.3,
cacheReadsPrice: 1.2,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 3,
},
},
"qwen3-1.7b": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.3,
cacheReadsPrice: 1.2,
thinkingConfig: {
maxBudget: 30_720,
outputPrice: 3,
},
},
"qwen3-0.6b": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.3,
cacheReadsPrice: 1.2,
thinkingConfig: {
maxBudget: 30_720,
outputPrice: 3,
},
},
"qwen2.5-coder-32b-instruct": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.002,
outputPrice: 0.006,
cacheWritesPrice: 0.002,
cacheReadsPrice: 0.006,
},
"qwen2.5-coder-14b-instruct": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.002,
outputPrice: 0.006,
cacheWritesPrice: 0.002,
cacheReadsPrice: 0.006,
},
"qwen2.5-coder-7b-instruct": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.001,
outputPrice: 0.002,
cacheWritesPrice: 0.001,
cacheReadsPrice: 0.002,
},
"qwen2.5-coder-3b-instruct": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen2.5-coder-1.5b-instruct": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen2.5-coder-0.5b-instruct": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen-coder-plus-latest": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 3.5,
outputPrice: 7,
cacheWritesPrice: 3.5,
cacheReadsPrice: 7,
},
"qwen-plus-latest": {
maxTokens: 16_384,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 2,
cacheWritesPrice: 0.8,
cacheReadsPrice: 2,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 16,
},
},
"qwen-turbo-latest": {
maxTokens: 16_384,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.6,
cacheWritesPrice: 0.3,
cacheReadsPrice: 0.6,
thinkingConfig: {
maxBudget: 38_912,
outputPrice: 6,
},
},
"qwen-max-latest": {
maxTokens: 30_720,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.4,
outputPrice: 9.6,
cacheWritesPrice: 2.4,
cacheReadsPrice: 9.6,
},
"qwq-plus-latest": {
maxTokens: 8_192,
contextWindow: 131_071,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwq-plus": {
maxTokens: 8_192,
contextWindow: 131_071,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
cacheWritesPrice: 0.0,
cacheReadsPrice: 0.0,
},
"qwen-coder-plus": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 3.5,
outputPrice: 7,
cacheWritesPrice: 3.5,
cacheReadsPrice: 7,
},
"qwen-plus": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 2,
cacheWritesPrice: 0.8,
cacheReadsPrice: 0.2,
},
"qwen-turbo": {
maxTokens: 1_000_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.6,
cacheWritesPrice: 0.3,
cacheReadsPrice: 0.6,
},
"qwen-max": {
maxTokens: 30_720,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.4,
outputPrice: 9.6,
cacheWritesPrice: 2.4,
cacheReadsPrice: 9.6,
},
"deepseek-v3": {
maxTokens: 8_000,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0,
outputPrice: 0.28,
cacheWritesPrice: 0.14,
cacheReadsPrice: 0.014,
},
"deepseek-r1": {
maxTokens: 8_000,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0,
outputPrice: 2.19,
cacheWritesPrice: 0.55,
cacheReadsPrice: 0.14,
},
"qwen-vl-max": {
maxTokens: 30_720,
contextWindow: 32_768,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 3,
outputPrice: 9,
cacheWritesPrice: 3,
cacheReadsPrice: 9,
},
"qwen-vl-max-latest": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 3,
outputPrice: 9,
cacheWritesPrice: 3,
cacheReadsPrice: 9,
},
"qwen-vl-plus": {
maxTokens: 6_000,
contextWindow: 8_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 1.5,
outputPrice: 4.5,
cacheWritesPrice: 1.5,
cacheReadsPrice: 4.5,
},
"qwen-vl-plus-latest": {
maxTokens: 129_024,
contextWindow: 131_072,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 1.5,
outputPrice: 4.5,
cacheWritesPrice: 1.5,
cacheReadsPrice: 4.5,
},
} as const satisfies Record<string, ModelInfo>
export enum QwenApiRegions {
CHINA = "china",
INTERNATIONAL = "international",
}
export type MainlandQwenModelId = keyof typeof mainlandQwenModels
export type InternationalQwenModelId = keyof typeof internationalQwenModels
// Set first model in the list as the default model for each region
export const internationalQwenDefaultModelId: InternationalQwenModelId = Object.keys(
internationalQwenModels,
)[0] as InternationalQwenModelId
export const mainlandQwenDefaultModelId: MainlandQwenModelId = Object.keys(mainlandQwenModels)[0] as MainlandQwenModelId
// Doubao
// https://www.volcengine.com/docs/82379/1298459
// https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement
export type DoubaoModelId = keyof typeof doubaoModels
export const doubaoDefaultModelId: DoubaoModelId = "doubao-1-5-pro-256k-250115"
export const doubaoModels = {
"doubao-1-5-pro-256k-250115": {
maxTokens: 12_288,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.7,
outputPrice: 1.3,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
},
"doubao-1-5-pro-32k-250115": {
maxTokens: 12_288,
contextWindow: 32_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.11,
outputPrice: 0.3,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
},
"deepseek-v3-250324": {
maxTokens: 12_288,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.55,
outputPrice: 2.19,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
},
"deepseek-r1-250120": {
maxTokens: 32_768,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.27,
outputPrice: 1.09,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
},
} as const satisfies Record<string, ModelInfo>
// Mistral
// https://docs.mistral.ai/getting-started/models/models_overview/
export type MistralModelId = keyof typeof mistralModels
export const mistralDefaultModelId: MistralModelId = "devstral-2512"
export const mistralModels = {
"devstral-2512": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"labs-devstral-small-2512": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"mistral-large-2512": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.5,
outputPrice: 1.5,
},
"ministral-14b-2512": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.2,
},
"mistral-large-2411": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 6.0,
},
"pixtral-large-2411": {
maxTokens: 131_000,
contextWindow: 131_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 6.0,
},
"ministral-3b-2410": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.04,
outputPrice: 0.04,
},
"ministral-8b-2410": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.1,
},
"mistral-small-latest": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"mistral-medium-latest": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.4,
outputPrice: 2.0,
},
"mistral-small-2501": {
maxTokens: 32_000,
contextWindow: 32_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"pixtral-12b-2409": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.15,
},
"open-mistral-nemo-2407": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.15,
},
"open-codestral-mamba": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.15,
},
"codestral-2501": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.9,
},
"devstral-small-2505": {
maxTokens: 128_000,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"devstral-medium-latest": {
maxTokens: 128_000,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.4,
outputPrice: 2.0,
},
} as const satisfies Record<string, ModelInfo>
// LiteLLM
// https://docs.litellm.ai/docs/
export type LiteLLMModelId = string
export const liteLlmDefaultModelId = "anthropic/claude-3-7-sonnet-20250219"
export interface LiteLLMModelInfo extends ModelInfo {
temperature?: number
}
export const liteLlmModelInfoSaneDefaults: LiteLLMModelInfo = {
maxTokens: -1,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0,
outputPrice: 0,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
temperature: 0,
}
// AskSage Models
// https://docs.asksage.ai/
export type AskSageModelId = keyof typeof askSageModels
export const askSageDefaultModelId: AskSageModelId = "claude-4-sonnet"
export const askSageDefaultURL: string = "https://api.asksage.ai/server"
export const askSageModels = {
"gpt-4o": {
maxTokens: 4096,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gpt-4o-gov": {
maxTokens: 4096,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gpt-4.1": {
maxTokens: 32_768,
contextWindow: 1_047_576,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"claude-35-sonnet": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"aws-bedrock-claude-35-sonnet-gov": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"claude-37-sonnet": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"claude-4.6-sonnet": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"claude-4-sonnet": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"claude-4-opus": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"google-gemini-2.5-pro": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"google-claude-45-sonnet": {
maxTokens: 64000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"google-claude-4-opus": {
maxTokens: 32000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gpt-5": {
maxTokens: 65536,
contextWindow: 2_097_152,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gpt-5-mini": {
maxTokens: 32768,
contextWindow: 1_048_576,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
"gpt-5-nano": {
maxTokens: 16384,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
},
}
// Nebius AI Studio
// https://docs.nebius.com/studio/inference/models
export const nebiusModels = {
"deepseek-ai/DeepSeek-V3": {
maxTokens: 32_000,
contextWindow: 96_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.5,
outputPrice: 1.5,
},
"deepseek-ai/DeepSeek-V3-0324-fast": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 6,
},
"deepseek-ai/DeepSeek-R1": {
maxTokens: 32_000,
contextWindow: 96_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 2.4,
},
"deepseek-ai/DeepSeek-R1-fast": {
maxTokens: 32_000,
contextWindow: 96_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 6,
},
"deepseek-ai/DeepSeek-R1-0528": {
maxTokens: 128_000,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 2.4,
},
"meta-llama/Llama-3.3-70B-Instruct-fast": {
maxTokens: 32_000,
contextWindow: 96_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.25,
outputPrice: 0.75,
},
"Qwen/Qwen2.5-32B-Instruct-fast": {
maxTokens: 8_192,
contextWindow: 32_768,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.13,
outputPrice: 0.4,
},
"Qwen/Qwen2.5-Coder-32B-Instruct-fast": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"Qwen/Qwen3-4B-fast": {
maxTokens: 32_000,
contextWindow: 41_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.08,
outputPrice: 0.24,
},
"Qwen/Qwen3-30B-A3B-fast": {
maxTokens: 32_000,
contextWindow: 41_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.9,
},
"Qwen/Qwen3-235B-A22B": {
maxTokens: 32_000,
contextWindow: 41_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.6,
},
"openai/gpt-oss-120b": {
maxTokens: 32766, // Quantization: fp4
contextWindow: 131_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.6,
},
"moonshotai/Kimi-K2-Instruct": {
maxTokens: 16384, // Quantization: fp4
contextWindow: 131_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.5,
outputPrice: 2.4,
},
"Qwen/Qwen3-Coder-480B-A35B-Instruct": {
maxTokens: 163800, // Quantization: fp8
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.4,
outputPrice: 1.8,
},
"openai/gpt-oss-20b": {
maxTokens: 32766, // Quantization: fp4
contextWindow: 131_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.05,
outputPrice: 0.2,
},
"zai-org/GLM-4.5": {
maxTokens: 98304, // Quantization: fp8
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 2.2,
},
"zai-org/GLM-4.5-Air": {
maxTokens: 98304, // Quantization: fp8
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.2,
outputPrice: 1.2,
},
"deepseek-ai/DeepSeek-R1-0528-fast": {
maxTokens: 128000, // Quantization: fp4
contextWindow: 164_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 6.0,
},
"Qwen/Qwen3-235B-A22B-Instruct-2507": {
maxTokens: 64000, // Quantization: fp8
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.6,
},
"Qwen/Qwen3-30B-A3B": {
maxTokens: 32000, // Quantization: fp8
contextWindow: 41_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"Qwen/Qwen3-32B": {
maxTokens: 16384, // Quantization: fp8
contextWindow: 41_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
},
"Qwen/Qwen3-32B-fast": {
maxTokens: 16384, // Quantization: fp8
contextWindow: 41_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.6,
},
} as const satisfies Record<string, ModelInfo>
export type NebiusModelId = keyof typeof nebiusModels
export const nebiusDefaultModelId = "Qwen/Qwen2.5-32B-Instruct-fast" satisfies NebiusModelId
// W&B Inference by CoreWeave
// https://docs.wandb.ai/inference/models
export const wandbModels = {
"deepseek-ai/DeepSeek-V3.1": {
maxTokens: 8_192,
contextWindow: 161_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.55,
outputPrice: 1.65,
description: "A large hybrid model that supports both thinking and non-thinking modes via prompt templates",
},
"meta-llama/Llama-4-Scout-17B-16E-Instruct": {
maxTokens: 16_384,
contextWindow: 64_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.17,
outputPrice: 0.66,
description: "Multimodal model integrating text and image understanding, ideal for visual tasks and combined analysis",
},
"meta-llama/Llama-3.3-70B-Instruct": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.71,
outputPrice: 0.71,
description: "Multilingual model excelling in conversational tasks, detailed instruction-following, and coding",
},
"meta-llama/Llama-3.1-70B-Instruct": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.8,
outputPrice: 0.8,
description: "Efficient conversational model optimized for responsive multilingual chatbot interactions",
},
"meta-llama/Llama-3.1-8B-Instruct": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.22,
outputPrice: 0.22,
description: "Efficient conversational model optimized for responsive multilingual chatbot interactions",
},
"microsoft/Phi-4-mini-instruct": {
maxTokens: 4_096,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.08,
outputPrice: 0.35,
description: "Compact, efficient model ideal for fast responses in resource-constrained environments",
},
"MiniMaxAI/MiniMax-M2.5": {
maxTokens: 40_960,
contextWindow: 197_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
description:
"MoE model with a highly sparse architecture designed for high-throughput and low latency with strong coding capabilities",
},
"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8": {
maxTokens: 8_192,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.8,
description: "A LatentMoE model designed to deliver strong agentic, reasoning, and conversational capabilities",
},
"openai/gpt-oss-120b": {
maxTokens: 32_768,
contextWindow: 131_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.6,
description: "Efficient Mixture-of-Experts model designed for high-reasoning, agentic and general-purpose use cases",
},
"openai/gpt-oss-20b": {
maxTokens: 32_768,
contextWindow: 131_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.05,
outputPrice: 0.2,
description:
"Lower latency Mixture-of-Experts model trained on OpenAIs Harmony response format with reasoning capabilities",
},
"OpenPipe/Qwen3-14B-Instruct": {
maxTokens: 8_192,
contextWindow: 32_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.05,
outputPrice: 0.22,
description:
"An efficient multilingual, dense, instruction-tuned model, optimized by OpenPipe for building agents with finetuning",
},
"Qwen/Qwen3-235B-A22B-Thinking-2507": {
maxTokens: 32_768,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.1,
description:
"High-performance Mixture-of-Experts model optimized for structured reasoning, math, and long-form generation",
},
"Qwen/Qwen3-235B-A22B-Instruct-2507": {
maxTokens: 32_768,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.1,
description: "Efficient multilingual, Mixture-of-Experts, instruction-tuned model, optimized for logical reasoning",
},
"Qwen/Qwen3-30B-A3B-Instruct-2507": {
maxTokens: 8_192,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
description: "MoE instruction-tuned model with enhanced reasoning, coding, and long-context understanding",
},
"Qwen/Qwen3-Coder-480B-A35B-Instruct": {
maxTokens: 32_768,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1.0,
outputPrice: 1.5,
description:
"Mixture-of-Experts model optimized for agentic coding tasks such as function calling, tool use, and long-context reasoning",
},
"zai-org/GLM-5-FP8": {
maxTokens: 8_192,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1.0,
outputPrice: 3.2,
description: "Mixture-of-Experts model for long-horizon agentic tasks with strong performance on reasoning and coding",
},
} as const satisfies Record<string, ModelInfo>
export type WandbModelId = keyof typeof wandbModels
export const wandbDefaultModelId = "meta-llama/Llama-3.3-70B-Instruct" satisfies WandbModelId
// X AI
// https://docs.x.ai/docs/api-reference
export type XAIModelId = keyof typeof xaiModels
export const xaiDefaultModelId: XAIModelId = "grok-4"
export const xaiModels = {
"grok-4-1-fast-reasoning": {
contextWindow: 2_000_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.2,
cacheReadsPrice: 0.05,
outputPrice: 0.5,
description: "xAI's Grok 4.1 Reasoning Fast - multimodal model with 2M context.",
},
"grok-4-1-fast-non-reasoning": {
contextWindow: 2_000_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.2,
cacheReadsPrice: 0.05,
outputPrice: 0.5,
description: "xAI's Grok 4.1 Non-Reasoning Fast - multimodal model with 2M context.",
},
"grok-code-fast-1": {
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.2,
cacheReadsPrice: 0.02,
outputPrice: 1.5,
description: "xAI's Grok Coding model.",
},
"grok-4-fast-reasoning": {
maxTokens: 30000,
contextWindow: 2000000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.2,
cacheReadsPrice: 0.05,
outputPrice: 0.5,
description: "xAI's Grok 4 Fast (free) multimodal model with 2M context.",
},
"grok-4": {
maxTokens: 8192,
contextWindow: 262144,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3.0, // will have different pricing for long context vs short context
cacheReadsPrice: 0.75,
outputPrice: 15.0,
},
"grok-3-beta": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
description: "X AI's Grok-3 beta model with 131K context window",
},
"grok-3-fast-beta": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 25.0,
description: "X AI's Grok-3 fast beta model with 131K context window",
},
"grok-3-mini-beta": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 0.5,
description: "X AI's Grok-3 mini beta model with 131K context window",
},
"grok-3-mini-fast-beta": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 4.0,
description: "X AI's Grok-3 mini fast beta model with 131K context window",
},
"grok-3": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 3.0,
outputPrice: 15.0,
description: "X AI's Grok-3 model with 131K context window",
},
"grok-3-fast": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 25.0,
description: "X AI's Grok-3 fast model with 131K context window",
},
"grok-3-mini": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 0.5,
description: "X AI's Grok-3 mini model with 131K context window",
},
"grok-3-mini-fast": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 4.0,
description: "X AI's Grok-3 mini fast model with 131K context window",
},
"grok-2-latest": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 10.0,
description: "X AI's Grok-2 model - latest version with 131K context window",
},
"grok-2": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 10.0,
description: "X AI's Grok-2 model with 131K context window",
},
"grok-2-1212": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 10.0,
description: "X AI's Grok-2 model (version 1212) with 131K context window",
},
"grok-2-vision-latest": {
maxTokens: 8192,
contextWindow: 32768,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 10.0,
description: "X AI's Grok-2 Vision model - latest version with image support and 32K context window",
},
"grok-2-vision": {
maxTokens: 8192,
contextWindow: 32768,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 10.0,
description: "X AI's Grok-2 Vision model with image support and 32K context window",
},
"grok-2-vision-1212": {
maxTokens: 8192,
contextWindow: 32768,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 2.0,
outputPrice: 10.0,
description: "X AI's Grok-2 Vision model (version 1212) with image support and 32K context window",
},
"grok-vision-beta": {
maxTokens: 8192,
contextWindow: 8192,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 5.0,
outputPrice: 15.0,
description: "X AI's Grok Vision Beta model with image support and 8K context window",
},
"grok-beta": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 5.0,
outputPrice: 15.0,
description: "X AI's Grok Beta model (legacy) with 131K context window",
},
} as const satisfies Record<string, ModelInfo>
// SambaNova
// https://docs.sambanova.ai/cloud/docs/get-started/supported-models
export type SambanovaModelId = keyof typeof sambanovaModels
export const sambanovaDefaultModelId: SambanovaModelId = "Meta-Llama-3.3-70B-Instruct"
export const sambanovaModels = {
"DeepSeek-V3.1": {
maxTokens: 7168,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
temperature: 0.6,
inputPrice: 3.0,
outputPrice: 4.5,
},
"DeepSeek-V3.2": {
maxTokens: 7168,
contextWindow: 32768,
supportsImages: false,
supportsPromptCache: false,
temperature: 0.6,
inputPrice: 3.0,
outputPrice: 4.5,
},
"Llama-4-Maverick-17B-128E-Instruct": {
maxTokens: 4096,
contextWindow: 131072,
supportsImages: true,
supportsPromptCache: false,
temperature: 0.6,
inputPrice: 0.63,
outputPrice: 1.8,
},
"Meta-Llama-3.3-70B-Instruct": {
maxTokens: 3072,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
temperature: 0.6,
inputPrice: 0.6,
outputPrice: 1.2,
},
"MiniMax-M2.7": {
maxTokens: 196608,
contextWindow: 196608,
supportsImages: false,
supportsPromptCache: false,
temperature: 1.0,
inputPrice: 0.6,
outputPrice: 2.4,
},
} as const satisfies Record<string, ModelInfo>
// Cerebras
// https://inference-docs.cerebras.ai/api-reference/models
export type CerebrasModelId = keyof typeof cerebrasModels
export const cerebrasDefaultModelId: CerebrasModelId = "zai-glm-4.7"
export const cerebrasModels = {
"zai-glm-4.7": {
maxTokens: 40000,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
temperature: 0.9,
inputPrice: 0,
outputPrice: 0,
description:
"Highly capable general-purpose model on Cerebras (up to 1,000 tokens/s), competitive with leading proprietary models on coding tasks.",
},
"gpt-oss-120b": {
maxTokens: 65536,
contextWindow: 128000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "Intelligent general purpose model with 3,000 tokens/s",
},
"qwen-3-235b-a22b-instruct-2507": {
maxTokens: 64000,
contextWindow: 64000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
description: "Intelligent model with ~1400 tokens/s",
},
} as const satisfies Record<string, ModelInfo>
// Groq
// https://console.groq.com/docs/models
// https://groq.com/pricing/
export type GroqModelId = keyof typeof groqModels
export const groqDefaultModelId: GroqModelId = "moonshotai/kimi-k2-instruct-0905"
export const groqModels = {
"openai/gpt-oss-120b": {
maxTokens: 32766, // Model fails if you try to use more than 32K tokens
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.75,
description:
"A state-of-the-art 120B open-weight Mixture-of-Experts language model optimized for strong reasoning, tool use, and efficient deployment on large GPUs",
},
"openai/gpt-oss-20b": {
maxTokens: 32766, // Model fails if you try to use more than 32K tokens
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.5,
description:
"A compact 20B open-weight Mixture-of-Experts language model designed for strong reasoning and tool use, ideal for edge devices and local inference.",
},
// Compound Beta Models - Hybrid architectures optimized for tool use
"compound-beta": {
maxTokens: 8192,
contextWindow: 128000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
description:
"Compound model using Llama 4 Scout for core reasoning with Llama 3.3 70B for routing and tool use. Excellent for plan/act workflows.",
},
"compound-beta-mini": {
maxTokens: 8192,
contextWindow: 128000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.0,
outputPrice: 0.0,
description: "Lightweight compound model for faster inference while maintaining tool use capabilities.",
},
// DeepSeek Models - Reasoning-optimized
"deepseek-r1-distill-llama-70b": {
maxTokens: 131072,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.75,
outputPrice: 0.99,
description:
"DeepSeek R1 reasoning capabilities distilled into Llama 70B architecture. Excellent for complex problem-solving and planning.",
},
// Llama 4 Models
"meta-llama/llama-4-maverick-17b-128e-instruct": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.6,
description: "Meta's Llama 4 Maverick 17B model with 128 experts, supports vision and multimodal tasks.",
},
"meta-llama/llama-4-scout-17b-16e-instruct": {
maxTokens: 8192,
contextWindow: 131072,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.11,
outputPrice: 0.34,
description: "Meta's Llama 4 Scout 17B model with 16 experts, optimized for fast inference and general tasks.",
},
// Llama 3.3 Models
"llama-3.3-70b-versatile": {
maxTokens: 32768,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.59,
outputPrice: 0.79,
description: "Meta's latest Llama 3.3 70B model optimized for versatile use cases with excellent performance and speed.",
},
// Llama 3.1 Models - Fast inference
"llama-3.1-8b-instant": {
maxTokens: 131072,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.05,
outputPrice: 0.08,
description: "Fast and efficient Llama 3.1 8B model optimized for speed, low latency, and reliable tool execution.",
},
// Moonshot Models
"moonshotai/kimi-k2-instruct": {
maxTokens: 16384,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.0,
outputPrice: 3.0,
cacheReadsPrice: 0.5, // 50% discount for cached input tokens
description:
"Kimi K2 is Moonshot AI's state-of-the-art Mixture-of-Experts (MoE) language model with 1 trillion total parameters and 32 billion activated parameters.",
},
"moonshotai/kimi-k2-instruct-0905": {
maxTokens: 16384,
contextWindow: 262144,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 2.5,
cacheReadsPrice: 0.15,
description:
"Kimi K2 model gets a new version update: Agentic coding: more accurate, better generalization across scaffolds. Frontend coding: improved aesthetics and functionalities on web, 3d, and other tasks. Context length: extended from 128k to 256k, providing better long-horizon support.",
},
} as const satisfies Record<string, ModelInfo>
// Requesty
// https://requesty.ai/models
export const requestyDefaultModelId = "anthropic/claude-sonnet-5"
export const requestyDefaultModelInfo: ModelInfo = {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2.0,
outputPrice: 10.0,
cacheWritesPrice: 2.5,
cacheReadsPrice: 0.2,
description: "Anthropic's latest Sonnet model for coding, agents, and professional work.",
}
// SAP AI Core
export type SapAiCoreModelId = keyof typeof sapAiCoreModels
export const sapAiCoreDefaultModelId: SapAiCoreModelId = "anthropic--claude-3.5-sonnet"
// Pricing is calculated using Capacity Units, not directly in USD
const sapAiCoreModelDescription = "Pricing is calculated using SAP's Capacity Units rather than direct USD pricing."
export const sapAiCoreModels = {
"anthropic--claude-sonnet-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4.5-haiku": {
maxTokens: 64000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4.6-sonnet": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4.5-sonnet": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4-sonnet": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4.7-opus": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4.6-opus": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4.5-opus": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-4-opus": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-3.7-sonnet": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"anthropic--claude-3.5-sonnet": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"anthropic--claude-3-sonnet": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"anthropic--claude-3-haiku": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"anthropic--claude-3-opus": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"amazon--nova-pro": {
maxTokens: 10_000,
contextWindow: 300_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"amazon--nova-lite": {
maxTokens: 10_000,
contextWindow: 300_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"amazon--nova-micro": {
maxTokens: 10_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"gemini-2.5-pro": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
thinkingConfig: {
maxBudget: 32767,
},
description: sapAiCoreModelDescription,
},
"gemini-2.5-flash": {
maxTokens: 65536,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
thinkingConfig: {
maxBudget: 24576,
},
description: sapAiCoreModelDescription,
},
"gemini-2.5-flash-lite": {
maxTokens: 65535,
contextWindow: 1_048_576,
supportsImages: true,
supportsPromptCache: true,
thinkingConfig: {
maxBudget: 24576,
},
description: sapAiCoreModelDescription,
},
"gemini-2.5-flash-image": {
maxTokens: 32_768,
contextWindow: 32_768,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"gpt-4": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"gpt-4o": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"gpt-4o-mini": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"gpt-4.1": {
maxTokens: 32_768,
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-4.1-nano": {
maxTokens: 32_768,
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5": {
maxTokens: 128_000,
contextWindow: 272_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5-nano": {
maxTokens: 128_000,
contextWindow: 272_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5-mini": {
maxTokens: 128_000,
contextWindow: 272_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5.2": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5.5": {
maxTokens: 128_000,
contextWindow: 1_050_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5.4": {
maxTokens: 128_000,
contextWindow: 1_050_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"gpt-5.4-nano": {
maxTokens: 128_000,
contextWindow: 400_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
o1: {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
o3: {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
"o3-mini": {
maxTokens: 4096,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"o4-mini": {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
description: sapAiCoreModelDescription,
},
sonar: {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"sonar-pro": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"mistralai--mistral-medium-instruct": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"mistralai--mistral-large-instruct": {
maxTokens: 8192,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"mistralai--mistral-small-instruct": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"mistralai--mistral-small": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
"cohere--command-a-reasoning": {
maxTokens: 8192,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
description: sapAiCoreModelDescription,
},
} as const satisfies Record<string, ModelInfo>
// Moonshot AI Studio
// https://platform.moonshot.ai/docs/pricing/chat
export const moonshotModels = {
"kimi-k2.6": {
maxTokens: 32_000,
contextWindow: 262_144,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.95,
outputPrice: 4.0,
cacheReadsPrice: 0.16,
temperature: 1.0,
},
"kimi-k2.5": {
maxTokens: 32_000,
contextWindow: 262_144,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 3.0,
cacheReadsPrice: 0.1,
temperature: 1.0,
},
"kimi-k2-0905-preview": {
maxTokens: 16384,
contextWindow: 262144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.6,
outputPrice: 2.5,
temperature: 0.6,
},
"kimi-k2-0711-preview": {
maxTokens: 32_000,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.6,
outputPrice: 2.5,
temperature: 0.6,
},
"kimi-k2-turbo-preview": {
maxTokens: 32_000,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.4,
outputPrice: 10,
temperature: 0.6,
},
"kimi-k2-thinking": {
maxTokens: 32_000,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.6,
outputPrice: 2.5,
temperature: 1.0,
},
"kimi-k2-thinking-turbo": {
maxTokens: 32_000,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.4,
outputPrice: 10,
temperature: 1.0,
},
} as const satisfies Record<string, OpenAiCompatibleModelInfo>
export type MoonshotModelId = keyof typeof moonshotModels
export const moonshotDefaultModelId = "kimi-k2-0905-preview" satisfies MoonshotModelId
// Huawei Cloud MaaS
// Dify.ai - No model selection needed, models are configured in Dify workflows
export type HuaweiCloudMaasModelId = keyof typeof huaweiCloudMaasModels
export const huaweiCloudMaasDefaultModelId: HuaweiCloudMaasModelId = "DeepSeek-V3"
export const huaweiCloudMaasModels = {
"DeepSeek-V3": {
maxTokens: 16_384,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.27,
outputPrice: 1.1,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
},
"DeepSeek-R1": {
maxTokens: 16_384,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.55,
outputPrice: 2.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
thinkingConfig: {
maxBudget: 8192,
outputPrice: 2.2,
},
},
"deepseek-r1-250528": {
maxTokens: 16_384,
contextWindow: 64_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.55,
outputPrice: 2.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
thinkingConfig: {
maxBudget: 8192,
outputPrice: 2.2,
},
},
"qwen3-235b-a22b": {
maxTokens: 8_192,
contextWindow: 32_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.27,
outputPrice: 1.1,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
thinkingConfig: {
maxBudget: 4096,
outputPrice: 1.1,
},
},
"qwen3-32b": {
maxTokens: 8_192,
contextWindow: 32_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.27,
outputPrice: 1.1,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
thinkingConfig: {
maxBudget: 4096,
outputPrice: 1.1,
},
},
} as const satisfies Record<string, ModelInfo>
// Baseten
// https://baseten.co/products/model-apis/
// Extended ModelInfo to include supportedFeatures, like tools
export interface BasetenModelInfo extends ModelInfo {
supportedFeatures?: string[]
}
export const basetenModels = {
"moonshotai/Kimi-K2-Thinking": {
maxTokens: 163_800,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.6,
outputPrice: 2.5,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Kimi K2 Thinking - A model with enhanced reasoning capabilities from Kimi K2",
supportsReasoning: true,
},
"zai-org/GLM-4.6": {
maxTokens: 200_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.6,
outputPrice: 2.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Frontier open model with advanced agentic, reasoning and coding capabilities",
supportsReasoning: true,
},
"deepseek-ai/DeepSeek-R1": {
maxTokens: 131_072,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.55,
outputPrice: 5.95,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "DeepSeek's first-generation reasoning model",
supportsReasoning: true,
},
"deepseek-ai/DeepSeek-R1-0528": {
maxTokens: 131_072,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.55,
outputPrice: 5.95,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "The latest revision of DeepSeek's first-generation reasoning model",
supportsReasoning: true,
},
"deepseek-ai/DeepSeek-V3-0324": {
maxTokens: 131_072,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.77,
outputPrice: 0.77,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Fast general-purpose LLM with enhanced reasoning capabilities",
supportsReasoning: true,
},
"deepseek-ai/DeepSeek-V3.1": {
maxTokens: 131_072,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.5,
outputPrice: 1.5,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Extremely capable general-purpose LLM with hybrid reasoning capabilities and advanced tool calling",
supportsReasoning: true,
},
"deepseek-ai/DeepSeek-V3.2": {
maxTokens: 131_072,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.45,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "DeepSeek's hybrid reasoning model with efficient long context scaling with GPT-5 level performance",
supportsReasoning: true,
},
"Qwen/Qwen3-235B-A22B-Instruct-2507": {
maxTokens: 262_144,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.22,
outputPrice: 0.8,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Mixture-of-experts LLM with math and reasoning capabilities",
supportsReasoning: false,
},
"Qwen/Qwen3-Coder-480B-A35B-Instruct": {
maxTokens: 262_144,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.38,
outputPrice: 1.53,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Mixture-of-experts LLM with advanced coding and reasoning capabilities",
supportsReasoning: false,
},
"openai/gpt-oss-120b": {
maxTokens: 128_072,
contextWindow: 128_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.5,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Extremely capable general-purpose LLM with strong, controllable reasoning capabilities",
supportsReasoning: true,
},
"moonshotai/Kimi-K2-Instruct-0905": {
maxTokens: 168_000,
contextWindow: 262_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.6,
outputPrice: 2.5,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "State of the art language model for agentic and coding tasks. September Update.",
supportsReasoning: false,
},
} as const satisfies Record<string, ModelInfo>
export type BasetenModelId = keyof typeof basetenModels
export const basetenDefaultModelId = "zai-org/GLM-4.6" satisfies BasetenModelId
// Z AI
// https://docs.z.ai/guides/llm/glm-5.2
// https://docs.z.ai/guides/llm/glm-5.1
// https://docs.z.ai/guides/llm/glm-5
// https://docs.z.ai/guides/overview/pricing
export type internationalZAiModelId = keyof typeof internationalZAiModels
export const internationalZAiDefaultModelId: internationalZAiModelId = "glm-5.1"
export const internationalZAiModels = {
"glm-5.2": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.26,
inputPrice: 1.4,
outputPrice: 4.4,
},
"glm-5.1": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.26,
inputPrice: 1.4,
outputPrice: 4.4,
},
"glm-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.2,
inputPrice: 1.0,
outputPrice: 3.2,
},
"glm-4.7": {
maxTokens: 131_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.11,
inputPrice: 0.6,
outputPrice: 2.2,
},
"glm-4.6": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.11,
inputPrice: 0.6,
outputPrice: 2.2,
},
"glm-4.5": {
maxTokens: 98_304,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 2.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0.11,
description:
"GLM-4.5 is Zhipu's latest featured model. Its comprehensive capabilities in reasoning, coding, and agent reach the state-of-the-art (SOTA) level among open-source models, with a context length of up to 128k.",
},
"glm-4.5-air": {
maxTokens: 98304, // Quantization: fp8
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.2,
outputPrice: 1.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0.03,
description:
"GLM-4.5-Air is the lightweight version of GLM-4.5. It balances performance and cost-effectiveness, and can flexibly switch to hybrid thinking models.",
},
} as const satisfies Record<string, ModelInfo>
export type mainlandZAiModelId = keyof typeof mainlandZAiModels
export const mainlandZAiDefaultModelId: mainlandZAiModelId = "glm-5.1"
export const mainlandZAiModels = {
"glm-5.2": {
maxTokens: 128_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.26,
inputPrice: 1.4,
outputPrice: 4.4,
},
"glm-5.1": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.26,
inputPrice: 1.4,
outputPrice: 4.4,
},
"glm-5": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.2,
inputPrice: 1.0,
outputPrice: 3.2,
},
"glm-4.7": {
maxTokens: 131_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.11,
inputPrice: 0.6,
outputPrice: 2.2,
},
"glm-4.6": {
maxTokens: 128_000,
contextWindow: 200_000,
supportsImages: false,
supportsPromptCache: true,
cacheReadsPrice: 0.11,
inputPrice: 0.6,
outputPrice: 2.2,
},
"glm-4.5": {
maxTokens: 98_304,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.29,
outputPrice: 1.14,
cacheWritesPrice: 0,
cacheReadsPrice: 0.057,
description:
"GLM-4.5 is Zhipu's latest featured model. Its comprehensive capabilities in reasoning, coding, and agent reach the state-of-the-art (SOTA) level among open-source models, with a context length of up to 128k.",
tiers: [
{
contextWindow: 32_000,
inputPrice: 0.21,
outputPrice: 1.0,
cacheReadsPrice: 0.043,
},
{
contextWindow: 128_000,
inputPrice: 0.29,
outputPrice: 1.14,
cacheReadsPrice: 0.057,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 0.29,
outputPrice: 1.14,
cacheReadsPrice: 0.057,
},
],
},
"glm-4.5-air": {
maxTokens: 98304, // Quantization: fp8
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.086,
outputPrice: 0.57,
cacheWritesPrice: 0,
cacheReadsPrice: 0.017,
description:
"GLM-4.5-Air is the lightweight version of GLM-4.5. It balances performance and cost-effectiveness, and can flexibly switch to hybrid thinking models.",
tiers: [
{
contextWindow: 32_000,
inputPrice: 0.057,
outputPrice: 0.43,
cacheReadsPrice: 0.011,
},
{
contextWindow: 128_000,
inputPrice: 0.086,
outputPrice: 0.57,
cacheReadsPrice: 0.017,
},
{
contextWindow: Number.POSITIVE_INFINITY,
inputPrice: 0.086,
outputPrice: 0.57,
cacheReadsPrice: 0.017,
},
],
},
} as const satisfies Record<string, ModelInfo>
// Fireworks AI
export type FireworksModelId = keyof typeof fireworksModels
export const fireworksDefaultModelId: FireworksModelId = "accounts/fireworks/models/kimi-k2p6"
export const fireworksModels = {
"accounts/fireworks/models/kimi-k2p7-code": {
maxTokens: 262000,
contextWindow: 262000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.95,
outputPrice: 4,
cacheWritesPrice: 0,
cacheReadsPrice: 0.19,
description:
"Moonshot's latest open coding model. Kimi K2.7 Code unifies vision and text, thinking and non-thinking modes, and single-agent and multi-agent execution.",
},
"accounts/fireworks/models/kimi-k2p6": {
maxTokens: 262000,
contextWindow: 262000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.95,
outputPrice: 4,
cacheWritesPrice: 0,
cacheReadsPrice: 0.16,
description:
"Moonshot's latest open agentic model. Kimi K2.6 unifies vision and text, thinking and non-thinking modes, and single-agent and multi-agent execution.",
},
"accounts/fireworks/routers/kimi-k2p6-turbo": {
maxTokens: 262000,
contextWindow: 262000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2,
outputPrice: 8,
cacheWritesPrice: 0,
cacheReadsPrice: 0.3,
description:
"Kimi K2.6 Turbo router for high-performance agentic workloads with vision and text reasoning.",
},
"accounts/fireworks/routers/kimi-k2p6-fast": {
maxTokens: 262000,
contextWindow: 262000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 2,
outputPrice: 8,
cacheWritesPrice: 0,
cacheReadsPrice: 0.3,
description:
"Kimi K2.6 Fast router for high-performance agentic workloads with vision and text reasoning.",
},
"accounts/fireworks/routers/kimi-k2p7-code-fast": {
maxTokens: 262000,
contextWindow: 262000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1.9,
outputPrice: 8,
cacheWritesPrice: 0,
cacheReadsPrice: 0.38,
description:
"Kimi K2.7 Code Fast router for high-performance coding workloads with vision and text reasoning.",
},
"accounts/fireworks/models/deepseek-v4-flash": {
maxTokens: 384000,
contextWindow: 1000000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.14,
outputPrice: 0.28,
cacheWritesPrice: 0,
cacheReadsPrice: 0.028,
description:
"DeepSeek V4 Flash is a fast, cost-efficient reasoning model with a 1M context window and strong tool-use capabilities.",
},
"accounts/fireworks/models/deepseek-v4-pro": {
maxTokens: 384000,
contextWindow: 1000000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.74,
outputPrice: 3.48,
cacheWritesPrice: 0,
cacheReadsPrice: 0.145,
description:
"DeepSeek V4 Pro is a flagship reasoning model with a 1M context window, advanced structured output, and agentic performance.",
},
"accounts/fireworks/models/glm-5p2": {
maxTokens: 131072,
contextWindow: 1048576,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.4,
outputPrice: 4.4,
cacheWritesPrice: 0,
cacheReadsPrice: 0.26,
description: "GLM 5.2 is a next-generation general-purpose model optimized for coding, reasoning, and agentic workflows with a 1M context window.",
},
"accounts/fireworks/models/glm-5p1": {
maxTokens: 131072,
contextWindow: 202800,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.4,
outputPrice: 4.4,
cacheWritesPrice: 0,
cacheReadsPrice: 0.26,
description: "GLM 5.1 is a next-generation general-purpose model optimized for coding, reasoning, and agentic workflows.",
},
"accounts/fireworks/routers/glm-5p1-fast": {
maxTokens: 131072,
contextWindow: 202800,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 2.8,
outputPrice: 8.8,
cacheWritesPrice: 0,
cacheReadsPrice: 0.52,
description: "GLM 5.1 Fast router for high-throughput coding, reasoning, and agentic workflows.",
},
"accounts/fireworks/models/minimax-m3": {
maxTokens: 512000,
contextWindow: 512000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0.06,
description: "MiniMax M3 is built for state-of-the-art coding, agentic tool use, and long-context multimodal tasks.",
},
"accounts/fireworks/models/minimax-m2p7": {
maxTokens: 196608,
contextWindow: 196608,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0.06,
description: "MiniMax M2.7 is tuned for strong real-world performance across coding, agent-driven, and workflow-heavy tasks.",
},
"accounts/fireworks/models/qwen3p7-plus": {
maxTokens: 262144,
contextWindow: 262144,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.4,
outputPrice: 1.6,
cacheWritesPrice: 0,
cacheReadsPrice: 0.08,
description: "Qwen 3.7 Plus with strong multimodal reasoning, long context support, and function calling.",
},
"accounts/fireworks/models/gpt-oss-120b": {
maxTokens: 32768,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.15,
outputPrice: 0.6,
cacheWritesPrice: 0,
cacheReadsPrice: 0.015,
description: "OpenAI GPT OSS 120B open-weight model for production and high-reasoning use cases.",
},
"accounts/fireworks/models/gpt-oss-20b": {
maxTokens: 32768,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.07,
outputPrice: 0.3,
cacheWritesPrice: 0,
cacheReadsPrice: 0.035,
description: "OpenAI GPT OSS 20B open-weight model for efficient production and reasoning use cases.",
},
} as const satisfies Record<string, ModelInfo>
// Qwen Code
// https://chat.qwen.ai/
export const qwenCodeModels = {
"qwen3-coder-plus": {
maxTokens: 65_536,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Qwen3 Coder Plus - High-performance coding model with 1M context window for large codebases",
},
"qwen3-coder-flash": {
maxTokens: 65_536,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0,
outputPrice: 0,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
description: "Qwen3 Coder Flash - Fast coding model with 1M context window optimized for speed",
},
} as const satisfies Record<string, ModelInfo>
export type QwenCodeModelId = keyof typeof qwenCodeModels
export const qwenCodeDefaultModelId: QwenCodeModelId = "qwen3-coder-plus"
// Minimax
// https://www.minimax.io/platform/document/text_api_intro
// https://www.minimax.io/platform/document/pricing
export type MinimaxModelId = keyof typeof minimaxModels
export const minimaxDefaultModelId: MinimaxModelId = "MiniMax-M2.7"
export const minimaxModels = {
"MiniMax-M3": {
maxTokens: 32_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.6,
outputPrice: 2.4,
cacheWritesPrice: 0.6,
cacheReadsPrice: 0.12,
tiers: [
{
contextWindow: 512_000,
inputPrice: 0.6,
outputPrice: 2.4,
cacheWritesPrice: 0.6,
cacheReadsPrice: 0.12,
},
{
contextWindow: Number.MAX_SAFE_INTEGER,
inputPrice: 1.2,
outputPrice: 4.8,
cacheWritesPrice: 1.2,
cacheReadsPrice: 0.24,
},
],
description: "Latest M-series model for coding, agentic reasoning, tool use, and long-context multimodal tasks",
},
"MiniMax-M2.7": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.375,
cacheReadsPrice: 0.06,
description: "Latest flagship model with enhanced reasoning and coding",
},
"MiniMax-M2.7-highspeed": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.6,
outputPrice: 2.4,
cacheWritesPrice: 0.375,
cacheReadsPrice: 0.06,
description: "High-speed version of M2.7 for low-latency scenarios",
},
"MiniMax-M2.5": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.375,
cacheReadsPrice: 0.03,
},
"MiniMax-M2.5-highspeed": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: true,
supportsReasoning: true,
inputPrice: 0.6,
outputPrice: 2.4,
cacheWritesPrice: 0.375,
cacheReadsPrice: 0.03,
},
"MiniMax-M2.1": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0.375,
cacheReadsPrice: 0.03,
},
"MiniMax-M2.1-lightning": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 2.4,
cacheWritesPrice: 0.375,
cacheReadsPrice: 0.03,
},
"MiniMax-M2": {
maxTokens: 128_000,
contextWindow: 192_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 1.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0,
},
} as const satisfies Record<string, ModelInfo>
// NousResearch
// https://inference-api.nousResearch.com
export type NousResearchModelId = keyof typeof nousResearchModels
export const nousResearchDefaultModelId: NousResearchModelId = "Hermes-4-405B"
export const nousResearchModels = {
"Hermes-4-405B": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.09,
outputPrice: 0.37,
description:
"This is the largest model in the Hermes 4 family, and it is the fullest expression of our design, focused on advanced reasoning and creative depth rather than optimizing inference speed or cost.",
},
"Hermes-4-70B": {
maxTokens: 8192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.05,
outputPrice: 0.2,
description:
"This incarnation of Hermes 4 balances scale and size. It handles complex reasoning tasks, while staying fast and cost effective. A versatile choice for many use cases.",
},
} as const satisfies Record<string, ModelInfo>