Files
OmniRoute/src/shared/constants/pricing.ts
NOXX - Commiter 0bc670e414 feat(openai): honor custom base URL in model discovery + complete openai/codex pricing (#4005)
Integrated into release/v3.8.27 — openai model-discovery honors custom base URL (SSRF-guarded) + pricing rows for new openai/codex models. Tested + baselines bumped.
2026-06-16 13:08:37 -03:00

1581 lines
36 KiB
TypeScript

// Default pricing rates for AI models
// All rates are in dollars per million tokens ($/1M tokens)
// Based on user-provided pricing for Antigravity models and industry standards for others
// Shared pricing constants to reduce duplication
const GPT_5_3_CODEX_PRICING = {
input: 5.0,
output: 20.0,
cached: 2.5,
reasoning: 30.0,
cache_creation: 5.0,
};
const GPT_5_5_PRICING = {
input: 5.0,
output: 30.0,
cached: 0.5,
reasoning: 30.0,
cache_creation: 5.0,
};
const CLAUDE_FABLE_5_PRICING = {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 112.5,
cache_creation: 15.0,
};
const CLAUDE_OPUS_4_PRICING = {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 112.5,
cache_creation: 15.0,
};
const CLAUDE_SONNET_4_PRICING = {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
};
const CLAUDE_OPUS_46_PRICING = {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 37.5,
cache_creation: 5.0,
};
const CLAUDE_SONNET_46_PRICING = {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 22.5,
cache_creation: 3.0,
};
const GLM_PRICING = {
"glm-5.2": {
input: 1.2,
output: 5,
cached: 0.3,
reasoning: 5,
cache_creation: 1.2,
},
"glm-5.2-high": {
input: 1.2,
output: 5,
cached: 0.3,
reasoning: 5,
cache_creation: 1.2,
},
"glm-5.2-max": {
input: 1.2,
output: 5,
cached: 0.3,
reasoning: 5,
cache_creation: 1.2,
},
"glm-5.1": {
input: 1.2,
output: 5,
cached: 0.3,
reasoning: 5,
cache_creation: 1.2,
},
"glm-5": {
input: 1.0,
output: 3.2,
cached: 0.2,
reasoning: 4.8,
cache_creation: 1.0,
},
"glm-5-turbo": {
input: 1.2,
output: 4.0,
cached: 0.24,
reasoning: 4.0,
cache_creation: 1.2,
},
"glm-4.7-flash": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"glm-4.7": {
input: 0.6,
output: 2.2,
cached: 0.11,
reasoning: 2.2,
cache_creation: 0.6,
},
"glm-4.6": {
input: 0.6,
output: 2.2,
cached: 0.11,
reasoning: 2.2,
cache_creation: 0.6,
},
"glm-4.6v": {
input: 0.3,
output: 0.9,
cached: 0.05,
reasoning: 0.9,
cache_creation: 0.3,
},
"glm-4.5v": {
input: 0.6,
output: 1.8,
cached: 0.11,
reasoning: 1.8,
cache_creation: 0.6,
},
"glm-4.5": {
input: 0.6,
output: 2.2,
cached: 0.11,
reasoning: 2.2,
cache_creation: 0.6,
},
"glm-4.5-air": {
input: 0.2,
output: 1.1,
cached: 0.03,
reasoning: 1.1,
cache_creation: 0.2,
},
};
export const DEFAULT_PRICING = {
// OAuth Providers (using aliases)
// Claude Code (cc)
cc: {
"claude-fable-5": {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 37.5,
cache_creation: 5.0,
},
"claude-opus-4-8": {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 25.0,
cache_creation: 5.0,
},
"claude-opus-4-7": {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 25.0,
cache_creation: 5.0,
},
"claude-opus-4-6": {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 25.0,
cache_creation: 5.0,
},
"claude-sonnet-4-6": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
"claude-opus-4-5-20251101": {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 75.0,
cache_creation: 15.0,
},
"claude-sonnet-4-5-20250929": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
"claude-haiku-4-5-20251001": {
input: 0.5,
output: 2.5,
cached: 0.25,
reasoning: 2.5,
cache_creation: 0.5,
},
},
// OpenAI Codex (cx)
cx: {
"codex-auto-review": GPT_5_5_PRICING,
// GPT 5.5
"gpt-5.5": GPT_5_5_PRICING,
"gpt5.5": GPT_5_5_PRICING,
"gpt-5.5-xhigh": GPT_5_5_PRICING,
"gpt-5.5-high": GPT_5_5_PRICING,
"gpt-5.5-medium": GPT_5_5_PRICING,
"gpt-5.5-low": GPT_5_5_PRICING,
"gpt-5.5-none": GPT_5_5_PRICING,
// GPT 5.4
"gpt-5.4": {
input: 5.0,
output: 20.0,
cached: 2.5,
reasoning: 30.0,
cache_creation: 5.0,
},
"gpt5.4": {
input: 5.0,
output: 20.0,
cached: 2.5,
reasoning: 30.0,
cache_creation: 5.0,
},
// T12: fallback pricing for gpt-5.4 mini variants
"gpt-5.4-mini": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
"gpt5.4-mini": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
// gpt-5.4 reasoning-effort variants share the gpt-5.4 tier (registry exposes
// -xhigh/-high/-medium/-low; without these rows they resolved to $0).
"gpt-5.4-xhigh": GPT_5_3_CODEX_PRICING,
"gpt-5.4-high": GPT_5_3_CODEX_PRICING,
"gpt-5.4-medium": GPT_5_3_CODEX_PRICING,
"gpt-5.4-low": GPT_5_3_CODEX_PRICING,
// GPT 5.3 Codex family (all same pricing tier)
"gpt-5.3-codex-spark": GPT_5_3_CODEX_PRICING,
"gpt-5.3-codex": GPT_5_3_CODEX_PRICING,
"gpt-5.3-codex-xhigh": GPT_5_3_CODEX_PRICING,
"gpt-5.3-codex-high": GPT_5_3_CODEX_PRICING,
"gpt-5.3-codex-low": GPT_5_3_CODEX_PRICING,
"gpt-5.3-codex-none": GPT_5_3_CODEX_PRICING,
"gpt-5.1-codex-mini-high": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
"gpt-5.2-codex": {
input: 5.0,
output: 20.0,
cached: 2.5,
reasoning: 30.0,
cache_creation: 5.0,
},
"gpt-5.2": {
input: 5.0,
output: 20.0,
cached: 2.5,
reasoning: 30.0,
cache_creation: 5.0,
},
"gpt-5.1-codex-max": {
input: 8.0,
output: 32.0,
cached: 4.0,
reasoning: 48.0,
cache_creation: 8.0,
},
"gpt-5.1-codex": {
input: 4.0,
output: 16.0,
cached: 2.0,
reasoning: 24.0,
cache_creation: 4.0,
},
"gpt-5.1-codex-mini": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
"gpt-5.1": {
input: 4.0,
output: 16.0,
cached: 2.0,
reasoning: 24.0,
cache_creation: 4.0,
},
"gpt-5-codex": {
input: 3.0,
output: 12.0,
cached: 1.5,
reasoning: 18.0,
cache_creation: 3.0,
},
"gpt-5-codex-mini": {
input: 1.0,
output: 4.0,
cached: 0.5,
reasoning: 6.0,
cache_creation: 1.0,
},
},
// Gemini CLI
"gemini-cli": {
"gemini-3-flash-preview": {
input: 0.5,
output: 3.0,
cached: 0.03,
reasoning: 4.5,
cache_creation: 0.5,
},
"gemini-3.1-flash-lite-preview": {
input: 0.5,
output: 3.0,
cached: 0.03,
reasoning: 4.5,
cache_creation: 0.5,
},
"gemini-3-pro-preview": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-3.1-pro-preview": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-2.5-pro": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-2.5-flash": {
input: 0.3,
output: 2.5,
cached: 0.03,
reasoning: 3.75,
cache_creation: 0.3,
},
// Gemini 2.5 Flash Lite — preco corrigido via ClawRouter: $0.10/$0.40 (era $0.15/$1.25)
"gemini-2.5-flash-lite": {
input: 0.1,
output: 0.4,
cached: 0.025,
reasoning: 0.6,
cache_creation: 0.1,
},
},
// Qwen Code (qw)
qw: {
"qwen3-coder-plus": {
input: 1.0,
output: 4.0,
cached: 0.5,
reasoning: 6.0,
cache_creation: 1.0,
},
// Next-generation Qwen Coder tier (added Mar 2026)
"qwen3-coder-next": {
input: 2.0,
output: 8.0,
cached: 1.0,
reasoning: 12.0,
cache_creation: 2.0,
},
"qwen3-coder-flash": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
"vision-model": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
},
// Qoder AI (if)
if: {
"qwen3-coder-plus": {
input: 1.0,
output: 4.0,
cached: 0.5,
reasoning: 6.0,
cache_creation: 1.0,
},
"kimi-k2": {
input: 1.0,
output: 4.0,
cached: 0.5,
reasoning: 6.0,
cache_creation: 1.0,
},
"kimi-k2-thinking": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
"deepseek-r1": {
input: 0.75,
output: 3.0,
cached: 0.375,
reasoning: 4.5,
cache_creation: 0.75,
},
"deepseek-v3.2-chat": {
input: 0.28,
output: 0.42,
cached: 0.014,
reasoning: 0.63,
cache_creation: 0.28,
},
"deepseek-v3.2": {
input: 0.28,
output: 0.42,
cached: 0.014,
reasoning: 0.63,
cache_creation: 0.28,
},
"deepseek-v3.2-reasoner": {
input: 0.55,
output: 2.19,
cached: 0.14,
reasoning: 2.19,
cache_creation: 0.55,
},
// Short-form aliases (Mar 2026)
"deepseek-3.1": {
input: 0.27,
output: 1.1,
cached: 0.07,
reasoning: 2.2,
cache_creation: 0.27,
},
"deepseek-3.2": {
input: 0.27,
output: 1.1,
cached: 0.07,
reasoning: 2.2,
cache_creation: 0.27,
},
"minimax-m2": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
"glm-4.6": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
"glm-4.7": {
input: 0.75,
output: 3.0,
cached: 0.375,
reasoning: 4.5,
cache_creation: 0.75,
},
},
// Antigravity (ag) - User-provided pricing
ag: {
"gemini-3.1-pro-low": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-3.1-pro-high": {
input: 4.0,
output: 18.0,
cached: 0.5,
reasoning: 27.0,
cache_creation: 4.0,
},
"gemini-3-flash": {
input: 0.5,
output: 3.0,
cached: 0.03,
reasoning: 4.5,
cache_creation: 0.5,
},
"claude-sonnet-4-6": {
input: 3.0,
output: 15.0,
cached: 0.3,
reasoning: 22.5,
cache_creation: 3.0,
},
"claude-opus-4-6-thinking": {
input: 5.0,
output: 25.0,
cached: 0.5,
reasoning: 37.5,
cache_creation: 5.0,
},
"gpt-oss-120b-medium": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
},
// GitHub Copilot (gh)
gh: {
"gpt-5": {
input: 3.0,
output: 12.0,
cached: 1.5,
reasoning: 18.0,
cache_creation: 3.0,
},
"gpt-5-mini": {
input: 0.75,
output: 3.0,
cached: 0.375,
reasoning: 4.5,
cache_creation: 0.75,
},
"gpt-5.1-codex": {
input: 4.0,
output: 16.0,
cached: 2.0,
reasoning: 24.0,
cache_creation: 4.0,
},
"gpt-5.1-codex-max": {
input: 8.0,
output: 32.0,
cached: 4.0,
reasoning: 48.0,
cache_creation: 8.0,
},
"gpt-4.1": {
input: 2.5,
output: 10.0,
cached: 1.25,
reasoning: 15.0,
cache_creation: 2.5,
},
"claude-4.5-sonnet": {
input: 3.0,
output: 15.0,
cached: 0.3,
reasoning: 22.5,
cache_creation: 3.0,
},
"claude-4.5-opus": {
input: 5.0,
output: 25.0,
cached: 0.5,
reasoning: 37.5,
cache_creation: 5.0,
},
"claude-4.5-haiku": {
input: 0.5,
output: 2.5,
cached: 0.05,
reasoning: 3.75,
cache_creation: 0.5,
},
"gemini-3-pro": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-3-flash": {
input: 0.5,
output: 3.0,
cached: 0.03,
reasoning: 4.5,
cache_creation: 0.5,
},
"gemini-2.5-pro": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"grok-code-fast-1": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
},
// API Key Providers (alias = id)
// OpenAI
openai: {
"gpt-5.5": GPT_5_5_PRICING,
// gpt-5.4 family (public API tier; mirrors the codex 5.4 tier for the
// base/mini, with a lower nano tier). Without these rows the openai
// provider's gpt-5.4* models resolved to $0.
"gpt-5.4": {
input: 5.0,
output: 20.0,
cached: 2.5,
reasoning: 30.0,
cache_creation: 5.0,
},
"gpt-5.4-mini": {
input: 1.5,
output: 6.0,
cached: 0.75,
reasoning: 9.0,
cache_creation: 1.5,
},
"gpt-5.4-nano": {
input: 0.4,
output: 1.6,
cached: 0.2,
reasoning: 2.4,
cache_creation: 0.4,
},
"gpt-4.1": {
input: 2.0,
output: 8.0,
cached: 0.5,
reasoning: 12.0,
cache_creation: 2.0,
},
"gpt-4o": {
input: 2.5,
output: 10.0,
cached: 1.25,
reasoning: 15.0,
cache_creation: 2.5,
},
"gpt-4o-2024-11-20": {
input: 2.5,
output: 10.0,
cached: 1.25,
reasoning: 15.0,
cache_creation: 2.5,
},
"gpt-4o-mini": {
input: 0.15,
output: 0.6,
cached: 0.075,
reasoning: 0.9,
cache_creation: 0.15,
},
o3: {
input: 2.0,
output: 8.0,
cached: 0.5,
reasoning: 12.0,
cache_creation: 2.0,
},
"gpt-4-turbo": {
input: 10.0,
output: 30.0,
cached: 5.0,
reasoning: 45.0,
cache_creation: 10.0,
},
o1: {
input: 15.0,
output: 60.0,
cached: 7.5,
reasoning: 90.0,
cache_creation: 15.0,
},
"o1-mini": {
input: 3.0,
output: 12.0,
cached: 1.5,
reasoning: 18.0,
cache_creation: 3.0,
},
},
// Anthropic
anthropic: {
"claude-sonnet-4-20250514": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
"claude-opus-4-20250514": {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 112.5,
cache_creation: 15.0,
},
"claude-3-5-sonnet-20241022": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
// Claude 4.5 Haiku — modelo eco mais recente da Anthropic (2025-10)
"claude-haiku-4-5-20251001": {
input: 1.0,
output: 5.0,
cached: 0.5,
reasoning: 7.5,
cache_creation: 1.0,
},
"claude-haiku-4.5": {
input: 1.0,
output: 5.0,
cached: 0.5,
reasoning: 7.5,
cache_creation: 1.0,
},
// Claude Sonnet 4.6 — maxOutput 64k tokens, $3/$15/M
"claude-sonnet-4-6-20251031": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 22.5,
cache_creation: 3.0,
},
"claude-sonnet-4.6": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 22.5,
cache_creation: 3.0,
},
// Claude Opus 4.6 — mais barato que Opus 4 ($5/$25 vs $15/$75)
"claude-opus-4-6-20251031": {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 37.5,
cache_creation: 5.0,
},
"claude-opus-4.6": {
input: 5.0,
output: 25.0,
cached: 2.5,
reasoning: 37.5,
cache_creation: 5.0,
},
// Common model IDs (without dates) used across providers
// Intentional duplicates of dot-notation variants (e.g. claude-opus-4.6)
// to cover hyphen-notation IDs (claude-opus-4-6) used by some clients
"claude-fable-5": CLAUDE_FABLE_5_PRICING,
"claude-opus-4.8": CLAUDE_OPUS_4_PRICING,
"claude-opus-4-8": CLAUDE_OPUS_4_PRICING,
"claude-opus-4-7": CLAUDE_OPUS_4_PRICING,
"claude-opus-4-6": CLAUDE_OPUS_46_PRICING,
"claude-sonnet-4-6": CLAUDE_SONNET_46_PRICING,
"claude-opus-4-5-20251101": CLAUDE_OPUS_4_PRICING,
"claude-sonnet-4-5-20250929": CLAUDE_SONNET_4_PRICING,
"claude-sonnet-4": CLAUDE_SONNET_4_PRICING,
"claude-opus-4": CLAUDE_OPUS_4_PRICING,
},
// Gemini
gemini: {
// Gemini 3.1 Pro — novo flagship Google (2026-03-17)
// Context: 1.050.000 tokens | Max Output: 65.536
"gemini-3.1-pro": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-3-1-pro": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-3-pro-preview": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-3.1-pro-preview": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-2.5-pro": {
input: 2.0,
output: 12.0,
cached: 0.25,
reasoning: 18.0,
cache_creation: 2.0,
},
"gemini-2.5-flash": {
input: 0.3,
output: 2.5,
cached: 0.03,
reasoning: 3.75,
cache_creation: 0.3,
},
// Gemini 2.5 Flash Lite — preco corrigido: $0.10/$0.40 (ClawRouter)
"gemini-2.5-flash-lite": {
input: 0.1,
output: 0.4,
cached: 0.025,
reasoning: 0.6,
cache_creation: 0.1,
},
},
// DeepSeek — API nativa (V3.2 Chat), separada de free providers
// Preco: $0.28/$0.42/M tokens (verificado via ClawRouter 2026-03-17)
deepseek: {
"deepseek-chat": {
input: 0.28,
output: 0.42,
cached: 0.014,
reasoning: 0.42,
cache_creation: 0.28,
},
"deepseek-v3": {
input: 0.28,
output: 0.42,
cached: 0.014,
reasoning: 0.42,
cache_creation: 0.28,
},
"deepseek-v3.2": {
input: 0.28,
output: 0.42,
cached: 0.014,
reasoning: 0.42,
cache_creation: 0.28,
},
"deepseek-reasoner": {
input: 0.55,
output: 2.19,
cached: 0.14,
reasoning: 2.19,
cache_creation: 0.55,
},
"deepseek-r1": {
input: 0.55,
output: 2.19,
cached: 0.14,
reasoning: 2.19,
cache_creation: 0.55,
},
// DeepSeek V4 Pro — promo until 2026-05-31, then list ($0.145 / $3.48)
"deepseek-v4-pro": {
input: 0.435,
output: 0.87,
cached: 0.0036,
reasoning: 0.87,
cache_creation: 0.435,
},
"deepseek-v4-flash": {
input: 0.07,
output: 0.28,
cached: 0.014,
reasoning: 0.28,
cache_creation: 0.07,
},
},
// OpenRouter
agentrouter: {
auto: { input: 2.0, output: 8.0 },
},
openrouter: {
auto: {
input: 2.0,
output: 8.0,
cached: 1.0,
reasoning: 12.0,
cache_creation: 2.0,
},
},
// GLM
glm: GLM_PRICING,
glmt: GLM_PRICING,
// Kimi (Moonshot)
kimi: {
"kimi-latest": {
input: 1.0,
output: 4.0,
cached: 0.5,
reasoning: 6.0,
cache_creation: 1.0,
},
// Kimi K2.5 — acesso direto via Moonshot API
// Context: 262.144 tokens | Capabilities: reasoning, vision, agentic, tools
"kimi-k2.5": {
input: 0.6,
output: 3.0,
cached: 0.3,
reasoning: 4.5,
cache_creation: 0.6,
},
"kimi-k2.5-thinking": {
input: 0.6,
output: 3.0,
cached: 0.3,
reasoning: 4.5,
cache_creation: 0.6,
},
"kimi-for-coding": {
input: 0.6,
output: 3.0,
cached: 0.3,
reasoning: 4.5,
cache_creation: 0.6,
},
"moonshot-kimi-k2.5": {
input: 0.6,
output: 3.0,
cached: 0.3,
reasoning: 4.5,
cache_creation: 0.6,
},
},
// Kimi Coding aliases (OAuth/API key)
kmc: {
"kimi-k2.5": { input: 0.6, output: 3.0, cached: 0.3, reasoning: 4.5, cache_creation: 0.6 },
"kimi-k2.5-thinking": {
input: 0.6,
output: 3.0,
cached: 0.3,
reasoning: 4.5,
cache_creation: 0.6,
},
"kimi-latest": { input: 1.0, output: 4.0, cached: 0.5, reasoning: 6.0, cache_creation: 1.0 },
},
kmca: {
"kimi-k2.5": { input: 0.6, output: 3.0, cached: 0.3, reasoning: 4.5, cache_creation: 0.6 },
"kimi-k2.5-thinking": {
input: 0.6,
output: 3.0,
cached: 0.3,
reasoning: 4.5,
cache_creation: 0.6,
},
"kimi-latest": { input: 1.0, output: 4.0, cached: 0.5, reasoning: 6.0, cache_creation: 1.0 },
},
// MiniMax
minimax: {
"minimax-m2.1": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
"MiniMax-M2.1": {
input: 0.5,
output: 2.0,
cached: 0.25,
reasoning: 3.0,
cache_creation: 0.5,
},
// MiniMax M2.5 — mais barato que M2.1, reasoning + tools
// Context: 204.800 tokens | Max Output: 16.384 tokens
"minimax-m2.5": {
input: 0.27,
output: 0.95,
cached: 0.135,
reasoning: 1.425,
cache_creation: 0.27,
},
"MiniMax-M2.5": {
input: 0.27,
output: 0.95,
cached: 0.135,
reasoning: 1.425,
cache_creation: 0.27,
},
// T12: MiniMax M2.7 — new default model (sub2api PR #1120)
// Upgraded from M2.5, same API endpoint api.minimax.io
// Pricing estimated, check https://platform.minimaxi.com/document/Price
"minimax-m2.7": {
input: 0.4,
output: 1.6,
cached: 0.2,
reasoning: 2.4,
cache_creation: 0.4,
},
"MiniMax-M2.7": {
input: 0.4,
output: 1.6,
cached: 0.2,
reasoning: 2.4,
cache_creation: 0.4,
},
"minimax-m2.7-highspeed": {
input: 0.4,
output: 1.6,
cached: 0.2,
reasoning: 2.4,
cache_creation: 0.4,
},
},
// ─── Free-tier API Key Providers (nominal $0 pricing) ───
// Groq
groq: {
"openai/gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"llama-3.3-70b-versatile": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"meta-llama/llama-4-maverick-17b-128e-instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"qwen/qwen3-32b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
},
// Blackbox AI
blackbox: {
"gpt-4o": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"gemini-2.5-flash": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"claude-sonnet-4": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"deepseek-v3": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
blackboxai: { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"blackboxai-pro": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
},
// Fireworks
fireworks: {
"accounts/fireworks/models/gpt-oss-120b": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"accounts/fireworks/models/deepseek-v3p1": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"accounts/fireworks/models/llama-v3p3-70b-instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"accounts/fireworks/models/qwen3-235b-a22b": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
},
// Cerebras
cerebras: {
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"zai-glm-4.7": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"llama-3.3-70b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"llama-4-scout-17b-16e-instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"qwen-3-235b-a22b-instruct-2507": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"qwen-3-32b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
},
// Nvidia
nvidia: {
"nvidia/gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"openai/gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"moonshotai/kimi-k2.5": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"z-ai/glm4.7": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"deepseek-ai/deepseek-v3.2": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"nvidia/llama-3.3-70b-instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"meta/llama-4-maverick-17b-128e-instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"deepseek/deepseek-r1": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
},
// Nebius
nebius: {
"openai/gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"meta-llama/Llama-3.3-70B-Instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
},
// SiliconFlow
siliconflow: {
"openai/gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"deepseek-ai/DeepSeek-V3.2": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"deepseek-ai/DeepSeek-V3.1": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"deepseek-ai/DeepSeek-R1": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"Qwen/Qwen3-235B-A22B-Instruct-2507": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"Qwen/Qwen3-Coder-480B-A35B-Instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"Qwen/Qwen3-32B": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"moonshotai/Kimi-K2.5": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"zai-org/GLM-4.7": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"baidu/ERNIE-4.5-300B-A47B": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
},
// Hyperbolic
hyperbolic: {
"openai/gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"gpt-oss-120b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"Qwen/QwQ-32B": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"deepseek-ai/DeepSeek-R1": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"deepseek-ai/DeepSeek-V3": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 },
"meta-llama/Llama-3.3-70B-Instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"meta-llama/Llama-3.2-3B-Instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"Qwen/Qwen2.5-72B-Instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"Qwen/Qwen2.5-Coder-32B-Instruct": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
"NousResearch/Hermes-3-Llama-3.1-70B": {
input: 0,
output: 0,
cached: 0,
reasoning: 0,
cache_creation: 0,
},
},
// ─────────────────────────────────────────────────────────────────────
// xAI (Grok) — Grok-3 + Grok-4 Family
// Source: ClawRouter benchmarks 2026-03-17
// Grok-4-fast-non-reasoning: 1143ms P50 (mais rapido do benchmark)
// ─────────────────────────────────────────────────────────────────────
xai: {
"grok-3": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 22.5,
cache_creation: 3.0,
},
"grok-3-mini": {
input: 0.3,
output: 0.5,
cached: 0.15,
reasoning: 0.75,
cache_creation: 0.3,
},
// Grok-4 Fast Family — ultrabaratos ($0.20/$0.50/M)
"grok-4-fast-non-reasoning": {
input: 0.2,
output: 0.5,
cached: 0.1,
reasoning: 0.0,
cache_creation: 0.2,
},
"grok-4-fast-reasoning": {
input: 0.2,
output: 0.5,
cached: 0.1,
reasoning: 0.75,
cache_creation: 0.2,
},
"grok-4-1-fast-non-reasoning": {
input: 0.2,
output: 0.5,
cached: 0.1,
reasoning: 0.0,
cache_creation: 0.2,
},
"grok-4-1-fast-reasoning": {
input: 0.2,
output: 0.5,
cached: 0.1,
reasoning: 0.75,
cache_creation: 0.2,
},
"grok-4-0709": {
input: 0.2,
output: 1.5,
cached: 0.1,
reasoning: 2.25,
cache_creation: 0.2,
},
},
// ─────────────────────────────────────────────────────────────────────
// Z.AI / ZhipuAI — GLM-5 Family
// Adicionados via ClawRouter 2026-03-17 | maxOutput: 128k tokens!
// ─────────────────────────────────────────────────────────────────────
zai: {
"glm-5": {
input: 0.38,
output: 1.98,
cached: 0.19,
reasoning: 2.97,
cache_creation: 0.38,
},
"glm-5-turbo": {
input: 1.2,
output: 4.0,
cached: 0.6,
reasoning: 6.0,
cache_creation: 1.2,
},
"glm-4.7": {
input: 0.38,
output: 1.98,
cached: 0.19,
reasoning: 2.97,
cache_creation: 0.38,
},
},
kiro: {
"claude-fable-5": {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 112.5,
cache_creation: 15.0,
},
"claude-sonnet-4.5": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
"claude-haiku-4.5": {
input: 0.5,
output: 2.5,
cached: 0.25,
reasoning: 2.5,
cache_creation: 0.5,
},
// Models from issue #334
"claude-sonnet-4": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
"claude-opus-4.8": {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 75.0,
cache_creation: 15.0,
},
"claude-opus-4.7": {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 75.0,
cache_creation: 15.0,
},
"claude-opus-4.6": {
input: 15.0,
output: 75.0,
cached: 7.5,
reasoning: 75.0,
cache_creation: 15.0,
},
"claude-sonnet-4.6": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
"deepseek-v3.2": {
input: 0.27,
output: 1.1,
cached: 0.07,
reasoning: 1.1,
cache_creation: 0.27,
},
// Registry exposes this model as "deepseek-3.2" (no "v") — keep both keys priced.
"deepseek-3.2": {
input: 0.27,
output: 1.1,
cached: 0.07,
reasoning: 1.1,
cache_creation: 0.27,
},
"minimax-m2.1": {
input: 0.4,
output: 1.6,
cached: 0.1,
reasoning: 1.6,
cache_creation: 0.4,
},
// MiniMax M2.5 — cheaper than M2.1, reasoning + tools
"minimax-m2.5": {
input: 0.27,
output: 0.95,
cached: 0.135,
reasoning: 1.425,
cache_creation: 0.27,
},
"glm-5": {
input: 1.0,
output: 3.2,
cached: 0.2,
reasoning: 4.8,
cache_creation: 1.0,
},
"qwen3-coder-next": {
input: 2.0,
output: 8.0,
cached: 0.5,
reasoning: 8.0,
cache_creation: 2.0,
},
// Kiro "Auto" model — routes to best available
auto: {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
// Registry exposes the Auto model as id "auto-kiro" — keep both keys priced.
"auto-kiro": {
input: 3.0,
output: 15.0,
cached: 1.5,
reasoning: 15.0,
cache_creation: 3.0,
},
},
};
type ProviderPricingTable = Record<string, Record<string, unknown>>;
type PricingRow = {
input: number;
output: number;
cached?: number;
reasoning?: number;
cache_creation?: number;
};
type TokenUsage = Record<string, number | undefined>;
/**
* Get pricing for a specific provider and model
* @param {string} provider - Provider ID (e.g., "openai", "cc", "gemini-cli")
* @param {string} model - Model ID
* @returns {object|null} Pricing object or null if not found
*/
export function getPricingForModel(
provider: string,
model: string
): Record<string, unknown> | null {
if (!provider || !model) return null;
const providerPricing = (DEFAULT_PRICING as ProviderPricingTable)[provider];
if (!providerPricing) return null;
const modelPricing = providerPricing[model];
if (!modelPricing || typeof modelPricing !== "object") return null;
return modelPricing as Record<string, unknown>;
}
/**
* Get all pricing data
* @returns {object} All default pricing
*/
export function getDefaultPricing() {
return DEFAULT_PRICING;
}
export { formatCost } from "../utils/formatting";
/**
* Calculate cost from tokens and pricing
* @param {object} tokens - Token counts
* @param {object} pricing - Pricing object
* @returns {number} Cost in dollars
*/
export function calculateCostFromTokens(
tokens: TokenUsage | null | undefined,
pricing: PricingRow | null | undefined
): number {
if (!tokens || !pricing) return 0;
let cost = 0;
// Input tokens (non-cached)
const inputTokens = tokens.prompt_tokens || tokens.input_tokens || 0;
const cachedTokens = tokens.cached_tokens || tokens.cache_read_input_tokens || 0;
const nonCachedInput = Math.max(0, inputTokens - cachedTokens);
cost += nonCachedInput * (pricing.input / 1000000);
// Cached tokens
if (cachedTokens > 0) {
const cachedRate = pricing.cached || pricing.input; // Fallback to input rate
cost += cachedTokens * (cachedRate / 1000000);
}
// Output tokens
const outputTokens = tokens.completion_tokens || tokens.output_tokens || 0;
cost += outputTokens * (pricing.output / 1000000);
// Reasoning tokens
const reasoningTokens = tokens.reasoning_tokens || 0;
if (reasoningTokens > 0) {
const reasoningRate = pricing.reasoning || pricing.output; // Fallback to output rate
cost += reasoningTokens * (reasoningRate / 1000000);
}
// Cache creation tokens
const cacheCreationTokens = tokens.cache_creation_input_tokens || 0;
if (cacheCreationTokens > 0) {
const cacheCreationRate = pricing.cache_creation || pricing.input; // Fallback to input rate
cost += cacheCreationTokens * (cacheCreationRate / 1000000);
}
return cost;
}