diff --git a/package.json b/package.json index f942035..bf91f85 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "kimiswitch", "private": true, - "version": "0.7.17", + "version": "0.7.18", "type": "module", "scripts": { "dev": "vite", diff --git a/release-notes-v0.7.18.md b/release-notes-v0.7.18.md new file mode 100644 index 0000000..fe1219b --- /dev/null +++ b/release-notes-v0.7.18.md @@ -0,0 +1,14 @@ +# KimiSwitch v0.7.18 + +## 新增 + +- **会话管理「一键归档」**:支持按 1 个月前 / 半个月前 / 1 星期前 / 指定日期,一键归档所有最后活跃时间早于所选时间点的会话(一次批量操作,替代逐个选择);结果反馈已归档 / 跳过数量 +- **归档用量快照落库**:归档瞬间把每个会话的 token 用量与费用按「天 × 模型」粒度快照进 SQLite(`archived_sessions` 表)。之后删除已归档会话(释放磁盘)不再损失历史统计——仪表盘的趋势图、热力图、模型统计、区间合计均会自动合并快照数据,且与现存文件实时统计严格去重(只合并文件已删除的归档会话,绝不双计) + +## 修复 + +- models-dev 快照同步至 2026-09-14(7784 模型 / 213 供应商),`public/` 前端静态目录同步;pricing 测试价格断言跟随 DeepSeek 官方调价(deepseek-v4-flash input 0.14→0.15 / output 0.28→0.60) + +## 备注 + +- 归档仍是元数据语义(文件原地保留),删除文件才会触发快照合并;用量配置、账单查询等其余功能不受影响 diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 2f9eb6a..c3d62e7 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1978,7 +1978,7 @@ dependencies = [ [[package]] name = "kimiswitch" -version = "0.7.17" +version = "0.7.18" dependencies = [ "anyhow", "chrono", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 855154b..cc3e019 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kimiswitch" -version = "0.7.17" +version = "0.7.18" description = "Kimi Switch - model config manager" authors = ["codingplan.site"] edition = "2021" diff --git a/src-tauri/src/dashboard.rs b/src-tauri/src/dashboard.rs index 6eec106..4ceabf8 100644 --- a/src-tauri/src/dashboard.rs +++ b/src-tauri/src/dashboard.rs @@ -1,4 +1,5 @@ use chrono::{DateTime, Datelike, Local, TimeZone}; +use crate::db::{ArchivedSessionSnapshot, DayModelStat, DayStat}; use regex::Regex; use serde::{Deserialize, Serialize}; use std::collections::HashMap; @@ -277,6 +278,15 @@ pub struct ActionResponse { pub deleted: Option, } +/// Outcome of the bulk "archive everything older than X" command. +#[derive(Debug, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase")] +pub struct BulkArchiveResult { + pub archived: usize, + pub skipped: usize, + pub errors: Vec, +} + #[derive(Debug, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] pub struct PreviewResult { @@ -853,67 +863,8 @@ fn scan_usage(home: &Path) -> (Vec, ScanMeta) { Ok(c) => c, Err(_) => continue, }; - for line in content.lines() { - lines_seen += 1; - if !line.contains("\"usage.record\"") { continue; } - let obj: serde_json::Value = match serde_json::from_str(line) { - Ok(v) => v, - Err(_) => continue, - }; - if obj.get("type").and_then(|v| v.as_str()) != Some("usage.record") { continue; } - let scope = obj.get("usageScope").and_then(|v| v.as_str()).unwrap_or("turn"); - if scope != "turn" { continue; } - - let model_raw = obj.get("model").and_then(|v| v.as_str()).unwrap_or("unknown").to_string(); - // Kimi Code writes the internal marker `__secondary__` as the model - // key for usage records emitted by subagents bound to the - // configured secondary model. The record stays keyed on that - // stable marker so historical records keep their semantics if the - // secondary config changes later; cost billing follows the - // currently configured secondary model, and the record is flagged - // is_secondary so the UI shows it as its own "subagent model" - // entry. - let is_secondary = model_raw == "__secondary__"; - let from_env = model_raw == "__kimi_env_model__"; - let price_model = if is_secondary { - secondary_alias.clone().unwrap_or_else(|| model_raw.clone()) - } else { - model_raw.clone() - }; - let time = obj.get("time").and_then(|v| v.as_u64()).unwrap_or(0); - let usage = &obj["usage"]; - let input_other = usage.get("inputOther").and_then(|v| v.as_u64()).unwrap_or(0); - let output = usage.get("output").and_then(|v| v.as_u64()).unwrap_or(0); - let cache_read = usage.get("inputCacheRead").and_then(|v| v.as_u64()).unwrap_or(0); - let cache_create = usage.get("inputCacheCreation").and_then(|v| v.as_u64()).unwrap_or(0); - - // Resolve model display - let bare = model_raw.rsplit_once('/').map(|x| x.1).unwrap_or(&model_raw); - let (cost, est) = cost_for_usage(input_other, output, cache_read, cache_create, &price_model); - // Subagent records are inherently estimates: the `__secondary__` - // marker carries no model identity, so the cost is flagged as - // estimated even when the current secondary config resolves to a - // priced listing. - let est = est || is_secondary; - let (pid, _ch, _ip, _op, _) = match_price(&price_model); - - records.push(UsageRecord { - time, - model: model_raw.clone(), - model_resolved: bare.to_string(), - model_display: model_raw.clone(), - provider: resolve_provider(&price_model, &alias2prov), - from_env, - is_secondary, - input_other, - output, - input_cache_read: cache_read, - input_cache_creation: cache_create, - cost_usd: cost, - cost_estimated: est, - price_id: pid, - }); - } + lines_seen += content.lines().count(); + records.extend(parse_wire_usage_records(&content, &secondary_alias, &alias2prov)); } records.sort_by(|a, b| b.time.cmp(&a.time)); @@ -926,6 +877,180 @@ fn scan_usage(home: &Path) -> (Vec, ScanMeta) { }) } +/// Parse one `wire.jsonl` body into usage records. Extracted from +/// `scan_usage` so a single session can be snapshotted without walking the +/// whole sessions tree; the record filter chain is unchanged. +fn parse_wire_usage_records( + content: &str, + secondary_alias: &Option, + alias2prov: &HashMap, +) -> Vec { + let mut records = Vec::new(); + for line in content.lines() { + if !line.contains("\"usage.record\"") { continue; } + let obj: serde_json::Value = match serde_json::from_str(line) { + Ok(v) => v, + Err(_) => continue, + }; + if obj.get("type").and_then(|v| v.as_str()) != Some("usage.record") { continue; } + let scope = obj.get("usageScope").and_then(|v| v.as_str()).unwrap_or("turn"); + if scope != "turn" { continue; } + + let model_raw = obj.get("model").and_then(|v| v.as_str()).unwrap_or("unknown").to_string(); + // Kimi Code writes the internal marker `__secondary__` as the model + // key for usage records emitted by subagents bound to the + // configured secondary model. The record stays keyed on that + // stable marker so historical records keep their semantics if the + // secondary config changes later; cost billing follows the + // currently configured secondary model, and the record is flagged + // is_secondary so the UI shows it as its own "subagent model" + // entry. + let is_secondary = model_raw == "__secondary__"; + let from_env = model_raw == "__kimi_env_model__"; + let price_model = if is_secondary { + secondary_alias.clone().unwrap_or_else(|| model_raw.clone()) + } else { + model_raw.clone() + }; + let time = obj.get("time").and_then(|v| v.as_u64()).unwrap_or(0); + let usage = &obj["usage"]; + let input_other = usage.get("inputOther").and_then(|v| v.as_u64()).unwrap_or(0); + let output = usage.get("output").and_then(|v| v.as_u64()).unwrap_or(0); + let cache_read = usage.get("inputCacheRead").and_then(|v| v.as_u64()).unwrap_or(0); + let cache_create = usage.get("inputCacheCreation").and_then(|v| v.as_u64()).unwrap_or(0); + + // Resolve model display + let bare = model_raw.rsplit_once('/').map(|x| x.1).unwrap_or(&model_raw); + let (cost, est) = cost_for_usage(input_other, output, cache_read, cache_create, &price_model); + // Subagent records are inherently estimates: the `__secondary__` + // marker carries no model identity, so the cost is flagged as + // estimated even when the current secondary config resolves to a + // priced listing. + let est = est || is_secondary; + let (pid, _ch, _ip, _op, _) = match_price(&price_model); + + records.push(UsageRecord { + time, + model: model_raw.clone(), + model_resolved: bare.to_string(), + model_display: model_raw.clone(), + provider: resolve_provider(&price_model, &alias2prov), + from_env, + is_secondary, + input_other, + output, + input_cache_read: cache_read, + input_cache_creation: cache_create, + cost_usd: cost, + cost_estimated: est, + price_id: pid, + }); + } + records +} + +/// Aggregate raw usage records into the per-day, per-model snapshot stored +/// for an archived session. +fn snapshot_from_records(records: &[UsageRecord]) -> Vec { + let mut by_day: HashMap)> = HashMap::new(); + for r in records { + let entry = by_day + .entry(day_key(r.time)) + .or_insert_with(|| (local_midnight_ms(r.time, 0), HashMap::new())); + let m = entry.1.entry(r.model.clone()).or_insert_with(|| DayModelStat { + model: r.model.clone(), + requests: 0, + input_other: 0, + output: 0, + input_cache_read: 0, + input_cache_creation: 0, + cost_usd: 0.0, + }); + m.requests += 1; + m.input_other += r.input_other; + m.output += r.output; + m.input_cache_read += r.input_cache_read; + m.input_cache_creation += r.input_cache_creation; + m.cost_usd += r.cost_usd; + } + let mut days: Vec = by_day + .into_iter() + .map(|(day, (day_start_ms, models))| { + let mut models: Vec = models.into_values().collect(); + models.sort_by(|a, b| a.model.cmp(&b.model)); + DayStat { day, day_start_ms, models } + }) + .collect(); + days.sort_by(|a, b| a.day.cmp(&b.day)); + days +} + +/// Synthesize usage records from stored archive snapshots. Only snapshots +/// whose session directory is gone are synthesized: sessions still on disk +/// are covered by the live wire.jsonl scan, and emitting both would double +/// count their usage. +fn synthesize_snapshot_records(rows: &[ArchivedSessionSnapshot], home: &Path) -> Vec { + let root = sessions_root(home); + let legacy_root = root.join(".kcd-archive"); + let alias2prov = build_alias_provider_map(home); + let secondary_alias = read_secondary_model_alias(home); + let mut out = Vec::new(); + for row in rows { + if root.join(&row.workspace_id).join(&row.session_id).exists() { continue; } + if legacy_root.join(&row.workspace_id).join(&row.session_id).exists() { continue; } + for day in &row.day_stats { + for m in &day.models { + let is_secondary = m.model == "__secondary__"; + let price_model = if is_secondary { + secondary_alias.clone().unwrap_or_else(|| m.model.clone()) + } else { + m.model.clone() + }; + let bare = m.model.rsplit_once('/').map(|x| x.1).unwrap_or(&m.model).to_string(); + out.push(UsageRecord { + time: day.day_start_ms, + model: m.model.clone(), + model_resolved: bare, + model_display: m.model.clone(), + provider: resolve_provider(&price_model, &alias2prov), + from_env: m.model == "__kimi_env_model__", + is_secondary, + input_other: m.input_other, + output: m.output, + input_cache_read: m.input_cache_read, + input_cache_creation: m.input_cache_creation, + cost_usd: m.cost_usd, + cost_estimated: true, + price_id: String::new(), + }); + } + } + } + out +} + +/// Append the synthesized records for `rows` to a live scan result and +/// restore the newest-first ordering `scan_usage` produces. +fn merge_snapshot_records( + mut records: Vec, + rows: &[ArchivedSessionSnapshot], + home: &Path, +) -> Vec { + // Nothing archived yet: keep the scan result untouched (and skip the + // config reads the synthesis would do). + if rows.is_empty() { return records; } + records.extend(synthesize_snapshot_records(rows, home)); + records.sort_by(|a, b| b.time.cmp(&a.time)); + records +} + +/// Live scan records plus the stored usage of archived sessions whose files +/// have been deleted, so dashboard stats survive session deletion. +fn records_with_archive_merge(home: &Path, records: Vec) -> Vec { + let rows = crate::db::list_archived_sessions().unwrap_or_default(); + merge_snapshot_records(records, &rows, home) +} + // --------------------------------------------------------------------------- // Scan cache // --------------------------------------------------------------------------- @@ -1332,6 +1457,147 @@ fn set_session_archived_meta(session_dir: &Path, archived: bool) -> Result<(), S Ok(()) } +/// Parse a `state.json` timestamp into epoch ms. kimi-code writes epoch-ms +/// numbers, other builds write ISO-8601 strings — accept both, plus numeric +/// strings. +fn parse_state_time_ms(value: &serde_json::Value) -> Option { + match value { + serde_json::Value::Number(n) => n.as_u64().or_else(|| n.as_f64().map(|f| f.max(0.0) as u64)), + serde_json::Value::String(s) => parse_time_string_ms(s), + _ => None, + } +} + +fn parse_time_string_ms(s: &str) -> Option { + let t = s.trim(); + if t.is_empty() { return None; } + if let Ok(n) = t.parse::() { + // Numeric string: epoch ms when it is already millisecond-sized. + return Some(if n >= 1e12 as u64 { n } else { n * 1000 }); + } + if let Ok(dt) = DateTime::parse_from_rfc3339(t) { + return Some(dt.timestamp_millis().max(0) as u64); + } + for fmt in [ + "%Y-%m-%dT%H:%M:%S%.f", + "%Y-%m-%dT%H:%M:%S", + "%Y-%m-%d %H:%M:%S%.f", + "%Y-%m-%d %H:%M:%S", + ] { + if let Ok(naive) = chrono::NaiveDateTime::parse_from_str(t, fmt) { + return Some(naive.and_utc().timestamp_millis().max(0) as u64); + } + } + None +} + +/// Read a session's `state.json` as a JSON object (None when missing or +/// unparseable). +fn read_state_obj(session_dir: &Path) -> Option { + let content = fs::read_to_string(session_dir.join("state.json")).ok()?; + let obj: serde_json::Value = serde_json::from_str(&content).ok()?; + if obj.is_object() { Some(obj) } else { None } +} + +/// Session directory mtime in epoch ms — the fallback when `state.json` has +/// no parseable `updatedAt`. +fn dir_mtime_ms(dir: &Path) -> Option { + dir.metadata().ok().and_then(|m| m.modified().ok()) + .and_then(|t| t.duration_since(std::time::UNIX_EPOCH).ok()) + .map(|d| d.as_millis() as u64) +} + +/// Usage records of one session: every `wire.jsonl` below its directory +/// (agent subdirectories included), with the same blob/task filtering the +/// full-tree scan applies. +fn parse_session_wire_usage( + dir: &Path, + secondary_alias: &Option, + alias2prov: &HashMap, +) -> Vec { + let mut records = Vec::new(); + for entry in WalkDir::new(dir).into_iter().filter_map(|e| e.ok()) { + if entry.file_name() != "wire.jsonl" || !entry.file_type().is_file() { continue; } + let p = entry.path(); + if p.to_string_lossy().contains("blobs") || p.to_string_lossy().contains("tasks") { continue; } + let Ok(content) = fs::read_to_string(p) else { continue }; + records.extend(parse_wire_usage_records(&content, secondary_alias, alias2prov)); + } + records +} + +/// Bulk-archive every active session whose last activity predates `cutoff_ms` +/// (epoch ms) and store a usage snapshot per session in SQLite, so dashboard +/// stats keep counting their history after the directories are deleted. +/// Sessions already archived, in `.kcd-archive`, or without a readable +/// `state.json` are left alone. +fn archive_sessions_before_cmd(home: &Path, cutoff_ms: u64) -> BulkArchiveResult { + let root = sessions_root(home); + let alias2prov = build_alias_provider_map(home); + let secondary_alias = read_secondary_model_alias(home); + let now_ms = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH).unwrap_or_default().as_millis() as u64; + let mut result = BulkArchiveResult { archived: 0, skipped: 0, errors: Vec::new() }; + + for wid in list_workspace_dirs(home) { + for entry in safe_read_dir(&root.join(&wid)) { + if !entry.file_type().map(|t| t.is_dir()).unwrap_or(false) { continue; } + let sid = entry.file_name().to_string_lossy().to_string(); + if !session_re().is_match(&sid) { continue; } + let dir = entry.path(); + let Some(state) = read_state_obj(&dir) else { + result.skipped += 1; + continue; + }; + if state.get("archived").and_then(|v| v.as_bool()).unwrap_or(false) { continue; } + let Some(updated_ms) = state + .get("updatedAt") + .and_then(parse_state_time_ms) + .or_else(|| dir_mtime_ms(&dir)) + else { + result.skipped += 1; + continue; + }; + if updated_ms >= cutoff_ms { + result.skipped += 1; + continue; + } + + if let Err(e) = set_session_archived_meta(&dir, true) { + result.errors.push(format!("{wid}/{sid}: {e}")); + continue; + } + let day_stats = snapshot_from_records(&parse_session_wire_usage( + &dir, &secondary_alias, &alias2prov, + )); + let mut total_tokens = 0u64; + let mut total_cost_usd = 0.0f64; + for day in &day_stats { + for m in &day.models { + total_tokens += m.input_other + m.output + m.input_cache_read + m.input_cache_creation; + total_cost_usd += m.cost_usd; + } + } + let snapshot = ArchivedSessionSnapshot { + session_id: sid.clone(), + workspace_id: wid.clone(), + title: state.get("title").and_then(|v| v.as_str()).map(|s| s.to_string()), + archived_at_ms: now_ms, + updated_at_ms: Some(updated_ms), + created_at_ms: state.get("createdAt").and_then(parse_state_time_ms), + total_tokens, + total_cost_usd, + day_stats, + }; + result.archived += 1; + if let Err(e) = crate::db::upsert_archived_session(&snapshot) { + result.errors.push(format!("{wid}/{sid}: snapshot: {e}")); + } + } + } + result +} + fn humanize_workspace(id: &str) -> String { let re = Regex::new(r"^wd_(.+)_[0-9a-fA-F]{8,}$").unwrap(); if let Some(caps) = re.captures(id) { @@ -1876,6 +2142,7 @@ pub fn get_summary(home_override: Option, range: Option, refresh let r = range.unwrap_or_else(|| "30d".into()); let (records, meta) = scan_usage_cached(&home, refresh); + let records = records_with_archive_merge(&home, records); let t1 = std::time::Instant::now(); let stats = aggregate(&records, &r, now_ms); let all_stats = aggregate(&records, "all", now_ms); @@ -1983,6 +2250,7 @@ fn build_day_detail(date: &str, records: &[UsageRecord]) -> Option { pub fn get_day_detail(home_override: Option, date: String) -> Option { let home = resolve_kimi_home(home_override); let (records, _) = scan_usage_cached(&home, false); + let records = records_with_archive_merge(&home, records); build_day_detail(&date, &records) } @@ -1998,6 +2266,14 @@ pub fn archive_session(home_override: Option, workspace_id: String, sess archive_session_cmd(&home, &workspace_id, &session_id) } +/// Bulk-archive every active session whose last activity predates `cutoff_ms` +/// (epoch ms) across all workspaces, storing a usage snapshot per session. +#[tauri::command] +pub fn archive_sessions_before(home_override: Option, cutoff_ms: u64) -> BulkArchiveResult { + let home = resolve_kimi_home(home_override); + archive_sessions_before_cmd(&home, cutoff_ms) +} + #[tauri::command] pub fn unarchive_session(home_override: Option, workspace_id: String, session_id: String) -> Result { let home = resolve_kimi_home(home_override); @@ -2073,8 +2349,8 @@ mod pricing_tests { let (id, _, input, output, est) = match_price("CodingPlan.site/deepseek-v4-flash"); assert!(!est, "resolved via models.dev, not estimated"); assert_eq!(id, "deepseek/deepseek-v4-flash"); - assert_eq!(input, 0.14); - assert_eq!(output, 0.28); + assert_eq!(input, 0.15); + assert_eq!(output, 0.6); } #[test] @@ -2432,3 +2708,271 @@ mod range_and_model_totals_tests { assert_eq!(total, 3 * 200); } } + +#[cfg(test)] +mod archive_snapshot_tests { + use super::*; + + const WID: &str = "wd_proj_a1b2c3d4e5f6"; + const LIVE_SID: &str = "session_11111111-2222-3333-4444-555555555555"; + const GONE_SID: &str = "session_99999999-8888-7777-6666-555555555555"; + + fn now_ms() -> u64 { + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH).unwrap().as_millis() as u64 + } + + fn rec(time: u64, model: &str, tokens: (u64, u64, u64, u64), cost: f64) -> UsageRecord { + UsageRecord { + time, + model: model.to_string(), + input_other: tokens.0, + output: tokens.1, + input_cache_read: tokens.2, + input_cache_creation: tokens.3, + cost_usd: cost, + cost_estimated: false, + price_id: String::new(), + model_resolved: model.rsplit_once('/').map(|x| x.1).unwrap_or(model).to_string(), + model_display: model.to_string(), + provider: None, + from_env: false, + is_secondary: false, + } + } + + fn snapshot_row( + sid: &str, + day_start_ms: u64, + model: &str, + tokens: u64, + ) -> ArchivedSessionSnapshot { + ArchivedSessionSnapshot { + session_id: sid.to_string(), + workspace_id: WID.to_string(), + title: None, + archived_at_ms: 0, + updated_at_ms: None, + created_at_ms: None, + total_tokens: tokens, + total_cost_usd: 0.0, + day_stats: vec![DayStat { + day: day_key(day_start_ms), + day_start_ms, + models: vec![DayModelStat { + model: model.to_string(), + requests: 2, + input_other: tokens, + output: 0, + input_cache_read: 0, + input_cache_creation: 0, + cost_usd: 1.5, + }], + }], + } + } + + fn write_state(dir: &Path, updated_ms: u64, archived: bool) { + let state = serde_json::json!({ + "id": dir.file_name().unwrap().to_string_lossy(), + "createdAt": updated_ms, + "updatedAt": updated_ms, + "archived": archived, + "title": "archived candidate", + }); + fs::write(dir.join("state.json"), state.to_string()).unwrap(); + } + + fn read_state(dir: &Path) -> serde_json::Value { + serde_json::from_str(&fs::read_to_string(dir.join("state.json")).unwrap()).unwrap() + } + + #[test] + fn snapshot_groups_records_by_local_day_and_model() { + let now = now_ms(); + let d1 = local_midnight_ms(now, 2); + let d2 = local_midnight_ms(now, 1); + let records = vec![ + rec(d1 + 3_600_000, "openai/gpt-x", (100, 10, 5, 1), 0.5), + rec(d1 + 7_200_000, "openai/gpt-x", (200, 20, 0, 0), 0.25), + rec(d1 + 60_000, "moonshotai/kimi-k3", (1, 2, 3, 4), 0.01), + rec(d2 + 1_000, "openai/gpt-x", (7, 7, 7, 7), 0.07), + ]; + let days = snapshot_from_records(&records); + assert_eq!(days.len(), 2, "one bucket per local day"); + + let first = &days[0]; + assert_eq!(first.day, day_key(d1)); + assert_eq!(first.day_start_ms, d1, "day bucket starts at local midnight"); + assert_eq!(first.models.len(), 2); + let gpt = first.models.iter().find(|m| m.model == "openai/gpt-x").unwrap(); + assert_eq!(gpt.requests, 2); + assert_eq!(gpt.input_other, 300); + assert_eq!(gpt.output, 30); + assert_eq!(gpt.input_cache_read, 5); + assert_eq!(gpt.input_cache_creation, 1); + assert_eq!(gpt.cost_usd, 0.75); + // Deterministic ordering: models sorted by raw model key. + assert_eq!(first.models[0].model, "moonshotai/kimi-k3"); + + assert_eq!(days[1].day, day_key(d2)); + assert_eq!(days[1].day_start_ms, d2); + assert_eq!(days[1].models.len(), 1); + assert_eq!(days[1].models[0].input_other, 7); + } + + #[test] + fn synthesize_only_covers_sessions_whose_files_are_gone() { + let td = tempfile::tempdir().unwrap(); + let home = td.path().join("home"); + fs::create_dir_all(home.join("sessions").join(WID).join(LIVE_SID)).unwrap(); + + let day_start = 1_700_000_000_000u64; + let rows = vec![ + snapshot_row(LIVE_SID, day_start, "openai/gpt-x", 100), + snapshot_row(GONE_SID, day_start, "openai/gpt-x", 200), + ]; + let out = synthesize_snapshot_records(&rows, &home); + assert_eq!(out.len(), 1, "live session dirs stay with the live scan"); + + let r = &out[0]; + assert_eq!(r.time, day_start); + assert_eq!(r.model, "openai/gpt-x"); + assert_eq!(r.model_resolved, "gpt-x"); + assert_eq!(r.model_display, "openai/gpt-x"); + assert_eq!(r.provider.as_deref(), Some("openai")); + assert_eq!(r.input_other, 200); + assert_eq!(r.cost_usd, 1.5); + assert!(r.cost_estimated, "snapshot costs are estimates"); + assert_eq!(r.price_id, ""); + assert!(!r.is_secondary); + assert!(!r.from_env); + } + + #[test] + fn merge_appends_missing_sessions_newest_first_without_double_counting() { + let td = tempfile::tempdir().unwrap(); + let home = td.path().join("home"); + fs::create_dir_all(home.join("sessions").join(WID).join(LIVE_SID)).unwrap(); + + let now = now_ms(); + let old_day = local_midnight_ms(now, 5); + let new_day = local_midnight_ms(now, 1); + let gone_old = "session_22222222-2222-3333-4444-555555555555"; + let gone_new = "session_33333333-2222-3333-4444-555555555555"; + let rows = vec![ + snapshot_row(LIVE_SID, new_day, "openai/gpt-x", 999), + snapshot_row(gone_old, old_day, "openai/gpt-x", 10), + snapshot_row(gone_new, new_day, "openai/gpt-x", 20), + ]; + let live = vec![rec(new_day + 5_000, "openai/gpt-x", (1, 1, 1, 1), 0.01)]; + let merged = merge_snapshot_records(live, &rows, &home); + + assert_eq!(merged.len(), 3, "live record plus the two missing sessions"); + assert_eq!(merged[0].time, new_day + 5_000, "newest record first"); + assert_eq!(merged[1].time, new_day); + assert_eq!(merged[2].time, old_day); + assert_eq!(merged[1].input_other, 20); + assert_eq!(merged[2].input_other, 10); + assert!( + merged.iter().all(|r| r.input_other != 999), + "a live session's stored snapshot must never be synthesized" + ); + } + + #[test] + fn state_times_parse_epoch_numbers_and_iso_strings() { + assert_eq!( + parse_state_time_ms(&serde_json::json!(1_700_000_000_000u64)), + Some(1_700_000_000_000) + ); + assert_eq!( + parse_state_time_ms(&serde_json::json!("1700000000000")), + Some(1_700_000_000_000) + ); + assert_eq!( + parse_state_time_ms(&serde_json::json!("2025-01-02T03:04:05.000Z")), + Some(1_735_787_045_000) + ); + assert_eq!( + parse_state_time_ms(&serde_json::json!("2025-01-02T03:04:05")), + Some(1_735_787_045_000) + ); + assert_eq!( + parse_state_time_ms(&serde_json::json!("2025-01-02 03:04:05")), + Some(1_735_787_045_000) + ); + assert_eq!(parse_state_time_ms(&serde_json::json!(null)), None); + assert_eq!(parse_state_time_ms(&serde_json::json!("not-a-date")), None); + } + + #[test] + fn bulk_archive_flags_old_sessions_and_snapshots_their_usage() { + let td = tempfile::tempdir().unwrap(); + let home = td.path().join("home"); + // Redirect the SQLite store so the test never touches the user's DB. + std::env::set_var("KIMI_SWITCH_DB_PATH", td.path().join("test.db")); + + let ws = home.join("sessions").join(WID); + let now = now_ms(); + let old_ms = now - 60 * 24 * 3600 * 1000; + + let old_dir = ws.join(LIVE_SID); + fs::create_dir_all(&old_dir).unwrap(); + write_state(&old_dir, old_ms, false); + let wire = serde_json::json!({ + "type": "usage.record", + "usageScope": "turn", + "time": old_ms, + "model": "openai/gpt-x", + "usage": { + "inputOther": 100, + "output": 50, + "inputCacheRead": 10, + "inputCacheCreation": 5, + }, + }); + fs::write(old_dir.join("wire.jsonl"), format!("{wire}\n")).unwrap(); + + let new_sid = "session_44444444-2222-3333-4444-555555555555"; + let new_dir = ws.join(new_sid); + fs::create_dir_all(&new_dir).unwrap(); + write_state(&new_dir, now - 3_600_000, false); + + let cutoff = now - 30 * 24 * 3600 * 1000; + let res = archive_sessions_before_cmd(&home, cutoff); + assert_eq!(res.archived, 1, "only the stale session is archived"); + assert_eq!(res.skipped, 1, "the recent session is reported as skipped"); + assert!(res.errors.is_empty(), "{:?}", res.errors); + + // Metadata archive happened in place, the recent session is untouched. + assert_eq!(read_state(&old_dir)["archived"], true); + assert!(read_state(&old_dir)["archivedAt"].as_u64().unwrap() > 0); + assert_eq!(read_state(&new_dir)["archived"], false); + + // Usage snapshot landed in SQLite with the session's totals. + let rows = crate::db::list_archived_sessions().unwrap(); + let row = rows.iter().find(|r| r.session_id == LIVE_SID).expect("snapshot row"); + assert_eq!(row.workspace_id, WID); + assert_eq!(row.title.as_deref(), Some("archived candidate")); + assert_eq!(row.updated_at_ms, Some(old_ms)); + assert_eq!(row.total_tokens, 165); + assert!(row.total_cost_usd > 0.0); + assert_eq!(row.day_stats.len(), 1); + assert_eq!(row.day_stats[0].day, day_key(old_ms)); + assert_eq!(row.day_stats[0].models[0].requests, 1); + assert_eq!(row.day_stats[0].models[0].input_other, 100); + + // While the files are still there, the live scan owns the usage. + let merged = records_with_archive_merge(&home, vec![]); + assert!(merged.is_empty(), "no synthesized records while the dir exists"); + + // Once the archived directory is deleted, stats come from the snapshot. + fs::remove_dir_all(&old_dir).unwrap(); + let merged = records_with_archive_merge(&home, vec![]); + assert_eq!(merged.len(), 1); + assert_eq!(merged[0].input_other, 100); + assert_eq!(merged[0].output, 50); + assert_eq!(day_key(merged[0].time), day_key(old_ms)); + } +} diff --git a/src-tauri/src/db.rs b/src-tauri/src/db.rs index 445b07b..4ccaca8 100644 --- a/src-tauri/src/db.rs +++ b/src-tauri/src/db.rs @@ -10,6 +10,7 @@ use std::path::PathBuf; use anyhow::Context; use indexmap::IndexMap; use rusqlite::{params, Connection}; +use serde::{Deserialize, Serialize}; use serde_json::Value; use crate::models::{Agent, Config, Model, Provider, ProviderType}; @@ -23,6 +24,13 @@ pub fn kimi_switch_data_dir() -> PathBuf { } pub fn db_path() -> PathBuf { + // Tests (and power users) can point the store elsewhere; production always + // resolves to the default location under the home directory. + if let Some(p) = std::env::var_os("KIMI_SWITCH_DB_PATH") { + if !p.is_empty() { + return PathBuf::from(p); + } + } kimi_switch_data_dir().join("kimi-switch.db") } @@ -31,6 +39,10 @@ pub fn db_path() -> PathBuf { /// configuration. Safe to call on every startup — it is a no-op once the new /// directory exists. fn migrate_legacy_data_dir() { + // A redirected store (tests) must never touch the real home directory. + if std::env::var_os("KIMI_SWITCH_DB_PATH").is_some() { + return; + } let new_dir = kimi_switch_data_dir(); if new_dir.exists() { return; @@ -106,6 +118,24 @@ pub fn init_db() -> DbResult { [], )?; + // Usage snapshots taken when sessions are bulk-archived: keep the session's + // token/cost history queryable after its directory (and wire.jsonl) is + // deleted from disk. + conn.execute( + "CREATE TABLE IF NOT EXISTS archived_sessions ( + session_id TEXT PRIMARY KEY, + workspace_id TEXT NOT NULL, + title TEXT, + archived_at_ms INTEGER NOT NULL, + updated_at_ms INTEGER, + created_at_ms INTEGER, + total_tokens INTEGER NOT NULL DEFAULT 0, + total_cost_usd REAL NOT NULL DEFAULT 0, + day_stats TEXT NOT NULL DEFAULT '[]' + )", + [], + )?; + // Add icon columns for provider icon picker (introduced in v0.3.1). // SQLite has no ADD COLUMN IF NOT EXISTS, so ignore duplicate-column errors. for stmt in [ @@ -330,6 +360,104 @@ pub fn delete_setting_pub(key: &str) -> DbResult<()> { Ok(()) } +// --------------------------------------------------------------------------- +// Archived-session usage snapshots +// --------------------------------------------------------------------------- + +/// Per-model usage totals for one calendar day of an archived session. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DayModelStat { + /// Raw model key as written to wire.jsonl (`__secondary__` kept verbatim). + pub model: String, + pub requests: u64, + pub input_other: u64, + pub output: u64, + pub input_cache_read: u64, + pub input_cache_creation: u64, + pub cost_usd: f64, +} + +/// One day's per-model usage, stored as JSON in `archived_sessions.day_stats`. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DayStat { + /// Local calendar day, `YYYY-MM-DD`. + pub day: String, + /// Local midnight of `day`, epoch ms — used as the synthesized record time. + pub day_start_ms: u64, + pub models: Vec, +} + +/// Usage snapshot of one session, taken at the moment it is archived. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ArchivedSessionSnapshot { + pub session_id: String, + pub workspace_id: String, + pub title: Option, + pub archived_at_ms: u64, + pub updated_at_ms: Option, + pub created_at_ms: Option, + pub total_tokens: u64, + pub total_cost_usd: f64, + pub day_stats: Vec, +} + +/// Insert or replace one archived-session snapshot (keyed by session id, which +/// is a UUID and never reused). +pub fn upsert_archived_session(row: &ArchivedSessionSnapshot) -> DbResult<()> { + let conn = init_db()?; + let day_stats = serde_json::to_string(&row.day_stats)?; + conn.execute( + "INSERT OR REPLACE INTO archived_sessions + (session_id, workspace_id, title, archived_at_ms, updated_at_ms, created_at_ms, total_tokens, total_cost_usd, day_stats) + VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)", + params![ + row.session_id, + row.workspace_id, + row.title, + row.archived_at_ms as i64, + row.updated_at_ms.map(|v| v as i64), + row.created_at_ms.map(|v| v as i64), + row.total_tokens as i64, + row.total_cost_usd, + day_stats, + ], + )?; + Ok(()) +} + +/// Every stored archived-session snapshot. Unreadable `day_stats` JSON degrades +/// to an empty breakdown instead of failing the whole list. +pub fn list_archived_sessions() -> DbResult> { + let conn = init_db()?; + let mut stmt = conn.prepare( + "SELECT session_id, workspace_id, title, archived_at_ms, updated_at_ms, created_at_ms, + total_tokens, total_cost_usd, day_stats + FROM archived_sessions", + )?; + let rows = stmt.query_map([], |row| { + let day_stats_json: String = row.get(8)?; + Ok(ArchivedSessionSnapshot { + session_id: row.get(0)?, + workspace_id: row.get(1)?, + title: row.get(2)?, + archived_at_ms: row.get::<_, i64>(3)? as u64, + updated_at_ms: row.get::<_, Option>(4)?.map(|v| v as u64), + created_at_ms: row.get::<_, Option>(5)?.map(|v| v as u64), + total_tokens: row.get::<_, i64>(6)? as u64, + total_cost_usd: row.get(7)?, + day_stats: serde_json::from_str(&day_stats_json).unwrap_or_default(), + }) + })?; + let mut out = Vec::new(); + for row in rows { + out.push(row?); + } + Ok(out) +} + fn provider_type_for_str(s: &str) -> ProviderType { ProviderType::from_kimi_type(s) } diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 5d31419..cae8669 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -121,6 +121,7 @@ pub fn run() { dashboard::get_day_detail, dashboard::list_sessions, dashboard::archive_session, + dashboard::archive_sessions_before, dashboard::unarchive_session, dashboard::delete_session, dashboard::delete_workspace, diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ad7d478..8d24c59 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,6 +1,6 @@ { "productName": "Kimi Switch", - "version": "0.7.17", + "version": "0.7.18", "identifier": "com.kimiswitch.app", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/components/sessions/SessionsPage.tsx b/src/components/sessions/SessionsPage.tsx index 2090275..5acf921 100644 --- a/src/components/sessions/SessionsPage.tsx +++ b/src/components/sessions/SessionsPage.tsx @@ -1,8 +1,8 @@ -import { useMemo, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { useSessions } from "../../hooks/useSessions"; import { fmtInt, fmtTime } from "../../lib/dashboard-format"; import { useTranslation } from "../../i18n"; -import type { SessionRow, WorkspaceRow } from "../../types/sessions"; +import type { BulkArchiveResult, SessionRow, WorkspaceRow } from "../../types/sessions"; function fmtBytes(n: number): string { const v = Number(n) || 0; @@ -23,6 +23,44 @@ function rowKey(row: SessionRow): string { return `${row.workspaceId}/${row.id}`; } +type ArchiveAllMode = "month" | "half" | "week" | "custom"; + +type ArchiveAllState = { + mode: ArchiveAllMode; + /** YYYY-MM-DD, used when mode is "custom". */ + date: string; + busy: boolean; + result: BulkArchiveResult | null; + error: string | null; +}; + +function localDateInput(d: Date): string { + const m = String(d.getMonth() + 1).padStart(2, "0"); + const day = String(d.getDate()).padStart(2, "0"); + return `${d.getFullYear()}-${m}-${day}`; +} + +/** Today minus one month — the default value of the custom-date picker. */ +function defaultCustomDate(): string { + const d = new Date(); + d.setMonth(d.getMonth() - 1); + return localDateInput(d); +} + +/** Cutoff epoch ms for the selected option (custom dates start at local midnight). */ +function cutoffFor(state: ArchiveAllState): number { + const now = new Date(); + if (state.mode === "month" || state.mode === "half" || state.mode === "week") { + const d = new Date(now); + if (state.mode === "month") d.setMonth(d.getMonth() - 1); + if (state.mode === "half") d.setDate(d.getDate() - 15); + if (state.mode === "week") d.setDate(d.getDate() - 7); + return d.getTime(); + } + const [y, m, day] = state.date.split("-").map(Number); + return new Date(y || now.getFullYear(), (m || 1) - 1, day || 1, 0, 0, 0, 0).getTime(); +} + type ConfirmState = | { mode: "one"; row: SessionRow } | { mode: "bulk"; rows: SessionRow[] } @@ -52,6 +90,7 @@ export function SessionsPage() { refresh, archiveSession, unarchiveSession, + archiveBefore, deleteSession, deleteWorkspace, getPreview, @@ -62,6 +101,7 @@ export function SessionsPage() { const [confirm, setConfirm] = useState(null); const [confirmBusy, setConfirmBusy] = useState(false); const [preview, setPreview] = useState(null); + const [archiveAll, setArchiveAll] = useState(null); const workspaces = data?.workspaces ?? []; const sessions = data?.sessions ?? []; @@ -199,6 +239,30 @@ export function SessionsPage() { 0 ); + useEffect(() => { + if (!archiveAll) return; + const onKey = (e: KeyboardEvent) => { + if (e.key === "Escape") setArchiveAll((s) => (s && s.busy ? s : null)); + }; + window.addEventListener("keydown", onKey); + return () => window.removeEventListener("keydown", onKey); + }, [archiveAll]); + + const runArchiveAll = async () => { + if (!archiveAll || archiveAll.busy) return; + const cutoffMs = cutoffFor(archiveAll); + setArchiveAll((s) => (s ? { ...s, busy: true, result: null, error: null } : s)); + try { + const res = await archiveBefore(cutoffMs); + setArchiveAll((s) => (s ? { ...s, busy: false, result: res } : s)); + setSelected(new Set()); + } catch (e) { + setArchiveAll((s) => + s ? { ...s, busy: false, error: e instanceof Error ? e.message : String(e) } : s + ); + } + }; + return (
@@ -376,6 +440,23 @@ export function SessionsPage() { )} + {status !== "archived" && ( + + )} + setArchiveAll((s) => + s ? { ...s, mode, result: null, error: null } : s + ) + } + /> + {label} + + ))} +
+ {archiveAll.mode === "custom" && ( + + setArchiveAll((s) => (s ? { ...s, date: e.target.value } : s)) + } + className="bg-input border border-border rounded px-2 py-1 text-sm focus:ring-2 focus:ring-blue-500 focus:outline-none" + /> + )} +
+ {t("archiveAllConfirm", { + date: new Date(cutoffFor(archiveAll)).toLocaleDateString( + locale === "zh" ? "zh-CN" : "en-US" + ), + })} +
+ {archiveAll.error && ( +
+ {t("archiveAllFailed")}: {archiveAll.error} +
+ )} + {archiveAll.result && archiveAll.result.archived === 0 && ( +
+ {t("archiveAllEmpty")} +
+ )} + {archiveAll.result && archiveAll.result.archived > 0 && ( +
+ {t("archiveAllDone", { + archived: archiveAll.result.archived, + skipped: archiveAll.result.skipped, + })} +
+ )} + {archiveAll.result && archiveAll.result.errors.length > 0 && ( +
+ {archiveAll.result.errors.slice(0, 3).map((err, i) => ( +
+ {err} +
+ ))} +
+ )} +
+
+ + +
+ + + )} + {/* Confirm dialog */} {confirm && (
diff --git a/src/hooks/useSessions.ts b/src/hooks/useSessions.ts index d4c803c..338f4fe 100644 --- a/src/hooks/useSessions.ts +++ b/src/hooks/useSessions.ts @@ -2,6 +2,7 @@ import { useCallback, useEffect, useState } from "react"; import { invoke } from "@tauri-apps/api/core"; import type { ActionResponse, + BulkArchiveResult, PreviewResult, SessionStatusFilter, SessionsResult, @@ -54,6 +55,17 @@ export function useSessions() { [refresh] ); + const archiveBefore = useCallback( + async (cutoffMs: number) => { + const result = await invoke("archive_sessions_before", { + cutoffMs, + }); + await refresh(); + return result; + }, + [refresh] + ); + const deleteSession = useCallback( async (workspaceId: string, sessionId: string, sessionStatus?: string) => { await invoke("delete_session", { @@ -100,6 +112,7 @@ export function useSessions() { refresh, archiveSession, unarchiveSession, + archiveBefore, deleteSession, deleteWorkspace, getPreview, diff --git a/src/i18n/en.ts b/src/i18n/en.ts index 42cadcb..30a8dd5 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -225,6 +225,19 @@ export const enTranslations: Record = { roleUser: "User", roleAssistant: "Assistant", roleSystem: "System", + sessionsArchiveAll: "Archive old sessions", + archiveAllTitle: "Archive old sessions", + archiveAllDesc: + "Archives every active session whose last activity is older than the selected date. Files are kept and usage stats stay intact.", + archiveOptionMonth: "Older than 1 month", + archiveOptionHalfMonth: "Older than 15 days", + archiveOptionWeek: "Older than 1 week", + archiveOptionCustom: "Specific date", + archiveAllConfirm: "Archive every active session last active before {date}. Continue?", + archiveAllRunning: "Archiving…", + archiveAllDone: "Archived {archived} sessions, skipped {skipped}", + archiveAllFailed: "Archive failed", + archiveAllEmpty: "No sessions match", // Heatmap noData: "No data", diff --git a/src/i18n/zh.ts b/src/i18n/zh.ts index 8c54db0..c751995 100644 --- a/src/i18n/zh.ts +++ b/src/i18n/zh.ts @@ -220,6 +220,18 @@ export const zhTranslations = { roleUser: "用户", roleAssistant: "助手", roleSystem: "系统", + sessionsArchiveAll: "一键归档", + archiveAllTitle: "一键归档会话", + archiveAllDesc: "将归档最后活跃时间早于所选日期的全部活跃会话;文件保留,统计不受影响。", + archiveOptionMonth: "1 个月前", + archiveOptionHalfMonth: "半个月前", + archiveOptionWeek: "1 星期前", + archiveOptionCustom: "指定日期", + archiveAllConfirm: "将归档最后活跃时间早于 {date} 的全部活跃会话。确认?", + archiveAllRunning: "正在归档…", + archiveAllDone: "已归档 {archived} 个会话,跳过 {skipped} 个", + archiveAllFailed: "归档失败", + archiveAllEmpty: "没有符合条件的会话", // Heatmap noData: "暂无数据", diff --git a/src/lib/models-dev-full.json b/src/lib/models-dev-full.json index 011efb3..1fefea9 100644 --- a/src/lib/models-dev-full.json +++ b/src/lib/models-dev-full.json @@ -1,5 +1,5 @@ { - "last_updated": "2026-09-10", + "last_updated": "2026-09-13", "providers": { "subconscious": { "id": "subconscious", @@ -359,6 +359,77 @@ "id": "bothub", "name": "Bothub", "models": [ + { + "id": "deepseek-v4-pro-0813", + "name": "DeepSeek V4 Pro 0813", + "cost": { + "input": 1.61, + "output": 4.84 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, + { + "id": "deepseek-v4-flash-0731", + "name": "DeepSeek V4 Flash 0731", + "cost": { + "input": 0.1, + "output": 0.28 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, + { + "id": "gpt-5.6-luna", + "name": "GPT-5.6 Luna", + "cost": { + "input": 0.06, + "output": 0.37 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "glm-5.3-flash", + "name": "GLM-5.3-Flash", + "cost": { + "input": 0.12, + "output": 0.44 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "muse-spark-1.3-contributor", + "name": "Muse Spark 1.3 Contributor", + "cost": { + "input": 0.1, + "output": 0.2 + }, + "context": 1048576, + "output_limit": 943718, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "nemotron-3-ultra-550b-a55b:free", "name": "Nemotron 3 Ultra (free)", @@ -384,6 +455,19 @@ "tool_call": true, "structured_output": true, "image": true + }, + { + "id": "glm-5.3", + "name": "GLM-5.3", + "cost": { + "input": 1.72, + "output": 5.41 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true } ] }, @@ -526,6 +610,21 @@ "output_limit": 16384, "tool_call": true }, + { + "id": "deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.255552, + "output": 1.27776, + "cache_read": 0.0127776 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "glm-5.2-honey-lite", "name": "GLM-5.2 Honey Lite", @@ -1856,6 +1955,15 @@ "tool_call": true, "image": true }, + { + "id": "deepseek-v4-flash", + "name": "DeepSeek V4 Flash", + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "claude-opus-4-8", "name": "Claude Opus 4.8", @@ -1864,6 +1972,15 @@ "reasoning": true, "tool_call": true, "image": true + }, + { + "id": "glm-5.3", + "name": "GLM-5.3", + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true } ] }, @@ -5549,6 +5666,18 @@ "output_limit": 32768, "image": true }, + { + "id": "mistralai/mistral-small-24b-instruct-2501", + "name": "Mistral Small 24B", + "cost": { + "input": 0.1155, + "output": 0.3465 + }, + "context": 32768, + "input_limit": 32768, + "output_limit": 8192, + "tool_call": true + }, { "id": "mistralai/mixtral-8x22b-instruct-v0.1", "name": "Mixtral 8x22B", @@ -7243,6 +7372,21 @@ "tool_call": true, "image": true }, + { + "id": "TEE/nemotron-3.5-lightning", + "name": "Nvidia Nemotron 3.5 Lightning TEE", + "cost": { + "input": 0.08, + "output": 0.2, + "cache_read": 0.04 + }, + "context": 262144, + "input_limit": 262144, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "TEE/glm-5.2", "name": "GLM 5.2 TEE", @@ -7307,9 +7451,9 @@ "id": "TEE/gpt-oss-20b", "name": "GPT-OSS 20B TEE", "cost": { - "input": 0.2, - "output": 0.8, - "cache_read": 0.1 + "input": 0.04, + "output": 0.15, + "cache_read": 0.02 }, "context": 131072, "input_limit": 131072, @@ -7711,9 +7855,9 @@ "id": "sakana/fugu-ultra", "name": "Fugu Ultra", "cost": { - "input": 5.25, - "output": 31.5, - "cache_read": 0.525 + "input": 5, + "output": 30, + "cache_read": 0.5 }, "context": 1000000, "input_limit": 1000000, @@ -7723,13 +7867,29 @@ "structured_output": true, "image": true }, + { + "id": "sakana/fugu-max", + "name": "Fugu Max", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + }, + "context": 1000000, + "input_limit": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "sakana/fugu-ultra-v1.1", "name": "Fugu Ultra v1.1", "cost": { - "input": 5.25, - "output": 31.5, - "cache_read": 0.525 + "input": 5, + "output": 30, + "cache_read": 0.5 }, "context": 1000000, "input_limit": 1000000, @@ -8219,6 +8379,19 @@ "input_limit": 1000000, "output_limit": 131072 }, + { + "id": "lightonai/LightOnOCR-2-1B", + "name": "LightOnOCR 2", + "cost": { + "input": 0.1785, + "output": 0.3465 + }, + "context": 32768, + "input_limit": 32768, + "output_limit": 8192, + "tool_call": true, + "image": true + }, { "id": "anthracite-org/magnum-v4-72b", "name": "Magnum v4 72B", @@ -8377,7 +8550,20 @@ }, "context": 131072, "input_limit": 131072, - "output_limit": 16384 + "output_limit": 16384, + "tool_call": true + }, + { + "id": "meta-llama/llama-3.1-405b-instruct", + "name": "Llama 3.1 405B", + "cost": { + "input": 2.0265, + "output": 2.0265 + }, + "context": 131072, + "input_limit": 131072, + "output_limit": 8192, + "tool_call": true }, { "id": "meta-llama/llama-3.2-3b-instruct", @@ -8718,6 +8904,23 @@ "structured_output": true, "image": true }, + { + "id": "openai/gpt-terra-latest", + "name": "GPT Terra Latest", + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1050000, + "input_limit": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "openai/gpt-4.1-mini", "name": "GPT 4.1 Mini", @@ -8984,6 +9187,40 @@ "structured_output": true, "image": true }, + { + "id": "openai/gpt-sol-latest", + "name": "GPT Sol Latest", + "cost": { + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1050000, + "input_limit": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-luna-latest", + "name": "GPT Luna Latest", + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + }, + "context": 1050000, + "input_limit": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "openai/gpt-5.4-mini", "name": "GPT 5.4 Mini", @@ -9011,6 +9248,23 @@ "input_limit": 16385, "output_limit": 4096 }, + { + "id": "openai/gpt-astra-latest", + "name": "GPT Astra Latest", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1050000, + "input_limit": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "openai/gpt-5-mini", "name": "GPT 5 Mini", @@ -11502,12 +11756,12 @@ "id": "glm-5.3", "name": "GLM5.3", "cost": { - "input": 1.4, - "output": 4.4, - "cache_read": 0.26 + "input": 0.95, + "output": 3.4, + "cache_read": 0.2 }, "context": 1048576, - "output_limit": 1048576, + "output_limit": 128000, "reasoning": true, "tool_call": true, "structured_output": true @@ -13241,6 +13495,25 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepseek-v4-pro:0813", + "name": "DeepSeek V4 Pro 0813", + "context": 1048576, + "output_limit": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, + { + "id": "deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "nemotron-3-nano:30b", "name": "nemotron-3-nano:30b", @@ -15349,6 +15622,23 @@ "structured_output": true, "image": true }, + { + "id": "aws-mantle/gpt-6-astra", + "name": "GPT-6 Astra (AWS Mantle)", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "aws-mantle/gpt-5.6-luna", "name": "GPT-5.6 Luna (AWS Mantle)", @@ -16208,6 +16498,22 @@ "image": true, "video": true }, + { + "id": "alibaba/kimi-k3", + "name": "Kimi K3 (Alibaba Cloud)", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "context": 1048576, + "output_limit": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "alibaba/qwen3.6-35b-a3b", "name": "Qwen3.6 35B A3B (Alibaba Cloud)", @@ -16404,6 +16710,22 @@ "output_limit": 32000, "tool_call": true }, + { + "id": "runpod/kimi-k3", + "name": "Kimi K3 (Runpod)", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "context": 1048576, + "output_limit": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "scx-ai-gp/glm-5.2", "name": "GLM-5.2 (SCX.ai)", @@ -16563,6 +16885,21 @@ "structured_output": true, "image": true }, + { + "id": "aws-bedrock/claude-fable-5-1", + "name": "Claude Fable 5.1 (AWS Bedrock)", + "cost": { + "input": 10, + "output": 50, + "cache_read": 0.25, + "cache_write": 12.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "aws-bedrock/claude-opus-4-6", "name": "Claude Opus 4.6 (AWS Bedrock)", @@ -17047,6 +17384,32 @@ "reasoning": true, "tool_call": true }, + { + "id": "vichar-ai/glm-5.3-flash", + "name": "GLM-5.3 Flash (vichar-ai)", + "cost": { + "input": 0.15, + "output": 0.5, + "cache_read": 0.03 + }, + "context": 1048000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, + { + "id": "vichar-ai/glm-5.3", + "name": "GLM-5.3 (vichar-ai)", + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + }, + "context": 1048000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, { "id": "together-ai/glm-4.7", "name": "GLM-4.7 (Together AI)", @@ -17097,6 +17460,21 @@ "reasoning": true, "tool_call": true }, + { + "id": "together-ai/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash (Together AI)", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "together-ai/kimi-k3", "name": "Kimi K3 (Together AI)", @@ -17781,6 +18159,20 @@ "context": 32768, "output_limit": 32000 }, + { + "id": "novita/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash (NovitaAI)", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "novita/hy3", "name": "Hy3 (NovitaAI)", @@ -18149,6 +18541,36 @@ "tool_call": true, "image": true }, + { + "id": "sakana/fugu-max", + "name": "Fugu Max (Sakana AI)", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + }, + "context": 1000000, + "output_limit": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "sakana/fugu-ultra-v2.0", + "name": "Fugu Ultra v2.0 (Sakana AI)", + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "context": 1000000, + "output_limit": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepinfra/gemma-4-26b-a4b-it", "name": "Gemma 4 26B A4B IT (DeepInfra)", @@ -18199,6 +18621,21 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepinfra/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash (DeepInfra)", + "cost": { + "input": 0.2, + "output": 0.6, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepinfra/hy3", "name": "Hy3 (DeepInfra)", @@ -18465,7 +18902,7 @@ "output": 0.1, "cache_read": 0.01 }, - "context": 524288, + "context": 1050000, "output_limit": 393216, "reasoning": true, "tool_call": true, @@ -18499,6 +18936,19 @@ "image": true, "video": true }, + { + "id": "consensusprotocol/gemma-4-31b-it", + "name": "Gemma 4 31B IT (Consensus Protocol)", + "cost": { + "input": 0.1, + "output": 0.25, + "cache_read": 0.01 + }, + "context": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true + }, { "id": "azure/gpt-5-nano", "name": "GPT-5 Nano (Azure)", @@ -19470,6 +19920,242 @@ "structured_output": true, "image": true }, + { + "id": "tencent/kimi-k2.7-code-highspeed", + "name": "Kimi K2.7 Code Highspeed (Tencent Cloud)", + "cost": { + "input": 1.9, + "output": 8, + "cache_read": 0.38 + }, + "context": 262144, + "output_limit": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "tencent/minimax-m2.7", + "name": "MiniMax M2.7 (Tencent Cloud)", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.06 + }, + "context": 200000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/kimi-k2.6", + "name": "Kimi K2.6 (Tencent Cloud)", + "cost": { + "input": 0.858, + "output": 3.566, + "cache_read": 0.145 + }, + "context": 262144, + "output_limit": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "tencent/glm-5.2", + "name": "GLM-5.2 (Tencent Cloud)", + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/minimax-m3", + "name": "MiniMax M3 (Tencent Cloud)", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.06 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "tencent/deepseek-v4-flash", + "name": "DeepSeek V4 Flash (Tencent Cloud)", + "cost": { + "input": 0.14, + "output": 0.28, + "cache_read": 0.0028 + }, + "context": 1000000, + "output_limit": 393216, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/kimi-k2.7-code", + "name": "Kimi K2.7 Code (Tencent Cloud)", + "cost": { + "input": 0.95, + "output": 4, + "cache_read": 0.19 + }, + "context": 262144, + "output_limit": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "tencent/hy3", + "name": "Hy3 (Tencent Cloud)", + "cost": { + "input": 0.132, + "output": 0.528, + "cache_read": 0.033 + }, + "context": 262144, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, + { + "id": "tencent/hy4-preview", + "name": "Hy4 Preview (Tencent Cloud)", + "cost": { + "input": 0.834, + "output": 2.501, + "cache_read": 0.042 + }, + "context": 1000000, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, + { + "id": "tencent/hy-mt2-plus", + "name": "Hy-MT2 Plus (Tencent Cloud)", + "cost": { + "input": 0.074, + "output": 0.295 + }, + "context": 8192, + "output_limit": 4096 + }, + { + "id": "tencent/kimi-k3", + "name": "Kimi K3 (Tencent Cloud)", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "context": 1048576, + "output_limit": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "tencent/glm-5", + "name": "GLM-5 (Tencent Cloud)", + "cost": { + "input": 1, + "output": 3.2, + "cache_read": 0.2 + }, + "context": 200000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/glm-5.1", + "name": "GLM-5.1 (Tencent Cloud)", + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + }, + "context": 200000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/deepseek-v4-pro", + "name": "DeepSeek V4 Pro (Tencent Cloud)", + "cost": { + "input": 0.435, + "output": 0.87, + "cache_read": 0.00363 + }, + "context": 1000000, + "output_limit": 393216, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/glm-5-turbo", + "name": "GLM-5 Turbo (Tencent Cloud)", + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + }, + "context": 200000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true + }, + { + "id": "tencent/glm-5v-turbo", + "name": "GLM-5V Turbo (Tencent Cloud)", + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + }, + "context": 200000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "tencent/mimo-v2.5-pro", + "name": "MiMo V2.5 Pro (Tencent Cloud)", + "cost": { + "input": 0.435, + "output": 0.87, + "cache_read": 0.0036 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true + }, { "id": "xai/grok-4", "name": "Grok 4 (xAI)", @@ -19888,6 +20574,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "fireworks/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash (Fireworks AI)", + "cost": { + "input": 0.22, + "output": 0.66, + "cache_read": 0.007 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "fireworks/kimi-k3", "name": "Kimi K3 (Fireworks AI)", @@ -21728,6 +22429,21 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.155, + "output": 0.62, + "cache_read": 0.0031 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "gpt-5.1", "name": "GPT-5.1", @@ -25434,6 +26150,17 @@ "tool_call": true, "image": true }, + { + "id": "gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "gpt-4.1", "name": "gpt-4.1", @@ -28783,6 +29510,94 @@ "reasoning": true, "tool_call": true, "structured_output": true + }, + { + "id": "xai/grok-4.20-reasoning", + "name": "Grok 4.20 (Reasoning)", + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + }, + "context": 2000000, + "output_limit": 30000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.3", + "name": "Grok 4.3", + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + }, + "context": 200000, + "output_limit": 30000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.20-non-reasoning", + "name": "Grok 4.20 (Non-Reasoning)", + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + }, + "context": 2000000, + "output_limit": 30000, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.1-fast-non-reasoning", + "name": "Grok 4.1 Fast", + "cost": { + "input": 0.2, + "output": 0.5, + "cache_read": 0.05 + }, + "context": 128000, + "output_limit": 30000, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.1-fast-reasoning", + "name": "Grok 4.1 Fast (Reasoning)", + "cost": { + "input": 0.2, + "output": 0.5, + "cache_read": 0.05 + }, + "context": 128000, + "output_limit": 30000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.6", + "name": "Grok 4.6", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.5 + }, + "context": 524288, + "output_limit": 500000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true } ] }, @@ -28973,19 +29788,6 @@ "structured_output": true, "image": true }, - { - "id": "mimo-v2.5-pro-ultraspeed", - "name": "MiMo V2.5 Pro UltraSpeed", - "cost": { - "input": 1.5231, - "output": 3.0462, - "cache_read": 0.0127 - }, - "context": 1048576, - "output_limit": 131072, - "reasoning": true, - "tool_call": true - }, { "id": "glm-5.2", "name": "GLM 5.2", @@ -29004,15 +29806,16 @@ "id": "deepseek-v4-flash", "name": "DeepSeek V4 Flash", "cost": { - "input": 0.242, - "output": 0.726, - "cache_read": 0.0077 + "input": 0.165, + "output": 0.66, + "cache_read": 0.0033 }, "context": 1000000, "output_limit": 384000, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "glm-5.2-fast", @@ -34049,6 +34852,33 @@ "reasoning": true, "tool_call": true }, + { + "id": "mistral-medium", + "name": "Mistral Medium 3", + "cost": { + "input": 0.4, + "output": 2, + "cache_read": 0.4, + "cache_write": 0.4 + }, + "context": 128000, + "output_limit": 64000, + "tool_call": true, + "image": true + }, + { + "id": "ministral-3b", + "name": "Ministral 3B", + "cost": { + "input": 0.1, + "output": 0.1, + "cache_read": 0.1, + "cache_write": 0.1 + }, + "context": 128000, + "output_limit": 4000, + "tool_call": true + }, { "id": "gpt-4.1-nano", "name": "GPT-4.1 nano", @@ -34080,6 +34910,21 @@ "image": true, "video": true }, + { + "id": "claude-opus-5-fast", + "name": "Claude Opus 5", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "gpt-5.6-sol", "name": "GPT-5.6 Sol", @@ -34097,6 +34942,20 @@ "structured_output": true, "image": true }, + { + "id": "devstral-small-2", + "name": "Devstral Small 2", + "cost": { + "input": 0.1, + "output": 0.3, + "cache_read": 0.1, + "cache_write": 0.1 + }, + "context": 256000, + "output_limit": 131072, + "tool_call": true, + "image": true + }, { "id": "claude-opus-5", "name": "Claude Opus 5", @@ -34521,6 +35380,20 @@ "tool_call": true, "image": true }, + { + "id": "ministral-14b", + "name": "Ministral 14B", + "cost": { + "input": 0.2, + "output": 0.2, + "cache_read": 0.2, + "cache_write": 0.2 + }, + "context": 256000, + "output_limit": 131072, + "tool_call": true, + "image": true + }, { "id": "qwen3.7-plus", "name": "Qwen3.7 Plus", @@ -34569,6 +35442,20 @@ "structured_output": true, "image": true }, + { + "id": "magistral-medium", + "name": "Magistral Medium (latest)", + "cost": { + "input": 2, + "output": 5, + "cache_read": 2, + "cache_write": 2 + }, + "context": 128000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true + }, { "id": "gpt-5.6-terra", "name": "GPT-5.6 Terra", @@ -35002,6 +35889,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "zai-org/GLM-5.2-Fast", + "name": "GLM-5.2", + "cost": { + "input": 2.1, + "output": 6.6, + "cache_read": 0.21, + "cache_write": 2.1 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "zai-org/GLM-5.2", "name": "GLM-5.2", @@ -35030,6 +35932,21 @@ "output_limit": 32768, "reasoning": true }, + { + "id": "thinkingmachines/inkling-small", + "name": "Inkling Small", + "cost": { + "input": 0.5, + "output": 1.2, + "cache_read": 0.1, + "cache_write": 0.5 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "fastino/gliguard-LLMGuardrails-300M", "name": "GLiGuard LLM Guardrails 300M", @@ -35458,6 +36375,23 @@ "image": true, "video": true }, + { + "id": "moonshotai/Kimi-K3-Fast", + "name": "Kimi K3", + "cost": { + "input": 4.5, + "output": 22.5, + "cache_read": 0.45, + "cache_write": 4.5 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "moonshotai/Kimi-K3", "name": "Kimi K3", @@ -37177,9 +38111,9 @@ "id": "gemma-4-26b-a4b-it", "name": "Gemma 4 26B A4B IT", "cost": { - "input": 0.106, - "output": 0.368, - "cache_write": 0.053 + "input": 0.102, + "output": 0.356, + "cache_read": 0.051 }, "context": 256000, "output_limit": 25600, @@ -37221,7 +38155,7 @@ "cost": { "input": 0.1175, "output": 1.136, - "cache_write": 0.05875 + "cache_read": 0.05875 }, "context": 262144, "output_limit": 26214, @@ -37261,9 +38195,9 @@ "id": "minimax-m2.7", "name": "MiniMax-M2.7", "cost": { - "input": 0.458, - "output": 1.712, - "cache_write": 0.229 + "input": 0.396, + "output": 1.464, + "cache_read": 0.198 }, "context": 262100, "output_limit": 6553, @@ -37289,9 +38223,9 @@ "id": "llama-4-maverick-17b-128e-instruct-fp8", "name": "Llama 4 Maverick 17B Instruct", "cost": { - "input": 0.274, - "output": 0.8992, - "cache_write": 0.137 + "input": 0.255, + "output": 0.8365, + "cache_read": 0.1275 }, "context": 430000, "output_limit": 43000, @@ -37360,13 +38294,28 @@ "cost": { "input": 0.6, "output": 2.5, - "cache_write": 0.3 + "cache_read": 0.3 }, "context": 262144, "output_limit": 26214, "reasoning": true, "tool_call": true }, + { + "id": "deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.03 + }, + "context": 1048576, + "output_limit": 26214, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "qwen3.7-flash", "name": "Qwen3.7 Flash", @@ -37477,8 +38426,8 @@ "name": "GLM-5", "cost": { "input": 0.86, - "output": 2.784, - "cache_write": 0.43 + "output": 2.752, + "cache_read": 0.43 }, "context": 202752, "output_limit": 20275, @@ -37505,7 +38454,7 @@ "cost": { "input": 0.5584, "output": 2.935, - "cache_write": 0.2792 + "cache_read": 0.2792 }, "context": 262144, "output_limit": 26214, @@ -37517,9 +38466,9 @@ "id": "glm-5.1", "name": "GLM-5.1", "cost": { - "input": 1.386, - "output": 4.356, - "cache_write": 0.693 + "input": 1.318, + "output": 4.308, + "cache_read": 0.659 }, "context": 202750, "output_limit": 3276, @@ -37559,9 +38508,9 @@ "id": "gpt-oss-120b", "name": "GPT OSS 120B", "cost": { - "input": 0.18, - "output": 0.61, - "cache_write": 0.09 + "input": 0.168, + "output": 0.66, + "cache_read": 0.084 }, "context": 128072, "output_limit": 13107, @@ -37581,7 +38530,8 @@ "output_limit": 262144, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "llama-3.3-70b-instruct", @@ -37589,7 +38539,7 @@ "cost": { "input": 0.6066, "output": 1.0386, - "cache_write": 0.3033 + "cache_read": 0.3033 }, "context": 128000, "output_limit": 12800, @@ -37615,7 +38565,7 @@ "cost": { "input": 0.445, "output": 2.145, - "cache_write": 0.2225 + "cache_read": 0.2225 }, "context": 106000, "output_limit": 10600, @@ -38186,6 +39136,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek-v4.1-flash@eu", + "name": "DeepSeek V4.1 Flash (EU)", + "cost": { + "input": 0.5, + "output": 1.5, + "cache_read": 0.05 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "gpt-5.4@eu", "name": "GPT-5.4 (EU)", @@ -38478,6 +39443,21 @@ "structured_output": true, "image": true }, + { + "id": "deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.5, + "output": 1.5, + "cache_read": 0.05 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "hy3", "name": "Hy3", @@ -38578,19 +39558,6 @@ "image": true, "video": true }, - { - "id": "thinkingcap-qwen3.6-27b", - "name": "thinkingcap-qwen3.6-27b", - "cost": { - "input": 0.4, - "output": 2.6, - "cache_read": 0.05 - }, - "context": 262144, - "output_limit": 32768, - "reasoning": true, - "tool_call": true - }, { "id": "nemotron-3-ultra-nvfp4", "name": "nemotron-3-ultra-nvfp4", @@ -38776,9 +39743,9 @@ "id": "gpt-5.6-sol@eu", "name": "GPT-5.6 Sol (EU)", "cost": { - "input": 5.5, - "output": 33, - "cache_read": 0.55 + "input": 4.4, + "output": 22, + "cache_read": 0.44 }, "context": 1050000, "input_limit": 922000, @@ -39018,19 +39985,6 @@ "structured_output": true, "image": true }, - { - "id": "thinkingcap-qwen3.6-27b@eu", - "name": "thinkingcap-qwen3.6-27b@eu", - "cost": { - "input": 0.4, - "output": 2.6, - "cache_read": 0.05 - }, - "context": 262144, - "output_limit": 32768, - "reasoning": true, - "tool_call": true - }, { "id": "seed-2.0-mini", "name": "Seed 2.0 Mini", @@ -40533,6 +41487,20 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepseek-ai/DeepSeek-V4.1-Flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.3, + "output": 1.2 + }, + "context": 1048576, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepseek-ai/DeepSeek-V4-Pro-0813", "name": "DeepSeek V4 Pro 0813", @@ -40585,6 +41553,19 @@ "tool_call": true, "structured_output": true }, + { + "id": "google/gemma-3-4b-it", + "name": "Gemma 3 4B IT", + "cost": { + "input": 0.05, + "output": 0.1 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemma-4-31B-it", "name": "Gemma 4 31B IT", @@ -40599,6 +41580,19 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-3-27b-it", + "name": "Gemma 3 27B IT", + "cost": { + "input": 0.08, + "output": 0.16 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemma-4-26B-A4B-it", "name": "Gemma 4 26B A4B IT", @@ -40613,6 +41607,19 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-3-12b-it", + "name": "Gemma 3 12B IT", + "cost": { + "input": 0.05, + "output": 0.15 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "zai-org/GLM-4.6V-Flash", "name": "GLM-4.6V-Flash", @@ -44801,6 +45808,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "z-ai/glm-5.3-flash", + "name": "GLM-5.3-Flash", + "cost": { + "input": 0, + "output": 0 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "black-forest-labs/flux_1-kontext-dev", "name": "FLUX.1-Kontext-dev", @@ -47200,6 +48222,21 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepseek-ai/DeepSeek-V4.1-Flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.03 + }, + "context": 1048576, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepseek-ai/DeepSeek-V4-Pro-0813", "name": "DeepSeek V4 Pro 0813", @@ -47296,7 +48333,8 @@ "output_limit": 262144, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "zai-org/GLM-5.2", @@ -49664,20 +50702,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "deepseek/deepseek-v4.1-flash-beta", - "name": "DeepSeek V4.1 Flash Beta", - "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 - }, - "context": 1000000, - "output_limit": 384000, - "reasoning": true, - "tool_call": true, - "image": true - }, { "id": "deepseek/deepseek-v4-flash", "name": "DeepSeek V4 Flash", @@ -49692,13 +50716,27 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 393216, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepseek/deepseek-v3.2", "name": "DeepSeek V3.2", "cost": { - "input": 0.28, - "output": 0.42, - "cache_read": 0.028 + "input": 0.62, + "output": 1.85 }, "context": 128000, "output_limit": 8000, @@ -49753,8 +50791,7 @@ }, "context": 128000, "output_limit": 32768, - "reasoning": true, - "tool_call": true + "reasoning": true }, { "id": "amazon/nova-2-lite", @@ -49781,10 +50818,11 @@ "cost": { "input": 0.8, "output": 3.2, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 0.8 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -49795,10 +50833,11 @@ "cost": { "input": 0.06, "output": 0.24, - "cache_read": 0.015 + "cache_read": 0.015, + "cache_write": 0.06 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -49809,10 +50848,11 @@ "cost": { "input": 0.035, "output": 0.14, - "cache_read": 0.00875 + "cache_read": 0.00875, + "cache_write": 0.035 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true }, { @@ -52816,7 +53856,8 @@ "context": 256000, "output_limit": 16384, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "deepseek-v4-pro-0813", @@ -55838,9 +56879,9 @@ "id": "hy3", "name": "Hy3", "cost": { - "input": 0.14, - "output": 0.58, - "cache_read": 0.035 + "input": 0.132, + "output": 0.528, + "cache_read": 0.033 }, "context": 262144, "input_limit": 192000, @@ -55916,6 +56957,19 @@ "structured_output": true, "image": true }, + { + "id": "hy4-preview", + "name": "Hy4 preview", + "cost": { + "input": 0.834, + "output": 2.501, + "cache_read": 0.042 + }, + "context": 1000000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true + }, { "id": "ernie-4.5-vl-424b-a47b", "name": "ERNIE 4.5 VL 424B A47B", @@ -56025,6 +57079,17 @@ "structured_output": true, "image": true }, + { + "id": "hy-mt2-plus", + "name": "Hy-MT2 Plus", + "cost": { + "input": 0.074, + "output": 0.295 + }, + "context": 8192, + "output_limit": 8192, + "tool_call": true + }, { "id": "gpt-5.6-luna", "name": "GPT-5.6 Luna", @@ -56562,6 +57627,21 @@ "image": true, "video": true }, + { + "id": "fugu-max", + "name": "Fugu Max", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + }, + "context": 1000000, + "output_limit": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "gpt-5.4-mini", "name": "GPT-5.4 mini", @@ -56624,9 +57704,9 @@ "id": "gemma-4-31b-it", "name": "Gemma 4 31B IT", "cost": { - "input": 0.102, - "output": 0.297, - "cache_read": 0.012 + "input": 0.1, + "output": 0.25, + "cache_read": 0.01 }, "context": 262144, "output_limit": 32768, @@ -56970,6 +58050,20 @@ "structured_output": true, "image": true }, + { + "id": "glm-5-turbo", + "name": "GLM-5-Turbo", + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + }, + "context": 200000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "gpt-5-mini", "name": "GPT-5 Mini", @@ -57104,6 +58198,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "glm-5v-turbo", + "name": "GLM-5V-Turbo", + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + }, + "context": 200000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, { "id": "gpt-4", "name": "GPT-4", @@ -57192,6 +58301,21 @@ "image": true, "video": true }, + { + "id": "fugu-ultra-v2.0", + "name": "Fugu Ultra v2.0", + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "context": 1000000, + "output_limit": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "claude-sonnet-5", "name": "Claude Sonnet 5", @@ -57521,6 +58645,20 @@ "id": "inception", "name": "Inception", "models": [ + { + "id": "mercury-2.5", + "name": "Mercury 2.5", + "cost": { + "input": 0.04, + "output": 0.15, + "cache_read": 0.004 + }, + "context": 260000, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "mercury-edit-2", "name": "Mercury Edit 2", @@ -60213,6 +61351,21 @@ "image": true, "video": true }, + { + "id": "accounts/fireworks/models/deepseek-v4p1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.22, + "output": 0.66, + "cache_read": 0.007 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "accounts/fireworks/models/kimi-k2p6", "name": "Kimi K2.6", @@ -60355,6 +61508,14 @@ "reasoning": true, "tool_call": true }, + { + "id": "accounts/fireworks/models/mistral-large-3-fp8", + "name": "Mistral Large 3 675B Instruct 2512", + "context": 262144, + "output_limit": 262144, + "tool_call": true, + "image": true + }, { "id": "accounts/fireworks/models/glm-5p2", "name": "GLM 5.2", @@ -61716,6 +62877,18 @@ "tool_call": true, "structured_output": true }, + { + "id": "gemma-3-27b", + "name": "Gemma 3 27B", + "cost": { + "input": 0, + "output": 0 + }, + "context": 128000, + "output_limit": 8192, + "structured_output": true, + "image": true + }, { "id": "qwen3-8-max-0902", "name": "Qwen3.8 Max 0902", @@ -62499,6 +63672,21 @@ "reasoning": true, "tool_call": true, "structured_output": true + }, + { + "id": "fugu-ultra-v2-0", + "name": "Fugu Ultra v2.0", + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true } ] }, @@ -64042,6 +65230,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek-ai/DeepSeek-V4.1-Flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.2, + "output": 0.6, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepseek-ai/DeepSeek-V4-Pro-0813", "name": "DeepSeek V4 Pro 0813", @@ -64125,6 +65328,19 @@ "reasoning": true, "tool_call": true }, + { + "id": "google/gemma-3-4b-it", + "name": "Gemma 3 4B IT", + "cost": { + "input": 0.05, + "output": 0.1 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemma-4-31B-it", "name": "Gemma 4 31B IT", @@ -64154,6 +65370,19 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-3-27b-it", + "name": "Gemma 3 27B IT", + "cost": { + "input": 0.08, + "output": 0.16 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemma-4-26B-A4B-it", "name": "Gemma 4 26B A4B IT", @@ -64168,6 +65397,19 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-3-12b-it", + "name": "Gemma 3 12B IT", + "cost": { + "input": 0.05, + "output": 0.15 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "zai-org/GLM-5.1", "name": "GLM-5.1", @@ -64766,9 +66008,9 @@ "id": "XiaomiMiMo/MiMo-V2.5", "name": "MiMo-V2.5", "cost": { - "input": 0.4, - "output": 2, - "cache_read": 0.08 + "input": 0.14, + "output": 0.28, + "cache_read": 0.0028 }, "context": 262144, "output_limit": 16384, @@ -65015,7 +66257,7 @@ "cache_read": 0.085, "cache_write": 0.53125 }, - "context": 1000000, + "context": 262144, "output_limit": 131072, "reasoning": true, "tool_call": true, @@ -65151,7 +66393,7 @@ "output": 0.598 }, "context": 262144, - "output_limit": 16384, + "output_limit": 235929, "tool_call": true, "structured_output": true }, @@ -65668,7 +66910,7 @@ }, { "id": "~anthropic/claude-haiku-latest", - "name": "Anthropic Claude Haiku Latest", + "name": "Anthropic: Claude Haiku Latest", "cost": { "input": 1, "output": 5, @@ -65684,7 +66926,7 @@ }, { "id": "~anthropic/claude-sonnet-latest", - "name": "Anthropic Claude Sonnet Latest", + "name": "Anthropic: Claude Sonnet Latest", "cost": { "input": 2, "output": 10, @@ -65732,14 +66974,14 @@ }, { "id": "~deepseek/deepseek-v4-flash-latest", - "name": "DeepSeek V4 Flash Latest", + "name": "DeepSeek: DeepSeek V4 Flash Latest", "cost": { - "input": 0.05, - "output": 0.16, - "cache_read": 0.013 + "input": 0.0352, + "output": 0.1056, + "cache_read": 0.00112 }, "context": 1048576, - "output_limit": 393216, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -66131,7 +67373,7 @@ }, { "id": "mistralai/voxtral-small-24b-2507", - "name": "Mistral: Voxtral Small 24B 2507", + "name": "Voxtral Small 24B 2507", "cost": { "input": 0.1, "output": 0.3, @@ -66234,8 +67476,8 @@ "output": 1.2, "cache_read": 0.03 }, - "context": 204800, - "output_limit": 131072, + "context": 200000, + "output_limit": 128000, "reasoning": true, "tool_call": true, "structured_output": true @@ -66318,9 +67560,8 @@ "id": "nvidia/nemotron-3.5-lightning", "name": "Nemotron 3.5 Lightning 30B A3B", "cost": { - "input": 0.08, - "output": 0.2, - "cache_read": 0.04 + "input": 0.065, + "output": 0.18 }, "context": 262144, "output_limit": 131072, @@ -66346,13 +67587,14 @@ "id": "nvidia/nemotron-3-super-120b-a12b", "name": "Nemotron 3 Super 120B A12B", "cost": { - "input": 0.085, - "output": 0.4 + "input": 0.08, + "output": 0.45 }, "context": 262144, "output_limit": 16384, "reasoning": true, - "tool_call": true + "tool_call": true, + "structured_output": true }, { "id": "nvidia/nemotron-3-ultra-550b-a55b:free", @@ -66662,7 +67904,7 @@ "output": 0.22 }, "context": 262144, - "output_limit": 16384, + "output_limit": 235929, "reasoning": true, "tool_call": true, "structured_output": true, @@ -66700,7 +67942,7 @@ }, { "id": "google/gemma-3-4b-it", - "name": "Google: Gemma 3 4B", + "name": "Gemma 3 4B IT", "cost": { "input": 0.05, "output": 0.1 @@ -66855,7 +68097,7 @@ }, { "id": "google/gemma-3-27b-it", - "name": "Google: Gemma 3 27B", + "name": "Gemma 3 27B IT", "cost": { "input": 0.08, "output": 0.16 @@ -67071,7 +68313,7 @@ }, { "id": "google/gemma-3-12b-it", - "name": "Google: Gemma 3 12B", + "name": "Gemma 3 12B IT", "cost": { "input": 0.05, "output": 0.15 @@ -67169,19 +68411,6 @@ "tool_call": true, "image": true }, - { - "id": "thinkingmachines/inkling:free", - "name": "Thinking Machines: Inkling (free)", - "cost": { - "input": 0, - "output": 0 - }, - "context": 1048576, - "output_limit": 262144, - "reasoning": true, - "tool_call": true, - "image": true - }, { "id": "thinkingmachines/inkling", "name": "Inkling", @@ -67190,8 +68419,8 @@ "output": 4.05, "cache_read": 0.16 }, - "context": 1048576, - "output_limit": 32768, + "context": 524288, + "output_limit": 471859, "reasoning": true, "tool_call": true, "image": true @@ -67495,7 +68724,7 @@ }, { "id": "~google/gemini-pro-latest", - "name": "Google Gemini Pro Latest", + "name": "Google: Gemini Pro Latest", "cost": { "input": 2, "output": 12, @@ -67512,7 +68741,7 @@ }, { "id": "~google/gemini-flash-latest", - "name": "Google Gemini Flash Latest", + "name": "Google: Gemini Flash Latest", "cost": { "input": 0.75, "output": 3.75, @@ -67563,6 +68792,21 @@ "structured_output": true, "image": true }, + { + "id": "sakana/fugu-max", + "name": "Sakana: Fugu Max", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "sakana/sakana-namazu", "name": "Sakana Namazu", @@ -67579,12 +68823,26 @@ "image": true }, { - "id": "~moonshotai/kimi-latest", - "name": "MoonshotAI Kimi Latest", + "id": "sakana/fugu-ultra-v2", + "name": "Sakana: Fugu Ultra v2", "cost": { - "input": 2.4, - "output": 12, - "cache_read": 0.24 + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "~moonshotai/kimi-latest", + "name": "MoonshotAI: Kimi Latest", + "cost": { + "input": 2.1, + "output": 10.95 }, "context": 1048576, "output_limit": 943718, @@ -67655,8 +68913,8 @@ "output": 3.96, "cache_read": 0.044 }, - "context": 1048576, - "output_limit": 393216, + "context": 1024000, + "output_limit": 384000, "reasoning": true, "tool_call": true, "structured_output": true @@ -67714,8 +68972,7 @@ "context": 64000, "output_limit": 16000, "reasoning": true, - "tool_call": true, - "structured_output": true + "tool_call": true }, { "id": "deepseek/deepseek-chat", @@ -67803,8 +69060,8 @@ "output": 3.2, "cache_read": 0.135 }, - "context": 1024000, - "output_limit": 384000, + "context": 1048576, + "output_limit": 393216, "reasoning": true, "tool_call": true, "structured_output": true @@ -67813,9 +69070,8 @@ "id": "deepseek/deepseek-chat-v3-0324", "name": "DeepSeek: DeepSeek V3 0324", "cost": { - "input": 0.29, - "output": 1.14, - "cache_read": 0.11 + "input": 0.25, + "output": 1 }, "context": 163840, "output_limit": 147456, @@ -67823,8 +69079,24 @@ "structured_output": true }, { - "id": "~openai/gpt-latest", - "name": "OpenAI GPT Latest", + "id": "~openai/gpt-terra-latest", + "name": "OpenAI: GPT Terra Latest", + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "~openai/gpt-sol-latest", + "name": "OpenAI: GPT Sol Latest", "cost": { "input": 2, "output": 10, @@ -67838,9 +69110,41 @@ "structured_output": true, "image": true }, + { + "id": "~openai/gpt-luna-latest", + "name": "OpenAI: GPT Luna Latest", + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + }, + "context": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "~openai/gpt-astra-latest", + "name": "OpenAI: GPT Astra Latest ($$$$)", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "~openai/gpt-mini-latest", - "name": "OpenAI GPT Mini Latest", + "name": "OpenAI: GPT Mini Latest", "cost": { "input": 0.75, "output": 4.5, @@ -67966,6 +69270,36 @@ "reasoning": true, "tool_call": true }, + { + "id": "inclusionai/ling-3.0-flash-vl:free", + "name": "inclusionAI: Ling 3.0 Flash VL (free)", + "cost": { + "input": 0, + "output": 0 + }, + "context": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "inclusionai/ling-3.0-flash-vl", + "name": "inclusionAI: Ling 3.0 Flash VL", + "cost": { + "input": 0.06, + "output": 0.18, + "cache_read": 0.012 + }, + "context": 131072, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "anthracite-org/magnum-v4-72b", "name": "Magnum v4 72B", @@ -68730,7 +70064,7 @@ }, { "id": "openai/gpt-oss-safeguard-20b", - "name": "OpenAI: gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B", "cost": { "input": 0.075, "output": 0.3, @@ -69271,12 +70605,12 @@ "id": "~z-ai/glm-latest", "name": "Z.ai: GLM Latest", "cost": { - "input": 0.7, - "output": 2.2, - "cache_read": 0.13 + "input": 0.936, + "output": 3.168, + "cache_read": 0.1872 }, - "context": 1024000, - "output_limit": 128000, + "context": 262144, + "output_limit": 235929, "reasoning": true, "tool_call": true, "structured_output": true @@ -69289,7 +70623,7 @@ "output": 2.5 }, "context": 262144, - "output_limit": 100352, + "output_limit": 98304, "tool_call": true, "structured_output": true }, @@ -69332,7 +70666,7 @@ "cache_read": 0.15 }, "context": 262144, - "output_limit": 100352, + "output_limit": 98304, "reasoning": true, "tool_call": true, "structured_output": true @@ -69361,7 +70695,7 @@ "output": 2.3 }, "context": 131072, - "output_limit": 100352, + "output_limit": 98304, "tool_call": true }, { @@ -69379,6 +70713,28 @@ "structured_output": true, "image": true }, + { + "id": "inference-net/schematron-v2-small", + "name": "Inference.net: Schematron V2 Small", + "cost": { + "input": 0.05, + "output": 0.23 + }, + "context": 128000, + "output_limit": 4096, + "structured_output": true + }, + { + "id": "inference-net/schematron-v2-turbo", + "name": "Inference.net: Schematron V2 Turbo", + "cost": { + "input": 0.03, + "output": 0.15 + }, + "context": 128000, + "output_limit": 8192, + "structured_output": true + }, { "id": "cohere/north-mini-code:free", "name": "Cohere: North Mini Code (free)", @@ -69482,9 +70838,9 @@ "id": "tencent/hy3", "name": "Hy3", "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.14, + "output": 0.58, + "cache_read": 0.035 }, "context": 262144, "input_limit": 192000, @@ -69641,8 +70997,8 @@ "output": 4.4, "cache_read": 0.26 }, - "context": 1024000, - "output_limit": 128000, + "context": 202752, + "output_limit": 182476, "reasoning": true, "tool_call": true, "structured_output": true @@ -69740,7 +71096,7 @@ "cache_read": 0.26 }, "context": 1048576, - "output_limit": 943718, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -71463,7 +72819,7 @@ "output": 3 }, "context": 262143, - "output_limit": 16000, + "output_limit": 16384, "reasoning": true, "tool_call": true, "structured_output": true, @@ -71506,10 +72862,11 @@ "cost": { "input": 0.92, "output": 3.68, - "cache_read": 0.23 + "cache_read": 0.23, + "cache_write": 0.92 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -71542,6 +72899,21 @@ "structured_output": true, "image": true }, + { + "id": "google.gemma-4-31b", + "name": "Gemma 4 31B IT", + "cost": { + "input": 0.14, + "output": 0.4 + }, + "context": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "us.xai.grok-4.6", "name": "Grok 4.6 (US)", @@ -71572,12 +72944,11 @@ "id": "qwen.qwen3-coder-next", "name": "Qwen3 Coder Next", "cost": { - "input": 0.22, - "output": 1.8 + "input": 0.5, + "output": 1.2 }, - "context": 131072, + "context": 262144, "output_limit": 65536, - "reasoning": true, "tool_call": true, "structured_output": true }, @@ -71595,6 +72966,7 @@ "output_limit": 128000, "reasoning": true, "tool_call": true, + "structured_output": true, "image": true }, { @@ -71628,9 +73000,22 @@ "structured_output": true, "image": true }, + { + "id": "us-gov.openai.gpt-oss-20b-1:0", + "name": "gpt-oss-20b (GovCloud)", + "cost": { + "input": 0.084, + "output": 0.36 + }, + "context": 128000, + "output_limit": 16384, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "qwen.qwen3-coder-30b-a3b-v1:0", - "name": "Qwen3 Coder 30B A3B Instruct", + "name": "Qwen3-Coder 30B-A3B Instruct", "cost": { "input": 0.15, "output": 0.6 @@ -71658,7 +73043,7 @@ }, { "id": "qwen.qwen3-235b-a22b-2507-v1:0", - "name": "Qwen3 235B A22B 2507", + "name": "Qwen3 235B-A22B Instruct 2507", "cost": { "input": 0.22, "output": 0.88 @@ -71681,6 +73066,19 @@ "structured_output": true, "image": true }, + { + "id": "us-gov.openai.gpt-oss-120b-1:0", + "name": "gpt-oss-120b (GovCloud)", + "cost": { + "input": 0.18, + "output": 0.72 + }, + "context": 128000, + "output_limit": 16384, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "global.anthropic.claude-sonnet-4-6", "name": "Claude Sonnet 4.6 (Global)", @@ -71759,10 +73157,11 @@ "cost": { "input": 0.035, "output": 0.14, - "cache_read": 0.00875 + "cache_read": 0.00875, + "cache_write": 0.035 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true }, { @@ -71802,10 +73201,11 @@ "cost": { "input": 0.037, "output": 0.148, - "cache_read": 0.00925 + "cache_read": 0.00925, + "cache_write": 0.037 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true }, { @@ -71815,8 +73215,8 @@ "input": 0.06, "output": 0.23 }, - "context": 128000, - "output_limit": 4096, + "context": 131072, + "output_limit": 8192, "tool_call": true, "structured_output": true }, @@ -71861,7 +73261,8 @@ "context": 128000, "output_limit": 4096, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "au.anthropic.claude-sonnet-4-5-20250929-v1:0", @@ -71901,10 +73302,11 @@ "cost": { "input": 0.069, "output": 0.276, - "cache_read": 0.01725 + "cache_read": 0.01725, + "cache_write": 0.069 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -71946,10 +73348,11 @@ "cost": { "input": 0.84, "output": 3.36, - "cache_read": 0.21 + "cache_read": 0.21, + "cache_write": 0.84 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -71976,10 +73379,11 @@ "cost": { "input": 0.063, "output": 0.252, - "cache_read": 0.01575 + "cache_read": 0.01575, + "cache_write": 0.063 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -71991,11 +73395,26 @@ "input": 0.04, "output": 0.04 }, - "context": 128000, + "context": 32768, "output_limit": 4096, "tool_call": true, "structured_output": true }, + { + "id": "google.gemma-4-26b-a4b", + "name": "Gemma 4 26B A4B IT", + "cost": { + "input": 0.13, + "output": 0.4 + }, + "context": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "nvidia.nemotron-nano-12b-v2", "name": "NVIDIA Nemotron Nano 12B v2 VL BF16", @@ -72004,7 +73423,7 @@ "output": 0.6 }, "context": 128000, - "output_limit": 4096, + "output_limit": 8192, "tool_call": true, "structured_output": true, "image": true @@ -72016,8 +73435,8 @@ "input": 0.06, "output": 0.24 }, - "context": 128000, - "output_limit": 4096, + "context": 262144, + "output_limit": 8192, "reasoning": true, "tool_call": true, "structured_output": true @@ -72040,7 +73459,7 @@ }, { "id": "minimax.minimax-m2.1", - "name": "MiniMax M2.1", + "name": "MiniMax-M2.1", "cost": { "input": 0.3, "output": 1.2 @@ -72048,7 +73467,8 @@ "context": 204800, "output_limit": 131072, "reasoning": true, - "tool_call": true + "tool_call": true, + "structured_output": true }, { "id": "meta.llama3-3-70b-instruct-v1:0", @@ -72113,10 +73533,26 @@ "output": 6 }, "context": 1040000, + "input_limit": 1040000, "output_limit": 8192, "reasoning": true, "tool_call": true }, + { + "id": "google.gemma-4-e2b", + "name": "Gemma 4 E2B IT", + "cost": { + "input": 0.04, + "output": 0.08 + }, + "context": 131072, + "output_limit": 8192, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "us.meta.llama4-maverick-17b-instruct-v1:0", "name": "Llama 4 Maverick 17B Instruct (US)", @@ -72125,7 +73561,7 @@ "output": 0.97 }, "context": 1000000, - "output_limit": 16384, + "output_limit": 8192, "tool_call": true, "image": true }, @@ -72142,7 +73578,7 @@ }, { "id": "minimax.minimax-m2", - "name": "MiniMax M2", + "name": "MiniMax-M2", "cost": { "input": 0.3, "output": 1.2 @@ -72150,7 +73586,8 @@ "context": 204608, "output_limit": 128000, "reasoning": true, - "tool_call": true + "tool_call": true, + "structured_output": true }, { "id": "global.anthropic.claude-opus-5", @@ -72169,12 +73606,12 @@ }, { "id": "qwen.qwen3-32b-v1:0", - "name": "Qwen3 32B (dense)", + "name": "Qwen3 32B", "cost": { "input": 0.15, "output": 0.6 }, - "context": 16384, + "context": 32768, "output_limit": 16384, "reasoning": true, "tool_call": true, @@ -72198,20 +73635,21 @@ "cost": { "input": 0.8, "output": 3.2, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 0.8 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true }, { "id": "google.gemma-3-12b-it", - "name": "Google Gemma 3 12B", + "name": "Gemma 3 12B IT", "cost": { - "input": 0.049999999999999996, - "output": 0.09999999999999999 + "input": 0.09, + "output": 0.29 }, "context": 131072, "output_limit": 8192, @@ -72255,10 +73693,11 @@ "cost": { "input": 0.374, "output": 3.157, - "cache_read": 0.0935 + "cache_read": 0.0935, + "cache_write": 0.374 }, "context": 1000000, - "output_limit": 64000, + "output_limit": 65535, "reasoning": true, "tool_call": true, "image": true, @@ -72304,7 +73743,8 @@ "context": 128000, "output_limit": 4096, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "openai.gpt-oss-safeguard-20b", @@ -72315,6 +73755,7 @@ }, "context": 128000, "output_limit": 16384, + "reasoning": true, "tool_call": true, "structured_output": true }, @@ -72324,10 +73765,11 @@ "cost": { "input": 0.3, "output": 2.5, - "cache_read": 0.075 + "cache_read": 0.075, + "cache_write": 0.3 }, "context": 1000000, - "output_limit": 64000, + "output_limit": 65535, "reasoning": true, "tool_call": true, "image": true, @@ -72339,10 +73781,11 @@ "cost": { "input": 0.04, "output": 0.16, - "cache_read": 0.01 + "cache_read": 0.01, + "cache_write": 0.04 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true }, { @@ -72392,13 +73835,28 @@ "structured_output": true }, { - "id": "qwen.qwen3-vl-235b-a22b", - "name": "Qwen/Qwen3-VL-235B-A22B-Instruct", + "id": "us.amazon.nova-premier-v1:0", + "name": "Nova Premier (US)", "cost": { - "input": 0.3, - "output": 1.5 + "input": 2.5, + "output": 12.5, + "cache_read": 0.625, + "cache_write": 2.5 }, - "context": 262000, + "context": 1000000, + "output_limit": 10000, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "qwen.qwen3-vl-235b-a22b", + "name": "Qwen3 VL 235B A22B Instruct", + "cost": { + "input": 0.53, + "output": 2.66 + }, + "context": 262144, "output_limit": 262000, "tool_call": true, "structured_output": true, @@ -72409,10 +73867,12 @@ "name": "Nova 2 Lite", "cost": { "input": 0.33, - "output": 2.75 + "output": 2.75, + "cache_read": 0.0825, + "cache_write": 0.33 }, - "context": 128000, - "output_limit": 4096, + "context": 1000000, + "output_limit": 65535, "reasoning": true, "tool_call": true, "image": true, @@ -72454,10 +73914,11 @@ "cost": { "input": 0.06, "output": 0.24, - "cache_read": 0.015 + "cache_read": 0.015, + "cache_write": 0.06 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -72483,10 +73944,11 @@ "cost": { "input": 0.33, "output": 2.75, - "cache_read": 0.0825 + "cache_read": 0.0825, + "cache_write": 0.33 }, "context": 1000000, - "output_limit": 64000, + "output_limit": 65535, "reasoning": true, "tool_call": true, "image": true, @@ -72536,10 +73998,11 @@ "cost": { "input": 0.8, "output": 3.2, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 0.8 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -72583,6 +74046,7 @@ "output": 6 }, "context": 1040000, + "input_limit": 1040000, "output_limit": 8192, "reasoning": true, "tool_call": true @@ -72637,7 +74101,7 @@ }, { "id": "minimax.minimax-m2.5", - "name": "MiniMax M2.5", + "name": "MiniMax-M2.5", "cost": { "input": 0.3, "output": 1.2 @@ -72645,7 +74109,8 @@ "context": 196608, "output_limit": 98304, "reasoning": true, - "tool_call": true + "tool_call": true, + "structured_output": true }, { "id": "openai.gpt-oss-120b-1:0", @@ -72682,8 +74147,8 @@ "input": 0.17, "output": 0.66 }, - "context": 3500000, - "output_limit": 16384, + "context": 10000000, + "output_limit": 8192, "tool_call": true, "image": true }, @@ -72701,6 +74166,7 @@ "output_limit": 128000, "reasoning": true, "tool_call": true, + "structured_output": true, "image": true }, { @@ -72741,8 +74207,7 @@ }, "context": 128000, "output_limit": 32768, - "reasoning": true, - "tool_call": true + "reasoning": true }, { "id": "mistral.magistral-small-2509", @@ -72827,8 +74292,8 @@ "input": 0.17, "output": 0.66 }, - "context": 3500000, - "output_limit": 16384, + "context": 10000000, + "output_limit": 8192, "tool_call": true, "image": true }, @@ -72838,10 +74303,11 @@ "cost": { "input": 0.396, "output": 3.311, - "cache_read": 0.099 + "cache_read": 0.099, + "cache_write": 0.396 }, "context": 1000000, - "output_limit": 64000, + "output_limit": 65535, "reasoning": true, "tool_call": true, "image": true, @@ -72849,14 +74315,13 @@ }, { "id": "google.gemma-3-27b-it", - "name": "Google Gemma 3 27B Instruct", + "name": "Gemma 3 27B IT", "cost": { - "input": 0.12, - "output": 0.2 + "input": 0.23, + "output": 0.38 }, "context": 202752, "output_limit": 8192, - "tool_call": true, "structured_output": true, "image": true }, @@ -72866,10 +74331,11 @@ "cost": { "input": 0.035, "output": 0.14, - "cache_read": 0.00875 + "cache_read": 0.00875, + "cache_write": 0.035 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true }, { @@ -72961,6 +74427,22 @@ "structured_output": true, "image": true }, + { + "id": "in.openai.gpt-5.6-terra", + "name": "GPT-5.6 Terra (India)", + "cost": { + "input": 2.2, + "output": 13.2, + "cache_read": 0.22, + "cache_write": 2.75 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "jp.anthropic.claude-opus-4-8", "name": "Claude Opus 4.8 (JP)", @@ -72994,12 +74476,12 @@ }, { "id": "qwen.qwen3-next-80b-a3b", - "name": "Qwen/Qwen3-Next-80B-A3B-Instruct", + "name": "Qwen3-Next 80B-A3B Instruct", "cost": { - "input": 0.14, - "output": 1.4 + "input": 0.15, + "output": 1.2 }, - "context": 262000, + "context": 262144, "output_limit": 262000, "tool_call": true, "structured_output": true @@ -73042,10 +74524,11 @@ "cost": { "input": 0.06, "output": 0.24, - "cache_read": 0.015 + "cache_read": 0.015, + "cache_write": 0.06 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -73067,9 +74550,9 @@ }, { "id": "qwen.qwen3-coder-480b-a35b-v1:0", - "name": "Qwen3 Coder 480B A35B Instruct", + "name": "Qwen3-Coder 480B-A35B Instruct", "cost": { - "input": 0.22, + "input": 0.45, "output": 1.8 }, "context": 131072, @@ -73127,9 +74610,8 @@ "input": 0.04, "output": 0.08 }, - "context": 128000, + "context": 131072, "output_limit": 4096, - "tool_call": true, "image": true }, { @@ -73156,7 +74638,7 @@ "output": 3.2 }, "context": 202752, - "output_limit": 101376, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -73170,6 +74652,7 @@ }, "context": 128000, "output_limit": 16384, + "reasoning": true, "tool_call": true, "structured_output": true }, @@ -73237,10 +74720,10 @@ "id": "mistral.voxtral-small-24b-2507", "name": "Voxtral Small 24B 2507", "cost": { - "input": 0.15, - "output": 0.35 + "input": 0.1, + "output": 0.3 }, - "context": 32000, + "context": 32768, "output_limit": 8192, "tool_call": true, "structured_output": true @@ -73266,7 +74749,7 @@ "output": 0.97 }, "context": 1000000, - "output_limit": 16384, + "output_limit": 8192, "tool_call": true, "image": true }, @@ -73289,10 +74772,11 @@ "cost": { "input": 0.064, "output": 0.256, - "cache_read": 0.016 + "cache_read": 0.016, + "cache_write": 0.064 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "image": true, "video": true @@ -73369,8 +74853,7 @@ }, "context": 128000, "output_limit": 32768, - "reasoning": true, - "tool_call": true + "reasoning": true }, { "id": "us.anthropic.claude-opus-4-8", @@ -73594,6 +75077,23 @@ "structured_output": true, "image": true }, + { + "id": "in.openai.gpt-5.6-luna", + "name": "GPT-5.6 Luna (India)", + "cost": { + "input": 0.22, + "output": 1.32, + "cache_read": 0.022, + "cache_write": 0.275 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "eu.anthropic.claude-sonnet-4-5-20250929-v1:0", "name": "Claude Sonnet 4.5 (EU)", @@ -73612,7 +75112,7 @@ }, { "id": "deepseek.v3.2", - "name": "DeepSeek-V3.2", + "name": "DeepSeek V3.2", "cost": { "input": 0.62, "output": 1.85 @@ -73728,11 +75228,12 @@ "output": 0.688, "cache_read": 0.0172 }, - "context": 131072, - "output_limit": 32768, + "context": 256000, + "output_limit": 64000, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "qwen/qwen3.5-35b-a3b", @@ -73742,12 +75243,11 @@ "output": 0.459, "cache_read": 0.020357 }, - "context": 256000, - "output_limit": 64000, + "context": 131072, + "output_limit": 32768, "reasoning": true, "tool_call": true, - "structured_output": true, - "image": true + "structured_output": true }, { "id": "qwen/qwen-flash", @@ -73823,11 +75323,12 @@ "output": 1.032, "cache_read": 0.0344 }, - "context": 131072, - "output_limit": 32768, + "context": 256000, + "output_limit": 64000, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "qwen/qwen3.6-27b", @@ -74453,6 +75954,17 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-3-4b-it", + "name": "Gemma 3 4B", + "cost": { + "input": 0.04, + "output": 0.08 + }, + "context": 128000, + "output_limit": 8192, + "image": true + }, { "id": "google/gemini-2.5-flash-image", "name": "Gemini 2.5 Flash Image", @@ -74600,6 +76112,17 @@ "image": true, "video": true }, + { + "id": "google/gemma-3-27b-it", + "name": "Gemma 3 27B IT", + "cost": { + "input": 0.08, + "output": 0.45, + "cache_read": 0.04 + }, + "context": 131072, + "output_limit": 32768 + }, { "id": "google/gemini-embedding-001", "name": "Gemini Embedding 001", @@ -74758,6 +76281,17 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-3-12b-it", + "name": "Gemma 3 12B", + "cost": { + "input": 0.09, + "output": 0.29 + }, + "context": 128000, + "output_limit": 8192, + "image": true + }, { "id": "thinkingmachines/inkling", "name": "Inkling", @@ -74917,7 +76451,7 @@ "cache_read": 0.5 }, "context": 1000000, - "output_limit": 250000, + "output_limit": 128000, "reasoning": true, "tool_call": true, "image": true @@ -75024,6 +76558,17 @@ "output_limit": 384000, "reasoning": true }, + { + "id": "deepseek/deepseek-v4-flash-0423", + "name": "DeepSeek V4 Flash 0423", + "cost": { + "input": 0.139, + "output": 0.278 + }, + "context": 131072, + "output_limit": 32768, + "reasoning": true + }, { "id": "deepseek/deepseek-v4-pro-0813", "name": "DeepSeek V4 Pro 0813", @@ -75042,11 +76587,11 @@ "id": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.22, - "output": 0.66, + "input": 0.035, + "output": 0.07, "cache_read": 0.007 }, - "context": 1000000, + "context": 1048576, "output_limit": 384000, "reasoning": true, "tool_call": true, @@ -75067,11 +76612,11 @@ "id": "deepseek/deepseek-v4-flash", "name": "DeepSeek V4 Flash", "cost": { - "input": 0.22, - "output": 0.66, + "input": 0.035, + "output": 0.07, "cache_read": 0.007 }, - "context": 1000000, + "context": 1048576, "output_limit": 384000, "reasoning": true, "tool_call": true, @@ -75313,6 +76858,19 @@ "structured_output": true, "image": true }, + { + "id": "openai/gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B", + "cost": { + "input": 0.07, + "output": 0.2, + "cache_read": 0, + "cache_write": 0 + }, + "context": 4096, + "output_limit": 4096, + "reasoning": true + }, { "id": "openai/gpt-5.1", "name": "GPT-5.1", @@ -76159,9 +77717,9 @@ "id": "deepseek-v4-flash-vision-exp", "name": "DeepSeek V4 Flash Vision Exp", "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.0028 + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 }, "context": 1000000, "output_limit": 384000, @@ -76174,15 +77732,16 @@ "id": "deepseek-v4-flash", "name": "DeepSeek V4 Flash", "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.0028 + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 }, "context": 1000000, "output_limit": 384000, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "deepseek-v4-pro", @@ -76197,6 +77756,21 @@ "reasoning": true, "tool_call": true, "structured_output": true + }, + { + "id": "deepseek-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true } ] }, @@ -79958,9 +81532,9 @@ "id": "qwen/qwen3.8-27b", "name": "Qwen3.8 27B", "cost": { - "input": 0.42, - "output": 3, - "cache_read": 0.085 + "input": 0.214, + "output": 2.55, + "cache_read": 0.15 }, "context": 1000000, "output_limit": 131072, @@ -80097,11 +81671,12 @@ "id": "qwen/qwen3-235b-a22b-2507", "name": "Qwen3 235B A22B Instruct 2507", "cost": { - "input": 0.22, - "output": 0.88 + "input": 0.0875, + "output": 0.35, + "cache_read": 0.0175 }, "context": 262144, - "output_limit": 16384, + "output_limit": 235929, "tool_call": true, "structured_output": true }, @@ -80620,7 +82195,7 @@ }, { "id": "~anthropic/claude-haiku-latest", - "name": "Anthropic Claude Haiku Latest", + "name": "Claude Haiku Latest", "cost": { "input": 1, "output": 5, @@ -80636,7 +82211,7 @@ }, { "id": "~anthropic/claude-sonnet-latest", - "name": "Anthropic Claude Sonnet Latest", + "name": "Claude Sonnet Latest", "cost": { "input": 2, "output": 10, @@ -80686,12 +82261,12 @@ "id": "~deepseek/deepseek-v4-flash-latest", "name": "DeepSeek V4 Flash Latest", "cost": { - "input": 0.05, - "output": 0.16, - "cache_read": 0.013 + "input": 0.0352, + "output": 0.1056, + "cache_read": 0.00112 }, "context": 1310720, - "output_limit": 393216, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -80930,7 +82505,7 @@ "input": 0.075, "output": 0.2 }, - "context": 131072, + "context": 256000, "output_limit": 16384, "tool_call": true, "structured_output": true, @@ -81168,12 +82743,12 @@ "id": "minimax/minimax-m2.5", "name": "MiniMax-M2.5", "cost": { - "input": 0.3, - "output": 1.2, - "cache_read": 0.03 + "input": 0.27, + "output": 1.08, + "cache_read": 0.027 }, "context": 204800, - "output_limit": 131072, + "output_limit": 128000, "reasoning": true, "tool_call": true, "structured_output": true @@ -81290,7 +82865,8 @@ "context": 262144, "output_limit": 16384, "reasoning": true, - "tool_call": true + "tool_call": true, + "structured_output": true }, { "id": "nvidia/nemotron-3-ultra-550b-a55b:free", @@ -81596,11 +83172,12 @@ "id": "google/gemma-4-26b-a4b-it", "name": "Gemma 4 26B A4B IT", "cost": { - "input": 0.07, - "output": 0.34 + "input": 0.09, + "output": 0.3, + "cache_read": 0.05 }, "context": 262144, - "output_limit": 16384, + "output_limit": 235929, "reasoning": true, "tool_call": true, "structured_output": true, @@ -81638,7 +83215,7 @@ }, { "id": "google/gemma-3-4b-it", - "name": "Gemma 3 4B", + "name": "Gemma 3 4B IT", "cost": { "input": 0.05, "output": 0.1 @@ -81793,7 +83370,7 @@ }, { "id": "google/gemma-3-27b-it", - "name": "Gemma 3 27B", + "name": "Gemma 3 27B IT", "cost": { "input": 0.08, "output": 0.45, @@ -82024,7 +83601,7 @@ }, { "id": "google/gemma-3-12b-it", - "name": "Gemma 3 12B", + "name": "Gemma 3 12B IT", "cost": { "input": 0.05, "output": 0.15 @@ -82158,7 +83735,7 @@ "cache_read": 0.17 }, "context": 1048576, - "output_limit": 32768, + "output_limit": 471859, "reasoning": true, "tool_call": true, "image": true @@ -82258,8 +83835,8 @@ "id": "meta/muse-glimmer-30b", "name": "Muse Glimmer 30B", "cost": { - "input": 0.3, - "output": 1.1, + "input": 0.35, + "output": 1.5, "cache_read": 0.04 }, "context": 131072, @@ -82462,7 +84039,7 @@ }, { "id": "~google/gemini-pro-latest", - "name": "Google Gemini Pro Latest", + "name": "Gemini Pro Latest", "cost": { "input": 2, "output": 12, @@ -82479,7 +84056,7 @@ }, { "id": "~google/gemini-flash-latest", - "name": "Google Gemini Flash Latest", + "name": "Gemini Flash Latest", "cost": { "input": 0.75, "output": 3.75, @@ -82530,6 +84107,21 @@ "structured_output": true, "image": true }, + { + "id": "sakana/fugu-max", + "name": "Fugu Max", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "sakana/sakana-namazu", "name": "Sakana Namazu", @@ -82546,12 +84138,26 @@ "image": true }, { - "id": "~moonshotai/kimi-latest", - "name": "MoonshotAI Kimi Latest", + "id": "sakana/fugu-ultra-v2", + "name": "Fugu Ultra v2", "cost": { - "input": 2.4, - "output": 12, - "cache_read": 0.24 + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "~moonshotai/kimi-latest", + "name": "Kimi Latest", + "cost": { + "input": 2.1, + "output": 10.95 }, "context": 1048576, "output_limit": 943718, @@ -82620,10 +84226,10 @@ "cost": { "input": 0.57948, "output": 1.73844, - "cache_read": 0.018438 + "cache_read": 0.019316 }, "context": 1048576, - "output_limit": 393216, + "output_limit": 384000, "reasoning": true, "tool_call": true, "structured_output": true @@ -82632,9 +84238,9 @@ "id": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.065, - "output": 0.18, - "cache_read": 0.016 + "input": 0.04, + "output": 0.08, + "cache_read": 0.008 }, "context": 1310720, "output_limit": 943718, @@ -82646,9 +84252,9 @@ "id": "deepseek/deepseek-v4-flash", "name": "DeepSeek V4 Flash", "cost": { - "input": 0.08708, - "output": 0.17416, - "cache_read": 0.017416 + "input": 0.04788, + "output": 0.09576, + "cache_read": 0.009576 }, "context": 1048576, "output_limit": 384000, @@ -82681,8 +84287,7 @@ "context": 64000, "output_limit": 16000, "reasoning": true, - "tool_call": true, - "structured_output": true + "tool_call": true }, { "id": "deepseek/deepseek-chat", @@ -82766,12 +84371,12 @@ "id": "deepseek/deepseek-v4-pro", "name": "DeepSeek V4 Pro", "cost": { - "input": 0.95526, - "output": 1.91052, - "cache_read": 0.079605 + "input": 1.6, + "output": 3.2, + "cache_read": 0.135 }, "context": 1048576, - "output_limit": 384000, + "output_limit": 393216, "reasoning": true, "tool_call": true, "structured_output": true @@ -82780,9 +84385,8 @@ "id": "deepseek/deepseek-chat-v3-0324", "name": "DeepSeek V3 0324", "cost": { - "input": 0.29, - "output": 1.14, - "cache_read": 0.11 + "input": 0.25, + "output": 1 }, "context": 163840, "output_limit": 147456, @@ -82790,8 +84394,24 @@ "structured_output": true }, { - "id": "~openai/gpt-latest", - "name": "OpenAI GPT Latest", + "id": "~openai/gpt-terra-latest", + "name": "GPT Terra Latest", + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "~openai/gpt-sol-latest", + "name": "GPT Sol Latest", "cost": { "input": 2, "output": 10, @@ -82805,9 +84425,41 @@ "structured_output": true, "image": true }, + { + "id": "~openai/gpt-luna-latest", + "name": "GPT Luna Latest", + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + }, + "context": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "~openai/gpt-astra-latest", + "name": "GPT Astra Latest", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1050000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "~openai/gpt-mini-latest", - "name": "OpenAI GPT Mini Latest", + "name": "GPT Mini Latest", "cost": { "input": 0.75, "output": 4.5, @@ -82933,6 +84585,36 @@ "reasoning": true, "tool_call": true }, + { + "id": "inclusionai/ling-3.0-flash-vl:free", + "name": "Ling 3.0 Flash VL (free)", + "cost": { + "input": 0, + "output": 0 + }, + "context": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "inclusionai/ling-3.0-flash-vl", + "name": "Ling 3.0 Flash VL", + "cost": { + "input": 0.06, + "output": 0.18, + "cache_read": 0.012 + }, + "context": 131072, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "anthracite-org/magnum-v4-72b", "name": "Magnum v4 72B", @@ -83622,7 +85304,7 @@ }, { "id": "openai/gpt-oss-safeguard-20b", - "name": "gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B", "cost": { "input": 0.075, "output": 0.3, @@ -84147,12 +85829,12 @@ "id": "~z-ai/glm-latest", "name": "GLM Latest", "cost": { - "input": 0.7, - "output": 2.2, - "cache_read": 0.13 + "input": 0.936, + "output": 3.168, + "cache_read": 0.1872 }, "context": 1310720, - "output_limit": 128000, + "output_limit": 235929, "reasoning": true, "tool_call": true, "structured_output": true @@ -84165,7 +85847,7 @@ "output": 2.5 }, "context": 262144, - "output_limit": 100352, + "output_limit": 98304, "tool_call": true, "structured_output": true }, @@ -84208,7 +85890,7 @@ "cache_read": 0.15 }, "context": 262144, - "output_limit": 100352, + "output_limit": 98304, "reasoning": true, "tool_call": true, "structured_output": true @@ -84217,9 +85899,9 @@ "id": "moonshotai/kimi-k3", "name": "Kimi K3", "cost": { - "input": 3, - "output": 15, - "cache_read": 0.3 + "input": 2.648138, + "output": 13.282724, + "cache_read": 0.302644 }, "context": 1048576, "output_limit": 943718, @@ -84237,7 +85919,7 @@ "output": 2.3 }, "context": 131072, - "output_limit": 100352, + "output_limit": 98304, "tool_call": true }, { @@ -84255,6 +85937,28 @@ "structured_output": true, "image": true }, + { + "id": "inference-net/schematron-v2-small", + "name": "Schematron V2 Small", + "cost": { + "input": 0.05, + "output": 0.23 + }, + "context": 128000, + "output_limit": 4096, + "structured_output": true + }, + { + "id": "inference-net/schematron-v2-turbo", + "name": "Schematron V2 Turbo", + "cost": { + "input": 0.03, + "output": 0.15 + }, + "context": 128000, + "output_limit": 8192, + "structured_output": true + }, { "id": "cohere/north-mini-code:free", "name": "North Mini Code (free)", @@ -84331,9 +86035,9 @@ "id": "upstage/solar-pro4", "name": "Solar Pro 4", "cost": { - "input": 0.03, - "output": 0.12, - "cache_read": 0.006 + "input": 0.09, + "output": 0.36, + "cache_read": 0.018 }, "context": 524288, "output_limit": 131072, @@ -84358,9 +86062,9 @@ "id": "tencent/hy3", "name": "Hy3", "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.0825, + "output": 0.33, + "cache_read": 0.020625 }, "context": 262144, "input_limit": 192000, @@ -84513,12 +86217,12 @@ "id": "z-ai/glm-5.2", "name": "GLM-5.2", "cost": { - "input": 0.28, - "output": 0.88, - "cache_read": 0.052 + "input": 0.6, + "output": 2, + "cache_read": 0.15 }, "context": 1048576, - "output_limit": 128000, + "output_limit": 182476, "reasoning": true, "tool_call": true, "structured_output": true @@ -84527,9 +86231,9 @@ "id": "z-ai/glm-5.3-flash", "name": "GLM-5.3-Flash", "cost": { - "input": 0.15, - "output": 0.5, - "cache_read": 0.03 + "input": 0.075, + "output": 0.25, + "cache_read": 0.015 }, "context": 1310720, "output_limit": 131072, @@ -84611,12 +86315,12 @@ "id": "z-ai/glm-5.3", "name": "GLM-5.3", "cost": { - "input": 1.4, - "output": 4.4, - "cache_read": 0.26 + "input": 1.092, + "output": 3.432, + "cache_read": 0.2028 }, "context": 1310720, - "output_limit": 943718, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -84838,6 +86542,21 @@ "image": true, "video": true }, + { + "id": "cline-pass/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "cline-pass/kimi-k3", "name": "Kimi K3", @@ -85153,6 +86872,371 @@ "id": "ofox", "name": "Ofox", "models": [ + { + "id": "qwen/qwen3.7-max", + "name": "Qwen3.7 Max", + "cost": { + "input": 1.71, + "output": 5.14, + "cache_read": 0.17, + "cache_write": 2.14 + }, + "context": 1064000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true + }, + { + "id": "qwen/qwen3-coder-plus", + "name": "Qwen3 Coder Plus", + "cost": { + "input": 1.8, + "output": 9, + "cache_read": 0.2, + "cache_write": 1 + }, + "context": 1000000, + "output_limit": 64000, + "tool_call": true + }, + { + "id": "qwen/qwen-vl-max", + "name": "Qwen-VL Max", + "cost": { + "input": 0.23, + "output": 0.58, + "cache_read": 0.023 + }, + "context": 128000, + "output_limit": 8000, + "tool_call": true, + "image": true + }, + { + "id": "qwen/qwen3-coder-flash", + "name": "Qwen3 Coder Flash", + "cost": { + "input": 0.5, + "output": 2.5, + "cache_read": 0.06, + "cache_write": 0.27 + }, + "context": 1000000, + "output_limit": 64000, + "tool_call": true + }, + { + "id": "qwen/qwen-max", + "name": "Qwen Max", + "cost": { + "input": 0.35, + "output": 1.38, + "cache_read": 0.069 + }, + "context": 32000, + "output_limit": 8000, + "tool_call": true + }, + { + "id": "qwen/qwen3.6-plus", + "name": "Qwen3.6 Plus", + "cost": { + "input": 0.5, + "output": 3, + "cache_read": 0.05, + "cache_write": 0.625 + }, + "context": 1000000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.5-27b", + "name": "Qwen3.5 27B", + "cost": { + "input": 0.29, + "output": 2.05, + "cache_read": 0.29 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "qwen/qwen3.8-27b", + "name": "Qwen3.8 27B", + "cost": { + "input": 0.5, + "output": 1.71, + "cache_read": 0.043, + "cache_write": 0.63 + }, + "context": 1131072, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.5-35b-a3b", + "name": "Qwen3.5 35B-A3B", + "cost": { + "input": 0.29, + "output": 1.83, + "cache_read": 0.29 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "qwen/qwen-flash", + "name": "Qwen Flash", + "cost": { + "input": 0.022, + "output": 0.22, + "cache_read": 0.0043, + "cache_write": 0.027 + }, + "context": 1000000, + "output_limit": 32000, + "reasoning": true, + "tool_call": true + }, + { + "id": "qwen/qwen-turbo", + "name": "Qwen Turbo", + "cost": { + "input": 0.043, + "output": 0.09, + "cache_read": 0.0086 + }, + "context": 128000, + "output_limit": 16000, + "tool_call": true + }, + { + "id": "qwen/qwen3.5-flash", + "name": "Qwen3.5 Flash", + "cost": { + "input": 0.1, + "output": 0.4, + "cache_read": 0.01, + "cache_write": 0.125 + }, + "context": 1000000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3-coder-next", + "name": "Qwen3 Coder Next", + "cost": { + "input": 0.2, + "output": 1.5 + }, + "context": 256000, + "output_limit": 64000, + "tool_call": true, + "structured_output": true + }, + { + "id": "qwen/qwen3.5-397b-a17b", + "name": "Qwen3.5 397B-A17B", + "cost": { + "input": 0.55, + "output": 3.5, + "cache_read": 0.55 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "qwen/qwen3.6-27b", + "name": "Qwen3.6 27B", + "cost": { + "input": 0.43, + "output": 2.57 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.8-max-0902", + "name": "Qwen3.8 Max 0902", + "cost": { + "input": 1.71, + "output": 5.14, + "cache_read": 0.17, + "cache_write": 2.14 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3-max", + "name": "Qwen3 Max", + "cost": { + "input": 0.36, + "output": 1.43, + "cache_read": 0.072 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true + }, + { + "id": "qwen/qwen-plus", + "name": "Qwen Plus", + "cost": { + "input": 0.12, + "output": 0.29, + "cache_read": 0.023 + }, + "context": 1000000, + "output_limit": 32000, + "tool_call": true + }, + { + "id": "qwen/qwen3.5-122b-a10b", + "name": "Qwen3.5 122B-A10B", + "cost": { + "input": 0.29, + "output": 2.29, + "cache_read": 0.29 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "qwen/qwen3.6-flash", + "name": "Qwen3.6 Flash", + "cost": { + "input": 0.25, + "output": 1.5, + "cache_read": 0.025, + "cache_write": 0.31 + }, + "context": 1000000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.8-flash", + "name": "Qwen3.8 Flash", + "cost": { + "input": 0.11, + "output": 0.39, + "cache_read": 0.011, + "cache_write": 0.14 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.6-max-preview", + "name": "Qwen3.6 Max Preview", + "cost": { + "input": 2.15, + "output": 12.86, + "cache_read": 0.2, + "cache_write": 1.17 + }, + "context": 256000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true + }, + { + "id": "qwen/qwen3.8-max", + "name": "Qwen3.8 Max", + "cost": { + "input": 1.71, + "output": 5.14, + "cache_read": 0.17, + "cache_write": 2.14 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.7-plus", + "name": "Qwen3.7 Plus", + "cost": { + "input": 0.4, + "output": 1.6, + "cache_read": 0.08, + "cache_write": 0.5 + }, + "context": 1064000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, + { + "id": "qwen/qwen3.5-plus", + "name": "Qwen3.5 Plus", + "cost": { + "input": 0.4, + "output": 2.4, + "cache_read": 0.04, + "cache_write": 0.4 + }, + "context": 1000000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, { "id": "bailian/qwen3.7-max", "name": "Qwen3.7 Max", @@ -86009,7 +88093,7 @@ "cost": { "input": 0.1, "output": 0.4, - "cache_read": 0.025, + "cache_read": 0.01, "cache_write": 1 }, "context": 1048576, @@ -86105,6 +88189,22 @@ "image": true, "video": true }, + { + "id": "google/gemini-3.8-flash", + "name": "Gemini 3.8 Flash", + "cost": { + "input": 0.75, + "output": 3.75, + "cache_read": 0.075, + "cache_write": 0.0415 + }, + "context": 1000000, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemini-3.7-flash", "name": "Gemini 3.7 Flash", @@ -86156,6 +88256,20 @@ "image": true, "video": true }, + { + "id": "deepseek/deepseek-v4-flash-0423", + "name": "DeepSeek V4 Flash 0423", + "cost": { + "input": 0.19, + "output": 0.51, + "cache_read": 0.028 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "deepseek/deepseek-v4-flash-vision-exp", "name": "DeepSeek V4 Flash Vision Exp", @@ -86213,6 +88327,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek/deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepseek/deepseek-v3.2", "name": "DeepSeek V3.2", @@ -86233,7 +88362,7 @@ "cost": { "input": 1.32, "output": 3.96, - "cache_read": 0.044 + "cache_read": 0.15 }, "context": 1000000, "output_limit": 384000, @@ -86756,8 +88885,8 @@ "name": "GLM-4.7", "cost": { "input": 0.4, - "output": 2, - "cache_read": 0.08 + "output": 2.2, + "cache_read": 0.11 }, "context": 204800, "output_limit": 131072, @@ -86768,8 +88897,8 @@ "id": "z-ai/glm-4.6", "name": "GLM-4.6", "cost": { - "input": 0.4, - "output": 1.9, + "input": 0.6, + "output": 2.2, "cache_read": 0.11 }, "context": 204800, @@ -86812,8 +88941,8 @@ "name": "GLM-4.7-FlashX", "cost": { "input": 0.072, - "output": 0.43, - "cache_read": 0.015 + "output": 0.4, + "cache_read": 0.01 }, "context": 200000, "output_limit": 128000, @@ -88257,19 +90386,6 @@ "tool_call": true, "structured_output": true }, - { - "id": "MiMo-V2.5-Pro", - "name": "MiMo-V2.5-Pro", - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "context": 1048576, - "output_limit": 131072, - "reasoning": true, - "tool_call": true - }, { "id": "GLM-5", "name": "GLM-5", @@ -88355,20 +90471,6 @@ "image": true, "video": true }, - { - "id": "DeepSeek-V3.2", - "name": "DeepSeek V3.2", - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "context": 128000, - "output_limit": 64000, - "reasoning": true, - "tool_call": true, - "structured_output": true - }, { "id": "DeepSeek-V4-Pro", "name": "DeepSeek V4 Pro", @@ -90653,6 +92755,38 @@ "image": true, "video": true }, + { + "id": "kimi-k3", + "name": "Kimi K3", + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + }, + "context": 1048576, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "glm-5.3-flash", + "name": "GLM-5.3-Flash", + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "doubao-seed-evolving", "name": "Seed Evolving", @@ -93942,6 +96076,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek-ai/DeepSeek-V4.1-Flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepseek-ai/DeepSeek-V4-Pro-0813", "name": "DeepSeek V4 Pro 0813", @@ -96847,9 +98996,9 @@ "id": "deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.13, - "output": 0.28, - "cache_read": 0.03 + "input": 0.09, + "output": 0.17, + "cache_read": 0.014 }, "context": 1048576, "output_limit": 1048576, @@ -96961,9 +99110,9 @@ "id": "qwen3.8-27b", "name": "Qwen3.8 27B", "cost": { - "input": 0.334, - "output": 2.451, - "cache_read": 0.111 + "input": 0.1, + "output": 0.4, + "cache_read": 0.04 }, "context": 262144, "output_limit": 262144, @@ -97428,7 +99577,7 @@ }, { "id": "gemma-3-27b-it", - "name": "gemma-3-27b-it", + "name": "Gemma 3 27B IT", "cost": { "input": 0.099, "output": 0.299 @@ -97498,9 +99647,9 @@ "id": "glm-5.3-flash", "name": "GLM-5.3-Flash", "cost": { - "input": 0.201, - "output": 0.5, - "cache_read": 0.05 + "input": 0.1, + "output": 0.35, + "cache_read": 0.018 }, "context": 1048576, "output_limit": 1048576, @@ -98492,6 +100641,19 @@ "id": "nan", "name": "NaN", "models": [ + { + "id": "glm5.3", + "name": "GLM-5.3", + "cost": { + "input": 0, + "output": 0 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "qwen3.6", "name": "Qwen3.6 35B-A3B", @@ -98508,7 +100670,7 @@ }, { "id": "deepseek-v4-flash", - "name": "DeepSeek V4 Flash", + "name": "DeepSeek V4.1 Flash", "cost": { "input": 0, "output": 0 @@ -98517,20 +100679,8 @@ "output_limit": 384000, "reasoning": true, "tool_call": true, - "structured_output": true - }, - { - "id": "glm5.2", - "name": "GLM-5.2", - "cost": { - "input": 0, - "output": 0 - }, - "context": 500000, - "output_limit": 131072, - "reasoning": true, - "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true }, { "id": "gemma4", @@ -99836,6 +101986,21 @@ "image": true, "video": true }, + { + "id": "deepseek-v4.1-flash", + "name": "DeepSeek V4.1 Flash", + "cost": { + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "hy3", "name": "Hy3", @@ -100104,21 +102269,6 @@ "tool_call": true, "structured_output": true }, - { - "id": "deepseek-flash", - "name": "DeepSeek V4.1 Flash", - "cost": { - "input": 0.15, - "output": 0.6, - "cache_read": 0.003 - }, - "context": 1000000, - "output_limit": 384000, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "image": true - }, { "id": "mimo-v2.5", "name": "MiMo V2.5", @@ -101110,6 +103260,20 @@ "tool_call": true, "structured_output": true }, + { + "id": "groq/openai/gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B (Groq)", + "cost": { + "input": 0.075, + "output": 0.3, + "cache_read": 0.0375 + }, + "context": 131072, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "groq/openai/gpt-oss-120b", "name": "GPT OSS 120B (Groq)", @@ -101128,20 +103292,31 @@ "id": "scaleway/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731 (Scaleway)", "cost": { - "input": 0.46464, - "output": 0.92928 + "input": 0.46368, + "output": 0.92736 }, "context": 256000, "output_limit": 384000, "reasoning": true, "tool_call": true }, + { + "id": "scaleway/gemma-3-27b-it", + "name": "Gemma 3 27B IT (Scaleway)", + "cost": { + "input": 0.287125, + "output": 0.57425 + }, + "context": 40000, + "output_limit": 131072, + "image": true + }, { "id": "scaleway/gpt-oss-120b", "name": "GPT OSS 120B (Scaleway)", "cost": { - "input": 0.17424, - "output": 0.69696 + "input": 0.17388, + "output": 0.69552 }, "context": 128000, "output_limit": 32768, @@ -101152,8 +103327,8 @@ "id": "scaleway/llama-3.3-70b-instruct", "name": "Llama-3.3-70B-Instruct (Scaleway)", "cost": { - "input": 1.045439, - "output": 1.045439 + "input": 1.04328, + "output": 1.04328 }, "context": 128000, "output_limit": 4096, @@ -101215,6 +103390,20 @@ "tool_call": true, "structured_output": true }, + { + "id": "nebius/google/gemma-3-27b-it", + "name": "Gemma 3 27B IT (Nebius)", + "cost": { + "input": 0.1, + "output": 0.3, + "cache_read": 0.1 + }, + "context": 110000, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "nebius/meta-llama/Llama-3.3-70B-Instruct", "name": "Llama-3.3-70B-Instruct (Nebius)", @@ -101968,6 +104157,16 @@ "tool_call": true, "image": true }, + { + "id": "infomaniak/mistralai/Ministral-3-14B-Instruct-2512", + "name": "Ministral 3 14B (Infomaniak)", + "cost": { + "input": 0.34776, + "output": 0.46368 + }, + "context": 100000, + "output_limit": 262144 + }, { "id": "flexai/Nemotron-3-Super-120B-A12B", "name": "Nemotron 3 Super 120B A12B (FlexAI)", @@ -102250,8 +104449,8 @@ "id": "deepinfra/deepseek-ai/DeepSeek-V4.1-Flash", "name": "DeepSeek V4.1 Flash (Deep Infra)", "cost": { - "input": 0.3, - "output": 1.2, + "input": 0.2, + "output": 0.6, "cache_read": 0.006 }, "context": 1048576, @@ -102327,6 +104526,45 @@ "structured_output": true, "image": true }, + { + "id": "deepinfra/google/gemma-3-4b-it", + "name": "Gemma 3 4B IT (Deep Infra)", + "cost": { + "input": 0.05, + "output": 0.1 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "deepinfra/google/gemma-3-27b-it", + "name": "Gemma 3 27B IT (Deep Infra)", + "cost": { + "input": 0.08, + "output": 0.16 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "deepinfra/google/gemma-3-12b-it", + "name": "Gemma 3 12B IT (Deep Infra)", + "cost": { + "input": 0.05, + "output": 0.15 + }, + "context": 131072, + "output_limit": 131072, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "deepinfra/zai-org/GLM-4.7-Flash", "name": "GLM-4.7-Flash (Deep Infra)", @@ -102726,7 +104964,7 @@ "output": 0.14 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "structured_output": true }, @@ -102749,7 +104987,7 @@ "output": 0.24 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "structured_output": true, "image": true @@ -102766,6 +105004,27 @@ "reasoning": true, "tool_call": true }, + { + "id": "amazon/google.gemma-3-12b-it@us", + "name": "Gemma 3 12B IT (Amazon Bedrock, US)", + "cost": { + "input": 0.09, + "output": 0.29 + }, + "context": 128000, + "output_limit": 131072, + "image": true + }, + { + "id": "amazon/mistral.voxtral-mini-3b-2507", + "name": "Voxtral Mini 3B 2507 (Amazon Bedrock)", + "cost": { + "input": 0.04, + "output": 0.04 + }, + "context": 128000, + "output_limit": 32768 + }, { "id": "amazon/amazon.nova-pro-v1:0@us", "name": "Nova Pro (US)", @@ -102774,11 +105033,33 @@ "output": 3.2 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "structured_output": true, "image": true }, + { + "id": "amazon/google.gemma-3-12b-it", + "name": "Gemma 3 12B IT (Amazon Bedrock)", + "cost": { + "input": 0.09, + "output": 0.29 + }, + "context": 128000, + "output_limit": 131072, + "image": true + }, + { + "id": "amazon/openai.gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B (Amazon Bedrock)", + "cost": { + "input": 0.07, + "output": 0.2 + }, + "context": 128000, + "output_limit": 131072, + "reasoning": true + }, { "id": "amazon/amazon.nova-lite-v1:0", "name": "Nova Lite", @@ -102787,7 +105068,7 @@ "output": 0.24 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "structured_output": true, "image": true @@ -102800,11 +105081,22 @@ "output": 3.2 }, "context": 300000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "structured_output": true, "image": true }, + { + "id": "amazon/openai.gpt-oss-safeguard-20b@us", + "name": "GPT OSS Safeguard 20B (Amazon Bedrock, US)", + "cost": { + "input": 0.07, + "output": 0.2 + }, + "context": 128000, + "output_limit": 131072, + "reasoning": true + }, { "id": "amazon/moonshot.kimi-k2-thinking", "name": "Kimi K2 Thinking (Amazon Bedrock)", @@ -102816,6 +105108,17 @@ "output_limit": 262144, "reasoning": true }, + { + "id": "amazon/google.gemma-3-27b-it", + "name": "Gemma 3 27B IT (Amazon Bedrock)", + "cost": { + "input": 0.23, + "output": 0.38 + }, + "context": 128000, + "output_limit": 131072, + "image": true + }, { "id": "amazon/amazon.nova-micro-v1:0", "name": "Nova Micro", @@ -102824,10 +105127,20 @@ "output": 0.14 }, "context": 128000, - "output_limit": 8192, + "output_limit": 10000, "tool_call": true, "structured_output": true }, + { + "id": "amazon/mistral.voxtral-mini-3b-2507@us", + "name": "Voxtral Mini 3B 2507 (Amazon Bedrock, US)", + "cost": { + "input": 0.04, + "output": 0.04 + }, + "context": 128000, + "output_limit": 32768 + }, { "id": "amazon/mistral.pixtral-large-2502-v1:0@us", "name": "Pixtral Large (25.02) (Amazon Bedrock, US)", @@ -102839,6 +105152,17 @@ "output_limit": 8192, "tool_call": true }, + { + "id": "amazon/google.gemma-3-27b-it@us", + "name": "Gemma 3 27B IT (Amazon Bedrock, US)", + "cost": { + "input": 0.23, + "output": 0.38 + }, + "context": 128000, + "output_limit": 131072, + "image": true + }, { "id": "amazon/zai.glm-4.7-flash", "name": "GLM-4.7-Flash (Amazon Bedrock)", @@ -102851,6 +105175,48 @@ "reasoning": true, "tool_call": true }, + { + "id": "amazon/google.gemma-3-4b-it", + "name": "Gemma 3 4B IT (Amazon Bedrock)", + "cost": { + "input": 0.04, + "output": 0.08 + }, + "context": 128000, + "output_limit": 131072, + "image": true + }, + { + "id": "amazon/mistral.voxtral-small-24b-2507", + "name": "Voxtral Small 24B 2507 (Amazon Bedrock)", + "cost": { + "input": 0.1, + "output": 0.3 + }, + "context": 128000, + "output_limit": 32768 + }, + { + "id": "amazon/mistral.voxtral-small-24b-2507@us", + "name": "Voxtral Small 24B 2507 (Amazon Bedrock, US)", + "cost": { + "input": 0.1, + "output": 0.3 + }, + "context": 128000, + "output_limit": 32768 + }, + { + "id": "amazon/google.gemma-3-4b-it@us", + "name": "Gemma 3 4B IT (Amazon Bedrock, US)", + "cost": { + "input": 0.04, + "output": 0.08 + }, + "context": 128000, + "output_limit": 131072, + "image": true + }, { "id": "openai/gpt-5-nano", "name": "GPT-5 Nano", @@ -103160,8 +105526,7 @@ "name": "GPT-5.5 Pro", "cost": { "input": 30, - "output": 180, - "cache_read": 3 + "output": 180 }, "context": 1050000, "input_limit": 922000, @@ -103220,8 +105585,7 @@ "name": "GPT-5.4 Pro", "cost": { "input": 30, - "output": 180, - "cache_read": 3 + "output": 180 }, "context": 1050000, "input_limit": 922000, @@ -103342,8 +105706,7 @@ "name": "GPT Pro Latest (GPT-5.5 Pro)", "cost": { "input": 30, - "output": 180, - "cache_read": 3 + "output": 180 }, "context": 1050000, "input_limit": 922000, @@ -103721,6 +106084,21 @@ "tool_call": true, "structured_output": true }, + { + "id": "together_ai/deepseek-ai/DeepSeek-V4.1-Flash", + "name": "DeepSeek V4.1 Flash (Together AI)", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1048576, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "together_ai/deepseek-ai/DeepSeek-V4-Pro-0813", "name": "DeepSeek V4 Pro 0813 (Together AI)", @@ -104419,8 +106797,8 @@ "id": "ionos/meta-llama/Llama-3.3-70B-Instruct", "name": "Llama-3.3-70B-Instruct (IONOS)", "cost": { - "input": 0.75504, - "output": 0.75504 + "input": 0.75348, + "output": 0.75348 }, "context": 128000, "output_limit": 4096 @@ -104429,8 +106807,8 @@ "id": "ionos/openai/gpt-oss-120b", "name": "GPT OSS 120B (IONOS)", "cost": { - "input": 0.17424, - "output": 0.75504 + "input": 0.17388, + "output": 0.75348 }, "context": 131072, "output_limit": 32768, diff --git a/src/lib/models-dev.json b/src/lib/models-dev.json index d3f673a..47182aa 100644 --- a/src/lib/models-dev.json +++ b/src/lib/models-dev.json @@ -1,5 +1,5 @@ { - "last_updated": "2026-09-10", + "last_updated": "2026-09-13", "subconscious/subconscious/glm-5.2": { "name": "GLM-5.2", "context": 1000000, @@ -287,6 +287,66 @@ "output": 3.072 } }, + "bothub/deepseek-v4-pro-0813": { + "name": "DeepSeek V4 Pro 0813", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 1.61, + "output": 4.84 + } + }, + "bothub/deepseek-v4-flash-0731": { + "name": "DeepSeek V4 Flash 0731", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.1, + "output": 0.28 + } + }, + "bothub/gpt-5.6-luna": { + "name": "GPT-5.6 Luna", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.06, + "output": 0.37 + } + }, + "bothub/glm-5.3-flash": { + "name": "GLM-5.3-Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.12, + "output": 0.44 + } + }, + "bothub/muse-spark-1.3-contributor": { + "name": "Muse Spark 1.3 Contributor", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.1, + "output": 0.2 + } + }, "bothub/nemotron-3-ultra-550b-a55b:free": { "name": "Nemotron 3 Ultra (free)", "context": 1000000, @@ -309,6 +369,17 @@ "output": 0 } }, + "bothub/glm-5.3": { + "name": "GLM-5.3", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 1.72, + "output": 5.41 + } + }, "greenpt/deepseek-v4-flash-0731": { "name": "DeepSeek V4 Flash 0731", "context": 1000000, @@ -424,6 +495,19 @@ "output": 2.736 } }, + "greenpt/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.255552, + "output": 1.27776, + "cache_read": 0.0127776 + } + }, "greenpt/glm-5.2-honey-lite": { "name": "GLM-5.2 Honey Lite", "context": 1000000, @@ -1471,6 +1555,13 @@ "tool_call": true, "image": true }, + "agentrouter/deepseek-v4-flash": { + "name": "DeepSeek V4 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, "agentrouter/claude-opus-4-8": { "name": "Claude Opus 4.8", "context": 1000000, @@ -1478,6 +1569,13 @@ "tool_call": true, "image": true }, + "agentrouter/glm-5.3": { + "name": "GLM-5.3", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, "xiaomi-token-plan-cn/mimo-v2.5-tts": { "name": "MiMo-V2.5-TTS", "context": 8192, @@ -4368,6 +4466,15 @@ "cache_read": 0.2 } }, + "nano-gpt/mistralai/mistral-small-24b-instruct-2501": { + "name": "Mistral Small 24B", + "context": 32768, + "tool_call": true, + "cost": { + "input": 0.1155, + "output": 0.3465 + } + }, "nano-gpt/mistralai/mixtral-8x22b-instruct-v0.1": { "name": "Mixtral 8x22B", "context": 65536, @@ -5726,6 +5833,18 @@ "cache_read": 0.375 } }, + "nano-gpt/TEE/nemotron-3.5-lightning": { + "name": "Nvidia Nemotron 3.5 Lightning TEE", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.08, + "output": 0.2, + "cache_read": 0.04 + } + }, "nano-gpt/TEE/glm-5.2": { "name": "GLM 5.2 TEE", "context": 1048576, @@ -5778,9 +5897,9 @@ "name": "GPT-OSS 20B TEE", "context": 131072, "cost": { - "input": 0.2, - "output": 0.8, - "cache_read": 0.1 + "input": 0.04, + "output": 0.15, + "cache_read": 0.02 } }, "nano-gpt/TEE/qwen2.5-vl-72b-instruct": { @@ -6096,9 +6215,22 @@ "structured_output": true, "image": true, "cost": { - "input": 5.25, - "output": 31.5, - "cache_read": 0.525 + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, + "nano-gpt/sakana/fugu-max": { + "name": "Fugu Max", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 } }, "nano-gpt/sakana/fugu-ultra-v1.1": { @@ -6109,9 +6241,9 @@ "structured_output": true, "image": true, "cost": { - "input": 5.25, - "output": 31.5, - "cache_read": 0.525 + "input": 5, + "output": 30, + "cache_read": 0.5 } }, "nano-gpt/Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B": { @@ -6489,6 +6621,16 @@ "cache_read": 0.3026 } }, + "nano-gpt/lightonai/LightOnOCR-2-1B": { + "name": "LightOnOCR 2", + "context": 32768, + "tool_call": true, + "image": true, + "cost": { + "input": 0.1785, + "output": 0.3465 + } + }, "nano-gpt/anthracite-org/magnum-v4-72b": { "name": "Magnum v4 72B", "context": 16384, @@ -6610,12 +6752,22 @@ "nano-gpt/meta-llama/llama-3.1-8b-instruct": { "name": "Llama 3.1 8b Instruct", "context": 131072, + "tool_call": true, "cost": { "input": 0.0544, "output": 0.085, "cache_read": 0.0272 } }, + "nano-gpt/meta-llama/llama-3.1-405b-instruct": { + "name": "Llama 3.1 405B", + "context": 131072, + "tool_call": true, + "cost": { + "input": 2.0265, + "output": 2.0265 + } + }, "nano-gpt/meta-llama/llama-3.2-3b-instruct": { "name": "Llama 3.2 3b Instruct", "context": 131072, @@ -6886,6 +7038,20 @@ "cache_write": 0.25 } }, + "nano-gpt/openai/gpt-terra-latest": { + "name": "GPT Terra Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, "nano-gpt/openai/gpt-4.1-mini": { "name": "GPT 4.1 Mini", "context": 1047576, @@ -7098,6 +7264,34 @@ "cache_write": 2.5 } }, + "nano-gpt/openai/gpt-sol-latest": { + "name": "GPT Sol Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, + "nano-gpt/openai/gpt-luna-latest": { + "name": "GPT Luna Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + } + }, "nano-gpt/openai/gpt-5.4-mini": { "name": "GPT 5.4 Mini", "context": 400000, @@ -7119,6 +7313,20 @@ "output": 1.5 } }, + "nano-gpt/openai/gpt-astra-latest": { + "name": "GPT Astra Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, "nano-gpt/openai/gpt-5-mini": { "name": "GPT 5 Mini", "context": 400000, @@ -9144,9 +9352,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.4, - "output": 4.4, - "cache_read": 0.26 + "input": 0.95, + "output": 3.4, + "cache_read": 0.2 } }, "digitalocean/anthropic-claude-opus-5": { @@ -10576,6 +10784,21 @@ "reasoning": true, "tool_call": true }, + "ollama-cloud/deepseek-v4-pro:0813": { + "name": "DeepSeek V4 Pro 0813", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, + "ollama-cloud/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, "ollama-cloud/nemotron-3-nano:30b": { "name": "nemotron-3-nano:30b", "context": 1048576, @@ -12309,6 +12532,20 @@ "cache_write": 6.875 } }, + "llmgateway-providers/aws-mantle/gpt-6-astra": { + "name": "GPT-6 Astra (AWS Mantle)", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, "llmgateway-providers/aws-mantle/gpt-5.6-luna": { "name": "GPT-5.6 Luna (AWS Mantle)", "context": 278528, @@ -13043,6 +13280,20 @@ "cache_write": 0.0375 } }, + "llmgateway-providers/alibaba/kimi-k3": { + "name": "Kimi K3 (Alibaba Cloud)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + } + }, "llmgateway-providers/alibaba/qwen3.6-35b-a3b": { "name": "Qwen3.6 35B A3B (Alibaba Cloud)", "context": 262144, @@ -13211,6 +13462,20 @@ "cache_write": 0.5 } }, + "llmgateway-providers/runpod/kimi-k3": { + "name": "Kimi K3 (Runpod)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + } + }, "llmgateway-providers/scx-ai-gp/glm-5.2": { "name": "GLM-5.2 (SCX.ai)", "context": 1000000, @@ -13348,6 +13613,19 @@ "cache_write": 18.75 } }, + "llmgateway-providers/aws-bedrock/claude-fable-5-1": { + "name": "Claude Fable 5.1 (AWS Bedrock)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 0.25, + "cache_write": 12.5 + } + }, "llmgateway-providers/aws-bedrock/claude-opus-4-6": { "name": "Claude Opus 4.6 (AWS Bedrock)", "context": 1000000, @@ -13768,6 +14046,28 @@ "cache_read": 0.01 } }, + "llmgateway-providers/vichar-ai/glm-5.3-flash": { + "name": "GLM-5.3 Flash (vichar-ai)", + "context": 1048000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.15, + "output": 0.5, + "cache_read": 0.03 + } + }, + "llmgateway-providers/vichar-ai/glm-5.3": { + "name": "GLM-5.3 (vichar-ai)", + "context": 1048000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + } + }, "llmgateway-providers/together-ai/glm-4.7": { "name": "GLM-4.7 (Together AI)", "context": 202752, @@ -13810,6 +14110,19 @@ "output": 0.2 } }, + "llmgateway-providers/together-ai/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash (Together AI)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "llmgateway-providers/together-ai/kimi-k3": { "name": "Kimi K3 (Together AI)", "context": 1000000, @@ -14396,6 +14709,18 @@ "output": 0.05 } }, + "llmgateway-providers/novita/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash (NovitaAI)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "llmgateway-providers/novita/hy3": { "name": "Hy3 (NovitaAI)", "context": 262144, @@ -14705,6 +15030,32 @@ "cache_read": 0.5 } }, + "llmgateway-providers/sakana/fugu-max": { + "name": "Fugu Max (Sakana AI)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + } + }, + "llmgateway-providers/sakana/fugu-ultra-v2.0": { + "name": "Fugu Ultra v2.0 (Sakana AI)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, "llmgateway-providers/deepinfra/gemma-4-26b-a4b-it": { "name": "Gemma 4 26B A4B IT (DeepInfra)", "context": 262144, @@ -14747,6 +15098,19 @@ "cache_read": 0.016 } }, + "llmgateway-providers/deepinfra/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash (DeepInfra)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 0.6, + "cache_read": 0.006 + } + }, "llmgateway-providers/deepinfra/hy3": { "name": "Hy3 (DeepInfra)", "context": 262144, @@ -14968,7 +15332,7 @@ }, "llmgateway-providers/consensusprotocol/deepseek-v4-flash": { "name": "DeepSeek V4 Flash (Consensus Protocol)", - "context": 524288, + "context": 1050000, "reasoning": true, "tool_call": true, "structured_output": true, @@ -15002,6 +15366,17 @@ "cache_read": 0.02 } }, + "llmgateway-providers/consensusprotocol/gemma-4-31b-it": { + "name": "Gemma 4 31B IT (Consensus Protocol)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.1, + "output": 0.25, + "cache_read": 0.01 + } + }, "llmgateway-providers/azure/gpt-5-nano": { "name": "GPT-5 Nano (Azure)", "context": 400000, @@ -15803,6 +16178,208 @@ "cache_read": 0.002 } }, + "llmgateway-providers/tencent/kimi-k2.7-code-highspeed": { + "name": "Kimi K2.7 Code Highspeed (Tencent Cloud)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 1.9, + "output": 8, + "cache_read": 0.38 + } + }, + "llmgateway-providers/tencent/minimax-m2.7": { + "name": "MiniMax M2.7 (Tencent Cloud)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.06 + } + }, + "llmgateway-providers/tencent/kimi-k2.6": { + "name": "Kimi K2.6 (Tencent Cloud)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.858, + "output": 3.566, + "cache_read": 0.145 + } + }, + "llmgateway-providers/tencent/glm-5.2": { + "name": "GLM-5.2 (Tencent Cloud)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + } + }, + "llmgateway-providers/tencent/minimax-m3": { + "name": "MiniMax M3 (Tencent Cloud)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.06 + } + }, + "llmgateway-providers/tencent/deepseek-v4-flash": { + "name": "DeepSeek V4 Flash (Tencent Cloud)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.14, + "output": 0.28, + "cache_read": 0.0028 + } + }, + "llmgateway-providers/tencent/kimi-k2.7-code": { + "name": "Kimi K2.7 Code (Tencent Cloud)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.95, + "output": 4, + "cache_read": 0.19 + } + }, + "llmgateway-providers/tencent/hy3": { + "name": "Hy3 (Tencent Cloud)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.132, + "output": 0.528, + "cache_read": 0.033 + } + }, + "llmgateway-providers/tencent/hy4-preview": { + "name": "Hy4 Preview (Tencent Cloud)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.834, + "output": 2.501, + "cache_read": 0.042 + } + }, + "llmgateway-providers/tencent/hy-mt2-plus": { + "name": "Hy-MT2 Plus (Tencent Cloud)", + "context": 8192, + "cost": { + "input": 0.074, + "output": 0.295 + } + }, + "llmgateway-providers/tencent/kimi-k3": { + "name": "Kimi K3 (Tencent Cloud)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + } + }, + "llmgateway-providers/tencent/glm-5": { + "name": "GLM-5 (Tencent Cloud)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 1, + "output": 3.2, + "cache_read": 0.2 + } + }, + "llmgateway-providers/tencent/glm-5.1": { + "name": "GLM-5.1 (Tencent Cloud)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + } + }, + "llmgateway-providers/tencent/deepseek-v4-pro": { + "name": "DeepSeek V4 Pro (Tencent Cloud)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.435, + "output": 0.87, + "cache_read": 0.00363 + } + }, + "llmgateway-providers/tencent/glm-5-turbo": { + "name": "GLM-5 Turbo (Tencent Cloud)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + } + }, + "llmgateway-providers/tencent/glm-5v-turbo": { + "name": "GLM-5V Turbo (Tencent Cloud)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + } + }, + "llmgateway-providers/tencent/mimo-v2.5-pro": { + "name": "MiMo V2.5 Pro (Tencent Cloud)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.435, + "output": 0.87, + "cache_read": 0.0036 + } + }, "llmgateway-providers/xai/grok-4": { "name": "Grok 4 (xAI)", "context": 256000, @@ -16161,6 +16738,19 @@ "cache_read": 0.007 } }, + "llmgateway-providers/fireworks/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash (Fireworks AI)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.22, + "output": 0.66, + "cache_read": 0.007 + } + }, "llmgateway-providers/fireworks/kimi-k3": { "name": "Kimi K3 (Fireworks AI)", "context": 1040384, @@ -17693,6 +18283,19 @@ "cache_read": 0 } }, + "aihubmix/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.155, + "output": 0.62, + "cache_read": 0.0031 + } + }, "aihubmix/gpt-5.1": { "name": "GPT-5.1", "context": 400000, @@ -20803,6 +21406,15 @@ "output": 1.22 } }, + "sap-ai-core/gemini-3.5-flash-lite": { + "name": "Gemini 3.5 Flash Lite", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, "sap-ai-core/gpt-4.1": { "name": "gpt-4.1", "context": 1047576, @@ -23585,6 +24197,82 @@ "cache_read": 0.06 } }, + "google-vertex/xai/grok-4.20-reasoning": { + "name": "Grok 4.20 (Reasoning)", + "context": 2000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + } + }, + "google-vertex/xai/grok-4.3": { + "name": "Grok 4.3", + "context": 200000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + } + }, + "google-vertex/xai/grok-4.20-non-reasoning": { + "name": "Grok 4.20 (Non-Reasoning)", + "context": 2000000, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + } + }, + "google-vertex/xai/grok-4.1-fast-non-reasoning": { + "name": "Grok 4.1 Fast", + "context": 128000, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 0.5, + "cache_read": 0.05 + } + }, + "google-vertex/xai/grok-4.1-fast-reasoning": { + "name": "Grok 4.1 Fast (Reasoning)", + "context": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 0.5, + "cache_read": 0.05 + } + }, + "google-vertex/xai/grok-4.6": { + "name": "Grok 4.6", + "context": 524288, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.5 + } + }, "stepfun-ai/step-1-32k": { "name": "Step 1 (32K)", "context": 32768, @@ -23724,17 +24412,6 @@ "cache_read": 0.0077 } }, - "above/mimo-v2.5-pro-ultraspeed": { - "name": "MiMo V2.5 Pro UltraSpeed", - "context": 1048576, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 1.5231, - "output": 3.0462, - "cache_read": 0.0127 - } - }, "above/glm-5.2": { "name": "GLM 5.2", "context": 1000000, @@ -23753,10 +24430,11 @@ "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { - "input": 0.242, - "output": 0.726, - "cache_read": 0.0077 + "input": 0.165, + "output": 0.66, + "cache_read": 0.0033 } }, "above/glm-5.2-fast": { @@ -27931,6 +28609,29 @@ "cache_write": 1.5625 } }, + "pioneer/mistral-medium": { + "name": "Mistral Medium 3", + "context": 128000, + "tool_call": true, + "image": true, + "cost": { + "input": 0.4, + "output": 2, + "cache_read": 0.4, + "cache_write": 0.4 + } + }, + "pioneer/ministral-3b": { + "name": "Ministral 3B", + "context": 128000, + "tool_call": true, + "cost": { + "input": 0.1, + "output": 0.1, + "cache_read": 0.1, + "cache_write": 0.1 + } + }, "pioneer/gpt-4.1-nano": { "name": "GPT-4.1 nano", "context": 1047576, @@ -27958,6 +28659,19 @@ "cache_write": 0.40625 } }, + "pioneer/claude-opus-5-fast": { + "name": "Claude Opus 5", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, "pioneer/gpt-5.6-sol": { "name": "GPT-5.6 Sol", "context": 1050000, @@ -27972,6 +28686,18 @@ "cache_write": 6.25 } }, + "pioneer/devstral-small-2": { + "name": "Devstral Small 2", + "context": 256000, + "tool_call": true, + "image": true, + "cost": { + "input": 0.1, + "output": 0.3, + "cache_read": 0.1, + "cache_write": 0.1 + } + }, "pioneer/claude-opus-5": { "name": "Claude Opus 5", "context": 1000000, @@ -28338,6 +29064,18 @@ "cache_write": 18.75 } }, + "pioneer/ministral-14b": { + "name": "Ministral 14B", + "context": 256000, + "tool_call": true, + "image": true, + "cost": { + "input": 0.2, + "output": 0.2, + "cache_read": 0.2, + "cache_write": 0.2 + } + }, "pioneer/qwen3.7-plus": { "name": "Qwen3.7 Plus", "context": 1000000, @@ -28379,6 +29117,18 @@ "cache_write": 0.25 } }, + "pioneer/magistral-medium": { + "name": "Magistral Medium (latest)", + "context": 128000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 2, + "output": 5, + "cache_read": 2, + "cache_write": 2 + } + }, "pioneer/gpt-5.6-terra": { "name": "GPT-5.6 Terra", "context": 1050000, @@ -28751,6 +29501,19 @@ "cache_write": 0.98 } }, + "pioneer/zai-org/GLM-5.2-Fast": { + "name": "GLM-5.2", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 2.1, + "output": 6.6, + "cache_read": 0.21, + "cache_write": 2.1 + } + }, "pioneer/zai-org/GLM-5.2": { "name": "GLM-5.2", "context": 1040000, @@ -28775,6 +29538,19 @@ "cache_write": 0.03 } }, + "pioneer/thinkingmachines/inkling-small": { + "name": "Inkling Small", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 0.5, + "output": 1.2, + "cache_read": 0.1, + "cache_write": 0.5 + } + }, "pioneer/fastino/gliguard-LLMGuardrails-300M": { "name": "GLiGuard LLM Guardrails 300M", "context": 8192, @@ -29143,6 +29919,21 @@ "cache_write": 0.95 } }, + "pioneer/moonshotai/Kimi-K3-Fast": { + "name": "Kimi K3", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 4.5, + "output": 22.5, + "cache_read": 0.45, + "cache_write": 4.5 + } + }, "pioneer/moonshotai/Kimi-K3": { "name": "Kimi K3", "context": 1000000, @@ -30554,9 +31345,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.106, - "output": 0.368, - "cache_write": 0.053 + "input": 0.102, + "output": 0.356, + "cache_read": 0.051 } }, "hyper/deepseek-v4-pro-0813": { @@ -30590,7 +31381,7 @@ "cost": { "input": 0.1175, "output": 1.136, - "cache_write": 0.05875 + "cache_read": 0.05875 } }, "hyper/qwen3.6-plus": { @@ -30625,9 +31416,9 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.458, - "output": 1.712, - "cache_write": 0.229 + "input": 0.396, + "output": 1.464, + "cache_read": 0.198 } }, "hyper/kimi-k2.6": { @@ -30648,9 +31439,9 @@ "context": 430000, "tool_call": true, "cost": { - "input": 0.274, - "output": 0.8992, - "cache_write": 0.137 + "input": 0.255, + "output": 0.8365, + "cache_read": 0.1275 } }, "hyper/glm-5.2": { @@ -30710,7 +31501,20 @@ "cost": { "input": 0.6, "output": 2.5, - "cache_write": 0.3 + "cache_read": 0.3 + } + }, + "hyper/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.03 } }, "hyper/qwen3.7-flash": { @@ -30810,8 +31614,8 @@ "tool_call": true, "cost": { "input": 0.86, - "output": 2.784, - "cache_write": 0.43 + "output": 2.752, + "cache_read": 0.43 } }, "hyper/qwen3.8-max": { @@ -30835,7 +31639,7 @@ "cost": { "input": 0.5584, "output": 2.935, - "cache_write": 0.2792 + "cache_read": 0.2792 } }, "hyper/glm-5.1": { @@ -30845,9 +31649,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.386, - "output": 4.356, - "cache_write": 0.693 + "input": 1.318, + "output": 4.308, + "cache_read": 0.659 } }, "hyper/qwen3.7-plus": { @@ -30881,9 +31685,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.18, - "output": 0.61, - "cache_write": 0.09 + "input": 0.168, + "output": 0.66, + "cache_read": 0.084 } }, "hyper/glm-5.3": { @@ -30892,6 +31696,7 @@ "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 1.52432, "output": 4.79072, @@ -30905,7 +31710,7 @@ "cost": { "input": 0.6066, "output": 1.0386, - "cache_write": 0.3033 + "cache_read": 0.3033 } }, "hyper/qwen3.6-max": { @@ -30927,7 +31732,7 @@ "cost": { "input": 0.445, "output": 2.145, - "cache_write": 0.2225 + "cache_read": 0.2225 } }, "requesty/claude-sonnet-4-6": { @@ -31411,6 +32216,19 @@ "cache_read": 0.16 } }, + "requesty/deepseek-v4.1-flash@eu": { + "name": "DeepSeek V4.1 Flash (EU)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.5, + "output": 1.5, + "cache_read": 0.05 + } + }, "requesty/gpt-5.4@eu": { "name": "GPT-5.4 (EU)", "context": 1050000, @@ -31661,6 +32479,19 @@ "cache_read": 0.0275 } }, + "requesty/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.5, + "output": 1.5, + "cache_read": 0.05 + } + }, "requesty/hy3": { "name": "Hy3", "context": 262144, @@ -31747,17 +32578,6 @@ "cache_read": 0.05 } }, - "requesty/thinkingcap-qwen3.6-27b": { - "name": "thinkingcap-qwen3.6-27b", - "context": 262144, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.4, - "output": 2.6, - "cache_read": 0.05 - } - }, "requesty/nemotron-3-ultra-nvfp4": { "name": "nemotron-3-ultra-nvfp4", "context": 262144, @@ -31922,9 +32742,9 @@ "structured_output": true, "image": true, "cost": { - "input": 5.5, - "output": 33, - "cache_read": 0.55 + "input": 4.4, + "output": 22, + "cache_read": 0.44 } }, "requesty/glm-5.2-fast": { @@ -32121,17 +32941,6 @@ "cache_read": 0.1375 } }, - "requesty/thinkingcap-qwen3.6-27b@eu": { - "name": "thinkingcap-qwen3.6-27b@eu", - "context": 262144, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.4, - "output": 2.6, - "cache_read": 0.05 - } - }, "requesty/seed-2.0-mini": { "name": "Seed 2.0 Mini", "context": 256000, @@ -33400,6 +34209,18 @@ "output": 5 } }, + "huggingface/deepseek-ai/DeepSeek-V4.1-Flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2 + } + }, "huggingface/deepseek-ai/DeepSeek-V4-Pro-0813": { "name": "DeepSeek V4 Pro 0813", "context": 1000000, @@ -33444,6 +34265,17 @@ "cache_read": 0.003625 } }, + "huggingface/google/gemma-3-4b-it": { + "name": "Gemma 3 4B IT", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.1 + } + }, "huggingface/google/gemma-4-31B-it": { "name": "Gemma 4 31B IT", "context": 262144, @@ -33456,6 +34288,17 @@ "output": 0.4 } }, + "huggingface/google/gemma-3-27b-it": { + "name": "Gemma 3 27B IT", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.08, + "output": 0.16 + } + }, "huggingface/google/gemma-4-26B-A4B-it": { "name": "Gemma 4 26B A4B IT", "context": 262144, @@ -33468,6 +34311,17 @@ "output": 0.4 } }, + "huggingface/google/gemma-3-12b-it": { + "name": "Gemma 3 12B IT", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.15 + } + }, "huggingface/zai-org/GLM-4.6V-Flash": { "name": "GLM-4.6V-Flash", "context": 131072, @@ -36962,6 +37816,19 @@ "output": 0 } }, + "nvidia/z-ai/glm-5.3-flash": { + "name": "GLM-5.3-Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0, + "output": 0 + } + }, "nvidia/black-forest-labs/flux_1-kontext-dev": { "name": "FLUX.1-Kontext-dev", "context": 40960, @@ -38972,6 +39839,19 @@ "output": 1.5 } }, + "baseten/deepseek-ai/DeepSeek-V4.1-Flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.03 + } + }, "baseten/deepseek-ai/DeepSeek-V4-Pro-0813": { "name": "DeepSeek V4 Pro 0813", "context": 1048576, @@ -39050,6 +39930,7 @@ "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 1.4, "output": 4.4, @@ -41026,18 +41907,6 @@ "output": 1.85 } }, - "vercel/deepseek/deepseek-v4.1-flash-beta": { - "name": "DeepSeek V4.1 Flash Beta", - "context": 1000000, - "reasoning": true, - "tool_call": true, - "image": true, - "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 - } - }, "vercel/deepseek/deepseek-v4-flash": { "name": "DeepSeek V4 Flash", "context": 1000000, @@ -41050,14 +41919,26 @@ "cache_read": 0.028 } }, + "vercel/deepseek/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "vercel/deepseek/deepseek-v3.2": { "name": "DeepSeek V3.2", "context": 128000, "structured_output": true, "cost": { - "input": 0.28, - "output": 0.42, - "cache_read": 0.028 + "input": 0.62, + "output": 1.85 } }, "vercel/deepseek/deepseek-v3.1-terminus": { @@ -41098,7 +41979,6 @@ "name": "DeepSeek-R1", "context": 128000, "reasoning": true, - "tool_call": true, "cost": { "input": 1.35, "output": 5.4 @@ -41128,7 +42008,8 @@ "cost": { "input": 0.8, "output": 3.2, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 0.8 } }, "vercel/amazon/nova-lite": { @@ -41140,7 +42021,8 @@ "cost": { "input": 0.06, "output": 0.24, - "cache_read": 0.015 + "cache_read": 0.015, + "cache_write": 0.06 } }, "vercel/amazon/nova-micro": { @@ -41150,7 +42032,8 @@ "cost": { "input": 0.035, "output": 0.14, - "cache_read": 0.00875 + "cache_read": 0.00875, + "cache_write": 0.035 } }, "vercel/inclusionai/ling-3.0-flash": { @@ -43614,6 +44497,7 @@ "context": 256000, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 0.09375, "output": 0.25 @@ -46188,9 +47072,9 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.14, - "output": 0.58, - "cache_read": 0.035 + "input": 0.132, + "output": 0.528, + "cache_read": 0.033 } }, "llmgateway/qwen3-coder-next": { @@ -46250,6 +47134,17 @@ "cache_read": 0.125 } }, + "llmgateway/hy4-preview": { + "name": "Hy4 preview", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.834, + "output": 2.501, + "cache_read": 0.042 + } + }, "llmgateway/ernie-4.5-vl-424b-a47b": { "name": "ERNIE 4.5 VL 424B A47B", "context": 123000, @@ -46343,6 +47238,15 @@ "cache_read": 1.25 } }, + "llmgateway/hy-mt2-plus": { + "name": "Hy-MT2 Plus", + "context": 8192, + "tool_call": true, + "cost": { + "input": 0.074, + "output": 0.295 + } + }, "llmgateway/gpt-5.6-luna": { "name": "GPT-5.6 Luna", "context": 1050000, @@ -46802,6 +47706,19 @@ "cache_write": 0.2 } }, + "llmgateway/fugu-max": { + "name": "Fugu Max", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + } + }, "llmgateway/gpt-5.4-mini": { "name": "GPT-5.4 mini", "context": 400000, @@ -46859,9 +47776,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.102, - "output": 0.297, - "cache_read": 0.012 + "input": 0.1, + "output": 0.25, + "cache_read": 0.01 } }, "llmgateway/claude-haiku-4-5": { @@ -47151,6 +48068,18 @@ "output": 0.15 } }, + "llmgateway/glm-5-turbo": { + "name": "GLM-5-Turbo", + "context": 200000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + } + }, "llmgateway/gpt-5-mini": { "name": "GPT-5 Mini", "context": 400000, @@ -47264,6 +48193,19 @@ "cache_read": 0.2 } }, + "llmgateway/glm-5v-turbo": { + "name": "GLM-5V-Turbo", + "context": 200000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 1.2, + "output": 4, + "cache_read": 0.24 + } + }, "llmgateway/gpt-4": { "name": "GPT-4", "context": 8192, @@ -47338,6 +48280,19 @@ "cache_read": 0.03 } }, + "llmgateway/fugu-ultra-v2.0": { + "name": "Fugu Ultra v2.0", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, "llmgateway/claude-sonnet-5": { "name": "Claude Sonnet 5", "context": 1000000, @@ -47598,6 +48553,18 @@ "output": 3.72 } }, + "inception/mercury-2.5": { + "name": "Mercury 2.5", + "context": 260000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.04, + "output": 0.15, + "cache_read": 0.004 + } + }, "inception/mercury-edit-2": { "name": "Mercury Edit 2", "context": 128000, @@ -49830,6 +50797,19 @@ "cache_read": 0.06 } }, + "fireworks-ai/accounts/fireworks/models/deepseek-v4p1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.22, + "output": 0.66, + "cache_read": 0.007 + } + }, "fireworks-ai/accounts/fireworks/models/kimi-k2p6": { "name": "Kimi K2.6", "context": 262000, @@ -49952,6 +50932,12 @@ "cache_read": 0.015 } }, + "fireworks-ai/accounts/fireworks/models/mistral-large-3-fp8": { + "name": "Mistral Large 3 675B Instruct 2512", + "context": 262144, + "tool_call": true, + "image": true + }, "fireworks-ai/accounts/fireworks/models/glm-5p2": { "name": "GLM 5.2", "context": 1048575, @@ -51087,6 +52073,16 @@ "cache_read": 0.03 } }, + "empiriolabs/gemma-3-27b": { + "name": "Gemma 3 27B", + "context": 128000, + "structured_output": true, + "image": true, + "cost": { + "input": 0, + "output": 0 + } + }, "empiriolabs/qwen3-8-max-0902": { "name": "Qwen3.8 Max 0902", "context": 1000000, @@ -51765,6 +52761,19 @@ "cache_read": 1.31 } }, + "empiriolabs/fugu-ultra-v2-0": { + "name": "Fugu Ultra v2.0", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, "klokintegration/Kloker-Integration-Developer": { "name": "Kloker Integration Developer", "context": 200000, @@ -53016,6 +54025,19 @@ "cache_read": 0.35 } }, + "deepinfra/deepseek-ai/DeepSeek-V4.1-Flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 0.6, + "cache_read": 0.006 + } + }, "deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813": { "name": "DeepSeek V4 Pro 0813", "context": 1048576, @@ -53087,6 +54109,17 @@ "cache_read": 0.025 } }, + "deepinfra/google/gemma-3-4b-it": { + "name": "Gemma 3 4B IT", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.1 + } + }, "deepinfra/google/gemma-4-31B-it": { "name": "Gemma 4 31B IT", "context": 262144, @@ -53112,6 +54145,17 @@ "output": 0.1 } }, + "deepinfra/google/gemma-3-27b-it": { + "name": "Gemma 3 27B IT", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.08, + "output": 0.16 + } + }, "deepinfra/google/gemma-4-26B-A4B-it": { "name": "Gemma 4 26B A4B IT", "context": 262144, @@ -53124,6 +54168,17 @@ "output": 0.34 } }, + "deepinfra/google/gemma-3-12b-it": { + "name": "Gemma 3 12B IT", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.15 + } + }, "deepinfra/zai-org/GLM-5.1": { "name": "GLM-5.1", "context": 202752, @@ -53642,9 +54697,9 @@ "image": true, "video": true, "cost": { - "input": 0.4, - "output": 2, - "cache_read": 0.08 + "input": 0.14, + "output": 0.28, + "cache_read": 0.0028 } }, "wafer.ai/GLM-5.1": { @@ -53835,7 +54890,7 @@ }, "kilo/qwen/qwen3.8-27b": { "name": "Qwen3.8 27B", - "context": 1000000, + "context": 262144, "reasoning": true, "tool_call": true, "structured_output": true, @@ -54397,7 +55452,7 @@ } }, "kilo/~anthropic/claude-haiku-latest": { - "name": "Anthropic Claude Haiku Latest", + "name": "Anthropic: Claude Haiku Latest", "context": 200000, "reasoning": true, "tool_call": true, @@ -54411,7 +55466,7 @@ } }, "kilo/~anthropic/claude-sonnet-latest": { - "name": "Anthropic Claude Sonnet Latest", + "name": "Anthropic: Claude Sonnet Latest", "context": 1000000, "reasoning": true, "tool_call": true, @@ -54451,15 +55506,15 @@ } }, "kilo/~deepseek/deepseek-v4-flash-latest": { - "name": "DeepSeek V4 Flash Latest", + "name": "DeepSeek: DeepSeek V4 Flash Latest", "context": 1048576, "reasoning": true, "tool_call": true, "structured_output": true, "cost": { - "input": 0.05, - "output": 0.16, - "cache_read": 0.013 + "input": 0.0352, + "output": 0.1056, + "cache_read": 0.00112 } }, "kilo/dots-studio/dots-3-note-preview:free": { @@ -54789,7 +55844,7 @@ } }, "kilo/mistralai/voxtral-small-24b-2507": { - "name": "Mistral: Voxtral Small 24B 2507", + "name": "Voxtral Small 24B 2507", "context": 32768, "tool_call": true, "structured_output": true, @@ -54873,7 +55928,7 @@ }, "kilo/minimax/minimax-m2.5": { "name": "MiniMax-M2.5", - "context": 204800, + "context": 200000, "reasoning": true, "tool_call": true, "structured_output": true, @@ -54952,9 +56007,8 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.08, - "output": 0.2, - "cache_read": 0.04 + "input": 0.065, + "output": 0.18 } }, "kilo/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free": { @@ -54974,9 +56028,10 @@ "context": 262144, "reasoning": true, "tool_call": true, + "structured_output": true, "cost": { - "input": 0.085, - "output": 0.4 + "input": 0.08, + "output": 0.45 } }, "kilo/nvidia/nemotron-3-ultra-550b-a55b:free": { @@ -55278,7 +56333,7 @@ } }, "kilo/google/gemma-3-4b-it": { - "name": "Google: Gemma 3 4B", + "name": "Gemma 3 4B IT", "context": 131072, "structured_output": true, "image": true, @@ -55413,7 +56468,7 @@ } }, "kilo/google/gemma-3-27b-it": { - "name": "Google: Gemma 3 27B", + "name": "Gemma 3 27B IT", "context": 131072, "tool_call": true, "structured_output": true, @@ -55601,7 +56656,7 @@ } }, "kilo/google/gemma-3-12b-it": { - "name": "Google: Gemma 3 12B", + "name": "Gemma 3 12B IT", "context": 131072, "tool_call": true, "structured_output": true, @@ -55684,20 +56739,9 @@ "output": 0 } }, - "kilo/thinkingmachines/inkling:free": { - "name": "Thinking Machines: Inkling (free)", - "context": 1048576, - "reasoning": true, - "tool_call": true, - "image": true, - "cost": { - "input": 0, - "output": 0 - } - }, "kilo/thinkingmachines/inkling": { "name": "Inkling", - "context": 1048576, + "context": 524288, "reasoning": true, "tool_call": true, "image": true, @@ -55963,7 +57007,7 @@ } }, "kilo/~google/gemini-pro-latest": { - "name": "Google Gemini Pro Latest", + "name": "Google: Gemini Pro Latest", "context": 1048576, "reasoning": true, "tool_call": true, @@ -55978,7 +57022,7 @@ } }, "kilo/~google/gemini-flash-latest": { - "name": "Google Gemini Flash Latest", + "name": "Google: Gemini Flash Latest", "context": 1048576, "reasoning": true, "tool_call": true, @@ -56022,6 +57066,19 @@ "cache_read": 0.5 } }, + "kilo/sakana/fugu-max": { + "name": "Sakana: Fugu Max", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + } + }, "kilo/sakana/sakana-namazu": { "name": "Sakana Namazu", "context": 262144, @@ -56035,8 +57092,21 @@ "cache_read": 0.15 } }, + "kilo/sakana/fugu-ultra-v2": { + "name": "Sakana: Fugu Ultra v2", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, "kilo/~moonshotai/kimi-latest": { - "name": "MoonshotAI Kimi Latest", + "name": "MoonshotAI: Kimi Latest", "context": 1048576, "reasoning": true, "tool_call": true, @@ -56044,9 +57114,8 @@ "image": true, "video": true, "cost": { - "input": 2.4, - "output": 12, - "cache_read": 0.24 + "input": 2.1, + "output": 10.95 } }, "kilo/ibm-granite/granite-4.2-8b": { @@ -56096,7 +57165,7 @@ }, "kilo/deepseek/deepseek-v4-pro-0813": { "name": "DeepSeek V4 Pro 0813", - "context": 1048576, + "context": 1024000, "reasoning": true, "tool_call": true, "structured_output": true, @@ -56148,7 +57217,6 @@ "context": 64000, "reasoning": true, "tool_call": true, - "structured_output": true, "cost": { "input": 0.7, "output": 2.5 @@ -56222,7 +57290,7 @@ }, "kilo/deepseek/deepseek-v4-pro": { "name": "DeepSeek V4 Pro", - "context": 1024000, + "context": 1048576, "reasoning": true, "tool_call": true, "structured_output": true, @@ -56238,13 +57306,26 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.29, - "output": 1.14, - "cache_read": 0.11 + "input": 0.25, + "output": 1 } }, - "kilo/~openai/gpt-latest": { - "name": "OpenAI GPT Latest", + "kilo/~openai/gpt-terra-latest": { + "name": "OpenAI: GPT Terra Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, + "kilo/~openai/gpt-sol-latest": { + "name": "OpenAI: GPT Sol Latest", "context": 1050000, "reasoning": true, "tool_call": true, @@ -56257,8 +57338,36 @@ "cache_write": 2.5 } }, + "kilo/~openai/gpt-luna-latest": { + "name": "OpenAI: GPT Luna Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + } + }, + "kilo/~openai/gpt-astra-latest": { + "name": "OpenAI: GPT Astra Latest ($$$$)", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, "kilo/~openai/gpt-mini-latest": { - "name": "OpenAI GPT Mini Latest", + "name": "OpenAI: GPT Mini Latest", "context": 400000, "reasoning": true, "tool_call": true, @@ -56365,6 +57474,32 @@ "output": 0 } }, + "kilo/inclusionai/ling-3.0-flash-vl:free": { + "name": "inclusionAI: Ling 3.0 Flash VL (free)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0, + "output": 0 + } + }, + "kilo/inclusionai/ling-3.0-flash-vl": { + "name": "inclusionAI: Ling 3.0 Flash VL", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.06, + "output": 0.18, + "cache_read": 0.012 + } + }, "kilo/anthracite-org/magnum-v4-72b": { "name": "Magnum v4 72B", "context": 32768, @@ -57005,7 +58140,7 @@ } }, "kilo/openai/gpt-oss-safeguard-20b": { - "name": "OpenAI: gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B", "context": 131072, "reasoning": true, "tool_call": true, @@ -57457,14 +58592,14 @@ }, "kilo/~z-ai/glm-latest": { "name": "Z.ai: GLM Latest", - "context": 1024000, + "context": 262144, "reasoning": true, "tool_call": true, "structured_output": true, "cost": { - "input": 0.7, - "output": 2.2, - "cache_read": 0.13 + "input": 0.936, + "output": 3.168, + "cache_read": 0.1872 } }, "kilo/moonshotai/kimi-k2-0905": { @@ -57551,6 +58686,24 @@ "cache_read": 0.1 } }, + "kilo/inference-net/schematron-v2-small": { + "name": "Inference.net: Schematron V2 Small", + "context": 128000, + "structured_output": true, + "cost": { + "input": 0.05, + "output": 0.23 + } + }, + "kilo/inference-net/schematron-v2-turbo": { + "name": "Inference.net: Schematron V2 Turbo", + "context": 128000, + "structured_output": true, + "cost": { + "input": 0.03, + "output": 0.15 + } + }, "kilo/cohere/north-mini-code:free": { "name": "Cohere: North Mini Code (free)", "context": 256000, @@ -57641,9 +58794,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.14, + "output": 0.58, + "cache_read": 0.035 } }, "kilo/tencent/hy4-preview": { @@ -57766,7 +58919,7 @@ }, "kilo/z-ai/glm-5.2": { "name": "GLM-5.2", - "context": 1024000, + "context": 202752, "reasoning": true, "tool_call": true, "structured_output": true, @@ -59316,7 +60469,8 @@ "cost": { "input": 0.92, "output": 3.68, - "cache_read": 0.23 + "cache_read": 0.23, + "cache_write": 0.92 } }, "amazon-bedrock/us.writer.palmyra-x4-v1:0": { @@ -59343,6 +60497,19 @@ "cache_write": 6.25 } }, + "amazon-bedrock/google.gemma-4-31b": { + "name": "Gemma 4 31B IT", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.14, + "output": 0.4 + } + }, "amazon-bedrock/us.xai.grok-4.6": { "name": "Grok 4.6 (US)", "context": 500000, @@ -59367,13 +60534,12 @@ }, "amazon-bedrock/qwen.qwen3-coder-next": { "name": "Qwen3 Coder Next", - "context": 131072, - "reasoning": true, + "context": 262144, "tool_call": true, "structured_output": true, "cost": { - "input": 0.22, - "output": 1.8 + "input": 0.5, + "output": 1.2 } }, "amazon-bedrock/global.openai.gpt-5.6-luna": { @@ -59381,6 +60547,7 @@ "context": 1050000, "reasoning": true, "tool_call": true, + "structured_output": true, "image": true, "cost": { "input": 0.2, @@ -59416,8 +60583,19 @@ "cache_read": 0.55 } }, + "amazon-bedrock/us-gov.openai.gpt-oss-20b-1:0": { + "name": "gpt-oss-20b (GovCloud)", + "context": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.084, + "output": 0.36 + } + }, "amazon-bedrock/qwen.qwen3-coder-30b-a3b-v1:0": { - "name": "Qwen3 Coder 30B A3B Instruct", + "name": "Qwen3-Coder 30B-A3B Instruct", "context": 262144, "tool_call": true, "structured_output": true, @@ -59441,7 +60619,7 @@ } }, "amazon-bedrock/qwen.qwen3-235b-a22b-2507-v1:0": { - "name": "Qwen3 235B A22B 2507", + "name": "Qwen3 235B-A22B Instruct 2507", "context": 262144, "tool_call": true, "structured_output": true, @@ -59461,6 +60639,17 @@ "output": 0.1 } }, + "amazon-bedrock/us-gov.openai.gpt-oss-120b-1:0": { + "name": "gpt-oss-120b (GovCloud)", + "context": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.18, + "output": 0.72 + } + }, "amazon-bedrock/global.anthropic.claude-sonnet-4-6": { "name": "Claude Sonnet 4.6 (Global)", "context": 1000000, @@ -59530,7 +60719,8 @@ "cost": { "input": 0.035, "output": 0.14, - "cache_read": 0.00875 + "cache_read": 0.00875, + "cache_write": 0.035 } }, "amazon-bedrock/jp.anthropic.claude-opus-4-7": { @@ -59567,12 +60757,13 @@ "cost": { "input": 0.037, "output": 0.148, - "cache_read": 0.00925 + "cache_read": 0.00925, + "cache_write": 0.037 } }, "amazon-bedrock/nvidia.nemotron-nano-9b-v2": { "name": "NVIDIA Nemotron Nano 9B v2", - "context": 128000, + "context": 131072, "tool_call": true, "structured_output": true, "cost": { @@ -59612,6 +60803,7 @@ "context": 128000, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 0.15, "output": 0.15 @@ -59653,7 +60845,8 @@ "cost": { "input": 0.069, "output": 0.276, - "cache_read": 0.01725 + "cache_read": 0.01725, + "cache_write": 0.069 } }, "amazon-bedrock/anthropic.claude-opus-5": { @@ -59692,7 +60885,8 @@ "cost": { "input": 0.84, "output": 3.36, - "cache_read": 0.21 + "cache_read": 0.21, + "cache_write": 0.84 } }, "amazon-bedrock/anthropic.claude-sonnet-4-6": { @@ -59718,12 +60912,13 @@ "cost": { "input": 0.063, "output": 0.252, - "cache_read": 0.01575 + "cache_read": 0.01575, + "cache_write": 0.063 } }, "amazon-bedrock/mistral.voxtral-mini-3b-2507": { "name": "Voxtral Mini 3B 2507", - "context": 128000, + "context": 32768, "tool_call": true, "structured_output": true, "cost": { @@ -59731,6 +60926,19 @@ "output": 0.04 } }, + "amazon-bedrock/google.gemma-4-26b-a4b": { + "name": "Gemma 4 26B A4B IT", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.13, + "output": 0.4 + } + }, "amazon-bedrock/nvidia.nemotron-nano-12b-v2": { "name": "NVIDIA Nemotron Nano 12B v2 VL BF16", "context": 128000, @@ -59744,7 +60952,7 @@ }, "amazon-bedrock/nvidia.nemotron-nano-3-30b": { "name": "NVIDIA Nemotron Nano 3 30B", - "context": 128000, + "context": 262144, "reasoning": true, "tool_call": true, "structured_output": true, @@ -59768,10 +60976,11 @@ } }, "amazon-bedrock/minimax.minimax-m2.1": { - "name": "MiniMax M2.1", + "name": "MiniMax-M2.1", "context": 204800, "reasoning": true, "tool_call": true, + "structured_output": true, "cost": { "input": 0.3, "output": 1.2 @@ -59834,6 +61043,19 @@ "output": 6 } }, + "amazon-bedrock/google.gemma-4-e2b": { + "name": "Gemma 4 E2B IT", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.04, + "output": 0.08 + } + }, "amazon-bedrock/us.meta.llama4-maverick-17b-instruct-v1:0": { "name": "Llama 4 Maverick 17B Instruct (US)", "context": 1000000, @@ -59854,10 +61076,11 @@ } }, "amazon-bedrock/minimax.minimax-m2": { - "name": "MiniMax M2", + "name": "MiniMax-M2", "context": 204608, "reasoning": true, "tool_call": true, + "structured_output": true, "cost": { "input": 0.3, "output": 1.2 @@ -59877,8 +61100,8 @@ } }, "amazon-bedrock/qwen.qwen3-32b-v1:0": { - "name": "Qwen3 32B (dense)", - "context": 16384, + "name": "Qwen3 32B", + "context": 32768, "reasoning": true, "tool_call": true, "structured_output": true, @@ -59906,17 +61129,18 @@ "cost": { "input": 0.8, "output": 3.2, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 0.8 } }, "amazon-bedrock/google.gemma-3-12b-it": { - "name": "Google Gemma 3 12B", + "name": "Gemma 3 12B IT", "context": 131072, "structured_output": true, "image": true, "cost": { - "input": 0.049999999999999996, - "output": 0.09999999999999999 + "input": 0.09, + "output": 0.29 } }, "amazon-bedrock/au.anthropic.claude-opus-4-8": { @@ -59956,7 +61180,8 @@ "cost": { "input": 0.374, "output": 3.157, - "cache_read": 0.0935 + "cache_read": 0.0935, + "cache_write": 0.374 } }, "amazon-bedrock/eu.anthropic.claude-opus-4-8": { @@ -59990,6 +61215,7 @@ "context": 128000, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 0.2, "output": 0.2 @@ -59998,6 +61224,7 @@ "amazon-bedrock/openai.gpt-oss-safeguard-20b": { "name": "GPT OSS Safeguard 20B", "context": 128000, + "reasoning": true, "tool_call": true, "structured_output": true, "cost": { @@ -60015,7 +61242,8 @@ "cost": { "input": 0.3, "output": 2.5, - "cache_read": 0.075 + "cache_read": 0.075, + "cache_write": 0.3 } }, "amazon-bedrock/eu.amazon.nova-micro-v1:0": { @@ -60025,7 +61253,8 @@ "cost": { "input": 0.04, "output": 0.16, - "cache_read": 0.01 + "cache_read": 0.01, + "cache_write": 0.04 } }, "amazon-bedrock/openai.gpt-5.6-luna": { @@ -60067,27 +61296,42 @@ "output": 0.3 } }, + "amazon-bedrock/us.amazon.nova-premier-v1:0": { + "name": "Nova Premier (US)", + "context": 1000000, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 2.5, + "output": 12.5, + "cache_read": 0.625, + "cache_write": 2.5 + } + }, "amazon-bedrock/qwen.qwen3-vl-235b-a22b": { - "name": "Qwen/Qwen3-VL-235B-A22B-Instruct", - "context": 262000, + "name": "Qwen3 VL 235B A22B Instruct", + "context": 262144, "tool_call": true, "structured_output": true, "image": true, "cost": { - "input": 0.3, - "output": 1.5 + "input": 0.53, + "output": 2.66 } }, "amazon-bedrock/amazon.nova-2-lite-v1:0": { "name": "Nova 2 Lite", - "context": 128000, + "context": 1000000, "reasoning": true, "tool_call": true, "image": true, "video": true, "cost": { "input": 0.33, - "output": 2.75 + "output": 2.75, + "cache_read": 0.0825, + "cache_write": 0.33 } }, "amazon-bedrock/global.xai.grok-4.6": { @@ -60125,7 +61369,8 @@ "cost": { "input": 0.06, "output": 0.24, - "cache_read": 0.015 + "cache_read": 0.015, + "cache_write": 0.06 } }, "amazon-bedrock/anthropic.claude-opus-4-8": { @@ -60151,7 +61396,8 @@ "cost": { "input": 0.33, "output": 2.75, - "cache_read": 0.0825 + "cache_read": 0.0825, + "cache_write": 0.33 } }, "amazon-bedrock/us.openai.gpt-5.6-terra": { @@ -60194,7 +61440,8 @@ "cost": { "input": 0.8, "output": 3.2, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 0.8 } }, "amazon-bedrock/us.anthropic.claude-opus-4-7": { @@ -60275,10 +61522,11 @@ } }, "amazon-bedrock/minimax.minimax-m2.5": { - "name": "MiniMax M2.5", + "name": "MiniMax-M2.5", "context": 196608, "reasoning": true, "tool_call": true, + "structured_output": true, "cost": { "input": 0.3, "output": 1.2 @@ -60310,7 +61558,7 @@ }, "amazon-bedrock/us.meta.llama4-scout-17b-instruct-v1:0": { "name": "Llama 4 Scout 17B Instruct (US)", - "context": 3500000, + "context": 10000000, "tool_call": true, "image": true, "cost": { @@ -60323,6 +61571,7 @@ "context": 1050000, "reasoning": true, "tool_call": true, + "structured_output": true, "image": true, "cost": { "input": 0.22, @@ -60360,7 +61609,6 @@ "name": "DeepSeek-R1", "context": 128000, "reasoning": true, - "tool_call": true, "cost": { "input": 1.35, "output": 5.4 @@ -60433,7 +61681,7 @@ }, "amazon-bedrock/meta.llama4-scout-17b-instruct-v1:0": { "name": "Llama 4 Scout 17B Instruct", - "context": 3500000, + "context": 10000000, "tool_call": true, "image": true, "cost": { @@ -60451,18 +61699,18 @@ "cost": { "input": 0.396, "output": 3.311, - "cache_read": 0.099 + "cache_read": 0.099, + "cache_write": 0.396 } }, "amazon-bedrock/google.gemma-3-27b-it": { - "name": "Google Gemma 3 27B Instruct", + "name": "Gemma 3 27B IT", "context": 202752, - "tool_call": true, "structured_output": true, "image": true, "cost": { - "input": 0.12, - "output": 0.2 + "input": 0.23, + "output": 0.38 } }, "amazon-bedrock/amazon.nova-micro-v1:0": { @@ -60472,7 +61720,8 @@ "cost": { "input": 0.035, "output": 0.14, - "cache_read": 0.00875 + "cache_read": 0.00875, + "cache_write": 0.035 } }, "amazon-bedrock/us.mistral.pixtral-large-2502-v1:0": { @@ -60552,6 +61801,19 @@ "cache_write": 4.125 } }, + "amazon-bedrock/in.openai.gpt-5.6-terra": { + "name": "GPT-5.6 Terra (India)", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 2.2, + "output": 13.2, + "cache_read": 0.22, + "cache_write": 2.75 + } + }, "amazon-bedrock/jp.anthropic.claude-opus-4-8": { "name": "Claude Opus 4.8 (JP)", "context": 1000000, @@ -60580,13 +61842,13 @@ } }, "amazon-bedrock/qwen.qwen3-next-80b-a3b": { - "name": "Qwen/Qwen3-Next-80B-A3B-Instruct", - "context": 262000, + "name": "Qwen3-Next 80B-A3B Instruct", + "context": 262144, "tool_call": true, "structured_output": true, "cost": { - "input": 0.14, - "output": 1.4 + "input": 0.15, + "output": 1.2 } }, "amazon-bedrock/us.anthropic.claude-sonnet-5": { @@ -60626,7 +61888,8 @@ "cost": { "input": 0.06, "output": 0.24, - "cache_read": 0.015 + "cache_read": 0.015, + "cache_write": 0.06 } }, "amazon-bedrock/global.anthropic.claude-opus-4-7": { @@ -60643,12 +61906,12 @@ } }, "amazon-bedrock/qwen.qwen3-coder-480b-a35b-v1:0": { - "name": "Qwen3 Coder 480B A35B Instruct", + "name": "Qwen3-Coder 480B-A35B Instruct", "context": 131072, "tool_call": true, "structured_output": true, "cost": { - "input": 0.22, + "input": 0.45, "output": 1.8 } }, @@ -60690,8 +61953,7 @@ }, "amazon-bedrock/google.gemma-3-4b-it": { "name": "Gemma 3 4B IT", - "context": 128000, - "tool_call": true, + "context": 131072, "image": true, "cost": { "input": 0.04, @@ -60725,6 +61987,7 @@ "amazon-bedrock/openai.gpt-oss-safeguard-120b": { "name": "GPT OSS Safeguard 120B", "context": 128000, + "reasoning": true, "tool_call": true, "structured_output": true, "cost": { @@ -60785,12 +62048,12 @@ }, "amazon-bedrock/mistral.voxtral-small-24b-2507": { "name": "Voxtral Small 24B 2507", - "context": 32000, + "context": 32768, "tool_call": true, "structured_output": true, "cost": { - "input": 0.15, - "output": 0.35 + "input": 0.1, + "output": 0.3 } }, "amazon-bedrock/openai.gpt-oss-20b": { @@ -60834,7 +62097,8 @@ "cost": { "input": 0.064, "output": 0.256, - "cache_read": 0.016 + "cache_read": 0.016, + "cache_write": 0.064 } }, "amazon-bedrock/us.anthropic.claude-opus-4-5-20251101-v1:0": { @@ -60896,7 +62160,6 @@ "name": "DeepSeek-R1 (US)", "context": 128000, "reasoning": true, - "tool_call": true, "cost": { "input": 1.35, "output": 5.4 @@ -61093,6 +62356,20 @@ "cache_write": 12.5 } }, + "amazon-bedrock/in.openai.gpt-5.6-luna": { + "name": "GPT-5.6 Luna (India)", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.22, + "output": 1.32, + "cache_read": 0.022, + "cache_write": 0.275 + } + }, "amazon-bedrock/eu.anthropic.claude-sonnet-4-5-20250929-v1:0": { "name": "Claude Sonnet 4.5 (EU)", "context": 200000, @@ -61108,7 +62385,7 @@ } }, "amazon-bedrock/deepseek.v3.2": { - "name": "DeepSeek-V3.2", + "name": "DeepSeek V3.2", "context": 163840, "reasoning": true, "tool_call": true, @@ -61197,10 +62474,11 @@ }, "merge-gateway/qwen/qwen3.5-27b": { "name": "Qwen3.5 27B", - "context": 131072, + "context": 256000, "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 0.086, "output": 0.688, @@ -61209,11 +62487,10 @@ }, "merge-gateway/qwen/qwen3.5-35b-a3b": { "name": "Qwen3.5 35B A3B", - "context": 256000, + "context": 131072, "reasoning": true, "tool_call": true, "structured_output": true, - "image": true, "cost": { "input": 0.057, "output": 0.459, @@ -61278,10 +62555,11 @@ }, "merge-gateway/qwen/qwen3.5-397b-a17b": { "name": "Qwen3.5 397B A17B", - "context": 131072, + "context": 256000, "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 0.172, "output": 1.032, @@ -61826,6 +63104,15 @@ "cache_read": 0.2 } }, + "merge-gateway/google/gemma-3-4b-it": { + "name": "Gemma 3 4B", + "context": 128000, + "image": true, + "cost": { + "input": 0.04, + "output": 0.08 + } + }, "merge-gateway/google/gemini-2.5-flash-image": { "name": "Gemini 2.5 Flash Image", "context": 32768, @@ -61953,6 +63240,15 @@ "cache_read": 0.025 } }, + "merge-gateway/google/gemma-3-27b-it": { + "name": "Gemma 3 27B IT", + "context": 131072, + "cost": { + "input": 0.08, + "output": 0.45, + "cache_read": 0.04 + } + }, "merge-gateway/google/gemini-embedding-001": { "name": "Gemini Embedding 001", "context": 2048, @@ -62089,6 +63385,15 @@ "cache_read": 0.03 } }, + "merge-gateway/google/gemma-3-12b-it": { + "name": "Gemma 3 12B", + "context": 128000, + "image": true, + "cost": { + "input": 0.09, + "output": 0.29 + } + }, "merge-gateway/thinkingmachines/inkling": { "name": "Inkling", "context": 1048000, @@ -62313,6 +63618,15 @@ "cache_read": 0.07 } }, + "merge-gateway/deepseek/deepseek-v4-flash-0423": { + "name": "DeepSeek V4 Flash 0423", + "context": 131072, + "reasoning": true, + "cost": { + "input": 0.139, + "output": 0.278 + } + }, "merge-gateway/deepseek/deepseek-v4-pro-0813": { "name": "DeepSeek V4 Pro 0813", "context": 1000000, @@ -62327,13 +63641,13 @@ }, "merge-gateway/deepseek/deepseek-v4-flash-0731": { "name": "DeepSeek V4 Flash 0731", - "context": 1000000, + "context": 1048576, "reasoning": true, "tool_call": true, "structured_output": true, "cost": { - "input": 0.22, - "output": 0.66, + "input": 0.035, + "output": 0.07, "cache_read": 0.007 } }, @@ -62348,13 +63662,13 @@ }, "merge-gateway/deepseek/deepseek-v4-flash": { "name": "DeepSeek V4 Flash", - "context": 1000000, + "context": 1048576, "reasoning": true, "tool_call": true, "structured_output": true, "cost": { - "input": 0.22, - "output": 0.66, + "input": 0.035, + "output": 0.07, "cache_read": 0.007 } }, @@ -62556,6 +63870,17 @@ "output": 30 } }, + "merge-gateway/openai/gpt-oss-safeguard-20b": { + "name": "GPT OSS Safeguard 20B", + "context": 4096, + "reasoning": true, + "cost": { + "input": 0.07, + "output": 0.2, + "cache_read": 0, + "cache_write": 0 + } + }, "merge-gateway/openai/gpt-5.1": { "name": "GPT-5.1", "context": 400000, @@ -63269,9 +64594,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.0028 + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 } }, "deepseek/deepseek-v4-flash": { @@ -63280,10 +64605,11 @@ "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.0028 + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 } }, "deepseek/deepseek-v4-pro": { @@ -63298,6 +64624,19 @@ "cache_read": 0.003625 } }, + "deepseek/deepseek-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 + } + }, "abacus/claude-sonnet-4-6": { "name": "Claude Sonnet 4.6", "context": 1000000, @@ -66440,9 +67779,9 @@ "image": true, "video": true, "cost": { - "input": 0.42, - "output": 3, - "cache_read": 0.085 + "input": 0.214, + "output": 2.55, + "cache_read": 0.15 } }, "openrouter/qwen/qwen3.5-35b-a3b": { @@ -66556,8 +67895,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.22, - "output": 0.88 + "input": 0.0875, + "output": 0.35, + "cache_read": 0.0175 } }, "openrouter/qwen/qwen3.5-flash-02-23": { @@ -66999,7 +68339,7 @@ } }, "openrouter/~anthropic/claude-haiku-latest": { - "name": "Anthropic Claude Haiku Latest", + "name": "Claude Haiku Latest", "context": 200000, "reasoning": true, "tool_call": true, @@ -67013,7 +68353,7 @@ } }, "openrouter/~anthropic/claude-sonnet-latest": { - "name": "Anthropic Claude Sonnet Latest", + "name": "Claude Sonnet Latest", "context": 1000000, "reasoning": true, "tool_call": true, @@ -67059,9 +68399,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.05, - "output": 0.16, - "cache_read": 0.013 + "input": 0.0352, + "output": 0.1056, + "cache_read": 0.00112 } }, "openrouter/dots-studio/dots-3-note-preview:free": { @@ -67258,7 +68598,7 @@ }, "openrouter/mistralai/mistral-small-3.2-24b-instruct": { "name": "Mistral Small 3.2 24B", - "context": 131072, + "context": 256000, "tool_call": true, "structured_output": true, "image": true, @@ -67468,9 +68808,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.3, - "output": 1.2, - "cache_read": 0.03 + "input": 0.27, + "output": 1.08, + "cache_read": 0.027 } }, "openrouter/minimax/minimax-m3": { @@ -67564,6 +68904,7 @@ "context": 262144, "reasoning": true, "tool_call": true, + "structured_output": true, "cost": { "input": 0.085, "output": 0.4 @@ -67838,8 +69179,9 @@ "image": true, "video": true, "cost": { - "input": 0.07, - "output": 0.34 + "input": 0.09, + "output": 0.3, + "cache_read": 0.05 } }, "openrouter/google/gemini-3.1-pro-preview-customtools": { @@ -67868,7 +69210,7 @@ } }, "openrouter/google/gemma-3-4b-it": { - "name": "Gemma 3 4B", + "name": "Gemma 3 4B IT", "context": 131072, "structured_output": true, "image": true, @@ -68003,7 +69345,7 @@ } }, "openrouter/google/gemma-3-27b-it": { - "name": "Gemma 3 27B", + "name": "Gemma 3 27B IT", "context": 131072, "tool_call": true, "structured_output": true, @@ -68204,7 +69546,7 @@ } }, "openrouter/google/gemma-3-12b-it": { - "name": "Gemma 3 12B", + "name": "Gemma 3 12B IT", "context": 131072, "tool_call": true, "structured_output": true, @@ -68409,8 +69751,8 @@ "structured_output": true, "image": true, "cost": { - "input": 0.3, - "output": 1.1, + "input": 0.35, + "output": 1.5, "cache_read": 0.04 } }, @@ -68578,7 +69920,7 @@ } }, "openrouter/~google/gemini-pro-latest": { - "name": "Google Gemini Pro Latest", + "name": "Gemini Pro Latest", "context": 1048576, "reasoning": true, "tool_call": true, @@ -68593,7 +69935,7 @@ } }, "openrouter/~google/gemini-flash-latest": { - "name": "Google Gemini Flash Latest", + "name": "Gemini Flash Latest", "context": 1048576, "reasoning": true, "tool_call": true, @@ -68637,6 +69979,19 @@ "cache_read": 0.5 } }, + "openrouter/sakana/fugu-max": { + "name": "Fugu Max", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.25 + } + }, "openrouter/sakana/sakana-namazu": { "name": "Sakana Namazu", "context": 262144, @@ -68650,8 +70005,21 @@ "cache_read": 0.15 } }, + "openrouter/sakana/fugu-ultra-v2": { + "name": "Fugu Ultra v2", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, "openrouter/~moonshotai/kimi-latest": { - "name": "MoonshotAI Kimi Latest", + "name": "Kimi Latest", "context": 1048576, "reasoning": true, "tool_call": true, @@ -68659,9 +70027,8 @@ "image": true, "video": true, "cost": { - "input": 2.4, - "output": 12, - "cache_read": 0.24 + "input": 2.1, + "output": 10.95 } }, "openrouter/ibm-granite/granite-4.2-8b": { @@ -68718,7 +70085,7 @@ "cost": { "input": 0.57948, "output": 1.73844, - "cache_read": 0.018438 + "cache_read": 0.019316 } }, "openrouter/deepseek/deepseek-v4-flash-0731": { @@ -68728,9 +70095,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.065, - "output": 0.18, - "cache_read": 0.016 + "input": 0.04, + "output": 0.08, + "cache_read": 0.008 } }, "openrouter/deepseek/deepseek-v4-flash": { @@ -68740,9 +70107,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.08708, - "output": 0.17416, - "cache_read": 0.017416 + "input": 0.04788, + "output": 0.09576, + "cache_read": 0.009576 } }, "openrouter/deepseek/deepseek-v4.1-flash": { @@ -68763,7 +70130,6 @@ "context": 64000, "reasoning": true, "tool_call": true, - "structured_output": true, "cost": { "input": 0.7, "output": 2.5 @@ -68842,9 +70208,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.95526, - "output": 1.91052, - "cache_read": 0.079605 + "input": 1.6, + "output": 3.2, + "cache_read": 0.135 } }, "openrouter/deepseek/deepseek-chat-v3-0324": { @@ -68853,13 +70219,26 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.29, - "output": 1.14, - "cache_read": 0.11 + "input": 0.25, + "output": 1 } }, - "openrouter/~openai/gpt-latest": { - "name": "OpenAI GPT Latest", + "openrouter/~openai/gpt-terra-latest": { + "name": "GPT Terra Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, + "openrouter/~openai/gpt-sol-latest": { + "name": "GPT Sol Latest", "context": 1050000, "reasoning": true, "tool_call": true, @@ -68872,8 +70251,36 @@ "cache_write": 2.5 } }, + "openrouter/~openai/gpt-luna-latest": { + "name": "GPT Luna Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + } + }, + "openrouter/~openai/gpt-astra-latest": { + "name": "GPT Astra Latest", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, "openrouter/~openai/gpt-mini-latest": { - "name": "OpenAI GPT Mini Latest", + "name": "GPT Mini Latest", "context": 400000, "reasoning": true, "tool_call": true, @@ -68980,6 +70387,32 @@ "output": 0 } }, + "openrouter/inclusionai/ling-3.0-flash-vl:free": { + "name": "Ling 3.0 Flash VL (free)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0, + "output": 0 + } + }, + "openrouter/inclusionai/ling-3.0-flash-vl": { + "name": "Ling 3.0 Flash VL", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.06, + "output": 0.18, + "cache_read": 0.012 + } + }, "openrouter/anthracite-org/magnum-v4-72b": { "name": "Magnum v4 72B", "context": 32768, @@ -69552,7 +70985,7 @@ } }, "openrouter/openai/gpt-oss-safeguard-20b": { - "name": "gpt-oss-safeguard-20b", + "name": "GPT OSS Safeguard 20B", "context": 131072, "reasoning": true, "tool_call": true, @@ -69995,9 +71428,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.7, - "output": 2.2, - "cache_read": 0.13 + "input": 0.936, + "output": 3.168, + "cache_read": 0.1872 } }, "openrouter/moonshotai/kimi-k2-0905": { @@ -70057,9 +71490,9 @@ "image": true, "video": true, "cost": { - "input": 3, - "output": 15, - "cache_read": 0.3 + "input": 2.648138, + "output": 13.282724, + "cache_read": 0.302644 } }, "openrouter/moonshotai/kimi-k2": { @@ -70084,6 +71517,24 @@ "cache_read": 0.07 } }, + "openrouter/inference-net/schematron-v2-small": { + "name": "Schematron V2 Small", + "context": 128000, + "structured_output": true, + "cost": { + "input": 0.05, + "output": 0.23 + } + }, + "openrouter/inference-net/schematron-v2-turbo": { + "name": "Schematron V2 Turbo", + "context": 128000, + "structured_output": true, + "cost": { + "input": 0.03, + "output": 0.15 + } + }, "openrouter/cohere/north-mini-code:free": { "name": "North Mini Code (free)", "context": 256000, @@ -70151,9 +71602,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.03, - "output": 0.12, - "cache_read": 0.006 + "input": 0.09, + "output": 0.36, + "cache_read": 0.018 } }, "openrouter/arcee-ai/trinity-large-thinking": { @@ -70174,9 +71625,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.0825, + "output": 0.33, + "cache_read": 0.020625 } }, "openrouter/tencent/hy4-preview": { @@ -70304,9 +71755,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.28, - "output": 0.88, - "cache_read": 0.052 + "input": 0.6, + "output": 2, + "cache_read": 0.15 } }, "openrouter/z-ai/glm-5.3-flash": { @@ -70318,9 +71769,9 @@ "image": true, "video": true, "cost": { - "input": 0.15, - "output": 0.5, - "cache_read": 0.03 + "input": 0.075, + "output": 0.25, + "cache_read": 0.015 } }, "openrouter/z-ai/glm-4.5": { @@ -70388,9 +71839,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.4, - "output": 4.4, - "cache_read": 0.26 + "input": 1.092, + "output": 3.432, + "cache_read": 0.2028 } }, "openrouter/z-ai/glm-5v-turbo": { @@ -70572,6 +72023,19 @@ "cache_read": 0.19 } }, + "cline-pass/cline-pass/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 + } + }, "cline-pass/cline-pass/kimi-k3": { "name": "Kimi K3", "context": 1048576, @@ -70812,6 +72276,321 @@ "structured_output": true, "image": true }, + "ofox/qwen/qwen3.7-max": { + "name": "Qwen3.7 Max", + "context": 1064000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 1.71, + "output": 5.14, + "cache_read": 0.17, + "cache_write": 2.14 + } + }, + "ofox/qwen/qwen3-coder-plus": { + "name": "Qwen3 Coder Plus", + "context": 1000000, + "tool_call": true, + "cost": { + "input": 1.8, + "output": 9, + "cache_read": 0.2, + "cache_write": 1 + } + }, + "ofox/qwen/qwen-vl-max": { + "name": "Qwen-VL Max", + "context": 128000, + "tool_call": true, + "image": true, + "cost": { + "input": 0.23, + "output": 0.58, + "cache_read": 0.023 + } + }, + "ofox/qwen/qwen3-coder-flash": { + "name": "Qwen3 Coder Flash", + "context": 1000000, + "tool_call": true, + "cost": { + "input": 0.5, + "output": 2.5, + "cache_read": 0.06, + "cache_write": 0.27 + } + }, + "ofox/qwen/qwen-max": { + "name": "Qwen Max", + "context": 32000, + "tool_call": true, + "cost": { + "input": 0.35, + "output": 1.38, + "cache_read": 0.069 + } + }, + "ofox/qwen/qwen3.6-plus": { + "name": "Qwen3.6 Plus", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0.5, + "output": 3, + "cache_read": 0.05, + "cache_write": 0.625 + } + }, + "ofox/qwen/qwen3.5-27b": { + "name": "Qwen3.5 27B", + "context": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.29, + "output": 2.05, + "cache_read": 0.29 + } + }, + "ofox/qwen/qwen3.8-27b": { + "name": "Qwen3.8 27B", + "context": 1131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.5, + "output": 1.71, + "cache_read": 0.043, + "cache_write": 0.63 + } + }, + "ofox/qwen/qwen3.5-35b-a3b": { + "name": "Qwen3.5 35B-A3B", + "context": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.29, + "output": 1.83, + "cache_read": 0.29 + } + }, + "ofox/qwen/qwen-flash": { + "name": "Qwen Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.022, + "output": 0.22, + "cache_read": 0.0043, + "cache_write": 0.027 + } + }, + "ofox/qwen/qwen-turbo": { + "name": "Qwen Turbo", + "context": 128000, + "tool_call": true, + "cost": { + "input": 0.043, + "output": 0.09, + "cache_read": 0.0086 + } + }, + "ofox/qwen/qwen3.5-flash": { + "name": "Qwen3.5 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.1, + "output": 0.4, + "cache_read": 0.01, + "cache_write": 0.125 + } + }, + "ofox/qwen/qwen3-coder-next": { + "name": "Qwen3 Coder Next", + "context": 256000, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.2, + "output": 1.5 + } + }, + "ofox/qwen/qwen3.5-397b-a17b": { + "name": "Qwen3.5 397B-A17B", + "context": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.55, + "output": 3.5, + "cache_read": 0.55 + } + }, + "ofox/qwen/qwen3.6-27b": { + "name": "Qwen3.6 27B", + "context": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.43, + "output": 2.57 + } + }, + "ofox/qwen/qwen3.8-max-0902": { + "name": "Qwen3.8 Max 0902", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 1.71, + "output": 5.14, + "cache_read": 0.17, + "cache_write": 2.14 + } + }, + "ofox/qwen/qwen3-max": { + "name": "Qwen3 Max", + "context": 256000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.36, + "output": 1.43, + "cache_read": 0.072 + } + }, + "ofox/qwen/qwen-plus": { + "name": "Qwen Plus", + "context": 1000000, + "tool_call": true, + "cost": { + "input": 0.12, + "output": 0.29, + "cache_read": 0.023 + } + }, + "ofox/qwen/qwen3.5-122b-a10b": { + "name": "Qwen3.5 122B-A10B", + "context": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.29, + "output": 2.29, + "cache_read": 0.29 + } + }, + "ofox/qwen/qwen3.6-flash": { + "name": "Qwen3.6 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.25, + "output": 1.5, + "cache_read": 0.025, + "cache_write": 0.31 + } + }, + "ofox/qwen/qwen3.8-flash": { + "name": "Qwen3.8 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.11, + "output": 0.39, + "cache_read": 0.011, + "cache_write": 0.14 + } + }, + "ofox/qwen/qwen3.6-max-preview": { + "name": "Qwen3.6 Max Preview", + "context": 256000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 2.15, + "output": 12.86, + "cache_read": 0.2, + "cache_write": 1.17 + } + }, + "ofox/qwen/qwen3.8-max": { + "name": "Qwen3.8 Max", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 1.71, + "output": 5.14, + "cache_read": 0.17, + "cache_write": 2.14 + } + }, + "ofox/qwen/qwen3.7-plus": { + "name": "Qwen3.7 Plus", + "context": 1064000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0.4, + "output": 1.6, + "cache_read": 0.08, + "cache_write": 0.5 + } + }, + "ofox/qwen/qwen3.5-plus": { + "name": "Qwen3.5 Plus", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0.4, + "output": 2.4, + "cache_read": 0.04, + "cache_write": 0.4 + } + }, "ofox/bailian/qwen3.7-max": { "name": "Qwen3.7 Max", "context": 1000000, @@ -71559,7 +73338,7 @@ "cost": { "input": 0.1, "output": 0.4, - "cache_read": 0.025, + "cache_read": 0.01, "cache_write": 1 } }, @@ -71638,6 +73417,20 @@ "cache_write": 1 } }, + "ofox/google/gemini-3.8-flash": { + "name": "Gemini 3.8 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.75, + "output": 3.75, + "cache_read": 0.075, + "cache_write": 0.0415 + } + }, "ofox/google/gemini-3.7-flash": { "name": "Gemini 3.7 Flash", "context": 1048576, @@ -71683,6 +73476,18 @@ "cache_write": 1 } }, + "ofox/deepseek/deepseek-v4-flash-0423": { + "name": "DeepSeek V4 Flash 0423", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.19, + "output": 0.51, + "cache_read": 0.028 + } + }, "ofox/deepseek/deepseek-v4-flash-vision-exp": { "name": "DeepSeek V4 Flash Vision Exp", "context": 1000000, @@ -71732,6 +73537,19 @@ "cache_read": 0.014 } }, + "ofox/deepseek/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "ofox/deepseek/deepseek-v3.2": { "name": "DeepSeek V3.2", "context": 128000, @@ -71753,7 +73571,7 @@ "cost": { "input": 1.32, "output": 3.96, - "cache_read": 0.044 + "cache_read": 0.15 } }, "ofox/deepseek/deepseek-v4-pro": { @@ -72192,8 +74010,8 @@ "tool_call": true, "cost": { "input": 0.4, - "output": 2, - "cache_read": 0.08 + "output": 2.2, + "cache_read": 0.11 } }, "ofox/z-ai/glm-4.6": { @@ -72202,8 +74020,8 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.4, - "output": 1.9, + "input": 0.6, + "output": 2.2, "cache_read": 0.11 } }, @@ -72240,8 +74058,8 @@ "tool_call": true, "cost": { "input": 0.072, - "output": 0.43, - "cache_read": 0.015 + "output": 0.4, + "cache_read": 0.01 } }, "ofox/z-ai/glm-5": { @@ -73418,17 +75236,6 @@ "cache_read": 0 } }, - "scnet-token-plan/MiMo-V2.5-Pro": { - "name": "MiMo-V2.5-Pro", - "context": 1048576, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - } - }, "scnet-token-plan/GLM-5": { "name": "GLM-5", "context": 204800, @@ -73502,18 +75309,6 @@ "cache_read": 0 } }, - "scnet-token-plan/DeepSeek-V3.2": { - "name": "DeepSeek V3.2", - "context": 128000, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - } - }, "scnet-token-plan/DeepSeek-V4-Pro": { "name": "DeepSeek V4 Pro", "context": 1000000, @@ -75357,6 +77152,34 @@ "cache_read": 0 } }, + "volcengine-coding-plan/kimi-k3": { + "name": "Kimi K3", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + } + }, + "volcengine-coding-plan/glm-5.3-flash": { + "name": "GLM-5.3-Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + } + }, "volcengine-coding-plan/doubao-seed-evolving": { "name": "Seed Evolving", "context": 256000, @@ -78029,6 +79852,19 @@ "cache_read": 0.03 } }, + "togetherai/deepseek-ai/DeepSeek-V4.1-Flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "togetherai/deepseek-ai/DeepSeek-V4-Pro-0813": { "name": "DeepSeek V4 Pro 0813", "context": 1048576, @@ -80469,9 +82305,9 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.13, - "output": 0.28, - "cache_read": 0.03 + "input": 0.09, + "output": 0.17, + "cache_read": 0.014 } }, "cortecs/qwen3.8-flash-next": { @@ -80568,9 +82404,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.334, - "output": 2.451, - "cache_read": 0.111 + "input": 0.1, + "output": 0.4, + "cache_read": 0.04 } }, "cortecs/claude-opus-5": { @@ -80962,7 +82798,7 @@ } }, "cortecs/gemma-3-27b-it": { - "name": "gemma-3-27b-it", + "name": "Gemma 3 27B IT", "context": 131000, "reasoning": true, "structured_output": true, @@ -81027,9 +82863,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.201, - "output": 0.5, - "cache_read": 0.05 + "input": 0.1, + "output": 0.35, + "cache_read": 0.018 } }, "cortecs/gpt-4o-mini": { @@ -81851,6 +83687,17 @@ "output": 15 } }, + "nan/glm5.3": { + "name": "GLM-5.3", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0, + "output": 0 + } + }, "nan/qwen3.6": { "name": "Qwen3.6 35B-A3B", "context": 262144, @@ -81864,22 +83711,12 @@ } }, "nan/deepseek-v4-flash": { - "name": "DeepSeek V4 Flash", + "name": "DeepSeek V4.1 Flash", "context": 1000000, "reasoning": true, "tool_call": true, "structured_output": true, - "cost": { - "input": 0, - "output": 0 - } - }, - "nan/glm5.2": { - "name": "GLM-5.2", - "context": 500000, - "reasoning": true, - "tool_call": true, - "structured_output": true, + "image": true, "cost": { "input": 0, "output": 0 @@ -82950,6 +84787,19 @@ "cache_read": 0 } }, + "opencode-go/deepseek-v4.1-flash": { + "name": "DeepSeek V4.1 Flash", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.15, + "output": 0.6, + "cache_read": 0.003 + } + }, "opencode-go/hy3": { "name": "Hy3", "context": 256000, @@ -83180,19 +85030,6 @@ "cache_read": 0.26 } }, - "opencode-go/deepseek-flash": { - "name": "DeepSeek V4.1 Flash", - "context": 1000000, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "image": true, - "cost": { - "input": 0.15, - "output": 0.6, - "cache_read": 0.003 - } - }, "opencode-go/mimo-v2.5": { "name": "MiMo V2.5", "context": 1000000, @@ -84005,6 +85842,18 @@ "cache_read": 0.0375 } }, + "edenai/groq/openai/gpt-oss-safeguard-20b": { + "name": "GPT OSS Safeguard 20B (Groq)", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.075, + "output": 0.3, + "cache_read": 0.0375 + } + }, "edenai/groq/openai/gpt-oss-120b": { "name": "GPT OSS 120B (Groq)", "context": 131072, @@ -84023,8 +85872,17 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.46464, - "output": 0.92928 + "input": 0.46368, + "output": 0.92736 + } + }, + "edenai/scaleway/gemma-3-27b-it": { + "name": "Gemma 3 27B IT (Scaleway)", + "context": 40000, + "image": true, + "cost": { + "input": 0.287125, + "output": 0.57425 } }, "edenai/scaleway/gpt-oss-120b": { @@ -84033,8 +85891,8 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.17424, - "output": 0.69696 + "input": 0.17388, + "output": 0.69552 } }, "edenai/scaleway/llama-3.3-70b-instruct": { @@ -84042,8 +85900,8 @@ "context": 128000, "tool_call": true, "cost": { - "input": 1.045439, - "output": 1.045439 + "input": 1.04328, + "output": 1.04328 } }, "edenai/nebius/deepseek-ai/DeepSeek-V4-Flash-0731": { @@ -84094,6 +85952,18 @@ "cache_read": 0.3 } }, + "edenai/nebius/google/gemma-3-27b-it": { + "name": "Gemma 3 27B IT (Nebius)", + "context": 110000, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.1, + "output": 0.3, + "cache_read": 0.1 + } + }, "edenai/nebius/meta-llama/Llama-3.3-70B-Instruct": { "name": "Llama-3.3-70B-Instruct (Nebius)", "context": 131072, @@ -84745,6 +86615,14 @@ "cache_read": 0.125 } }, + "edenai/infomaniak/mistralai/Ministral-3-14B-Instruct-2512": { + "name": "Ministral 3 14B (Infomaniak)", + "context": 100000, + "cost": { + "input": 0.34776, + "output": 0.46368 + } + }, "edenai/flexai/Nemotron-3-Super-120B-A12B": { "name": "Nemotron 3 Super 120B A12B (FlexAI)", "context": 262144, @@ -84989,8 +86867,8 @@ "structured_output": true, "image": true, "cost": { - "input": 0.3, - "output": 1.2, + "input": 0.2, + "output": 0.6, "cache_read": 0.006 } }, @@ -85050,6 +86928,39 @@ "cache_read": 0.04 } }, + "edenai/deepinfra/google/gemma-3-4b-it": { + "name": "Gemma 3 4B IT (Deep Infra)", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.1 + } + }, + "edenai/deepinfra/google/gemma-3-27b-it": { + "name": "Gemma 3 27B IT (Deep Infra)", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.08, + "output": 0.16 + } + }, + "edenai/deepinfra/google/gemma-3-12b-it": { + "name": "Gemma 3 12B IT (Deep Infra)", + "context": 131072, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.15 + } + }, "edenai/deepinfra/zai-org/GLM-4.7-Flash": { "name": "GLM-4.7-Flash (Deep Infra)", "context": 202752, @@ -85425,6 +87336,23 @@ "output": 0.4 } }, + "edenai/amazon/google.gemma-3-12b-it@us": { + "name": "Gemma 3 12B IT (Amazon Bedrock, US)", + "context": 128000, + "image": true, + "cost": { + "input": 0.09, + "output": 0.29 + } + }, + "edenai/amazon/mistral.voxtral-mini-3b-2507": { + "name": "Voxtral Mini 3B 2507 (Amazon Bedrock)", + "context": 128000, + "cost": { + "input": 0.04, + "output": 0.04 + } + }, "edenai/amazon/amazon.nova-pro-v1:0@us": { "name": "Nova Pro (US)", "context": 300000, @@ -85436,6 +87364,24 @@ "output": 3.2 } }, + "edenai/amazon/google.gemma-3-12b-it": { + "name": "Gemma 3 12B IT (Amazon Bedrock)", + "context": 128000, + "image": true, + "cost": { + "input": 0.09, + "output": 0.29 + } + }, + "edenai/amazon/openai.gpt-oss-safeguard-20b": { + "name": "GPT OSS Safeguard 20B (Amazon Bedrock)", + "context": 128000, + "reasoning": true, + "cost": { + "input": 0.07, + "output": 0.2 + } + }, "edenai/amazon/amazon.nova-lite-v1:0": { "name": "Nova Lite", "context": 300000, @@ -85458,6 +87404,15 @@ "output": 3.2 } }, + "edenai/amazon/openai.gpt-oss-safeguard-20b@us": { + "name": "GPT OSS Safeguard 20B (Amazon Bedrock, US)", + "context": 128000, + "reasoning": true, + "cost": { + "input": 0.07, + "output": 0.2 + } + }, "edenai/amazon/moonshot.kimi-k2-thinking": { "name": "Kimi K2 Thinking (Amazon Bedrock)", "context": 128000, @@ -85467,6 +87422,15 @@ "output": 2.5 } }, + "edenai/amazon/google.gemma-3-27b-it": { + "name": "Gemma 3 27B IT (Amazon Bedrock)", + "context": 128000, + "image": true, + "cost": { + "input": 0.23, + "output": 0.38 + } + }, "edenai/amazon/amazon.nova-micro-v1:0": { "name": "Nova Micro", "context": 128000, @@ -85477,6 +87441,14 @@ "output": 0.14 } }, + "edenai/amazon/mistral.voxtral-mini-3b-2507@us": { + "name": "Voxtral Mini 3B 2507 (Amazon Bedrock, US)", + "context": 128000, + "cost": { + "input": 0.04, + "output": 0.04 + } + }, "edenai/amazon/mistral.pixtral-large-2502-v1:0@us": { "name": "Pixtral Large (25.02) (Amazon Bedrock, US)", "context": 128000, @@ -85486,6 +87458,15 @@ "output": 6 } }, + "edenai/amazon/google.gemma-3-27b-it@us": { + "name": "Gemma 3 27B IT (Amazon Bedrock, US)", + "context": 128000, + "image": true, + "cost": { + "input": 0.23, + "output": 0.38 + } + }, "edenai/amazon/zai.glm-4.7-flash": { "name": "GLM-4.7-Flash (Amazon Bedrock)", "context": 200000, @@ -85496,6 +87477,40 @@ "output": 0.4 } }, + "edenai/amazon/google.gemma-3-4b-it": { + "name": "Gemma 3 4B IT (Amazon Bedrock)", + "context": 128000, + "image": true, + "cost": { + "input": 0.04, + "output": 0.08 + } + }, + "edenai/amazon/mistral.voxtral-small-24b-2507": { + "name": "Voxtral Small 24B 2507 (Amazon Bedrock)", + "context": 128000, + "cost": { + "input": 0.1, + "output": 0.3 + } + }, + "edenai/amazon/mistral.voxtral-small-24b-2507@us": { + "name": "Voxtral Small 24B 2507 (Amazon Bedrock, US)", + "context": 128000, + "cost": { + "input": 0.1, + "output": 0.3 + } + }, + "edenai/amazon/google.gemma-3-4b-it@us": { + "name": "Gemma 3 4B IT (Amazon Bedrock, US)", + "context": 128000, + "image": true, + "cost": { + "input": 0.04, + "output": 0.08 + } + }, "edenai/openai/gpt-5-nano": { "name": "GPT-5 Nano", "context": 400000, @@ -85758,8 +87773,7 @@ "image": true, "cost": { "input": 30, - "output": 180, - "cache_read": 3 + "output": 180 } }, "edenai/openai/gpt-5.4-mini": { @@ -85807,8 +87821,7 @@ "image": true, "cost": { "input": 30, - "output": 180, - "cache_read": 3 + "output": 180 } }, "edenai/openai/gpt-5.6-terra": { @@ -85908,8 +87921,7 @@ "image": true, "cost": { "input": 30, - "output": 180, - "cache_read": 3 + "output": 180 } }, "edenai/openai/o3": { @@ -86227,6 +88239,19 @@ "cache_read": 0.03 } }, + "edenai/together_ai/deepseek-ai/DeepSeek-V4.1-Flash": { + "name": "DeepSeek V4.1 Flash (Together AI)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "edenai/together_ai/deepseek-ai/DeepSeek-V4-Pro-0813": { "name": "DeepSeek V4 Pro 0813 (Together AI)", "context": 1048576, @@ -86835,8 +88860,8 @@ "name": "Llama-3.3-70B-Instruct (IONOS)", "context": 128000, "cost": { - "input": 0.75504, - "output": 0.75504 + "input": 0.75348, + "output": 0.75348 } }, "edenai/ionos/openai/gpt-oss-120b": { @@ -86844,8 +88869,8 @@ "context": 131072, "reasoning": true, "cost": { - "input": 0.17424, - "output": 0.75504 + "input": 0.17388, + "output": 0.75348 } }, "edenai/perplexityai/sonar": { diff --git a/src/types/sessions.ts b/src/types/sessions.ts index 2d3c8ce..33204b4 100644 --- a/src/types/sessions.ts +++ b/src/types/sessions.ts @@ -39,6 +39,12 @@ export interface ActionResponse { deleted?: boolean | null; } +export interface BulkArchiveResult { + archived: number; + skipped: number; + errors: string[]; +} + export interface PreviewMessage { role: string; time: number | null;