freellmapi / server /src /db /model-pricing.ts
Nryn215's picture
Deploy: Enable and enforce pure ELO-based Intelligence routing strategy
ed57015
Raw
History Blame Contribute Delete
10.2 kB
import type Database from 'better-sqlite3';
/**
* Paid-equivalent pricing per model: what the SAME model (or its nearest
* equivalent) costs per million tokens on paid APIs. Used by the analytics
* "Est. savings" stat so it reflects realistic savings rather than pricing
* every token like a frontier model.
*
* Source: OpenRouter public pricing API (paid, non-:free variants),
* snapshot 2026-06-05; closed models use their official API prices.
* `null` = no paid equivalent exists (stealth/preview models) β€” analytics
* falls back to a modest default.
*
* Format: [platform, model_id, $/M input, $/M output]
*/
type PricingRow = [string, string, number | null, number | null];
export const MODEL_PRICING: PricingRow[] = [
// Cerebras
['cerebras', 'gpt-oss-120b', 0.039, 0.18],
['cerebras', 'llama3.1-8b', 0.02, 0.03],
['cerebras', 'qwen-3-235b-a22b-instruct-2507', 0.071, 0.10],
['cerebras', 'zai-glm-4.7', 0.40, 1.75],
// legacy ids (older DBs)
['cerebras', 'qwen-3-coder-480b', 0.22, 1.80],
['cerebras', 'llama-4-maverick-17b-128e-instruct', 0.15, 0.60],
['cerebras', 'qwen3-235b', 0.455, 1.82],
// Cloudflare Workers AI
['cloudflare', '@cf/deepseek-ai/deepseek-r1-distill-qwen-32b', 0.29, 0.29],
['cloudflare', '@cf/google/gemma-4-26b-a4b-it', 0.06, 0.33],
['cloudflare', '@cf/ibm-granite/granite-4.0-h-micro', 0.017, 0.112],
['cloudflare', '@cf/meta/llama-3.3-70b-instruct-fp8-fast', 0.10, 0.32],
['cloudflare', '@cf/meta/llama-4-scout-17b-16e-instruct', 0.08, 0.30],
['cloudflare', '@cf/moonshotai/kimi-k2.6', 0.684, 3.42],
['cloudflare', '@cf/nvidia/nemotron-3-120b-a12b', 0.09, 0.45],
['cloudflare', '@cf/openai/gpt-oss-120b', 0.039, 0.18],
['cloudflare', '@cf/qwen/qwen3-30b-a3b-fp8', 0.09, 0.45],
['cloudflare', '@cf/zai-org/glm-4.7-flash', 0.06, 0.40],
['cloudflare', '@cf/meta/llama-3.1-70b-instruct', 0.40, 0.40], // legacy
// Cohere (official API prices; Reasoning shares Command A pricing)
['cohere', 'command-a-03-2025', 2.50, 10.00],
['cohere', 'command-a-reasoning-08-2025', 2.50, 10.00],
['cohere', 'command-r-08-2024', 0.15, 0.60],
['cohere', 'command-r-plus-08-2024', 2.50, 10.00],
// GitHub Models (OpenAI official prices)
['github', 'gpt-4o', 2.50, 10.00],
['github', 'openai/gpt-4.1', 2.00, 8.00],
['github', 'openai/gpt-5', 1.25, 10.00], // legacy
// Google AI Studio (official prices)
['google', 'gemini-2.5-flash', 0.30, 2.50],
['google', 'gemini-2.5-flash-lite', 0.10, 0.40],
['google', 'gemini-2.5-pro', 1.25, 10.00],
['google', 'gemini-3-flash-preview', 0.50, 3.00],
['google', 'gemini-3.1-flash-lite-preview', 0.25, 1.50],
['google', 'gemini-3.1-pro-preview', 2.00, 12.00],
['google', 'gemini-3.5-flash', 1.50, 9.00],
['google', 'gemma-4-26b-a4b-it', 0.06, 0.33],
['google', 'gemma-4-31b-it', 0.12, 0.37],
// Groq (compound is an agentic pipeline β€” estimated at its underlying
// gpt-oss models' prices)
['groq', 'groq/compound', 0.039, 0.18],
['groq', 'groq/compound-mini', 0.029, 0.14],
['groq', 'llama-3.1-8b-instant', 0.02, 0.03],
['groq', 'llama-3.3-70b-versatile', 0.10, 0.32],
['groq', 'meta-llama/llama-4-scout-17b-16e-instruct', 0.08, 0.30],
['groq', 'llama-4-scout-17b-16e-instruct', 0.08, 0.30], // legacy id
['groq', 'openai/gpt-oss-120b', 0.039, 0.18],
['groq', 'openai/gpt-oss-20b', 0.029, 0.14],
['groq', 'openai/gpt-oss-safeguard-20b', 0.075, 0.30],
['groq', 'qwen/qwen3-32b', 0.08, 0.28],
// Hugging Face Inference
['huggingface', 'Qwen/Qwen3-Coder-Next', 0.11, 0.80],
['huggingface', 'deepseek-ai/DeepSeek-V4-Flash', 0.098, 0.197],
['huggingface', 'moonshotai/Kimi-K2.6', 0.684, 3.42],
['huggingface', 'accounts/fireworks/models/llama-v3p3-70b-instruct', 0.10, 0.32], // legacy
// Kilo (Poolside Laguna is stealth β€” no paid equivalent)
['kilo', 'nvidia/nemotron-3-super-120b-a12b:free', 0.09, 0.45],
['kilo', 'poolside/laguna-m.1:free', null, null],
['kilo', 'poolside/laguna-xs.2:free', null, null],
['kilo', 'stepfun/step-3.7-flash:free', 0.20, 1.15],
// LLM7
['llm7', 'codestral-latest', 0.30, 0.90],
// Mistral (official La Plateforme prices; Magistral per official page)
['mistral', 'codestral-latest', 0.30, 0.90],
['mistral', 'devstral-latest', 0.40, 2.00],
['mistral', 'magistral-medium-latest', 2.00, 5.00],
['mistral', 'ministral-8b-latest', 0.15, 0.15],
['mistral', 'mistral-large-latest', 0.50, 1.50],
['mistral', 'mistral-medium-latest', 1.50, 7.50],
['mistral', 'mistral-small-latest', 0.15, 0.60],
// Moonshot / MiniMax (legacy platforms, may exist in older DBs)
['moonshot', 'kimi-latest', 0.684, 3.42],
['minimax', 'MiniMax-M1', 0.40, 2.20],
// NVIDIA NIM
['nvidia', 'deepseek-ai/deepseek-v4-flash', 0.098, 0.197],
['nvidia', 'deepseek-ai/deepseek-v4-pro', 0.435, 0.87],
['nvidia', 'google/gemma-4-31b-it', 0.12, 0.37],
['nvidia', 'meta/llama-3.1-70b-instruct', 0.40, 0.40],
['nvidia', 'meta/llama-3.3-70b-instruct', 0.10, 0.32],
['nvidia', 'meta/llama-4-maverick-17b-128e-instruct', 0.15, 0.60],
['nvidia', 'minimaxai/minimax-m2.7', 0.279, 1.20],
['nvidia', 'mistralai/mistral-large-3-675b-instruct-2512', 0.50, 1.50],
['nvidia', 'moonshotai/kimi-k2.6', 0.684, 3.42],
['nvidia', 'nvidia/nemotron-3-nano-30b-a3b', 0.05, 0.20],
['nvidia', 'nvidia/nemotron-3-super-120b-a12b', 0.09, 0.45],
['nvidia', 'qwen/qwen3-coder-480b-a35b-instruct', 0.22, 1.80],
['nvidia', 'z-ai/glm-5.1', 0.98, 3.08],
// Ollama (local models priced at their cloud-API equivalents β€” that's
// what running them elsewhere would cost)
['ollama', 'cogito-2.1:671b', 1.25, 1.25],
['ollama', 'deepseek-v3.2', 0.229, 0.343],
['ollama', 'devstral-2:123b', 0.40, 2.00],
['ollama', 'gemma4:31b', 0.12, 0.37],
['ollama', 'glm-4.7', 0.40, 1.75],
['ollama', 'gpt-oss:120b', 0.039, 0.18],
['ollama', 'gpt-oss:20b', 0.029, 0.14],
['ollama', 'kimi-k2-thinking', 0.60, 2.50],
['ollama', 'mistral-large-3:675b', 0.50, 1.50],
['ollama', 'qwen3-coder-next', 0.11, 0.80],
['ollama', 'qwen3-coder:480b', 0.22, 1.80],
// OpenCode Zen (big-pickle is stealth β€” no equivalent; V24 rows priced at
// the OpenRouter paid variants, snapshot 2026-06-07)
['opencode', 'big-pickle', null, null],
['opencode', 'deepseek-v4-flash-free', 0.098, 0.197],
['opencode', 'mimo-v2.5-free', 0.14, 0.28],
['opencode', 'minimax-m3-free', 0.30, 1.20],
['opencode', 'nemotron-3-super-free', 0.09, 0.45],
['opencode', 'nemotron-3-ultra-free', 0.50, 2.50],
// OpenRouter :free pools (priced at the same model's paid variant)
// V23 additions snapshot the OpenRouter pricing API on 2026-06-07.
['openrouter', 'cognitivecomputations/dolphin-mistral-24b-venice-edition:free', null, null], // free-only route
['openrouter', 'google/gemma-4-26b-a4b-it:free', 0.06, 0.33],
['openrouter', 'google/gemma-4-31b-it:free', 0.12, 0.37],
['openrouter', 'meta-llama/llama-3.2-3b-instruct:free', 0.05, 0.34],
['openrouter', 'moonshotai/kimi-k2.6:free', 0.684, 3.42],
['openrouter', 'nvidia/nemotron-3-ultra-550b-a55b:free', 0.50, 2.50],
['openrouter', 'nvidia/nemotron-nano-12b-v2-vl:free', null, null], // no paid variant listed
// LFM 2.5 1.2B has no paid listing; tiny-model estimate
['openrouter', 'liquid/lfm-2.5-1.2b-instruct:free', 0.01, 0.04],
['openrouter', 'liquid/lfm-2.5-1.2b-thinking:free', 0.01, 0.04],
['openrouter', 'meta-llama/llama-3.3-70b-instruct:free', 0.10, 0.32],
['openrouter', 'nousresearch/hermes-3-llama-3.1-405b:free', 1.00, 1.00],
['openrouter', 'nvidia/nemotron-3-nano-30b-a3b:free', 0.05, 0.20],
['openrouter', 'nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free', 0.05, 0.20],
['openrouter', 'nvidia/nemotron-3-super-120b-a12b:free', 0.09, 0.45],
['openrouter', 'nvidia/nemotron-nano-9b-v2:free', 0.04, 0.16],
['openrouter', 'openai/gpt-oss-120b:free', 0.039, 0.18],
['openrouter', 'openai/gpt-oss-20b:free', 0.029, 0.14],
['openrouter', 'openrouter/owl-alpha', null, null], // stealth
['openrouter', 'poolside/laguna-m.1:free', null, null],
['openrouter', 'poolside/laguna-xs.2:free', null, null],
['openrouter', 'qwen/qwen3-coder:free', 0.22, 1.80],
['openrouter', 'qwen/qwen3-next-80b-a3b-instruct:free', 0.09, 1.10],
['openrouter', 'z-ai/glm-4.5-air:free', 0.125, 0.85],
// legacy ids
['openrouter', 'deepseek/deepseek-v3.1:free', 0.21, 0.79],
['openrouter', 'moonshotai/kimi-k2:free', 0.57, 2.30],
// Pollinations (serves gpt-oss-20b)
['pollinations', 'openai-fast', 0.029, 0.14],
// Reka (live /v1/models pricing, 2026-06-17)
['reka', 'reka-flash-3', 0.10, 0.20],
['reka', 'reka-edge-2603', 0.10, 0.10],
// SambaNova rows were removed in V23 (platform dropped β€” free tier retired).
// Zhipu (4.5-flash estimated at the 4.7-flash rate β€” no paid 4.5-flash;
// 4.6v-flash priced at OpenRouter's paid z-ai/glm-4.6v)
['zhipu', 'glm-4.5-flash', 0.06, 0.40],
['zhipu', 'glm-4.6v-flash', 0.30, 0.90],
['zhipu', 'glm-4.7-flash', 0.06, 0.40],
];
/** Fallback $/M for models with no mapping (custom endpoints, stealth). */
export const FALLBACK_INPUT_PER_M = 0.20;
export const FALLBACK_OUTPUT_PER_M = 0.80;
/**
* Adds the pricing columns (idempotent) and refreshes prices for every
* known model. Runs on every boot β€” it's ~100 UPDATEs in one transaction
* and keeps prices current when this map is updated in a release.
*/
export function applyModelPricing(db: Database.Database): void {
const columns = db.prepare('PRAGMA table_info(models)').all() as { name: string }[];
if (!columns.some(c => c.name === 'paid_input_per_m')) {
db.prepare('ALTER TABLE models ADD COLUMN paid_input_per_m REAL').run();
}
if (!columns.some(c => c.name === 'paid_output_per_m')) {
db.prepare('ALTER TABLE models ADD COLUMN paid_output_per_m REAL').run();
}
const update = db.prepare(`
UPDATE models SET paid_input_per_m = ?, paid_output_per_m = ?
WHERE platform = ? AND model_id = ?
`);
const applyAll = db.transaction(() => {
for (const [platform, modelId, input, output] of MODEL_PRICING) {
update.run(input, output, platform, modelId);
}
});
applyAll();
}