From 2de890982365164d03e7a12acb703be8c58dee5f Mon Sep 17 00:00:00 2001
From: Jostein Austvik Jacobsen
Date: Thu, 30 Apr 2026 11:59:57 +0200
Subject: [PATCH 001/115] locate workspaceStorage in vscode dev container
---
src/providers/copilot.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/providers/copilot.ts b/src/providers/copilot.ts
index 6cf486f..baa4dcf 100644
--- a/src/providers/copilot.ts
+++ b/src/providers/copilot.ts
@@ -318,6 +318,7 @@ function getVSCodeWorkspaceStorageDirs(): string[] {
return [
join(homedir(), '.config', 'Code', 'User', 'workspaceStorage'),
join(homedir(), '.config', 'Code - Insiders', 'User', 'workspaceStorage'),
+ join(homedir(), '.vscode-server', 'data', 'User', 'workspaceStorage'),
]
}
From 8ab9ea916b3092637445e51d6b73670de4f6bfaf Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Thu, 30 Apr 2026 16:43:41 -0700
Subject: [PATCH 002/115] Add per-file result cache for Codex provider
Fixes #183. Users with large Codex session directories (45 GB, 10K+
files) experienced CPU pegging because every 30-second refresh re-parsed
all session files from scratch.
Three optimizations:
1. readFirstLine now reads 16 KB via fs.open() instead of loading the
entire file through readSessionFile. Cuts discovery I/O from ~45 GB
to ~160 MB for 10K files.
2. Per-file result cache (codex-results.json) with mtime+size
fingerprinting. Parsed results are cached on first run; subsequent
runs return cached data instantly for unchanged files.
3. Cache-accelerated discovery skips header validation for cached files,
pulling the project name directly from the cache manifest.
Cache safety: fingerprint captured before read (no TOCTOU), atomic
write via temp+fsync+rename, 0o600 permissions, Object.hasOwn for
prototype pollution defense, eviction of deleted files on flush,
try/finally ensures flush even on parse errors.
---
src/codex-cache.ts | 143 +++++++++++++++++++++++++++++++++++++++++
src/parser.ts | 53 ++++++++-------
src/providers/codex.ts | 48 ++++++++++++--
3 files changed, 213 insertions(+), 31 deletions(-)
create mode 100644 src/codex-cache.ts
diff --git a/src/codex-cache.ts b/src/codex-cache.ts
new file mode 100644
index 0000000..d408cb5
--- /dev/null
+++ b/src/codex-cache.ts
@@ -0,0 +1,143 @@
+import { readFile, mkdir, stat, open, rename, unlink } from 'fs/promises'
+import { existsSync } from 'fs'
+import { randomBytes } from 'crypto'
+import { join } from 'path'
+import { homedir } from 'os'
+
+import type { ParsedProviderCall } from './providers/types.js'
+
+const CODEX_CACHE_VERSION = 1
+const CACHE_FILE = 'codex-results.json'
+
+type FileFingerprint = { mtimeMs: number; sizeBytes: number }
+
+type FileEntry = {
+ mtimeMs: number
+ sizeBytes: number
+ project: string
+ calls: ParsedProviderCall[]
+}
+
+type ResultCache = {
+ version: number
+ files: Record
+}
+
+function getCacheDir(): string {
+ return process.env['CODEBURN_CACHE_DIR'] ?? join(homedir(), '.cache', 'codeburn')
+}
+
+function getCachePath(): string {
+ return join(getCacheDir(), CACHE_FILE)
+}
+
+let memCache: ResultCache | null = null
+
+async function loadCache(): Promise {
+ if (memCache) return memCache
+ try {
+ const raw = await readFile(getCachePath(), 'utf-8')
+ const cache = JSON.parse(raw) as ResultCache
+ if (cache.version === CODEX_CACHE_VERSION && cache.files && typeof cache.files === 'object') {
+ memCache = cache
+ return cache
+ }
+ } catch {}
+ memCache = { version: CODEX_CACHE_VERSION, files: {} }
+ return memCache
+}
+
+function getEntry(cache: ResultCache, filePath: string, fp: FileFingerprint): FileEntry | null {
+ if (!Object.hasOwn(cache.files, filePath)) return null
+ const entry = cache.files[filePath]
+ if (entry && entry.mtimeMs === fp.mtimeMs && entry.sizeBytes === fp.sizeBytes) {
+ return entry
+ }
+ return null
+}
+
+export async function readCachedCodexResults(
+ filePath: string,
+): Promise {
+ try {
+ const s = await stat(filePath)
+ const cache = await loadCache()
+ const entry = getEntry(cache, filePath, { mtimeMs: s.mtimeMs, sizeBytes: s.size })
+ return entry?.calls ?? null
+ } catch {}
+ return null
+}
+
+export async function getCachedCodexProject(
+ filePath: string,
+): Promise {
+ try {
+ const s = await stat(filePath)
+ const cache = await loadCache()
+ const entry = getEntry(cache, filePath, { mtimeMs: s.mtimeMs, sizeBytes: s.size })
+ return entry?.project ?? null
+ } catch {}
+ return null
+}
+
+export async function fingerprintFile(
+ filePath: string,
+): Promise {
+ try {
+ const s = await stat(filePath)
+ return { mtimeMs: s.mtimeMs, sizeBytes: s.size }
+ } catch {
+ return null
+ }
+}
+
+export async function writeCachedCodexResults(
+ filePath: string,
+ project: string,
+ calls: ParsedProviderCall[],
+ fingerprint: FileFingerprint,
+): Promise {
+ try {
+ const cache = await loadCache()
+ cache.files[filePath] = {
+ mtimeMs: fingerprint.mtimeMs,
+ sizeBytes: fingerprint.sizeBytes,
+ project,
+ calls,
+ }
+ } catch {}
+}
+
+export async function flushCodexCache(): Promise {
+ if (!memCache) return
+ try {
+ // Evict entries for files that no longer exist on disk
+ const paths = Object.keys(memCache.files)
+ for (const p of paths) {
+ try {
+ await stat(p)
+ } catch {
+ delete memCache.files[p]
+ }
+ }
+
+ const dir = getCacheDir()
+ if (!existsSync(dir)) await mkdir(dir, { recursive: true })
+ const finalPath = getCachePath()
+ const tempPath = `${finalPath}.${randomBytes(8).toString('hex')}.tmp`
+ const payload = JSON.stringify(memCache)
+ const handle = await open(tempPath, 'w', 0o600)
+ try {
+ await handle.writeFile(payload, { encoding: 'utf-8' })
+ await handle.sync()
+ } finally {
+ await handle.close()
+ }
+ try {
+ await rename(tempPath, finalPath)
+ } catch (err) {
+ try { await unlink(tempPath) } catch {}
+ throw err
+ }
+ } catch {}
+}
diff --git a/src/parser.ts b/src/parser.ts
index ab4eacd..530a99b 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -3,6 +3,7 @@ import { basename, join } from 'path'
import { readSessionLines } from './fs-utils.js'
import { calculateCost, getShortModelName } from './models.js'
import { discoverAllSessions, getProvider } from './providers/index.js'
+import { flushCodexCache } from './codex-cache.js'
import type { ParsedProviderCall } from './providers/types.js'
import type {
AssistantMessageContent,
@@ -402,36 +403,40 @@ async function parseProviderSources(
const sessionMap = new Map()
- for (const source of sources) {
- if (dateRange) {
- try {
- const s = await stat(source.path)
- if (s.mtimeMs < dateRange.start.getTime()) continue
- } catch { /* fall through; treat unknown stat as "may contain data" */ }
- }
- const parser = provider.createSessionParser(
- { path: source.path, project: source.project, provider: providerName },
- seenKeys,
- )
-
- for await (const call of parser.parse()) {
+ try {
+ for (const source of sources) {
if (dateRange) {
- if (!call.timestamp) continue
- const ts = new Date(call.timestamp)
- if (ts < dateRange.start || ts > dateRange.end) continue
+ try {
+ const s = await stat(source.path)
+ if (s.mtimeMs < dateRange.start.getTime()) continue
+ } catch { /* fall through; treat unknown stat as "may contain data" */ }
}
+ const parser = provider.createSessionParser(
+ { path: source.path, project: source.project, provider: providerName },
+ seenKeys,
+ )
- const turn = providerCallToTurn(call)
- const classified = classifyTurn(turn)
- const key = `${providerName}:${call.sessionId}:${source.project}`
+ for await (const call of parser.parse()) {
+ if (dateRange) {
+ if (!call.timestamp) continue
+ const ts = new Date(call.timestamp)
+ if (ts < dateRange.start || ts > dateRange.end) continue
+ }
- const existing = sessionMap.get(key)
- if (existing) {
- existing.turns.push(classified)
- } else {
- sessionMap.set(key, { project: source.project, turns: [classified] })
+ const turn = providerCallToTurn(call)
+ const classified = classifyTurn(turn)
+ const key = `${providerName}:${call.sessionId}:${source.project}`
+
+ const existing = sessionMap.get(key)
+ if (existing) {
+ existing.turns.push(classified)
+ } else {
+ sessionMap.set(key, { project: source.project, turns: [classified] })
+ }
}
}
+ } finally {
+ if (providerName === 'codex') await flushCodexCache()
}
const projectMap = new Map()
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 2eac408..dc21aa8 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -1,9 +1,10 @@
-import { readdir, stat } from 'fs/promises'
+import { readdir, stat, open } from 'fs/promises'
import { basename, join } from 'path'
import { homedir } from 'os'
import { readSessionFile } from '../fs-utils.js'
import { calculateCost } from '../models.js'
+import { readCachedCodexResults, writeCachedCodexResults, getCachedCodexProject, fingerprintFile } from '../codex-cache.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
const modelDisplayNames: Record = {
@@ -69,14 +70,21 @@ function sanitizeProject(cwd: string): string {
}
async function readFirstLine(filePath: string): Promise {
- const content = await readSessionFile(filePath)
- if (content === null) return null
- const line = content.split('\n')[0]
- if (!line?.trim()) return null
+ let fh
try {
+ fh = await open(filePath, 'r')
+ const buf = Buffer.alloc(16384)
+ const { bytesRead } = await fh.read(buf, 0, 16384, 0)
+ if (bytesRead === 0) return null
+ const text = buf.toString('utf-8', 0, bytesRead)
+ const nl = text.indexOf('\n')
+ const line = nl >= 0 ? text.slice(0, nl) : text
+ if (!line.trim()) return null
return JSON.parse(line) as CodexEntry
} catch {
return null
+ } finally {
+ await fh?.close()
}
}
@@ -121,6 +129,12 @@ async function discoverSessionsInDir(codexDir: string): Promise
const s = await stat(filePath).catch(() => null)
if (!s?.isFile()) continue
+ const cachedProject = await getCachedCodexProject(filePath)
+ if (cachedProject) {
+ sources.push({ path: filePath, project: cachedProject, provider: 'codex' })
+ continue
+ }
+
const { valid, meta } = await isValidCodexSession(filePath)
if (!valid || !meta) continue
@@ -145,6 +159,19 @@ function resolveModel(info: CodexEntry['payload'], sessionModel?: string): strin
function createParser(source: SessionSource, seenKeys: Set): SessionParser {
return {
async *parse(): AsyncGenerator {
+ const cached = await readCachedCodexResults(source.path)
+ if (cached) {
+ for (const call of cached) {
+ if (seenKeys.has(call.deduplicationKey)) continue
+ seenKeys.add(call.deduplicationKey)
+ yield call
+ }
+ return
+ }
+
+ const fp = await fingerprintFile(source.path)
+ if (!fp) return
+
const content = await readSessionFile(source.path)
if (content === null) return
const lines = content.split('\n').filter(l => l.trim())
@@ -157,6 +184,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
let prevReasoning = 0
let pendingTools: string[] = []
let pendingUserMessage = ''
+ const results: ParsedProviderCall[] = []
for (const line of lines) {
let entry: CodexEntry
@@ -258,7 +286,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
0,
)
- yield {
+ results.push({
provider: 'codex',
model,
inputTokens: uncachedInputTokens,
@@ -276,12 +304,18 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
deduplicationKey: dedupKey,
userMessage: pendingUserMessage,
sessionId,
- }
+ })
pendingTools = []
pendingUserMessage = ''
}
}
+
+ await writeCachedCodexResults(source.path, source.project, results, fp)
+
+ for (const call of results) {
+ yield call
+ }
},
}
}
From 68c6f2c710bd793e8ce26e4638ca7e71d333337c Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Thu, 30 Apr 2026 17:33:02 -0700
Subject: [PATCH 003/115] Fix timezone handling: menubar UTC bugs, --timezone
flag, DST-safe dates
Three fixes for issue #184:
1. Menubar Swift code used UTC instead of local timezone in two places:
computeHistoryStats hardcoded TimeZone("UTC") and
effectiveTokensInLast7Days used ISO8601DateFormatter (UTC default).
Both now use .current to match CLI-produced local date keys.
2. Add --timezone flag and CODEBURN_TZ env var to override the system
timezone for all date grouping. Sets process.env.TZ before any Date
operations so all existing local-timezone code works unchanged.
3. Replace MS_PER_DAY arithmetic with Date constructor day-of-month
math for yesterday/backfill computations. Subtracting 86400000ms
from midnight skips a day on DST spring-forward (23-hour day).
Fixes #184
---
mac/Sources/CodeBurnMenubar/AppStore.swift | 5 ++++-
.../CodeBurnMenubar/Views/FindingsSection.swift | 4 ++--
src/cli.ts | 17 ++++++++++++++---
src/daily-cache.ts | 4 ++--
4 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 4ac3948..3eec2b2 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -174,7 +174,10 @@ final class AppStore {
/// last 7 days of dailyHistory. Used as the "tokens consumed in 7-day window" reading paired
/// with the API-reported percent for capacity estimation.
private func effectiveTokensInLast7Days(history: [DailyHistoryEntry], asOf now: Date) -> Double {
- let cutoff = ISO8601DateFormatter().string(from: now.addingTimeInterval(-7 * 86400)).prefix(10)
+ let f = DateFormatter()
+ f.dateFormat = "yyyy-MM-dd"
+ f.timeZone = .current
+ let cutoff = f.string(from: now.addingTimeInterval(-7 * 86400))
return history
.filter { $0.date >= cutoff }
.reduce(0.0) { $0 + $1.effectiveTokens }
diff --git a/mac/Sources/CodeBurnMenubar/Views/FindingsSection.swift b/mac/Sources/CodeBurnMenubar/Views/FindingsSection.swift
index 86f174c..aff1e83 100644
--- a/mac/Sources/CodeBurnMenubar/Views/FindingsSection.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/FindingsSection.swift
@@ -213,11 +213,11 @@ private struct HistoryStats {
private func computeHistoryStats(history: [DailyHistoryEntry]) -> HistoryStats {
var calendar = Calendar(identifier: .gregorian)
- calendar.timeZone = TimeZone(identifier: "UTC")!
+ calendar.timeZone = .current
let formatter: DateFormatter = {
let f = DateFormatter()
f.dateFormat = "yyyy-MM-dd"
- f.timeZone = TimeZone(identifier: "UTC")
+ f.timeZone = .current
return f
}()
let now = Date()
diff --git a/src/cli.ts b/src/cli.ts
index 116866c..368cbbc 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -7,7 +7,7 @@ import { convertCost } from './currency.js'
import { renderStatusBar } from './format.js'
import { type PeriodData, type ProviderCost } from './menubar-json.js'
import { buildMenubarPayload } from './menubar-json.js'
-import { getDaysInRange, ensureCacheHydrated, emptyCache, MS_PER_DAY, BACKFILL_DAYS, toDateString } from './daily-cache.js'
+import { getDaysInRange, ensureCacheHydrated, emptyCache, BACKFILL_DAYS, toDateString } from './daily-cache.js'
import { aggregateProjectsIntoDays, buildPeriodDataFromDays, dateKey } from './day-aggregator.js'
import { CATEGORY_LABELS, type DateRange, type ProjectSummary, type TaskCategory } from './types.js'
import { renderDashboard } from './dashboard.js'
@@ -141,8 +141,19 @@ const program = new Command()
.description('See where your AI coding tokens go - by task, tool, model, and project')
.version(version)
.option('--verbose', 'print warnings to stderr on read failures and skipped files')
+ .option('--timezone ', 'IANA timezone for date grouping (e.g. Asia/Tokyo, America/New_York)')
program.hook('preAction', async (thisCommand) => {
+ const tz = thisCommand.opts<{ timezone?: string }>().timezone ?? process.env['CODEBURN_TZ']
+ if (tz) {
+ try {
+ Intl.DateTimeFormat(undefined, { timeZone: tz })
+ } catch {
+ console.error(`\n Invalid timezone: "${tz}". Use an IANA timezone like "America/New_York" or "Asia/Tokyo".\n`)
+ process.exit(1)
+ }
+ process.env.TZ = tz
+ }
const config = await readConfig()
setModelAliases(config.modelAliases ?? {})
if (thisCommand.opts<{ verbose?: boolean }>().verbose) {
@@ -383,7 +394,7 @@ program
const periodInfo = getDateRange(opts.period)
const now = new Date()
const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate())
- const yesterdayStr = toDateString(new Date(todayStart.getTime() - MS_PER_DAY))
+ const yesterdayStr = toDateString(new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1))
const isAllProviders = pf === 'all'
const cache = await hydrateCache()
@@ -454,7 +465,7 @@ program
// Cache stores per-provider cost+calls per day in DailyEntry.providers, so we can derive
// a provider-filtered history without re-parsing. Tokens aren't broken down per provider
// in the cache, so the filtered view shows zero tokens (heatmap/trend still works on cost).
- const historyStartStr = toDateString(new Date(todayStart.getTime() - BACKFILL_DAYS * MS_PER_DAY))
+ const historyStartStr = toDateString(new Date(now.getFullYear(), now.getMonth(), now.getDate() - BACKFILL_DAYS))
const allCacheDays = getDaysInRange(cache, historyStartStr, yesterdayStr)
// Parse only today for history; historical days come from cache
const todayRangeForHistory: DateRange = { start: todayStart, end: new Date() }
diff --git a/src/daily-cache.ts b/src/daily-cache.ts
index 6e30727..096e2c6 100644
--- a/src/daily-cache.ts
+++ b/src/daily-cache.ts
@@ -165,7 +165,7 @@ export async function ensureCacheHydrated(
const now = new Date()
const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate())
const yesterdayEnd = new Date(todayStart.getTime() - 1)
- const yesterdayStr = toDateString(new Date(todayStart.getTime() - MS_PER_DAY))
+ const yesterdayStr = toDateString(new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1))
return withDailyCacheLock(async () => {
let c = await loadDailyCache()
@@ -183,7 +183,7 @@ export async function ensureCacheHydrated(
parseInt(c.lastComputedDate.slice(5, 7)) - 1,
parseInt(c.lastComputedDate.slice(8, 10)) + 1
)
- : new Date(todayStart.getTime() - BACKFILL_DAYS * MS_PER_DAY)
+ : new Date(now.getFullYear(), now.getMonth(), now.getDate() - BACKFILL_DAYS)
if (gapStart.getTime() <= yesterdayEnd.getTime()) {
const gapRange: DateRange = { start: gapStart, end: yesterdayEnd }
From 39fc05595c029132fd3ca44cf5daeecd6a86ccfa Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Fri, 1 May 2026 08:01:25 -0700
Subject: [PATCH 004/115] Harden menubar: fix refresh loop, concurrency, data
sync, and edge cases
- Fix refresh loop: proper while loop with 30s sleep and force:true
instead of single-fire Task that never repeated
- Fix loading overlay: counter-based isLoading so concurrent fetches
don't flicker the overlay on/off
- Fix rapid tab switching: cancel previous switchTask, check
Task.isCancelled after CLI returns to discard stale results
- Fix tab strip vs hero desync: fetch provider-specific and all-provider
data in parallel so costs arrive from same data snapshot
- Fix stale menubar icon after wake: forceRefresh now fetches today/all
in parallel alongside the current selection
- Fix accent color: ThemeState is now @Observable so color changes
propagate via observation, removing .id() view hierarchy teardown
- Fix currency flash: defer store.currency and symbol update until a
rate is available so symbol and rate apply atomically
- Fix export: terminationHandler instead of waitUntilExit (no UI freeze),
HHmmss in filename to prevent overwrite on double-export
- Fix CurrencyState: @MainActor isolation with proper Sendable
conformance, nonisolated on pure static functions
- Fix streak count: iterate calendar days instead of sparse history
entries so gaps are counted as streak-breakers
- Fix TrendBar identity: stable date-based id instead of UUID
- Add GPT-5.3 and DeepSeek model display names
---
mac/Sources/CodeBurnMenubar/AppStore.swift | 48 ++++++++++++++-----
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 19 ++++++--
.../CodeBurnMenubar/CurrencyState.swift | 8 ++--
.../CodeBurnMenubar/Theme/ThemeState.swift | 2 +
.../CodeBurnMenubar/Views/AgentTabStrip.swift | 2 +-
.../Views/HeatmapSection.swift | 26 ++++++----
.../Views/MenuBarContent.swift | 30 ++++++------
.../Views/PeriodSegmentedControl.swift | 2 +-
src/data/litellm-snapshot.json | 2 +-
src/models.ts | 4 ++
10 files changed, 96 insertions(+), 47 deletions(-)
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 3eec2b2..935a70d 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -25,7 +25,8 @@ final class AppStore {
}
var showingAccentPicker: Bool = false
var currency: String = "USD"
- var isLoading: Bool = false
+ var isLoading: Bool { loadingCount > 0 }
+ private var loadingCount: Int = 0
var lastError: String?
var subscription: SubscriptionUsage?
var subscriptionError: String?
@@ -33,6 +34,7 @@ final class AppStore {
var capacityEstimates: [String: CapacityEstimate] = [:]
private var cache: [PayloadCacheKey: CachedPayload] = [:]
+ private var switchTask: Task?
private var currentKey: PayloadCacheKey {
PayloadCacheKey(period: selectedPeriod, provider: selectedProvider)
@@ -62,16 +64,37 @@ final class AppStore {
payload.optimize.findingCount
}
- /// Switch to a period. Always fetches fresh data so the user never sees stale numbers.
- func switchTo(period: Period) async {
+ /// Switch to a period. Cancels any in-flight switch and fetches provider-specific +
+ /// all-provider data in parallel so tab strip costs stay in sync with the hero.
+ func switchTo(period: Period) {
selectedPeriod = period
- await refresh(includeOptimize: true, force: true)
+ switchTask?.cancel()
+ switchTask = Task {
+ if selectedProvider == .all {
+ await refresh(includeOptimize: true, force: true)
+ } else {
+ async let main: Void = refresh(includeOptimize: true, force: true)
+ async let all: Void = refreshQuietly(period: period)
+ _ = await (main, all)
+ }
+ }
}
- /// Switch to a provider filter. Always fetches fresh data so the user never sees stale numbers.
- func switchTo(provider: ProviderFilter) async {
+ /// Switch to a provider filter. Cancels any in-flight switch so rapid tab tapping only
+ /// runs the CLI for the final selection. Fetches provider-specific and all-provider data
+ /// in parallel so the tab strip costs stay in sync with the hero.
+ func switchTo(provider: ProviderFilter) {
selectedProvider = provider
- await refresh(includeOptimize: true, force: true)
+ switchTask?.cancel()
+ switchTask = Task {
+ if provider == .all {
+ await refresh(includeOptimize: true, force: true)
+ } else {
+ async let main: Void = refresh(includeOptimize: true, force: true)
+ async let all: Void = refreshQuietly(period: selectedPeriod)
+ _ = await (main, all)
+ }
+ }
}
private var inFlightKeys: Set = []
@@ -85,18 +108,21 @@ final class AppStore {
if !force, cache[key]?.isFresh == true { return }
guard !inFlightKeys.contains(key) else { return }
inFlightKeys.insert(key)
- if cache[key] == nil {
- isLoading = true
+ let showedLoading = cache[key] == nil
+ if showedLoading {
+ loadingCount += 1
}
defer {
inFlightKeys.remove(key)
- isLoading = false
+ if showedLoading { loadingCount = max(loadingCount - 1, 0) }
}
do {
let fresh = try await DataClient.fetch(period: key.period, provider: key.provider, includeOptimize: includeOptimize)
+ guard !Task.isCancelled else { return }
cache[key] = CachedPayload(payload: fresh, fetchedAt: Date())
lastError = nil
} catch {
+ if Task.isCancelled { return }
lastError = String(describing: error)
NSLog("CodeBurn: fetch failed for \(key.period.rawValue)/\(key.provider.rawValue): \(error)")
}
@@ -336,7 +362,7 @@ private let thousandsFormatter: NumberFormatter = {
return f
}()
-extension Double {
+@MainActor extension Double {
func asCurrency() -> String {
let state = CurrencyState.shared
let converted = self * state.rate
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index 1c87221..47d1dc2 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -42,7 +42,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
ProcessInfo.processInfo.disableSuddenTermination()
backgroundActivity = ProcessInfo.processInfo.beginActivity(
options: [.userInitiated, .automaticTerminationDisabled, .suddenTerminationDisabled],
- reason: "CodeBurn menubar polls AI coding cost every 15 seconds while idle in the background."
+ reason: "CodeBurn menubar polls AI coding cost every 30 seconds while idle in the background."
)
restorePersistedCurrency()
@@ -174,7 +174,9 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
lastRefreshTime = now
Task {
- await store.refresh(includeOptimize: true, force: true)
+ async let main: Void = store.refresh(includeOptimize: true, force: true)
+ async let today: Void = store.refreshQuietly(period: .today)
+ _ = await (main, today)
refreshStatusButton()
}
}
@@ -202,9 +204,16 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
}
private func startRefreshLoop() {
- Task {
- await store.refresh(includeOptimize: true)
- refreshStatusButton()
+ Task { [weak self] in
+ while !Task.isCancelled {
+ guard let self else { return }
+ if self.store.selectedPeriod != .today || self.store.selectedProvider != .all {
+ await self.store.refreshQuietly(period: .today)
+ }
+ await self.store.refresh(includeOptimize: true, force: true)
+ self.refreshStatusButton()
+ try? await Task.sleep(nanoseconds: refreshIntervalNanos)
+ }
}
}
diff --git a/mac/Sources/CodeBurnMenubar/CurrencyState.swift b/mac/Sources/CodeBurnMenubar/CurrencyState.swift
index e668139..c27acc1 100644
--- a/mac/Sources/CodeBurnMenubar/CurrencyState.swift
+++ b/mac/Sources/CodeBurnMenubar/CurrencyState.swift
@@ -10,8 +10,8 @@ private let minValidFXRate: Double = 0.0001
private let maxValidFXRate: Double = 1_000_000
private let fxFetchTimeoutSeconds: TimeInterval = 10
-@Observable
-final class CurrencyState: @unchecked Sendable {
+@MainActor @Observable
+final class CurrencyState: Sendable {
static let shared = CurrencyState()
var code: String = "USD"
@@ -31,7 +31,7 @@ final class CurrencyState: @unchecked Sendable {
}
}
- static func symbolForCode(_ code: String) -> String {
+ nonisolated static func symbolForCode(_ code: String) -> String {
// Some locales return "US$" for USD or "CA$" for CAD via NumberFormatter. Prefer the
// plain glyph form everyone recognises.
if let override = symbolOverrides[code] { return override }
@@ -42,7 +42,7 @@ final class CurrencyState: @unchecked Sendable {
return formatter.currencySymbol ?? code
}
- private static let symbolOverrides: [String: String] = [
+ nonisolated private static let symbolOverrides: [String: String] = [
"USD": "$",
"CAD": "$",
"AUD": "$",
diff --git a/mac/Sources/CodeBurnMenubar/Theme/ThemeState.swift b/mac/Sources/CodeBurnMenubar/Theme/ThemeState.swift
index a2cb7ee..9e0444e 100644
--- a/mac/Sources/CodeBurnMenubar/Theme/ThemeState.swift
+++ b/mac/Sources/CodeBurnMenubar/Theme/ThemeState.swift
@@ -1,4 +1,5 @@
import SwiftUI
+import Observation
enum AccentPreset: String, CaseIterable, Identifiable {
case ember = "Ember"
@@ -72,6 +73,7 @@ enum AccentPreset: String, CaseIterable, Identifiable {
}
@MainActor
+@Observable
final class ThemeState {
static let shared = ThemeState()
diff --git a/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift b/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
index 77b6165..b54e4e9 100644
--- a/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
@@ -8,7 +8,7 @@ struct AgentTabStrip: View {
HStack(spacing: 5) {
ForEach(visibleFilters) { filter in
Button {
- Task { await store.switchTo(provider: filter) }
+ store.switchTo(provider: filter)
} label: {
AgentTab(
filter: filter,
diff --git a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
index 5b143b2..d676fd3 100644
--- a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
@@ -370,7 +370,7 @@ private struct MiniStat: View {
}
private struct TrendBar: Identifiable {
- let id = UUID()
+ var id: String { date }
let date: String
let cost: Double
let inputTokens: Double
@@ -793,7 +793,7 @@ private struct AllStats {
let historyDayCount: Int
}
-private func computeAllStats(payload: MenubarPayload) -> AllStats {
+@MainActor private func computeAllStats(payload: MenubarPayload) -> AllStats {
let history = payload.history.daily
let favoriteModel = payload.current.topModels.first?.name ?? "—"
@@ -848,13 +848,21 @@ private func computeAllStats(payload: MenubarPayload) -> AllStats {
var longestStreak = 0
var running = 0
- let sortedDates = history.map(\.date).sorted()
- for date in sortedDates {
- if (costByDate[date] ?? 0) > 0 {
- running += 1
- longestStreak = max(longestStreak, running)
- } else {
- running = 0
+ if let firstDate = history.map(\.date).min(),
+ let lastDate = history.map(\.date).max(),
+ let start = formatter.date(from: firstDate),
+ let end = formatter.date(from: lastDate) {
+ var cursor = start
+ while cursor <= end {
+ let key = formatter.string(from: cursor)
+ if (costByDate[key] ?? 0) > 0 {
+ running += 1
+ longestStreak = max(longestStreak, running)
+ } else {
+ running = 0
+ }
+ guard let next = calendar.date(byAdding: .day, value: 1, to: cursor) else { break }
+ cursor = next
}
}
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 44879d8..64440ad 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -55,7 +55,6 @@ struct MenuBarContent: View {
StarBanner()
}
- .id(store.accentPreset)
}
/// True when a specific provider tab is selected and that provider has no spend in the
@@ -457,7 +456,7 @@ struct FooterBar: View {
Task {
let downloads = (NSHomeDirectory() as NSString).appendingPathComponent("Downloads")
let formatter = DateFormatter()
- formatter.dateFormat = "yyyy-MM-dd"
+ formatter.dateFormat = "yyyy-MM-dd-HHmmss"
let base = "codeburn-\(formatter.string(from: Date()))"
let outputPath = (downloads as NSString).appendingPathComponent(base + format.suffix)
@@ -466,13 +465,17 @@ struct FooterBar: View {
])
do {
- try process.run()
- process.waitUntilExit()
- if process.terminationStatus == 0 {
- NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: outputPath)])
- } else {
- NSLog("CodeBurn: \(format.cliName.uppercased()) export exited with status \(process.terminationStatus)")
+ let fmt = format
+ process.terminationHandler = { proc in
+ Task { @MainActor in
+ if proc.terminationStatus == 0 {
+ NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: outputPath)])
+ } else {
+ NSLog("CodeBurn: \(fmt.cliName.uppercased()) export exited with status \(proc.terminationStatus)")
+ }
+ }
}
+ try process.run()
} catch {
NSLog("CodeBurn: \(format.cliName.uppercased()) export failed: \(error)")
}
@@ -483,21 +486,18 @@ struct FooterBar: View {
/// thread right away so the UI redraws the next frame, then fetches a fresh rate in the
/// background. CLI config is persisted so other codeburn commands stay in sync.
private func applyCurrency(code: String) {
- store.currency = code
let symbol = CurrencyState.symbolForCode(code)
Task {
let cached = await FXRateCache.shared.cachedRate(for: code)
- await MainActor.run {
+ if let cached {
+ store.currency = code
CurrencyState.shared.apply(code: code, rate: cached, symbol: symbol)
}
let fresh = await FXRateCache.shared.rate(for: code)
- if let fresh, fresh != cached {
- await MainActor.run {
- CurrencyState.shared.apply(code: code, rate: fresh, symbol: symbol)
- }
- }
+ store.currency = code
+ CurrencyState.shared.apply(code: code, rate: fresh ?? cached, symbol: symbol)
}
CLICurrencyConfig.persist(code: code)
diff --git a/mac/Sources/CodeBurnMenubar/Views/PeriodSegmentedControl.swift b/mac/Sources/CodeBurnMenubar/Views/PeriodSegmentedControl.swift
index a636932..065e363 100644
--- a/mac/Sources/CodeBurnMenubar/Views/PeriodSegmentedControl.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/PeriodSegmentedControl.swift
@@ -7,7 +7,7 @@ struct PeriodSegmentedControl: View {
HStack(spacing: 1) {
ForEach(Period.allCases) { period in
Button {
- Task { await store.switchTo(period: period) }
+ store.switchTo(period: period)
} label: {
Text(period.rawValue)
.font(.system(size: 11, weight: .medium))
diff --git a/src/data/litellm-snapshot.json b/src/data/litellm-snapshot.json
index 2ec14bd..d3dde4e 100644
--- a/src/data/litellm-snapshot.json
+++ b/src/data/litellm-snapshot.json
@@ -1 +1 @@
-{"ai21.j2-mid-v1":[0.0000125,0.0000125,null,null],"ai21.j2-ultra-v1":[0.0000188,0.0000188,null,null],"ai21.jamba-1-5-large-v1:0":[0.000002,0.000008,null,null],"ai21.jamba-1-5-mini-v1:0":[2e-7,4e-7,null,null],"ai21.jamba-instruct-v1:0":[5e-7,7e-7,null,null],"us.writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"us.writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"apac.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"apac.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"eu.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"eu.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"us.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"us.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"amazon.nova-2-multimodal-embeddings-v1:0":[1.35e-7,0,null,null],"amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"amazon.rerank-v1:0":[0,0,null,null],"amazon.titan-embed-image-v1":[8e-7,0,null,null],"amazon.titan-embed-text-v1":[1e-7,0,null,null],"amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"us.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"eu.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-7-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"global.anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-mythos-preview":[0,0,null,null],"global.anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-v1":[0.000008,0.000024,null,null],"anthropic.claude-v2:1":[0.000008,0.000024,null,null],"apac.amazon.nova-lite-v1:0":[6.3e-8,2.52e-7,null,null],"apac.amazon.nova-micro-v1:0":[3.7e-8,1.48e-7,null,null],"apac.amazon.nova-pro-v1:0":[8.4e-7,0.00000336,null,null],"apac.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"apac.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"apac.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"au.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"babbage-002":[4e-7,4e-7,null,null],"chatdolphin":[5e-7,5e-7,null,null],"chatgpt-4o-latest":[0.000005,0.000015,null,null],"gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"claude-haiku-4-5-20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"claude-3-7-sonnet-20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-haiku-20240307":[2.5e-7,0.00000125,3e-7,3e-8],"claude-3-opus-20240229":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-opus-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-sonnet-20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1-20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-5-20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6-20260205":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7-20260416":[0.000005,0.000025,0.00000625,5e-7],"claude-sonnet-4-20250514":[0.000003,0.000015,0.00000375,3e-7],"codex-mini-latest":[0.0000015,0.000006,null,3.75e-7],"cohere.command-light-text-v14":[3e-7,6e-7,null,null],"cohere.command-r-plus-v1:0":[0.000003,0.000015,null,null],"cohere.command-r-v1:0":[5e-7,0.0000015,null,null],"cohere.command-text-v14":[0.0000015,0.000002,null,null],"cohere.embed-english-v3":[1e-7,0,null,null],"cohere.embed-multilingual-v3":[1e-7,0,null,null],"cohere.embed-v4:0":[1.2e-7,0,null,null],"cohere.rerank-v3-5:0":[0,0,null,null],"command":[0.000001,0.000002,null,null],"command-a-03-2025":[0.0000025,0.00001,null,null],"command-light":[3e-7,6e-7,null,null],"command-nightly":[0.000001,0.000002,null,null],"command-r":[1.5e-7,6e-7,null,null],"command-r-08-2024":[1.5e-7,6e-7,null,null],"command-r-plus":[0.0000025,0.00001,null,null],"command-r-plus-08-2024":[0.0000025,0.00001,null,null],"command-r7b-12-2024":[1.5e-7,3.75e-8,null,null],"computer-use-preview":[0.000003,0.000012,null,null],"deepseek-chat":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"davinci-002":[0.000002,0.000002,null,null],"deepseek.v3-v1:0":[5.8e-7,0.00000168,null,null],"deepseek.v3.2":[6.2e-7,0.00000185,null,null],"dolphin":[5e-7,5e-7,null,null],"deepseek-v3-2-251201":[0,0,null,null],"glm-4-7-251222":[0,0,null,null],"kimi-k2-thinking-251104":[0,0,null,null],"doubao-embedding":[0,0,null,null],"doubao-embedding-large":[0,0,null,null],"doubao-embedding-large-text-240915":[0,0,null,null],"doubao-embedding-large-text-250515":[0,0,null,null],"doubao-embedding-text-240715":[0,0,null,null],"embed-english-light-v2.0":[1e-7,0,null,null],"embed-english-light-v3.0":[1e-7,0,null,null],"embed-english-v2.0":[1e-7,0,null,null],"embed-english-v3.0":[1e-7,0,null,null],"embed-multilingual-v2.0":[1e-7,0,null,null],"embed-multilingual-v3.0":[1e-7,0,null,null],"embed-multilingual-light-v3.0":[0.0001,0,null,null],"eu.amazon.nova-lite-v1:0":[7.8e-8,3.12e-7,null,null],"eu.amazon.nova-micro-v1:0":[4.6e-8,1.84e-7,null,null],"eu.amazon.nova-pro-v1:0":[0.00000105,0.0000042,null,null],"eu.anthropic.claude-3-5-haiku-20241022-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.meta.llama3-2-1b-instruct-v1:0":[1.3e-7,1.3e-7,null,null],"eu.meta.llama3-2-3b-instruct-v1:0":[1.9e-7,1.9e-7,null,null],"eu.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"fireworks-ai-4.1b-to-16b":[2e-7,2e-7,null,null],"fireworks-ai-56b-to-176b":[0.0000012,0.0000012,null,null],"fireworks-ai-above-16b":[9e-7,9e-7,null,null],"fireworks-ai-default":[0,0,null,null],"fireworks-ai-embedding-150m-to-350m":[1.6e-8,0,null,null],"fireworks-ai-embedding-up-to-150m":[8e-9,0,null,null],"fireworks-ai-moe-up-to-56b":[5e-7,5e-7,null,null],"fireworks-ai-up-to-4b":[2e-7,2e-7,null,null],"ft:babbage-002":[0.0000016,0.0000016,null,null],"ft:davinci-002":[0.000012,0.000012,null,null],"ft:gpt-3.5-turbo":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0125":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0613":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-1106":[0.000003,0.000006,null,null],"ft:gpt-4-0613":[0.00003,0.00006,null,null],"ft:gpt-4o-2024-08-06":[0.00000375,0.000015,null,0.000001875],"ft:gpt-4o-2024-11-20":[0.00000375,0.000015,0.000001875,null],"ft:gpt-4o-mini-2024-07-18":[3e-7,0.0000012,null,1.5e-7],"ft:gpt-4.1-2025-04-14":[0.000003,0.000012,null,7.5e-7],"ft:gpt-4.1-mini-2025-04-14":[8e-7,0.0000032,null,2e-7],"ft:gpt-4.1-nano-2025-04-14":[2e-7,8e-7,null,5e-8],"ft:o4-mini-2025-04-16":[0.000004,0.000016,null,0.000001],"gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini-2.0-flash-001":[1.5e-7,6e-7,null,3.75e-8],"gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini-embedding-001":[1.5e-7,0,null,null],"gemini-embedding-2-preview":[2e-7,0,null,null],"gemini-embedding-2":[2e-7,0,null,null],"gemini-flash-experimental":[0,0,null,null],"gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"google.gemma-3-12b-it":[9e-8,2.9e-7,null,null],"google.gemma-3-27b-it":[2.3e-7,3.8e-7,null,null],"google.gemma-3-4b-it":[4e-8,8e-8,null,null],"global.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"global.amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"gpt-3.5-turbo":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-1106":[0.000001,0.000002,null,null],"gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-4":[0.00003,0.00006,null,null],"gpt-4-0125-preview":[0.00001,0.00003,null,null],"gpt-4-0314":[0.00003,0.00006,null,null],"gpt-4-0613":[0.00003,0.00006,null,null],"gpt-4-1106-preview":[0.00001,0.00003,null,null],"gpt-4-turbo":[0.00001,0.00003,null,null],"gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"gpt-4-turbo-preview":[0.00001,0.00003,null,null],"gpt-4.1":[0.000002,0.000008,null,5e-7],"gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"gpt-4o":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"gpt-4o-audio-preview":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2025-06-03":[0.0000025,0.00001,null,null],"gpt-audio":[0.0000025,0.00001,null,null],"gpt-audio-1.5":[0.0000025,0.00001,null,null],"gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"gpt-audio-mini":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-12-15":[6e-7,0.0000024,null,null],"gpt-4o-mini":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-2024-07-18":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-audio-preview":[1.5e-7,6e-7,null,null],"gpt-4o-mini-audio-preview-2024-12-17":[1.5e-7,6e-7,null,null],"gpt-4o-mini-realtime-preview":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-search-preview":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-search-preview-2025-03-11":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"gpt-4o-realtime-preview":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2025-06-03":[0.000005,0.00002,null,0.0000025],"gpt-4o-search-preview":[0.0000025,0.00001,null,0.00000125],"gpt-4o-search-preview-2025-03-11":[0.0000025,0.00001,null,0.00000125],"gpt-4o-transcribe":[0.0000025,0.00001,null,null],"gpt-image-1.5":[0.000005,0.00001,null,0.00000125],"gpt-image-1.5-2025-12-16":[0.000005,0.00001,null,0.00000125],"gpt-5":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-pro":[0.000021,0.000168,null,null],"gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"gpt-5.5":[0.000005,0.00003,null,5e-7],"gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"gpt-5.5-pro":[0.00006,0.00036,null,0.000006],"gpt-5.5-pro-2026-04-23":[0.00006,0.00036,null,0.000006],"gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"gpt-5-pro":[0.000015,0.00012,null,null],"gpt-5-pro-2025-10-06":[0.000015,0.00012,null,null],"gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-nano":[5e-8,4e-7,null,5e-9],"gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"gpt-realtime":[0.000004,0.000016,null,4e-7],"gpt-realtime-1.5":[0.000004,0.000016,null,4e-7],"gpt-realtime-mini":[6e-7,0.0000024,null,null],"gpt-realtime-2025-08-28":[0.000004,0.000016,null,4e-7],"j2-light":[0.000003,0.000003,null,null],"j2-mid":[0.00001,0.00001,null,null],"j2-ultra":[0.000015,0.000015,null,null],"jamba-1.5":[2e-7,4e-7,null,null],"jamba-1.5-large":[0.000002,0.000008,null,null],"jamba-1.5-large@001":[0.000002,0.000008,null,null],"jamba-1.5-mini":[2e-7,4e-7,null,null],"jamba-1.5-mini@001":[2e-7,4e-7,null,null],"jamba-large-1.6":[0.000002,0.000008,null,null],"jamba-large-1.7":[0.000002,0.000008,null,null],"jamba-mini-1.6":[2e-7,4e-7,null,null],"jamba-mini-1.7":[2e-7,4e-7,null,null],"jina-reranker-v2-base-multilingual":[1.8e-8,1.8e-8,null,null],"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"jp.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"meta.llama2-13b-chat-v1":[7.5e-7,0.000001,null,null],"meta.llama2-70b-chat-v1":[0.00000195,0.00000256,null,null],"meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"minimax.minimax-m2":[3e-7,0.0000012,null,null],"minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"mistral.devstral-2-123b":[4e-7,0.000002,null,null],"mistral.magistral-small-2509":[5e-7,0.0000015,null,null],"mistral.ministral-3-14b-instruct":[2e-7,2e-7,null,null],"mistral.ministral-3-3b-instruct":[1e-7,1e-7,null,null],"mistral.ministral-3-8b-instruct":[1.5e-7,1.5e-7,null,null],"mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"mistral.mistral-large-2407-v1:0":[0.000003,0.000009,null,null],"mistral.mistral-large-3-675b-instruct":[5e-7,0.0000015,null,null],"mistral.mistral-small-2402-v1:0":[0.000001,0.000003,null,null],"mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"mistral.voxtral-mini-3b-2507":[4e-8,4e-8,null,null],"mistral.voxtral-small-24b-2507":[1e-7,3e-7,null,null],"moonshot.kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"multimodalembedding":[8e-7,0,null,null],"multimodalembedding@001":[8e-7,0,null,null],"nvidia.nemotron-nano-12b-v2":[2e-7,6e-7,null,null],"nvidia.nemotron-nano-9b-v2":[6e-8,2.3e-7,null,null],"nvidia.nemotron-nano-3-30b":[6e-8,2.4e-7,null,null],"nvidia.nemotron-super-3-120b":[1.5e-7,6.5e-7,null,null],"o1":[0.000015,0.00006,null,0.0000075],"o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"o1-pro":[0.00015,0.0006,null,null],"o1-pro-2025-03-19":[0.00015,0.0006,null,null],"o3":[0.000002,0.000008,null,5e-7],"o3-2025-04-16":[0.000002,0.000008,null,5e-7],"o3-deep-research":[0.00001,0.00004,null,0.0000025],"o3-deep-research-2025-06-26":[0.00001,0.00004,null,0.0000025],"o3-mini":[0.0000011,0.0000044,null,5.5e-7],"o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"o3-pro":[0.00002,0.00008,null,null],"o3-pro-2025-06-10":[0.00002,0.00008,null,null],"o4-mini":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-deep-research":[0.000002,0.000008,null,5e-7],"o4-mini-deep-research-2025-06-26":[0.000002,0.000008,null,5e-7],"omni-moderation-2024-09-26":[0,0,null,null],"omni-moderation-latest":[0,0,null,null],"openai.gpt-oss-120b-1:0":[1.5e-7,6e-7,null,null],"openai.gpt-oss-20b-1:0":[7e-8,3e-7,null,null],"openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-safeguard-20b":[7e-8,2e-7,null,null],"qwen.qwen3-coder-480b-a35b-v1:0":[2.2e-7,0.0000018,null,null],"qwen.qwen3-235b-a22b-2507-v1:0":[2.2e-7,8.8e-7,null,null],"qwen.qwen3-coder-30b-a3b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-32b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-next-80b-a3b":[1.5e-7,0.0000012,null,null],"qwen.qwen3-vl-235b-a22b":[5.3e-7,0.00000266,null,null],"qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"rerank-english-v2.0":[0,0,null,null],"rerank-english-v3.0":[0,0,null,null],"rerank-multilingual-v2.0":[0,0,null,null],"rerank-multilingual-v3.0":[0,0,null,null],"rerank-v3.5":[0,0,null,null],"text-embedding-004":[1e-7,0,null,null],"text-embedding-005":[1e-7,0,null,null],"text-embedding-3-large":[1.3e-7,0,null,null],"text-embedding-3-small":[2e-8,0,null,null],"text-embedding-ada-002":[1e-7,0,null,null],"text-embedding-ada-002-v2":[1e-7,0,null,null],"text-embedding-large-exp-03-07":[1e-7,0,null,null],"text-embedding-preview-0409":[6.25e-9,0,null,null],"text-moderation-007":[0,0,null,null],"text-moderation-latest":[0,0,null,null],"text-moderation-stable":[0,0,null,null],"text-multilingual-embedding-002":[1e-7,0,null,null],"text-unicorn":[0.00001,0.000028,null,null],"text-unicorn@001":[0.00001,0.000028,null,null],"together-ai-21.1b-41b":[8e-7,8e-7,null,null],"together-ai-4.1b-8b":[2e-7,2e-7,null,null],"together-ai-41.1b-80b":[9e-7,9e-7,null,null],"together-ai-8.1b-21b":[3e-7,3e-7,null,null],"together-ai-81.1b-110b":[0.0000018,0.0000018,null,null],"together-ai-embedding-151m-to-350m":[1.6e-8,0,null,null],"together-ai-embedding-up-to-150m":[8e-9,0,null,null],"together-ai-up-to-4b":[1e-7,1e-7,null,null],"us.amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"us.amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"us.amazon.nova-premier-v1:0":[0.0000025,0.0000125,null,null],"us.amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"us.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"us.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-opus-4-5-20251101-v1:0":[0.0000055,0.0000275,0.000006875,5.5e-7],"global.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"eu.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.deepseek.r1-v1:0":[0.00000135,0.0000054,null,null],"us.deepseek.v3.2":[6.2e-7,0.00000185,null,null],"eu.deepseek.v3.2":[7.4e-7,0.00000222,null,null],"us.meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"us.meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"us.meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"us.meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"us.meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"us.meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"us.meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"us.meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"us.meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"us.meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"us.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"zai.glm-4.7":[6e-7,0.0000022,null,null],"zai.glm-4.7-flash":[7e-8,4e-7,null,null],"zai.glm-5":[0.000001,0.0000032,null,null],"gpt-4o-mini-tts-2025-03-20":[0.0000025,0.00001,null,null],"gpt-4o-mini-tts-2025-12-15":[0.0000025,0.00001,null,null],"gpt-4o-mini-transcribe-2025-03-20":[0.00000125,0.000005,null,null],"gpt-4o-mini-transcribe-2025-12-15":[0.00000125,0.000005,null,null],"gpt-5-search-api":[0.00000125,0.00001,null,1.25e-7],"gpt-5-search-api-2025-10-14":[0.00000125,0.00001,null,1.25e-7],"gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"gpt-realtime-mini-2025-12-15":[6e-7,0.0000024,null,6e-8],"gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini-flash-latest":[3e-7,0.0000025,null,3e-8],"gemini-flash-lite-latest":[1e-7,4e-7,null,1e-8],"gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"gemini-exp-1206":[3e-7,0.0000025,null,3e-8],"anyscale/HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"anyscale/codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"anyscale/meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"anyscale/meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"anyscale/meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"azure/ada":[1e-7,0,null,null],"ada":[1e-7,0,null,null],"azure/codex-mini":[0.0000015,0.000006,null,3.75e-7],"codex-mini":[0.0000015,0.000006,null,3.75e-7],"azure/command-r-plus":[0.000003,0.000015,null,null],"azure_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"azure_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"azure_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"azure_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"azure/computer-use-preview":[0.000003,0.000012,null,null],"azure_ai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"gpt-oss-120b":[1.5e-7,6e-7,null,null],"azure_ai/model_router":[1.4e-7,0,null,null],"model_router":[1.4e-7,0,null,null],"azure/eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"azure/global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo":[5e-7,0.0000015,null,null],"gpt-35-turbo":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-1106":[0.000001,0.000002,null,null],"gpt-35-turbo-1106":[0.000001,0.000002,null,null],"azure/gpt-35-turbo-16k":[0.000003,0.000004,null,null],"gpt-35-turbo-16k":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-4":[0.00003,0.00006,null,null],"azure/gpt-4-0125-preview":[0.00001,0.00003,null,null],"azure/gpt-4-0613":[0.00003,0.00006,null,null],"azure/gpt-4-1106-preview":[0.00001,0.00003,null,null],"azure/gpt-4-32k":[0.00006,0.00012,null,null],"gpt-4-32k":[0.00006,0.00012,null,null],"azure/gpt-4-32k-0613":[0.00006,0.00012,null,null],"gpt-4-32k-0613":[0.00006,0.00012,null,null],"azure/gpt-4-turbo":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"azure/gpt-4.1":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"azure/gpt-4o":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"azure/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-11-20":[0.00000275,0.000011,null,0.00000125],"azure/gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"azure/gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"azure/gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"azure/gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"azure/gpt-realtime-2025-08-28":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"azure/gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"azure/gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"azure/gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-transcribe":[0.0000025,0.00001,null,null],"azure/gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"azure/gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-nano":[5e-8,4e-7,null,5e-9],"azure/gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"azure/gpt-5-pro":[0.000015,0.00012,null,null],"azure/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-pro":[0.000021,0.000168,null,null],"azure/gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"azure/gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-pro":[0.00006,0.00036,null,0.000006],"azure/gpt-5.5-pro-2026-04-23":[0.00006,0.00036,null,0.000006],"azure/gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"azure/gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"azure/mistral-large-2402":[0.000008,0.000024,null,null],"mistral-large-2402":[0.000008,0.000024,null,null],"azure/mistral-large-latest":[0.000008,0.000024,null,null],"mistral-large-latest":[0.000008,0.000024,null,null],"azure/o1":[0.000015,0.00006,null,0.0000075],"azure/o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"azure/o1-mini":[0.00000121,0.00000484,null,6.05e-7],"o1-mini":[0.00000121,0.00000484,null,6.05e-7],"azure/o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"azure/o1-preview":[0.000015,0.00006,null,0.0000075],"o1-preview":[0.000015,0.00006,null,0.0000075],"azure/o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"azure/o3":[0.000002,0.000008,null,5e-7],"azure/o3-2025-04-16":[0.000002,0.000008,null,5e-7],"azure/o3-deep-research":[0.00001,0.00004,null,0.0000025],"azure/o3-mini":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-pro":[0.00002,0.00008,null,null],"azure/o3-pro-2025-06-10":[0.00002,0.00008,null,null],"azure/o4-mini":[0.0000011,0.0000044,null,2.75e-7],"azure/o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"azure/text-embedding-3-large":[1.3e-7,0,null,null],"azure/text-embedding-3-small":[2e-8,0,null,null],"azure/text-embedding-ada-002":[1e-7,0,null,null],"azure/us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"azure/us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"azure/us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"azure/us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"azure/us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"azure_ai/Cohere-embed-v3-english":[1e-7,0,null,null],"Cohere-embed-v3-english":[1e-7,0,null,null],"azure_ai/Cohere-embed-v3-multilingual":[1e-7,0,null,null],"Cohere-embed-v3-multilingual":[1e-7,0,null,null],"azure_ai/Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"azure_ai/Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"azure_ai/Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"azure_ai/Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"azure_ai/Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"azure_ai/Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"azure_ai/Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"azure_ai/Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"azure_ai/Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"azure_ai/Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-4":[1.25e-7,5e-7,null,null],"Phi-4":[1.25e-7,5e-7,null,null],"azure_ai/Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"azure_ai/Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-reasoning":[1.25e-7,5e-7,null,null],"Phi-4-reasoning":[1.25e-7,5e-7,null,null],"azure_ai/MAI-DS-R1":[0.00000135,0.0000054,null,null],"MAI-DS-R1":[0.00000135,0.0000054,null,null],"azure_ai/cohere-rerank-v3-english":[0,0,null,null],"cohere-rerank-v3-english":[0,0,null,null],"azure_ai/cohere-rerank-v3-multilingual":[0,0,null,null],"cohere-rerank-v3-multilingual":[0,0,null,null],"azure_ai/cohere-rerank-v3.5":[0,0,null,null],"cohere-rerank-v3.5":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-pro":[0,0,null,null],"cohere-rerank-v4.0-pro":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-fast":[0,0,null,null],"cohere-rerank-v4.0-fast":[0,0,null,null],"azure_ai/deepseek-v3.2":[5.8e-7,0.00000168,null,null],"deepseek-v3.2":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-r1":[0.00000135,0.0000054,null,null],"deepseek-r1":[0.00000135,0.0000054,null,null],"azure_ai/deepseek-v3":[0.00000114,0.00000456,null,null],"deepseek-v3":[0.00000114,0.00000456,null,null],"azure_ai/deepseek-v3-0324":[0.00000114,0.00000456,null,null],"deepseek-v3-0324":[0.00000114,0.00000456,null,null],"azure_ai/embed-v-4-0":[1.2e-7,0,null,null],"embed-v-4-0":[1.2e-7,0,null,null],"azure_ai/global/grok-3":[0.000003,0.000015,null,null],"global/grok-3":[0.000003,0.000015,null,null],"azure_ai/global/grok-3-mini":[2.5e-7,0.00000127,null,null],"global/grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-3":[0.000003,0.000015,null,null],"grok-3":[0.000003,0.000015,null,null],"azure_ai/grok-3-mini":[2.5e-7,0.00000127,null,null],"grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-4":[0.000003,0.000015,null,null],"grok-4":[0.000003,0.000015,null,null],"azure_ai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-code-fast-1":[2e-7,0.0000015,null,null],"grok-code-fast-1":[2e-7,0.0000015,null,null],"azure_ai/jais-30b-chat":[0.0032,0.00971,null,null],"jais-30b-chat":[0.0032,0.00971,null,null],"azure_ai/jamba-instruct":[5e-7,7e-7,null,null],"jamba-instruct":[5e-7,7e-7,null,null],"azure_ai/kimi-k2.5":[6e-7,0.000003,null,null],"kimi-k2.5":[6e-7,0.000003,null,null],"azure_ai/ministral-3b":[4e-8,4e-8,null,null],"ministral-3b":[4e-8,4e-8,null,null],"azure_ai/mistral-large":[0.000004,0.000012,null,null],"mistral-large":[0.000004,0.000012,null,null],"azure_ai/mistral-large-2407":[0.000002,0.000006,null,null],"mistral-large-2407":[0.000002,0.000006,null,null],"azure_ai/mistral-large-latest":[0.000002,0.000006,null,null],"azure_ai/mistral-large-3":[5e-7,0.0000015,null,null],"mistral-large-3":[5e-7,0.0000015,null,null],"azure_ai/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral-medium-2505":[4e-7,0.000002,null,null],"azure_ai/mistral-nemo":[1.5e-7,1.5e-7,null,null],"mistral-nemo":[1.5e-7,1.5e-7,null,null],"azure_ai/mistral-small":[0.000001,0.000003,null,null],"mistral-small":[0.000001,0.000003,null,null],"azure_ai/mistral-small-2503":[1e-7,3e-7,null,null],"mistral-small-2503":[1e-7,3e-7,null,null],"bedrock/ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"bedrock/ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/moonshotai.kimi-k2.5":[6e-7,0.00000303,null,null],"bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"bedrock/ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"bedrock/ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"bedrock/eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"bedrock/eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"bedrock/eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"bedrock/eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"bedrock/eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"bedrock/eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"bedrock/sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"cerebras/llama-3.3-70b":[8.5e-7,0.0000012,null,null],"llama-3.3-70b":[8.5e-7,0.0000012,null,null],"cerebras/llama3.1-70b":[6e-7,6e-7,null,null],"llama3.1-70b":[6e-7,6e-7,null,null],"cerebras/llama3.1-8b":[1e-7,1e-7,null,null],"llama3.1-8b":[1e-7,1e-7,null,null],"cerebras/gpt-oss-120b":[3.5e-7,7.5e-7,null,null],"cerebras/qwen-3-32b":[4e-7,8e-7,null,null],"qwen-3-32b":[4e-7,8e-7,null,null],"cerebras/zai-glm-4.6":[0.00000225,0.00000275,null,null],"zai-glm-4.6":[0.00000225,0.00000275,null,null],"cerebras/zai-glm-4.7":[0.00000225,0.00000275,null,null],"zai-glm-4.7":[0.00000225,0.00000275,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"cloudflare/@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"cloudflare/@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"codestral/codestral-2405":[0,0,null,null],"codestral-2405":[0,0,null,null],"codestral/codestral-latest":[0,0,null,null],"codestral-latest":[0,0,null,null],"cohere/embed-v4.0":[1.2e-7,0,null,null],"embed-v4.0":[1.2e-7,0,null,null],"dashscope/qwen-coder":[3e-7,0.0000015,null,null],"qwen-coder":[3e-7,0.0000015,null,null],"dashscope/qwen-max":[0.0000016,0.0000064,null,null],"qwen-max":[0.0000016,0.0000064,null,null],"dashscope/qwen-plus":[4e-7,0.0000012,null,null],"qwen-plus":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"dashscope/qwen-turbo":[5e-8,2e-7,null,null],"qwen-turbo":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-latest":[5e-8,2e-7,null,null],"qwen-turbo-latest":[5e-8,2e-7,null,null],"dashscope/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"dashscope/qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"dashscope/qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"dashscope/qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"dashscope/qwq-plus":[8e-7,0.0000024,null,null],"qwq-plus":[8e-7,0.0000024,null,null],"databricks/databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks/databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks/databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks/databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks/databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks/databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks/databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks/databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks/databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks/databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks/databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks/databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks/databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks/databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks/databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks/databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"deepinfra/Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"deepinfra/Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"deepinfra/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"deepinfra/Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"deepinfra/Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"deepinfra/Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"deepinfra/Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"deepinfra/Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"deepinfra/Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"deepinfra/Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"deepinfra/allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"deepinfra/anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"deepinfra/anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"deepinfra/anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"deepinfra/deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"deepinfra/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"deepinfra/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"deepinfra/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"google/gemma-3-12b-it":[5e-8,1e-7,null,null],"deepinfra/google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"deepinfra/google/gemma-3-4b-it":[4e-8,8e-8,null,null],"google/gemma-3-4b-it":[4e-8,8e-8,null,null],"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"deepinfra/meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"deepinfra/meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"deepinfra/meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3-8B-Instruct":[3e-8,6e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"deepinfra/microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"deepinfra/microsoft/phi-4":[7e-8,1.4e-7,null,null],"microsoft/phi-4":[7e-8,1.4e-7,null,null],"deepinfra/mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1":[4e-7,4e-7,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"deepinfra/openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"deepinfra/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"deepinfra/zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"deepseek/deepseek-chat":[2.8e-7,4.2e-7,0,2.8e-8],"deepseek/deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"deepseek/deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek/deepseek-v3":[2.7e-7,0.0000011,0,7e-8],"deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"fireworks_ai/WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"fireworks_ai/glm-4p7":[6e-7,0.0000022,null,3e-7],"glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/kimi-k2p5":[6e-7,0.000003,null,1e-7],"kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"fireworks_ai/nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-base":[8e-9,0,null,null],"thenlper/gte-base":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-large":[1.6e-8,0,null,null],"thenlper/gte-large":[1.6e-8,0,null,null],"friendliai/meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"friendliai/meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"gemini/gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"vertex_ai/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"vertex_ai/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"vertex_ai/gemini-embedding-2-preview":[1.5e-7,0,null,null],"vertex_ai/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-embedding-001":[1.5e-7,0,null,null],"gemini/gemini-embedding-2-preview":[2e-7,0,null,null],"gemini/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-1.5-flash":[7.5e-8,0,null,null],"gemini-1.5-flash":[7.5e-8,0,null,null],"gemini/gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-001":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini/gemini-3.1-flash-image-preview":[2.5e-7,0.0000015,null,null],"gemini/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini/gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-latest":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-lite-latest":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"gemini/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"gemini/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-exp-1114":[0,0,null,null],"gemini-exp-1114":[0,0,null,null],"gemini/gemini-exp-1206":[0,0,null,null],"gemini/gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini/gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini/gemma-3-27b-it":[0,0,null,null],"gemma-3-27b-it":[0,0,null,null],"gemini/learnlm-1.5-pro-experimental":[0,0,null,null],"learnlm-1.5-pro-experimental":[0,0,null,null],"gemini/lyria-3-clip-preview":[0,0,null,null],"lyria-3-clip-preview":[0,0,null,null],"gemini/lyria-3-pro-preview":[0,0,null,null],"lyria-3-pro-preview":[0,0,null,null],"gigachat/GigaChat-2-Lite":[0,0,null,null],"GigaChat-2-Lite":[0,0,null,null],"gigachat/GigaChat-2-Max":[0,0,null,null],"GigaChat-2-Max":[0,0,null,null],"gigachat/GigaChat-2-Pro":[0,0,null,null],"GigaChat-2-Pro":[0,0,null,null],"gigachat/Embeddings":[0,0,null,null],"Embeddings":[0,0,null,null],"gigachat/Embeddings-2":[0,0,null,null],"Embeddings-2":[0,0,null,null],"gigachat/EmbeddingsGigaR":[0,0,null,null],"EmbeddingsGigaR":[0,0,null,null],"gmi/anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"gmi/anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"gmi/anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"gmi/anthropic/claude-opus-4":[0.000015,0.000075,null,null],"anthropic/claude-opus-4":[0.000015,0.000075,null,null],"gmi/openai/gpt-5.2":[0.00000175,0.000014,null,null],"openai/gpt-5.2":[0.00000175,0.000014,null,null],"gmi/openai/gpt-5.1":[0.00000125,0.00001,null,null],"openai/gpt-5.1":[0.00000125,0.00001,null,null],"gmi/openai/gpt-5":[0.00000125,0.00001,null,null],"openai/gpt-5":[0.00000125,0.00001,null,null],"gmi/openai/gpt-4o":[0.0000025,0.00001,null,null],"openai/gpt-4o":[0.0000025,0.00001,null,null],"gmi/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3-0324":[2.8e-7,8.8e-7,null,null],"gmi/google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"gmi/google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"gmi/moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"gmi/MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"baseten/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"baseten/nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"baseten/zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"baseten/zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"baseten/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"baseten/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"baseten/moonshotai/Kimi-K2-Thinking":[6e-7,0.0000025,null,null],"baseten/moonshotai/Kimi-K2-Instruct-0905":[6e-7,0.0000025,null,null],"baseten/openai/gpt-oss-120b":[1e-7,5e-7,null,null],"baseten/deepseek-ai/DeepSeek-V3.1":[5e-7,0.0000015,null,null],"baseten/deepseek-ai/DeepSeek-V3-0324":[7.7e-7,7.7e-7,null,null],"gmi/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"gmi/zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"gradient_ai/anthropic-claude-3-opus":[0.000015,0.000075,null,null],"anthropic-claude-3-opus":[0.000015,0.000075,null,null],"gradient_ai/anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"gradient_ai/anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"gradient_ai/anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"gradient_ai/deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"gradient_ai/llama3-8b-instruct":[2e-7,2e-7,null,null],"llama3-8b-instruct":[2e-7,2e-7,null,null],"gradient_ai/llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"gradient_ai/mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"gradient_ai/openai-o3":[0.000002,0.000008,null,null],"openai-o3":[0.000002,0.000008,null,null],"gradient_ai/openai-o3-mini":[0.0000011,0.0000044,null,null],"openai-o3-mini":[0.0000011,0.0000044,null,null],"lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"lemonade/gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"lemonade/gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"lemonade/Gemma-3-4b-it-GGUF":[0,0,null,null],"Gemma-3-4b-it-GGUF":[0,0,null,null],"lemonade/Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"amazon-nova/nova-micro-v1":[3.5e-8,1.4e-7,null,null],"nova-micro-v1":[3.5e-8,1.4e-7,null,null],"amazon-nova/nova-lite-v1":[6e-8,2.4e-7,null,null],"nova-lite-v1":[6e-8,2.4e-7,null,null],"amazon-nova/nova-premier-v1":[0.0000025,0.0000125,null,null],"nova-premier-v1":[0.0000025,0.0000125,null,null],"amazon-nova/nova-pro-v1":[8e-7,0.0000032,null,null],"nova-pro-v1":[8e-7,0.0000032,null,null],"groq/llama-3.1-8b-instant":[5e-8,8e-8,null,null],"llama-3.1-8b-instant":[5e-8,8e-8,null,null],"groq/llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"groq/gemma-7b-it":[5e-8,8e-8,null,null],"gemma-7b-it":[5e-8,8e-8,null,null],"groq/meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"groq/meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"groq/meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"groq/moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"groq/openai/gpt-oss-120b":[1.5e-7,6e-7,null,7.5e-8],"groq/openai/gpt-oss-20b":[7.5e-8,3e-7,null,3.75e-8],"groq/openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"groq/qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/QwQ-32B":[2e-7,2e-7,null,null],"hyperbolic/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen3-235B-A22B":[0.000002,0.000002,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1":[4e-7,4e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1-0528":[2.5e-7,2.5e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3":[2e-7,2e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3-0324":[4e-7,4e-7,null,null],"hyperbolic/meta-llama/Llama-3.2-3B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Llama-3.3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/moonshotai/Kimi-K2-Instruct":[0.000002,0.000002,null,null],"lambda_ai/deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-0528":[2e-7,6e-7,null,null],"deepseek-r1-0528":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-671b":[8e-7,8e-7,null,null],"deepseek-r1-671b":[8e-7,8e-7,null,null],"lambda_ai/deepseek-v3-0324":[2e-7,6e-7,null,null],"lambda_ai/hermes3-405b":[8e-7,8e-7,null,null],"hermes3-405b":[8e-7,8e-7,null,null],"lambda_ai/hermes3-70b":[1.2e-7,3e-7,null,null],"hermes3-70b":[1.2e-7,3e-7,null,null],"lambda_ai/hermes3-8b":[2.5e-8,4e-8,null,null],"hermes3-8b":[2.5e-8,4e-8,null,null],"lambda_ai/lfm-40b":[1e-7,2e-7,null,null],"lfm-40b":[1e-7,2e-7,null,null],"lambda_ai/lfm-7b":[2.5e-8,4e-8,null,null],"lfm-7b":[2.5e-8,4e-8,null,null],"lambda_ai/llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"lambda_ai/llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"lambda_ai/llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"lambda_ai/llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"lambda_ai/llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"lambda_ai/qwen3-32b-fp8":[5e-8,1e-7,null,null],"qwen3-32b-fp8":[5e-8,1e-7,null,null],"minimax/MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"mistral/codestral-2405":[0.000001,0.000003,null,null],"mistral/codestral-2508":[3e-7,9e-7,null,null],"codestral-2508":[3e-7,9e-7,null,null],"mistral/codestral-latest":[0.000001,0.000003,null,null],"mistral/codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"mistral/devstral-medium-2507":[4e-7,0.000002,null,null],"devstral-medium-2507":[4e-7,0.000002,null,null],"mistral/devstral-small-2505":[1e-7,3e-7,null,null],"devstral-small-2505":[1e-7,3e-7,null,null],"mistral/devstral-small-2507":[1e-7,3e-7,null,null],"devstral-small-2507":[1e-7,3e-7,null,null],"mistral/devstral-small-latest":[1e-7,3e-7,null,null],"devstral-small-latest":[1e-7,3e-7,null,null],"mistral/labs-devstral-small-2512":[1e-7,3e-7,null,null],"labs-devstral-small-2512":[1e-7,3e-7,null,null],"mistral/devstral-latest":[4e-7,0.000002,null,null],"devstral-latest":[4e-7,0.000002,null,null],"mistral/devstral-medium-latest":[4e-7,0.000002,null,null],"devstral-medium-latest":[4e-7,0.000002,null,null],"mistral/devstral-2512":[4e-7,0.000002,null,null],"devstral-2512":[4e-7,0.000002,null,null],"mistral/magistral-medium-2506":[0.000002,0.000005,null,null],"magistral-medium-2506":[0.000002,0.000005,null,null],"mistral/magistral-medium-2509":[0.000002,0.000005,null,null],"magistral-medium-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-latest":[0.000002,0.000005,null,null],"magistral-medium-latest":[0.000002,0.000005,null,null],"mistral/magistral-small-2506":[5e-7,0.0000015,null,null],"magistral-small-2506":[5e-7,0.0000015,null,null],"mistral/magistral-small-latest":[5e-7,0.0000015,null,null],"magistral-small-latest":[5e-7,0.0000015,null,null],"mistral/magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"mistral/mistral-large-2402":[0.000004,0.000012,null,null],"mistral/mistral-large-2407":[0.000003,0.000009,null,null],"mistral/mistral-large-2411":[0.000002,0.000006,null,null],"mistral-large-2411":[0.000002,0.000006,null,null],"mistral/mistral-large-latest":[5e-7,0.0000015,null,null],"mistral/mistral-large-3":[5e-7,0.0000015,null,null],"mistral/mistral-large-2512":[5e-7,0.0000015,null,null],"mistral-large-2512":[5e-7,0.0000015,null,null],"mistral/mistral-medium":[0.0000027,0.0000081,null,null],"mistral-medium":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral/mistral-medium-latest":[4e-7,0.000002,null,null],"mistral-medium-latest":[4e-7,0.000002,null,null],"mistral/mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral/mistral-small":[1e-7,3e-7,null,null],"mistral/mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral/mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral/ministral-3-3b-2512":[1e-7,1e-7,null,null],"ministral-3-3b-2512":[1e-7,1e-7,null,null],"mistral/ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"mistral/ministral-3-14b-2512":[2e-7,2e-7,null,null],"ministral-3-14b-2512":[2e-7,2e-7,null,null],"mistral/mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral/open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-7b":[2.5e-7,2.5e-7,null,null],"open-mistral-7b":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-nemo":[3e-7,3e-7,null,null],"open-mistral-nemo":[3e-7,3e-7,null,null],"mistral/open-mistral-nemo-2407":[3e-7,3e-7,null,null],"open-mistral-nemo-2407":[3e-7,3e-7,null,null],"mistral/open-mixtral-8x22b":[0.000002,0.000006,null,null],"open-mixtral-8x22b":[0.000002,0.000006,null,null],"mistral/open-mixtral-8x7b":[7e-7,7e-7,null,null],"open-mixtral-8x7b":[7e-7,7e-7,null,null],"mistral/pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-large-2411":[0.000002,0.000006,null,null],"pixtral-large-2411":[0.000002,0.000006,null,null],"mistral/pixtral-large-latest":[0.000002,0.000006,null,null],"pixtral-large-latest":[0.000002,0.000006,null,null],"moonshot/kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"moonshot/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshot/kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"moonshot/kimi-latest":[0.000002,0.000005,null,1.5e-7],"kimi-latest":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"moonshot/kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"moonshot/kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"moonshot/moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-auto":[0.000002,0.000005,null,null],"moonshot-v1-auto":[0.000002,0.000005,null,null],"morph/morph-v3-fast":[8e-7,0.0000012,null,null],"morph-v3-fast":[8e-7,0.0000012,null,null],"morph/morph-v3-large":[9e-7,0.0000019,null,null],"morph-v3-large":[9e-7,0.0000019,null,null],"nscale/Qwen/QwQ-32B":[1.8e-7,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-32B-Instruct":[6e-8,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"nscale/Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[3.75e-7,3.75e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[1.5e-7,1.5e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"nscale/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct":[9e-8,2.9e-7,null,null],"nscale/mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"nebius/deepseek-ai/DeepSeek-R1":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-0528":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2.5e-7,7.5e-7,null,null],"nebius/deepseek-ai/DeepSeek-V3":[5e-7,0.0000015,null,null],"nebius/deepseek-ai/DeepSeek-V3-0324":[5e-7,0.0000015,null,null],"nebius/google/gemma-3-27b-it":[6e-8,2e-7,null,null],"nebius/meta-llama/Llama-3.3-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Llama-Guard-3-8B":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-8B-Instruct":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Meta-Llama-3.1-405B-Instruct":[0.000001,0.000003,null,null],"nebius/mistralai/Mistral-Nemo-Instruct-2407":[4e-8,1.2e-7,null,null],"nebius/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000003,null,null],"nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nebius/Qwen/Qwen3-235B-A22B":[2e-7,6e-7,null,null],"nebius/Qwen/Qwen3-32B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-30B-A3B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-14B":[8e-8,2.4e-7,null,null],"nebius/Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"nebius/Qwen/QwQ-32B":[1.5e-7,4.5e-7,null,null],"nebius/Qwen/Qwen2.5-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"nebius/Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"nebius/Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"nebius/BAAI/bge-en-icl":[1e-8,0,null,null],"BAAI/bge-en-icl":[1e-8,0,null,null],"nebius/BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"nebius/intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"oci/meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"oci/meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-3":[0.000003,0.000015,null,null],"xai.grok-3":[0.000003,0.000015,null,null],"oci/xai.grok-3-fast":[0.000005,0.000025,null,null],"xai.grok-3-fast":[0.000005,0.000025,null,null],"oci/xai.grok-3-mini":[3e-7,5e-7,null,null],"xai.grok-3-mini":[3e-7,5e-7,null,null],"oci/xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"oci/xai.grok-4":[0.000003,0.000015,null,null],"xai.grok-4":[0.000003,0.000015,null,null],"oci/cohere.command-latest":[0.00000156,0.00000156,null,null],"cohere.command-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"oci/cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"oci/cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"oci/meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-4-fast":[0.000005,0.000025,null,null],"xai.grok-4-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.1-fast":[0.000005,0.000025,null,null],"xai.grok-4.1-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.20":[0.000003,0.000015,null,null],"xai.grok-4.20":[0.000003,0.000015,null,null],"oci/xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"oci/xai.grok-code-fast-1":[0.000005,0.000025,null,null],"xai.grok-code-fast-1":[0.000005,0.000025,null,null],"oci/google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"oci/google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"oci/google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"oci/cohere.embed-english-v3.0":[1e-7,0,null,null],"cohere.embed-english-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-v4.0":[1.2e-7,0,null,null],"cohere.embed-v4.0":[1.2e-7,0,null,null],"ollama/codegeex4":[0,0,null,null],"codegeex4":[0,0,null,null],"ollama/codegemma":[0,0,null,null],"codegemma":[0,0,null,null],"ollama/codellama":[0,0,null,null],"codellama":[0,0,null,null],"ollama/deepseek-coder-v2-base":[0,0,null,null],"deepseek-coder-v2-base":[0,0,null,null],"ollama/deepseek-coder-v2-instruct":[0,0,null,null],"deepseek-coder-v2-instruct":[0,0,null,null],"ollama/deepseek-coder-v2-lite-base":[0,0,null,null],"deepseek-coder-v2-lite-base":[0,0,null,null],"ollama/deepseek-coder-v2-lite-instruct":[0,0,null,null],"deepseek-coder-v2-lite-instruct":[0,0,null,null],"ollama/deepseek-v3.1:671b-cloud":[0,0,null,null],"deepseek-v3.1:671b-cloud":[0,0,null,null],"ollama/gpt-oss:120b-cloud":[0,0,null,null],"gpt-oss:120b-cloud":[0,0,null,null],"ollama/gpt-oss:20b-cloud":[0,0,null,null],"gpt-oss:20b-cloud":[0,0,null,null],"ollama/internlm2_5-20b-chat":[0,0,null,null],"internlm2_5-20b-chat":[0,0,null,null],"ollama/llama2":[0,0,null,null],"llama2":[0,0,null,null],"ollama/llama2-uncensored":[0,0,null,null],"llama2-uncensored":[0,0,null,null],"ollama/llama2:13b":[0,0,null,null],"llama2:13b":[0,0,null,null],"ollama/llama2:70b":[0,0,null,null],"llama2:70b":[0,0,null,null],"ollama/llama2:7b":[0,0,null,null],"llama2:7b":[0,0,null,null],"ollama/llama3":[0,0,null,null],"llama3":[0,0,null,null],"ollama/llama3.1":[0,0,null,null],"llama3.1":[0,0,null,null],"ollama/llama3:70b":[0,0,null,null],"llama3:70b":[0,0,null,null],"ollama/llama3:8b":[0,0,null,null],"llama3:8b":[0,0,null,null],"ollama/mistral":[0,0,null,null],"mistral":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.1":[0,0,null,null],"mistral-7B-Instruct-v0.1":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.2":[0,0,null,null],"mistral-7B-Instruct-v0.2":[0,0,null,null],"ollama/mistral-large-instruct-2407":[0,0,null,null],"mistral-large-instruct-2407":[0,0,null,null],"ollama/mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"ollama/mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"ollama/orca-mini":[0,0,null,null],"orca-mini":[0,0,null,null],"ollama/qwen3-coder:480b-cloud":[0,0,null,null],"qwen3-coder:480b-cloud":[0,0,null,null],"ollama/vicuna":[0,0,null,null],"vicuna":[0,0,null,null],"openrouter/anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"openrouter/anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"openrouter/anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"openrouter/bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"openrouter/deepseek/deepseek-chat":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"openrouter/deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"openrouter/deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"openrouter/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"openrouter/deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"openrouter/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"openrouter/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"openrouter/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"openrouter/google/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/google/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"openrouter/google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"openrouter/google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/mancer/weaver":[0.000005625,0.000005625,null,null],"mancer/weaver":[0.000005625,0.000005625,null,null],"openrouter/meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"openrouter/minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"openrouter/mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"openrouter/mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"openrouter/mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"openrouter/mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"openrouter/mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"openrouter/mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"openrouter/mistralai/mistral-large":[0.000008,0.000024,null,null],"mistralai/mistral-large":[0.000008,0.000024,null,null],"openrouter/mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"openrouter/moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"openrouter/openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openrouter/openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openrouter/openai/gpt-4":[0.00003,0.00006,null,null],"openai/gpt-4":[0.00003,0.00006,null,null],"openrouter/openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openrouter/openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openrouter/openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openrouter/openai/gpt-4o":[0.0000025,0.00001,null,null],"openrouter/openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openrouter/openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openrouter/openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openrouter/openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openrouter/openai/gpt-oss-120b":[1.8e-7,8e-7,null,null],"openrouter/openai/gpt-oss-20b":[2e-8,1e-7,null,null],"openrouter/openai/o1":[0.000015,0.00006,null,0.0000075],"openai/o1":[0.000015,0.00006,null,0.0000075],"openrouter/openai/o3-mini":[0.0000011,0.0000044,null,null],"openai/o3-mini":[0.0000011,0.0000044,null,null],"openrouter/openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openrouter/qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"openrouter/qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"openrouter/qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"openrouter/qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"openrouter/qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"openrouter/qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"openrouter/qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"openrouter/qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"openrouter/switchpoint/router":[8.5e-7,0.0000034,null,null],"switchpoint/router":[8.5e-7,0.0000034,null,null],"openrouter/undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/x-ai/grok-4":[0.000003,0.000015,null,null],"x-ai/grok-4":[0.000003,0.000015,null,null],"openrouter/z-ai/glm-4.6":[4e-7,0.00000175,null,null],"z-ai/glm-4.6":[4e-7,0.00000175,null,null],"openrouter/z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"openrouter/xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"openrouter/z-ai/glm-4.7":[4e-7,0.0000015,0,0],"z-ai/glm-4.7":[4e-7,0.0000015,0,0],"openrouter/z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"openrouter/z-ai/glm-5":[8e-7,0.00000256,null,null],"z-ai/glm-5":[8e-7,0.00000256,null,null],"openrouter/minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"openrouter/minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"openrouter/openrouter/auto":[0,0,null,null],"openrouter/auto":[0,0,null,null],"openrouter/openrouter/free":[0,0,null,null],"openrouter/free":[0,0,null,null],"openrouter/openrouter/bodybuilder":[0,0,null,null],"openrouter/bodybuilder":[0,0,null,null],"ovhcloud/DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"ovhcloud/Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"ovhcloud/Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"ovhcloud/Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"ovhcloud/Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"ovhcloud/Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"ovhcloud/Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"ovhcloud/Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"ovhcloud/Qwen3-32B":[8e-8,2.3e-7,null,null],"Qwen3-32B":[8e-8,2.3e-7,null,null],"ovhcloud/gpt-oss-120b":[8e-8,4e-7,null,null],"ovhcloud/gpt-oss-20b":[4e-8,1.5e-7,null,null],"gpt-oss-20b":[4e-8,1.5e-7,null,null],"ovhcloud/llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"ovhcloud/mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"palm/chat-bison":[1.25e-7,1.25e-7,null,null],"chat-bison":[1.25e-7,1.25e-7,null,null],"palm/chat-bison-001":[1.25e-7,1.25e-7,null,null],"chat-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison":[1.25e-7,1.25e-7,null,null],"text-bison":[1.25e-7,1.25e-7,null,null],"palm/text-bison-001":[1.25e-7,1.25e-7,null,null],"text-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"perplexity/codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"perplexity/codellama-70b-instruct":[7e-7,0.0000028,null,null],"codellama-70b-instruct":[7e-7,0.0000028,null,null],"perplexity/llama-2-70b-chat":[7e-7,0.0000028,null,null],"llama-2-70b-chat":[7e-7,0.0000028,null,null],"perplexity/llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"perplexity/llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"perplexity/mistral-7b-instruct":[7e-8,2.8e-7,null,null],"mistral-7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/pplx-70b-chat":[7e-7,0.0000028,null,null],"pplx-70b-chat":[7e-7,0.0000028,null,null],"perplexity/pplx-70b-online":[0,0.0000028,null,null],"pplx-70b-online":[0,0.0000028,null,null],"perplexity/pplx-7b-chat":[7e-8,2.8e-7,null,null],"pplx-7b-chat":[7e-8,2.8e-7,null,null],"perplexity/pplx-7b-online":[0,2.8e-7,null,null],"pplx-7b-online":[0,2.8e-7,null,null],"perplexity/sonar":[0.000001,0.000001,null,null],"sonar":[0.000001,0.000001,null,null],"perplexity/sonar-deep-research":[0.000002,0.000008,null,null],"sonar-deep-research":[0.000002,0.000008,null,null],"perplexity/sonar-medium-chat":[6e-7,0.0000018,null,null],"sonar-medium-chat":[6e-7,0.0000018,null,null],"perplexity/sonar-medium-online":[0,0.0000018,null,null],"sonar-medium-online":[0,0.0000018,null,null],"perplexity/sonar-pro":[0.000003,0.000015,null,null],"sonar-pro":[0.000003,0.000015,null,null],"perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"sonar-reasoning":[0.000001,0.000005,null,null],"perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"sonar-reasoning-pro":[0.000002,0.000008,null,null],"perplexity/sonar-small-chat":[7e-8,2.8e-7,null,null],"sonar-small-chat":[7e-8,2.8e-7,null,null],"perplexity/sonar-small-online":[0,2.8e-7,null,null],"sonar-small-online":[0,2.8e-7,null,null],"publicai/swiss-ai/apertus-8b-instruct":[0,0,null,null],"swiss-ai/apertus-8b-instruct":[0,0,null,null],"publicai/swiss-ai/apertus-70b-instruct":[0,0,null,null],"swiss-ai/apertus-70b-instruct":[0,0,null,null],"publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"publicai/BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"publicai/BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Instruct":[0,0,null,null],"allenai/Olmo-3-7B-Instruct":[0,0,null,null],"perplexity/pplx-embed-v1-0.6b":[4e-9,0,null,null],"pplx-embed-v1-0.6b":[4e-9,0,null,null],"perplexity/pplx-embed-v1-4b":[3e-8,0,null,null],"pplx-embed-v1-4b":[3e-8,0,null,null],"publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Think":[0,0,null,null],"allenai/Olmo-3-7B-Think":[0,0,null,null],"publicai/allenai/Olmo-3-32B-Think":[0,0,null,null],"allenai/Olmo-3-32B-Think":[0,0,null,null],"replicate/meta/llama-2-13b":[1e-7,5e-7,null,null],"meta/llama-2-13b":[1e-7,5e-7,null,null],"replicate/meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"replicate/meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-7b":[5e-8,2.5e-7,null,null],"meta/llama-2-7b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-8b":[5e-8,2.5e-7,null,null],"meta/llama-3-8b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"replicate/mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"replicate/openai/gpt-5":[0.00000125,0.00001,null,null],"replicateopenai/gpt-oss-20b":[9e-8,3.6e-7,null,null],"replicate/anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"replicate/ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"replicate/openai/gpt-4o":[0.0000025,0.00001,null,null],"replicate/openai/o4-mini":[0.000001,0.000004,null,null],"openai/o4-mini":[0.000001,0.000004,null,null],"replicate/openai/o1-mini":[0.0000011,0.0000044,null,null],"openai/o1-mini":[0.0000011,0.0000044,null,null],"replicate/openai/o1":[0.000015,0.00006,null,null],"replicate/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"replicate/qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"replicate/anthropic/claude-4-sonnet":[0.000003,0.000015,null,null],"replicate/deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"replicate/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"replicate/anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"replicate/anthropic/claude-3.5-sonnet":[0.00000375,0.00001875,null,null],"replicate/google/gemini-3-pro":[0.000002,0.000012,null,null],"google/gemini-3-pro":[0.000002,0.000012,null,null],"replicate/anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"replicate/openai/gpt-4.1":[0.000002,0.000008,null,null],"replicate/openai/gpt-4.1-nano":[1e-7,4e-7,null,null],"replicate/openai/gpt-4.1-mini":[4e-7,0.0000016,null,null],"replicate/openai/gpt-5-nano":[5e-8,4e-7,null,null],"replicate/openai/gpt-5-mini":[2.5e-7,0.000002,null,null],"replicate/google/gemini-2.5-flash":[0.0000025,0.0000025,null,null],"replicate/openai/gpt-oss-120b":[1.8e-7,7.2e-7,null,null],"replicate/deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"replicate/xai/grok-4":[0.0000072,0.000036,null,null],"xai/grok-4":[0.0000072,0.000036,null,null],"replicate/deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b":[0,0,null,null],"meta-textgeneration-llama-2-13b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b-f":[0,0,null,null],"meta-textgeneration-llama-2-13b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b":[0,0,null,null],"meta-textgeneration-llama-2-70b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b":[0,0,null,null],"meta-textgeneration-llama-2-7b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b-f":[0,0,null,null],"meta-textgeneration-llama-2-7b-f":[0,0,null,null],"sambanova/DeepSeek-R1":[0.000005,0.000007,null,null],"DeepSeek-R1":[0.000005,0.000007,null,null],"sambanova/DeepSeek-R1-Distill-Llama-70B":[7e-7,0.0000014,null,null],"sambanova/DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"sambanova/Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"sambanova/Llama-4-Scout-17B-16E-Instruct":[4e-7,7e-7,null,null],"sambanova/Meta-Llama-3.1-405B-Instruct":[0.000005,0.00001,null,null],"sambanova/Meta-Llama-3.1-8B-Instruct":[1e-7,2e-7,null,null],"sambanova/Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"sambanova/Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"sambanova/Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"sambanova/Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"sambanova/QwQ-32B":[5e-7,0.000001,null,null],"QwQ-32B":[5e-7,0.000001,null,null],"sambanova/Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"sambanova/Qwen3-32B":[4e-7,8e-7,null,null],"sambanova/DeepSeek-V3.1":[0.000003,0.0000045,null,null],"DeepSeek-V3.1":[0.000003,0.0000045,null,null],"sambanova/gpt-oss-120b":[0.000003,0.0000045,null,null],"text-completion-codestral/codestral-2405":[0,0,null,null],"text-completion-codestral/codestral-latest":[0,0,null,null],"together_ai/baai/bge-base-en-v1.5":[8e-9,0,null,null],"baai/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507":[6.5e-7,0.000003,null,null],"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"together_ai/deepseek-ai/DeepSeek-R1":[0.000003,0.000007,null,null],"together_ai/deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"together_ai/deepseek-ai/DeepSeek-V3":[0.00000125,0.00000125,null,null],"together_ai/deepseek-ai/DeepSeek-V3.1":[6e-7,0.0000017,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[2.7e-7,8.5e-7,null,null],"together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct":[1.8e-7,5.9e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[1.8e-7,1.8e-7,null,null],"together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1":[6e-7,6e-7,null,null],"together_ai/moonshotai/Kimi-K2-Instruct":[0.000001,0.000003,null,null],"together_ai/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"together_ai/openai/gpt-oss-20b":[5e-8,2e-7,null,null],"together_ai/zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"together_ai/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"together_ai/zai-org/GLM-4.7":[4.5e-7,0.000002,null,null],"together_ai/moonshotai/Kimi-K2.5":[5e-7,0.0000028,null,null],"together_ai/moonshotai/Kimi-K2-Instruct-0905":[0.000001,0.000003,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"v0/v0-1.0-md":[0.000003,0.000015,null,null],"v0-1.0-md":[0.000003,0.000015,null,null],"v0/v0-1.5-lg":[0.000015,0.000075,null,null],"v0-1.5-lg":[0.000015,0.000075,null,null],"v0/v0-1.5-md":[0.000003,0.000015,null,null],"v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"vercel_ai_gateway/amazon/nova-lite":[6e-8,2.4e-7,null,null],"amazon/nova-lite":[6e-8,2.4e-7,null,null],"vercel_ai_gateway/amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"vercel_ai_gateway/amazon/nova-pro":[8e-7,0.0000032,null,null],"amazon/nova-pro":[8e-7,0.0000032,null,null],"vercel_ai_gateway/amazon/titan-embed-text-v2":[2e-8,0,null,null],"amazon/titan-embed-text-v2":[2e-8,0,null,null],"vercel_ai_gateway/anthropic/claude-3-haiku":[2.5e-7,0.00000125,3e-7,3e-8],"vercel_ai_gateway/anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-3.5-haiku":[8e-7,0.000004,0.000001,8e-8],"vercel_ai_gateway/anthropic/claude-3.5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3.7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-4-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-4-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"vercel_ai_gateway/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/cohere/command-a":[0.0000025,0.00001,null,null],"cohere/command-a":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/command-r":[1.5e-7,6e-7,null,null],"cohere/command-r":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/cohere/command-r-plus":[0.0000025,0.00001,null,null],"cohere/command-r-plus":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/embed-v4.0":[1.2e-7,0,null,null],"vercel_ai_gateway/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"vercel_ai_gateway/deepseek/deepseek-v3":[9e-7,9e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"vercel_ai_gateway/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"vercel_ai_gateway/google/gemini-2.5-pro":[0.0000025,0.00001,null,null],"vercel_ai_gateway/google/gemini-embedding-001":[1.5e-7,0,null,null],"google/gemini-embedding-001":[1.5e-7,0,null,null],"vercel_ai_gateway/google/gemma-2-9b":[2e-7,2e-7,null,null],"google/gemma-2-9b":[2e-7,2e-7,null,null],"vercel_ai_gateway/google/text-embedding-005":[2.5e-8,0,null,null],"google/text-embedding-005":[2.5e-8,0,null,null],"vercel_ai_gateway/google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"vercel_ai_gateway/inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"vercel_ai_gateway/meta/llama-3-70b":[5.9e-7,7.9e-7,null,null],"vercel_ai_gateway/meta/llama-3-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.1-8b":[5e-8,8e-8,null,null],"meta/llama-3.1-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-1b":[1e-7,1e-7,null,null],"meta/llama-3.2-1b":[1e-7,1e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-4-maverick":[2e-7,6e-7,null,null],"meta/llama-4-maverick":[2e-7,6e-7,null,null],"vercel_ai_gateway/meta/llama-4-scout":[1e-7,3e-7,null,null],"meta/llama-4-scout":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/codestral":[3e-7,9e-7,null,null],"mistral/codestral":[3e-7,9e-7,null,null],"vercel_ai_gateway/mistral/codestral-embed":[1.5e-7,0,null,null],"mistral/codestral-embed":[1.5e-7,0,null,null],"vercel_ai_gateway/mistral/devstral-small":[7e-8,2.8e-7,null,null],"mistral/devstral-small":[7e-8,2.8e-7,null,null],"vercel_ai_gateway/mistral/magistral-medium":[0.000002,0.000005,null,null],"mistral/magistral-medium":[0.000002,0.000005,null,null],"vercel_ai_gateway/mistral/magistral-small":[5e-7,0.0000015,null,null],"mistral/magistral-small":[5e-7,0.0000015,null,null],"vercel_ai_gateway/mistral/ministral-3b":[4e-8,4e-8,null,null],"mistral/ministral-3b":[4e-8,4e-8,null,null],"vercel_ai_gateway/mistral/ministral-8b":[1e-7,1e-7,null,null],"mistral/ministral-8b":[1e-7,1e-7,null,null],"vercel_ai_gateway/mistral/mistral-embed":[1e-7,0,null,null],"mistral/mistral-embed":[1e-7,0,null,null],"vercel_ai_gateway/mistral/mistral-large":[0.000002,0.000006,null,null],"mistral/mistral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"vercel_ai_gateway/mistral/mistral-small":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"vercel_ai_gateway/mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/mistral/pixtral-large":[0.000002,0.000006,null,null],"mistral/pixtral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"vercel_ai_gateway/morph/morph-v3-fast":[8e-7,0.0000012,null,null],"vercel_ai_gateway/morph/morph-v3-large":[9e-7,0.0000019,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"vercel_ai_gateway/openai/gpt-4-turbo":[0.00001,0.00003,null,null],"openai/gpt-4-turbo":[0.00001,0.00003,null,null],"vercel_ai_gateway/openai/gpt-4.1":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/gpt-4.1-mini":[4e-7,0.0000016,0,1e-7],"vercel_ai_gateway/openai/gpt-4.1-nano":[1e-7,4e-7,0,2.5e-8],"vercel_ai_gateway/openai/gpt-4o":[0.0000025,0.00001,0,0.00000125],"vercel_ai_gateway/openai/gpt-4o-mini":[1.5e-7,6e-7,0,7.5e-8],"vercel_ai_gateway/openai/o1":[0.000015,0.00006,0,0.0000075],"vercel_ai_gateway/openai/o3":[0.000002,0.000008,0,5e-7],"openai/o3":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/o3-mini":[0.0000011,0.0000044,0,5.5e-7],"vercel_ai_gateway/openai/o4-mini":[0.0000011,0.0000044,0,2.75e-7],"vercel_ai_gateway/openai/text-embedding-3-large":[1.3e-7,0,null,null],"openai/text-embedding-3-large":[1.3e-7,0,null,null],"vercel_ai_gateway/openai/text-embedding-3-small":[2e-8,0,null,null],"openai/text-embedding-3-small":[2e-8,0,null,null],"vercel_ai_gateway/openai/text-embedding-ada-002":[1e-7,0,null,null],"openai/text-embedding-ada-002":[1e-7,0,null,null],"vercel_ai_gateway/perplexity/sonar":[0.000001,0.000001,null,null],"vercel_ai_gateway/perplexity/sonar-pro":[0.000003,0.000015,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"vercel_ai_gateway/vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-2":[0.000002,0.00001,null,null],"xai/grok-2":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-3":[0.000003,0.000015,null,null],"xai/grok-3":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-3-fast":[0.000005,0.000025,null,null],"xai/grok-3-fast":[0.000005,0.000025,null,null],"vercel_ai_gateway/xai/grok-3-mini":[3e-7,5e-7,null,null],"xai/grok-3-mini":[3e-7,5e-7,null,null],"vercel_ai_gateway/xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"vercel_ai_gateway/xai/grok-4":[0.000003,0.000015,null,null],"vercel_ai_gateway/zai/glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5":[6e-7,0.0000022,null,null],"vercel_ai_gateway/zai/glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-air":[2e-7,0.0000011,null,null],"vercel_ai_gateway/zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"vertex_ai/claude-3-5-haiku":[0.000001,0.000005,null,null],"claude-3-5-haiku":[0.000001,0.000005,null,null],"vertex_ai/claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"vertex_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-3-5-sonnet":[0.000003,0.000015,null,null],"claude-3-5-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"vertex_ai/claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-3-haiku":[2.5e-7,0.00000125,null,null],"claude-3-haiku":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-opus":[0.000015,0.000075,null,null],"claude-3-opus":[0.000015,0.000075,null,null],"vertex_ai/claude-3-opus@20240229":[0.000015,0.000075,null,null],"claude-3-opus@20240229":[0.000015,0.000075,null,null],"vertex_ai/claude-3-sonnet":[0.000003,0.000015,null,null],"claude-3-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"vertex_ai/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/mistralai/codestral-2@001":[3e-7,9e-7,null,null],"mistralai/codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/codestral-2":[3e-7,9e-7,null,null],"codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2@001":[3e-7,9e-7,null,null],"codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/mistralai/codestral-2":[3e-7,9e-7,null,null],"mistralai/codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2501":[2e-7,6e-7,null,null],"codestral-2501":[2e-7,6e-7,null,null],"vertex_ai/codestral@2405":[2e-7,6e-7,null,null],"codestral@2405":[2e-7,6e-7,null,null],"vertex_ai/codestral@latest":[2e-7,6e-7,null,null],"codestral@latest":[2e-7,6e-7,null,null],"vertex_ai/deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"vertex_ai/deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"vertex_ai/deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"vertex_ai/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"vertex_ai/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"vertex_ai/gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"vertex_ai/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"vertex_ai/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"vertex_ai/jamba-1.5":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-large":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-large@001":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-mini":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-mini@001":[2e-7,4e-7,null,null],"vertex_ai/meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"vertex_ai/meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama3-405b-instruct-maas":[0,0,null,null],"meta/llama3-405b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-70b-instruct-maas":[0,0,null,null],"meta/llama3-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-8b-instruct-maas":[0,0,null,null],"meta/llama3-8b-instruct-maas":[0,0,null,null],"vertex_ai/minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"vertex_ai/moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"vertex_ai/zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"vertex_ai/zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"vertex_ai/mistral-medium-3":[4e-7,0.000002,null,null],"mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistral-large-2411":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2407":[0.000002,0.000006,null,null],"mistral-large@2407":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2411-001":[0.000002,0.000006,null,null],"mistral-large@2411-001":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@latest":[0.000002,0.000006,null,null],"mistral-large@latest":[0.000002,0.000006,null,null],"vertex_ai/mistral-nemo@2407":[0.000003,0.000003,null,null],"mistral-nemo@2407":[0.000003,0.000003,null,null],"vertex_ai/mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"vertex_ai/mistral-small-2503":[0.000001,0.000003,null,null],"vertex_ai/mistral-small-2503@001":[0.000001,0.000003,null,null],"mistral-small-2503@001":[0.000001,0.000003,null,null],"vertex_ai/deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"vertex_ai/openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"vertex_ai/openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"voyage/rerank-2":[5e-8,0,null,null],"rerank-2":[5e-8,0,null,null],"voyage/rerank-2-lite":[2e-8,0,null,null],"rerank-2-lite":[2e-8,0,null,null],"voyage/rerank-2.5":[5e-8,0,null,null],"rerank-2.5":[5e-8,0,null,null],"voyage/rerank-2.5-lite":[2e-8,0,null,null],"rerank-2.5-lite":[2e-8,0,null,null],"voyage/voyage-2":[1e-7,0,null,null],"voyage-2":[1e-7,0,null,null],"voyage/voyage-3":[6e-8,0,null,null],"voyage-3":[6e-8,0,null,null],"voyage/voyage-3-large":[1.8e-7,0,null,null],"voyage-3-large":[1.8e-7,0,null,null],"voyage/voyage-3-lite":[2e-8,0,null,null],"voyage-3-lite":[2e-8,0,null,null],"voyage/voyage-3.5":[6e-8,0,null,null],"voyage-3.5":[6e-8,0,null,null],"voyage/voyage-3.5-lite":[2e-8,0,null,null],"voyage-3.5-lite":[2e-8,0,null,null],"voyage/voyage-code-2":[1.2e-7,0,null,null],"voyage-code-2":[1.2e-7,0,null,null],"voyage/voyage-code-3":[1.8e-7,0,null,null],"voyage-code-3":[1.8e-7,0,null,null],"voyage/voyage-context-3":[1.8e-7,0,null,null],"voyage-context-3":[1.8e-7,0,null,null],"voyage/voyage-finance-2":[1.2e-7,0,null,null],"voyage-finance-2":[1.2e-7,0,null,null],"voyage/voyage-large-2":[1.2e-7,0,null,null],"voyage-large-2":[1.2e-7,0,null,null],"voyage/voyage-law-2":[1.2e-7,0,null,null],"voyage-law-2":[1.2e-7,0,null,null],"voyage/voyage-lite-01":[1e-7,0,null,null],"voyage-lite-01":[1e-7,0,null,null],"voyage/voyage-lite-02-instruct":[1e-7,0,null,null],"voyage-lite-02-instruct":[1e-7,0,null,null],"voyage/voyage-multimodal-3":[1.2e-7,0,null,null],"voyage-multimodal-3":[1.2e-7,0,null,null],"wandb/openai/gpt-oss-120b":[0.015,0.06,null,null],"wandb/openai/gpt-oss-20b":[0.005,0.02,null,null],"wandb/zai-org/GLM-4.5":[0.055,0.2,null,null],"wandb/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.01,0.01,null,null],"wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct":[0.1,0.15,null,null],"wandb/Qwen/Qwen3-235B-A22B-Thinking-2507":[0.01,0.01,null,null],"wandb/moonshotai/Kimi-K2-Instruct":[6e-7,0.0000025,null,null],"wandb/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,1e-7],"wandb/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"wandb/meta-llama/Llama-3.1-8B-Instruct":[0.022,0.022,null,null],"wandb/deepseek-ai/DeepSeek-V3.1":[0.055,0.165,null,null],"wandb/deepseek-ai/DeepSeek-R1-0528":[0.135,0.54,null,null],"wandb/deepseek-ai/DeepSeek-V3-0324":[0.114,0.275,null,null],"wandb/meta-llama/Llama-3.3-70B-Instruct":[0.071,0.071,null,null],"wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct":[0.017,0.066,null,null],"wandb/microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"watsonx/ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/mistralai/mistral-large":[0.000003,0.00001,null,null],"watsonx/bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"watsonx/core42/jais-13b-chat":[0.0005,0.002,null,null],"core42/jais-13b-chat":[0.0005,0.002,null,null],"watsonx/google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"watsonx/ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"watsonx/ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"watsonx/ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"watsonx/meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"watsonx/meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"watsonx/meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"watsonx/meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"watsonx/meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"watsonx/mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"watsonx/mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"watsonx/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"watsonx/sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"grok-2":[0.000002,0.00001,null,null],"xai/grok-2-1212":[0.000002,0.00001,null,null],"grok-2-1212":[0.000002,0.00001,null,null],"xai/grok-2-latest":[0.000002,0.00001,null,null],"grok-2-latest":[0.000002,0.00001,null,null],"grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision-1212":[0.000002,0.00001,null,null],"grok-2-vision-1212":[0.000002,0.00001,null,null],"xai/grok-2-vision-latest":[0.000002,0.00001,null,null],"grok-2-vision-latest":[0.000002,0.00001,null,null],"xai/grok-3-beta":[0.000003,0.000015,null,7.5e-7],"grok-3-beta":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"xai/grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"xai/grok-3-latest":[0.000003,0.000015,null,7.5e-7],"grok-3-latest":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-fast":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"xai/grok-4-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-0709":[0.000003,0.000015,null,null],"grok-4-0709":[0.000003,0.000015,null,null],"xai/grok-4-latest":[0.000003,0.000015,null,null],"grok-4-latest":[0.000003,0.000015,null,null],"xai/grok-4-1-fast":[2e-7,5e-7,null,5e-8],"grok-4-1-fast":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-beta":[0.000005,0.000015,null,null],"grok-beta":[0.000005,0.000015,null,null],"xai/grok-code-fast":[2e-7,0.0000015,null,2e-8],"grok-code-fast":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"xai/grok-vision-beta":[0.000005,0.000015,null,null],"grok-vision-beta":[0.000005,0.000015,null,null],"zai/glm-5":[0.000001,0.0000032,0,2e-7],"glm-5":[0.000001,0.0000032,0,2e-7],"zai/glm-5-code":[0.0000012,0.000005,0,3e-7],"glm-5-code":[0.0000012,0.000005,0,3e-7],"zai/glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.6":[6e-7,0.0000022,0,1.1e-7],"glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5v":[6e-7,0.0000018,null,null],"glm-4.5v":[6e-7,0.0000018,null,null],"zai/glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-airx":[0.0000011,0.0000045,null,null],"glm-4.5-airx":[0.0000011,0.0000045,null,null],"zai/glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"zai/glm-4.5-flash":[0,0,null,null],"glm-4.5-flash":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"fireworks_ai/accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"fireworks_ai/accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"fireworks_ai/accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/":[1e-7,0,null,null],"accounts/fireworks/models/":[1e-7,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3":[0,0,null,null],"accounts/fireworks/models/whisper-v3":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"novita/deepseek/deepseek-v3.2":[2.69e-7,4e-7,null,1.345e-7],"novita/minimax/minimax-m2.1":[3e-7,0.0000012,null,3e-8],"novita/zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"novita/xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"novita/zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"novita/moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"novita/minimax/minimax-m2":[3e-7,0.0000012,null,3e-8],"novita/paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"novita/deepseek/deepseek-v3.2-exp":[2.7e-7,4.1e-7,null,null],"novita/qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"novita/zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"novita/zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"novita/kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"novita/qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"novita/qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"novita/deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"novita/deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"novita/qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"novita/qwen/qwen3-max":[0.00000211,0.00000845,null,null],"qwen/qwen3-max":[0.00000211,0.00000845,null,null],"novita/skywork/r1v4-lite":[2e-7,6e-7,null,null],"skywork/r1v4-lite":[2e-7,6e-7,null,null],"novita/deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"novita/moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"novita/qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"novita/qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"novita/openai/gpt-oss-120b":[5e-8,2.5e-7,null,null],"novita/moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"novita/deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"novita/zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"novita/qwen/qwen3-235b-a22b-thinking-2507":[3e-7,0.000003,null,null],"novita/meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"novita/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"novita/zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"novita/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"novita/qwen/qwen3-235b-a22b-instruct-2507":[9e-8,5.8e-7,null,null],"novita/deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"novita/meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"novita/qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"novita/mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"novita/minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"novita/deepseek/deepseek-r1-0528":[7e-7,0.0000025,null,3.5e-7],"novita/deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"novita/meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"novita/microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"novita/deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"novita/deepseek/deepseek-r1-distill-llama-70b":[8e-7,8e-7,null,null],"novita/meta-llama/llama-3-70b-instruct":[5.1e-7,7.4e-7,null,null],"novita/qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"novita/meta-llama/llama-4-scout-17b-16e-instruct":[1.8e-7,5.9e-7,null,null],"novita/nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"novita/qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"novita/sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"novita/baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"novita/sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"novita/baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"novita/baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"novita/baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"novita/deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"novita/qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"novita/qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"novita/google/gemma-3-27b-it":[1.19e-7,2e-7,null,null],"novita/deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"novita/deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"novita/Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"novita/gryphe/mythomax-l2-13b":[9e-8,9e-8,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"novita/qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"novita/zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"novita/qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"novita/baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"novita/qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"novita/qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"novita/qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"novita/meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"novita/sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"novita/qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"novita/qwen/qwen3-embedding-8b":[7e-8,0,null,null],"qwen/qwen3-embedding-8b":[7e-8,0,null,null],"novita/baai/bge-m3":[1e-8,1e-8,null,null],"baai/bge-m3":[1e-8,1e-8,null,null],"novita/qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"novita/baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"llamagate/llama-3.1-8b":[3e-8,5e-8,null,null],"llama-3.1-8b":[3e-8,5e-8,null,null],"llamagate/llama-3.2-3b":[4e-8,8e-8,null,null],"llama-3.2-3b":[4e-8,8e-8,null,null],"llamagate/mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"llamagate/qwen3-8b":[4e-8,1.4e-7,null,null],"qwen3-8b":[4e-8,1.4e-7,null,null],"llamagate/dolphin3-8b":[8e-8,1.5e-7,null,null],"dolphin3-8b":[8e-8,1.5e-7,null,null],"llamagate/deepseek-r1-8b":[1e-7,2e-7,null,null],"deepseek-r1-8b":[1e-7,2e-7,null,null],"llamagate/deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"llamagate/openthinker-7b":[8e-8,1.5e-7,null,null],"openthinker-7b":[8e-8,1.5e-7,null,null],"llamagate/qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"llamagate/deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"llamagate/codellama-7b":[6e-8,1.2e-7,null,null],"codellama-7b":[6e-8,1.2e-7,null,null],"llamagate/qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"llamagate/llava-7b":[1e-7,2e-7,null,null],"llava-7b":[1e-7,2e-7,null,null],"llamagate/gemma3-4b":[3e-8,8e-8,null,null],"gemma3-4b":[3e-8,8e-8,null,null],"llamagate/nomic-embed-text":[2e-8,0,null,null],"nomic-embed-text":[2e-8,0,null,null],"llamagate/qwen3-embedding-8b":[2e-8,0,null,null],"qwen3-embedding-8b":[2e-8,0,null,null],"sarvam/sarvam-m":[0,0,0,0],"sarvam-m":[0,0,0,0],"gemini/gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini/gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini/gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini/gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"vertex_ai/claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"bedrock_mantle/openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,null],"bedrock/us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"MiniMax-M2.7":[3e-7,0.0000012,3.75e-7,6e-8],"MiniMax-M2.7-highspeed":[6e-7,0.0000024,3.75e-7,6e-8]}
\ No newline at end of file
+{"ai21.j2-mid-v1":[0.0000125,0.0000125,null,null],"ai21.j2-ultra-v1":[0.0000188,0.0000188,null,null],"ai21.jamba-1-5-large-v1:0":[0.000002,0.000008,null,null],"ai21.jamba-1-5-mini-v1:0":[2e-7,4e-7,null,null],"ai21.jamba-instruct-v1:0":[5e-7,7e-7,null,null],"us.writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"us.writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"apac.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"apac.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"eu.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"eu.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"us.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"us.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"amazon.nova-2-multimodal-embeddings-v1:0":[1.35e-7,0,null,null],"amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"amazon.rerank-v1:0":[0,0,null,null],"amazon.titan-embed-image-v1":[8e-7,0,null,null],"amazon.titan-embed-text-v1":[1e-7,0,null,null],"amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"us.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"eu.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-7-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"global.anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-mythos-preview":[0,0,null,null],"global.anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-v1":[0.000008,0.000024,null,null],"anthropic.claude-v2:1":[0.000008,0.000024,null,null],"apac.amazon.nova-lite-v1:0":[6.3e-8,2.52e-7,null,null],"apac.amazon.nova-micro-v1:0":[3.7e-8,1.48e-7,null,null],"apac.amazon.nova-pro-v1:0":[8.4e-7,0.00000336,null,null],"apac.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"apac.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"apac.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"au.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"babbage-002":[4e-7,4e-7,null,null],"chatdolphin":[5e-7,5e-7,null,null],"chatgpt-4o-latest":[0.000005,0.000015,null,null],"gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"claude-haiku-4-5-20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"claude-3-7-sonnet-20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-haiku-20240307":[2.5e-7,0.00000125,3e-7,3e-8],"claude-3-opus-20240229":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-opus-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-sonnet-20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1-20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-5-20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6-20260205":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7-20260416":[0.000005,0.000025,0.00000625,5e-7],"claude-sonnet-4-20250514":[0.000003,0.000015,0.00000375,3e-7],"codex-mini-latest":[0.0000015,0.000006,null,3.75e-7],"cohere.command-light-text-v14":[3e-7,6e-7,null,null],"cohere.command-r-plus-v1:0":[0.000003,0.000015,null,null],"cohere.command-r-v1:0":[5e-7,0.0000015,null,null],"cohere.command-text-v14":[0.0000015,0.000002,null,null],"cohere.embed-english-v3":[1e-7,0,null,null],"cohere.embed-multilingual-v3":[1e-7,0,null,null],"cohere.embed-v4:0":[1.2e-7,0,null,null],"cohere.rerank-v3-5:0":[0,0,null,null],"command":[0.000001,0.000002,null,null],"command-a-03-2025":[0.0000025,0.00001,null,null],"command-light":[3e-7,6e-7,null,null],"command-nightly":[0.000001,0.000002,null,null],"command-r":[1.5e-7,6e-7,null,null],"command-r-08-2024":[1.5e-7,6e-7,null,null],"command-r-plus":[0.0000025,0.00001,null,null],"command-r-plus-08-2024":[0.0000025,0.00001,null,null],"command-r7b-12-2024":[1.5e-7,3.75e-8,null,null],"computer-use-preview":[0.000003,0.000012,null,null],"deepseek-chat":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"davinci-002":[0.000002,0.000002,null,null],"deepseek.v3-v1:0":[5.8e-7,0.00000168,null,null],"deepseek.v3.2":[6.2e-7,0.00000185,null,null],"dolphin":[5e-7,5e-7,null,null],"deepseek-v3-2-251201":[0,0,null,null],"glm-4-7-251222":[0,0,null,null],"kimi-k2-thinking-251104":[0,0,null,null],"doubao-embedding":[0,0,null,null],"doubao-embedding-large":[0,0,null,null],"doubao-embedding-large-text-240915":[0,0,null,null],"doubao-embedding-large-text-250515":[0,0,null,null],"doubao-embedding-text-240715":[0,0,null,null],"embed-english-light-v2.0":[1e-7,0,null,null],"embed-english-light-v3.0":[1e-7,0,null,null],"embed-english-v2.0":[1e-7,0,null,null],"embed-english-v3.0":[1e-7,0,null,null],"embed-multilingual-v2.0":[1e-7,0,null,null],"embed-multilingual-v3.0":[1e-7,0,null,null],"embed-multilingual-light-v3.0":[0.0001,0,null,null],"eu.amazon.nova-lite-v1:0":[7.8e-8,3.12e-7,null,null],"eu.amazon.nova-micro-v1:0":[4.6e-8,1.84e-7,null,null],"eu.amazon.nova-pro-v1:0":[0.00000105,0.0000042,null,null],"eu.anthropic.claude-3-5-haiku-20241022-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.meta.llama3-2-1b-instruct-v1:0":[1.3e-7,1.3e-7,null,null],"eu.meta.llama3-2-3b-instruct-v1:0":[1.9e-7,1.9e-7,null,null],"eu.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"fireworks-ai-4.1b-to-16b":[2e-7,2e-7,null,null],"fireworks-ai-56b-to-176b":[0.0000012,0.0000012,null,null],"fireworks-ai-above-16b":[9e-7,9e-7,null,null],"fireworks-ai-default":[0,0,null,null],"fireworks-ai-embedding-150m-to-350m":[1.6e-8,0,null,null],"fireworks-ai-embedding-up-to-150m":[8e-9,0,null,null],"fireworks-ai-moe-up-to-56b":[5e-7,5e-7,null,null],"fireworks-ai-up-to-4b":[2e-7,2e-7,null,null],"ft:babbage-002":[0.0000016,0.0000016,null,null],"ft:davinci-002":[0.000012,0.000012,null,null],"ft:gpt-3.5-turbo":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0125":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0613":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-1106":[0.000003,0.000006,null,null],"ft:gpt-4-0613":[0.00003,0.00006,null,null],"ft:gpt-4o-2024-08-06":[0.00000375,0.000015,null,0.000001875],"ft:gpt-4o-2024-11-20":[0.00000375,0.000015,0.000001875,null],"ft:gpt-4o-mini-2024-07-18":[3e-7,0.0000012,null,1.5e-7],"ft:gpt-4.1-2025-04-14":[0.000003,0.000012,null,7.5e-7],"ft:gpt-4.1-mini-2025-04-14":[8e-7,0.0000032,null,2e-7],"ft:gpt-4.1-nano-2025-04-14":[2e-7,8e-7,null,5e-8],"ft:o4-mini-2025-04-16":[0.000004,0.000016,null,0.000001],"gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini-2.0-flash-001":[1.5e-7,6e-7,null,3.75e-8],"gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini-embedding-001":[1.5e-7,0,null,null],"gemini-embedding-2-preview":[2e-7,0,null,null],"gemini-embedding-2":[2e-7,0,null,null],"gemini-flash-experimental":[0,0,null,null],"gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"google.gemma-3-12b-it":[9e-8,2.9e-7,null,null],"google.gemma-3-27b-it":[2.3e-7,3.8e-7,null,null],"google.gemma-3-4b-it":[4e-8,8e-8,null,null],"global.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"global.amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"gpt-3.5-turbo":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-1106":[0.000001,0.000002,null,null],"gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-4":[0.00003,0.00006,null,null],"gpt-4-0125-preview":[0.00001,0.00003,null,null],"gpt-4-0314":[0.00003,0.00006,null,null],"gpt-4-0613":[0.00003,0.00006,null,null],"gpt-4-1106-preview":[0.00001,0.00003,null,null],"gpt-4-turbo":[0.00001,0.00003,null,null],"gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"gpt-4-turbo-preview":[0.00001,0.00003,null,null],"gpt-4.1":[0.000002,0.000008,null,5e-7],"gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"gpt-4o":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"gpt-4o-audio-preview":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2025-06-03":[0.0000025,0.00001,null,null],"gpt-audio":[0.0000025,0.00001,null,null],"gpt-audio-1.5":[0.0000025,0.00001,null,null],"gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"gpt-audio-mini":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-12-15":[6e-7,0.0000024,null,null],"gpt-4o-mini":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-2024-07-18":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-audio-preview":[1.5e-7,6e-7,null,null],"gpt-4o-mini-audio-preview-2024-12-17":[1.5e-7,6e-7,null,null],"gpt-4o-mini-realtime-preview":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-search-preview":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-search-preview-2025-03-11":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"gpt-4o-realtime-preview":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2025-06-03":[0.000005,0.00002,null,0.0000025],"gpt-4o-search-preview":[0.0000025,0.00001,null,0.00000125],"gpt-4o-search-preview-2025-03-11":[0.0000025,0.00001,null,0.00000125],"gpt-4o-transcribe":[0.0000025,0.00001,null,null],"gpt-image-1.5":[0.000005,0.00001,null,0.00000125],"gpt-image-1.5-2025-12-16":[0.000005,0.00001,null,0.00000125],"gpt-5":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-pro":[0.000021,0.000168,null,null],"gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"gpt-5.5":[0.000005,0.00003,null,5e-7],"gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"gpt-5-pro":[0.000015,0.00012,null,null],"gpt-5-pro-2025-10-06":[0.000015,0.00012,null,null],"gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-nano":[5e-8,4e-7,null,5e-9],"gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"gpt-realtime":[0.000004,0.000016,null,4e-7],"gpt-realtime-1.5":[0.000004,0.000016,null,4e-7],"gpt-realtime-mini":[6e-7,0.0000024,null,null],"gpt-realtime-2025-08-28":[0.000004,0.000016,null,4e-7],"j2-light":[0.000003,0.000003,null,null],"j2-mid":[0.00001,0.00001,null,null],"j2-ultra":[0.000015,0.000015,null,null],"jamba-1.5":[2e-7,4e-7,null,null],"jamba-1.5-large":[0.000002,0.000008,null,null],"jamba-1.5-large@001":[0.000002,0.000008,null,null],"jamba-1.5-mini":[2e-7,4e-7,null,null],"jamba-1.5-mini@001":[2e-7,4e-7,null,null],"jamba-large-1.6":[0.000002,0.000008,null,null],"jamba-large-1.7":[0.000002,0.000008,null,null],"jamba-mini-1.6":[2e-7,4e-7,null,null],"jamba-mini-1.7":[2e-7,4e-7,null,null],"jina-reranker-v2-base-multilingual":[1.8e-8,1.8e-8,null,null],"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"jp.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"meta.llama2-13b-chat-v1":[7.5e-7,0.000001,null,null],"meta.llama2-70b-chat-v1":[0.00000195,0.00000256,null,null],"meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"minimax.minimax-m2":[3e-7,0.0000012,null,null],"minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"mistral.devstral-2-123b":[4e-7,0.000002,null,null],"mistral.magistral-small-2509":[5e-7,0.0000015,null,null],"mistral.ministral-3-14b-instruct":[2e-7,2e-7,null,null],"mistral.ministral-3-3b-instruct":[1e-7,1e-7,null,null],"mistral.ministral-3-8b-instruct":[1.5e-7,1.5e-7,null,null],"mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"mistral.mistral-large-2407-v1:0":[0.000003,0.000009,null,null],"mistral.mistral-large-3-675b-instruct":[5e-7,0.0000015,null,null],"mistral.mistral-small-2402-v1:0":[0.000001,0.000003,null,null],"mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"mistral.voxtral-mini-3b-2507":[4e-8,4e-8,null,null],"mistral.voxtral-small-24b-2507":[1e-7,3e-7,null,null],"moonshot.kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"multimodalembedding":[8e-7,0,null,null],"multimodalembedding@001":[8e-7,0,null,null],"nvidia.nemotron-nano-12b-v2":[2e-7,6e-7,null,null],"nvidia.nemotron-nano-9b-v2":[6e-8,2.3e-7,null,null],"nvidia.nemotron-nano-3-30b":[6e-8,2.4e-7,null,null],"nvidia.nemotron-super-3-120b":[1.5e-7,6.5e-7,null,null],"o1":[0.000015,0.00006,null,0.0000075],"o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"o1-pro":[0.00015,0.0006,null,null],"o1-pro-2025-03-19":[0.00015,0.0006,null,null],"o3":[0.000002,0.000008,null,5e-7],"o3-2025-04-16":[0.000002,0.000008,null,5e-7],"o3-deep-research":[0.00001,0.00004,null,0.0000025],"o3-deep-research-2025-06-26":[0.00001,0.00004,null,0.0000025],"o3-mini":[0.0000011,0.0000044,null,5.5e-7],"o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"o3-pro":[0.00002,0.00008,null,null],"o3-pro-2025-06-10":[0.00002,0.00008,null,null],"o4-mini":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-deep-research":[0.000002,0.000008,null,5e-7],"o4-mini-deep-research-2025-06-26":[0.000002,0.000008,null,5e-7],"omni-moderation-2024-09-26":[0,0,null,null],"omni-moderation-latest":[0,0,null,null],"openai.gpt-oss-120b-1:0":[1.5e-7,6e-7,null,null],"openai.gpt-oss-20b-1:0":[7e-8,3e-7,null,null],"openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-safeguard-20b":[7e-8,2e-7,null,null],"qwen.qwen3-coder-480b-a35b-v1:0":[2.2e-7,0.0000018,null,null],"qwen.qwen3-235b-a22b-2507-v1:0":[2.2e-7,8.8e-7,null,null],"qwen.qwen3-coder-30b-a3b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-32b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-next-80b-a3b":[1.5e-7,0.0000012,null,null],"qwen.qwen3-vl-235b-a22b":[5.3e-7,0.00000266,null,null],"qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"rerank-english-v2.0":[0,0,null,null],"rerank-english-v3.0":[0,0,null,null],"rerank-multilingual-v2.0":[0,0,null,null],"rerank-multilingual-v3.0":[0,0,null,null],"rerank-v3.5":[0,0,null,null],"text-embedding-004":[1e-7,0,null,null],"text-embedding-005":[1e-7,0,null,null],"text-embedding-3-large":[1.3e-7,0,null,null],"text-embedding-3-small":[2e-8,0,null,null],"text-embedding-ada-002":[1e-7,0,null,null],"text-embedding-ada-002-v2":[1e-7,0,null,null],"text-embedding-large-exp-03-07":[1e-7,0,null,null],"text-embedding-preview-0409":[6.25e-9,0,null,null],"text-moderation-007":[0,0,null,null],"text-moderation-latest":[0,0,null,null],"text-moderation-stable":[0,0,null,null],"text-multilingual-embedding-002":[1e-7,0,null,null],"text-unicorn":[0.00001,0.000028,null,null],"text-unicorn@001":[0.00001,0.000028,null,null],"together-ai-21.1b-41b":[8e-7,8e-7,null,null],"together-ai-4.1b-8b":[2e-7,2e-7,null,null],"together-ai-41.1b-80b":[9e-7,9e-7,null,null],"together-ai-8.1b-21b":[3e-7,3e-7,null,null],"together-ai-81.1b-110b":[0.0000018,0.0000018,null,null],"together-ai-embedding-151m-to-350m":[1.6e-8,0,null,null],"together-ai-embedding-up-to-150m":[8e-9,0,null,null],"together-ai-up-to-4b":[1e-7,1e-7,null,null],"us.amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"us.amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"us.amazon.nova-premier-v1:0":[0.0000025,0.0000125,null,null],"us.amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"us.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"us.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-opus-4-5-20251101-v1:0":[0.0000055,0.0000275,0.000006875,5.5e-7],"global.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"eu.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.deepseek.r1-v1:0":[0.00000135,0.0000054,null,null],"us.deepseek.v3.2":[6.2e-7,0.00000185,null,null],"eu.deepseek.v3.2":[7.4e-7,0.00000222,null,null],"us.meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"us.meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"us.meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"us.meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"us.meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"us.meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"us.meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"us.meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"us.meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"us.meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"us.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"zai.glm-4.7":[6e-7,0.0000022,null,null],"zai.glm-4.7-flash":[7e-8,4e-7,null,null],"zai.glm-5":[0.000001,0.0000032,null,null],"gpt-4o-mini-tts-2025-03-20":[0.0000025,0.00001,null,null],"gpt-4o-mini-tts-2025-12-15":[0.0000025,0.00001,null,null],"gpt-4o-mini-transcribe-2025-03-20":[0.00000125,0.000005,null,null],"gpt-4o-mini-transcribe-2025-12-15":[0.00000125,0.000005,null,null],"gpt-5-search-api":[0.00000125,0.00001,null,1.25e-7],"gpt-5-search-api-2025-10-14":[0.00000125,0.00001,null,1.25e-7],"gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"gpt-realtime-mini-2025-12-15":[6e-7,0.0000024,null,6e-8],"gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini-flash-latest":[3e-7,0.0000025,null,3e-8],"gemini-flash-lite-latest":[1e-7,4e-7,null,1e-8],"gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"gemini-exp-1206":[3e-7,0.0000025,null,3e-8],"anyscale/HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"anyscale/codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"anyscale/meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"anyscale/meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"anyscale/meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"azure/ada":[1e-7,0,null,null],"ada":[1e-7,0,null,null],"azure/codex-mini":[0.0000015,0.000006,null,3.75e-7],"codex-mini":[0.0000015,0.000006,null,3.75e-7],"azure/command-r-plus":[0.000003,0.000015,null,null],"azure_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"azure_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"azure_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"azure_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"azure/computer-use-preview":[0.000003,0.000012,null,null],"azure_ai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"gpt-oss-120b":[1.5e-7,6e-7,null,null],"azure_ai/model_router":[1.4e-7,0,null,null],"model_router":[1.4e-7,0,null,null],"azure/eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"azure/global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo":[5e-7,0.0000015,null,null],"gpt-35-turbo":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-1106":[0.000001,0.000002,null,null],"gpt-35-turbo-1106":[0.000001,0.000002,null,null],"azure/gpt-35-turbo-16k":[0.000003,0.000004,null,null],"gpt-35-turbo-16k":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-4":[0.00003,0.00006,null,null],"azure/gpt-4-0125-preview":[0.00001,0.00003,null,null],"azure/gpt-4-0613":[0.00003,0.00006,null,null],"azure/gpt-4-1106-preview":[0.00001,0.00003,null,null],"azure/gpt-4-32k":[0.00006,0.00012,null,null],"gpt-4-32k":[0.00006,0.00012,null,null],"azure/gpt-4-32k-0613":[0.00006,0.00012,null,null],"gpt-4-32k-0613":[0.00006,0.00012,null,null],"azure/gpt-4-turbo":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"azure/gpt-4.1":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"azure/gpt-4o":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"azure/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-11-20":[0.00000275,0.000011,null,0.00000125],"azure/gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"azure/gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"azure/gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"azure/gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"azure/gpt-realtime-2025-08-28":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"azure/gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"azure/gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"azure/gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-transcribe":[0.0000025,0.00001,null,null],"azure/gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"azure/gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-nano":[5e-8,4e-7,null,5e-9],"azure/gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"azure/gpt-5-pro":[0.000015,0.00012,null,null],"azure/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-pro":[0.000021,0.000168,null,null],"azure/gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"azure/gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"azure/gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"azure/mistral-large-2402":[0.000008,0.000024,null,null],"mistral-large-2402":[0.000008,0.000024,null,null],"azure/mistral-large-latest":[0.000008,0.000024,null,null],"mistral-large-latest":[0.000008,0.000024,null,null],"azure/o1":[0.000015,0.00006,null,0.0000075],"azure/o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"azure/o1-mini":[0.00000121,0.00000484,null,6.05e-7],"o1-mini":[0.00000121,0.00000484,null,6.05e-7],"azure/o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"azure/o1-preview":[0.000015,0.00006,null,0.0000075],"o1-preview":[0.000015,0.00006,null,0.0000075],"azure/o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"azure/o3":[0.000002,0.000008,null,5e-7],"azure/o3-2025-04-16":[0.000002,0.000008,null,5e-7],"azure/o3-deep-research":[0.00001,0.00004,null,0.0000025],"azure/o3-mini":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-pro":[0.00002,0.00008,null,null],"azure/o3-pro-2025-06-10":[0.00002,0.00008,null,null],"azure/o4-mini":[0.0000011,0.0000044,null,2.75e-7],"azure/o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"azure/text-embedding-3-large":[1.3e-7,0,null,null],"azure/text-embedding-3-small":[2e-8,0,null,null],"azure/text-embedding-ada-002":[1e-7,0,null,null],"azure/us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"azure/us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"azure/us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"azure/us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"azure/us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"azure_ai/Cohere-embed-v3-english":[1e-7,0,null,null],"Cohere-embed-v3-english":[1e-7,0,null,null],"azure_ai/Cohere-embed-v3-multilingual":[1e-7,0,null,null],"Cohere-embed-v3-multilingual":[1e-7,0,null,null],"azure_ai/Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"azure_ai/Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"azure_ai/Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"azure_ai/Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"azure_ai/Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"azure_ai/Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"azure_ai/Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"azure_ai/Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"azure_ai/Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"azure_ai/Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-4":[1.25e-7,5e-7,null,null],"Phi-4":[1.25e-7,5e-7,null,null],"azure_ai/Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"azure_ai/Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-reasoning":[1.25e-7,5e-7,null,null],"Phi-4-reasoning":[1.25e-7,5e-7,null,null],"azure_ai/MAI-DS-R1":[0.00000135,0.0000054,null,null],"MAI-DS-R1":[0.00000135,0.0000054,null,null],"azure_ai/cohere-rerank-v3-english":[0,0,null,null],"cohere-rerank-v3-english":[0,0,null,null],"azure_ai/cohere-rerank-v3-multilingual":[0,0,null,null],"cohere-rerank-v3-multilingual":[0,0,null,null],"azure_ai/cohere-rerank-v3.5":[0,0,null,null],"cohere-rerank-v3.5":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-pro":[0,0,null,null],"cohere-rerank-v4.0-pro":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-fast":[0,0,null,null],"cohere-rerank-v4.0-fast":[0,0,null,null],"azure_ai/deepseek-v3.2":[5.8e-7,0.00000168,null,null],"deepseek-v3.2":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-r1":[0.00000135,0.0000054,null,null],"deepseek-r1":[0.00000135,0.0000054,null,null],"azure_ai/deepseek-v3":[0.00000114,0.00000456,null,null],"deepseek-v3":[0.00000114,0.00000456,null,null],"azure_ai/deepseek-v3-0324":[0.00000114,0.00000456,null,null],"deepseek-v3-0324":[0.00000114,0.00000456,null,null],"azure_ai/embed-v-4-0":[1.2e-7,0,null,null],"embed-v-4-0":[1.2e-7,0,null,null],"azure_ai/global/grok-3":[0.000003,0.000015,null,null],"global/grok-3":[0.000003,0.000015,null,null],"azure_ai/global/grok-3-mini":[2.5e-7,0.00000127,null,null],"global/grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-3":[0.000003,0.000015,null,null],"grok-3":[0.000003,0.000015,null,null],"azure_ai/grok-3-mini":[2.5e-7,0.00000127,null,null],"grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-4":[0.000003,0.000015,null,null],"grok-4":[0.000003,0.000015,null,null],"azure_ai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-code-fast-1":[2e-7,0.0000015,null,null],"grok-code-fast-1":[2e-7,0.0000015,null,null],"azure_ai/jais-30b-chat":[0.0032,0.00971,null,null],"jais-30b-chat":[0.0032,0.00971,null,null],"azure_ai/jamba-instruct":[5e-7,7e-7,null,null],"jamba-instruct":[5e-7,7e-7,null,null],"azure_ai/kimi-k2.5":[6e-7,0.000003,null,null],"kimi-k2.5":[6e-7,0.000003,null,null],"azure_ai/ministral-3b":[4e-8,4e-8,null,null],"ministral-3b":[4e-8,4e-8,null,null],"azure_ai/mistral-large":[0.000004,0.000012,null,null],"mistral-large":[0.000004,0.000012,null,null],"azure_ai/mistral-large-2407":[0.000002,0.000006,null,null],"mistral-large-2407":[0.000002,0.000006,null,null],"azure_ai/mistral-large-latest":[0.000002,0.000006,null,null],"azure_ai/mistral-large-3":[5e-7,0.0000015,null,null],"mistral-large-3":[5e-7,0.0000015,null,null],"azure_ai/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral-medium-2505":[4e-7,0.000002,null,null],"azure_ai/mistral-nemo":[1.5e-7,1.5e-7,null,null],"mistral-nemo":[1.5e-7,1.5e-7,null,null],"azure_ai/mistral-small":[0.000001,0.000003,null,null],"mistral-small":[0.000001,0.000003,null,null],"azure_ai/mistral-small-2503":[1e-7,3e-7,null,null],"mistral-small-2503":[1e-7,3e-7,null,null],"bedrock/ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"bedrock/ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/moonshotai.kimi-k2.5":[6e-7,0.00000303,null,null],"bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"bedrock/ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"bedrock/ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"bedrock/eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"bedrock/eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"bedrock/eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"bedrock/eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"bedrock/eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"bedrock/eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"bedrock/sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"cerebras/llama-3.3-70b":[8.5e-7,0.0000012,null,null],"llama-3.3-70b":[8.5e-7,0.0000012,null,null],"cerebras/llama3.1-70b":[6e-7,6e-7,null,null],"llama3.1-70b":[6e-7,6e-7,null,null],"cerebras/llama3.1-8b":[1e-7,1e-7,null,null],"llama3.1-8b":[1e-7,1e-7,null,null],"cerebras/gpt-oss-120b":[3.5e-7,7.5e-7,null,null],"cerebras/qwen-3-32b":[4e-7,8e-7,null,null],"qwen-3-32b":[4e-7,8e-7,null,null],"cerebras/zai-glm-4.6":[0.00000225,0.00000275,null,null],"zai-glm-4.6":[0.00000225,0.00000275,null,null],"cerebras/zai-glm-4.7":[0.00000225,0.00000275,null,null],"zai-glm-4.7":[0.00000225,0.00000275,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"cloudflare/@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"cloudflare/@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"codestral/codestral-2405":[0,0,null,null],"codestral-2405":[0,0,null,null],"codestral/codestral-latest":[0,0,null,null],"codestral-latest":[0,0,null,null],"cohere/embed-v4.0":[1.2e-7,0,null,null],"embed-v4.0":[1.2e-7,0,null,null],"dashscope/qwen-coder":[3e-7,0.0000015,null,null],"qwen-coder":[3e-7,0.0000015,null,null],"dashscope/qwen-max":[0.0000016,0.0000064,null,null],"qwen-max":[0.0000016,0.0000064,null,null],"dashscope/qwen-plus":[4e-7,0.0000012,null,null],"qwen-plus":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"dashscope/qwen-turbo":[5e-8,2e-7,null,null],"qwen-turbo":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-latest":[5e-8,2e-7,null,null],"qwen-turbo-latest":[5e-8,2e-7,null,null],"dashscope/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"dashscope/qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"dashscope/qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"dashscope/qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"dashscope/qwq-plus":[8e-7,0.0000024,null,null],"qwq-plus":[8e-7,0.0000024,null,null],"databricks/databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks/databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks/databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks/databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks/databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks/databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks/databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks/databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks/databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks/databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks/databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks/databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks/databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks/databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks/databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks/databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"deepinfra/Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"deepinfra/Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"deepinfra/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"deepinfra/Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"deepinfra/Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"deepinfra/Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"deepinfra/Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"deepinfra/Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"deepinfra/Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"deepinfra/Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"deepinfra/allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"deepinfra/anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"deepinfra/anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"deepinfra/anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"deepinfra/deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"deepinfra/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"deepinfra/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"deepinfra/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"google/gemma-3-12b-it":[5e-8,1e-7,null,null],"deepinfra/google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"deepinfra/google/gemma-3-4b-it":[4e-8,8e-8,null,null],"google/gemma-3-4b-it":[4e-8,8e-8,null,null],"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"deepinfra/meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"deepinfra/meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"deepinfra/meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3-8B-Instruct":[3e-8,6e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"deepinfra/microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"deepinfra/microsoft/phi-4":[7e-8,1.4e-7,null,null],"microsoft/phi-4":[7e-8,1.4e-7,null,null],"deepinfra/mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1":[4e-7,4e-7,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"deepinfra/openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"deepinfra/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"deepinfra/zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"deepseek/deepseek-chat":[2.8e-7,4.2e-7,0,2.8e-8],"deepseek/deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"deepseek/deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek/deepseek-v3":[2.7e-7,0.0000011,0,7e-8],"deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"fireworks_ai/WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"fireworks_ai/glm-4p7":[6e-7,0.0000022,null,3e-7],"glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/kimi-k2p5":[6e-7,0.000003,null,1e-7],"kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"fireworks_ai/nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-base":[8e-9,0,null,null],"thenlper/gte-base":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-large":[1.6e-8,0,null,null],"thenlper/gte-large":[1.6e-8,0,null,null],"friendliai/meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"friendliai/meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"gemini/gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"vertex_ai/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"vertex_ai/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"vertex_ai/gemini-embedding-2-preview":[1.5e-7,0,null,null],"vertex_ai/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-embedding-001":[1.5e-7,0,null,null],"gemini/gemini-embedding-2-preview":[2e-7,0,null,null],"gemini/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-1.5-flash":[7.5e-8,0,null,null],"gemini-1.5-flash":[7.5e-8,0,null,null],"gemini/gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-001":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini/gemini-3.1-flash-image-preview":[2.5e-7,0.0000015,null,null],"gemini/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini/gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-latest":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-lite-latest":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"gemini/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"gemini/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-exp-1114":[0,0,null,null],"gemini-exp-1114":[0,0,null,null],"gemini/gemini-exp-1206":[0,0,null,null],"gemini/gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini/gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini/gemma-3-27b-it":[0,0,null,null],"gemma-3-27b-it":[0,0,null,null],"gemini/learnlm-1.5-pro-experimental":[0,0,null,null],"learnlm-1.5-pro-experimental":[0,0,null,null],"gemini/lyria-3-clip-preview":[0,0,null,null],"lyria-3-clip-preview":[0,0,null,null],"gemini/lyria-3-pro-preview":[0,0,null,null],"lyria-3-pro-preview":[0,0,null,null],"gigachat/GigaChat-2-Lite":[0,0,null,null],"GigaChat-2-Lite":[0,0,null,null],"gigachat/GigaChat-2-Max":[0,0,null,null],"GigaChat-2-Max":[0,0,null,null],"gigachat/GigaChat-2-Pro":[0,0,null,null],"GigaChat-2-Pro":[0,0,null,null],"gigachat/Embeddings":[0,0,null,null],"Embeddings":[0,0,null,null],"gigachat/Embeddings-2":[0,0,null,null],"Embeddings-2":[0,0,null,null],"gigachat/EmbeddingsGigaR":[0,0,null,null],"EmbeddingsGigaR":[0,0,null,null],"gmi/anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"gmi/anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"gmi/anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"gmi/anthropic/claude-opus-4":[0.000015,0.000075,null,null],"anthropic/claude-opus-4":[0.000015,0.000075,null,null],"gmi/openai/gpt-5.2":[0.00000175,0.000014,null,null],"openai/gpt-5.2":[0.00000175,0.000014,null,null],"gmi/openai/gpt-5.1":[0.00000125,0.00001,null,null],"openai/gpt-5.1":[0.00000125,0.00001,null,null],"gmi/openai/gpt-5":[0.00000125,0.00001,null,null],"openai/gpt-5":[0.00000125,0.00001,null,null],"gmi/openai/gpt-4o":[0.0000025,0.00001,null,null],"openai/gpt-4o":[0.0000025,0.00001,null,null],"gmi/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3-0324":[2.8e-7,8.8e-7,null,null],"gmi/google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"gmi/google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"gmi/moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"gmi/MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"baseten/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"baseten/nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"baseten/zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"baseten/zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"baseten/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"baseten/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"baseten/moonshotai/Kimi-K2-Thinking":[6e-7,0.0000025,null,null],"baseten/moonshotai/Kimi-K2-Instruct-0905":[6e-7,0.0000025,null,null],"baseten/openai/gpt-oss-120b":[1e-7,5e-7,null,null],"baseten/deepseek-ai/DeepSeek-V3.1":[5e-7,0.0000015,null,null],"baseten/deepseek-ai/DeepSeek-V3-0324":[7.7e-7,7.7e-7,null,null],"gmi/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"gmi/zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"gradient_ai/anthropic-claude-3-opus":[0.000015,0.000075,null,null],"anthropic-claude-3-opus":[0.000015,0.000075,null,null],"gradient_ai/anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"gradient_ai/anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"gradient_ai/anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"gradient_ai/deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"gradient_ai/llama3-8b-instruct":[2e-7,2e-7,null,null],"llama3-8b-instruct":[2e-7,2e-7,null,null],"gradient_ai/llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"gradient_ai/mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"gradient_ai/openai-o3":[0.000002,0.000008,null,null],"openai-o3":[0.000002,0.000008,null,null],"gradient_ai/openai-o3-mini":[0.0000011,0.0000044,null,null],"openai-o3-mini":[0.0000011,0.0000044,null,null],"lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"lemonade/gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"lemonade/gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"lemonade/Gemma-3-4b-it-GGUF":[0,0,null,null],"Gemma-3-4b-it-GGUF":[0,0,null,null],"lemonade/Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"amazon-nova/nova-micro-v1":[3.5e-8,1.4e-7,null,null],"nova-micro-v1":[3.5e-8,1.4e-7,null,null],"amazon-nova/nova-lite-v1":[6e-8,2.4e-7,null,null],"nova-lite-v1":[6e-8,2.4e-7,null,null],"amazon-nova/nova-premier-v1":[0.0000025,0.0000125,null,null],"nova-premier-v1":[0.0000025,0.0000125,null,null],"amazon-nova/nova-pro-v1":[8e-7,0.0000032,null,null],"nova-pro-v1":[8e-7,0.0000032,null,null],"groq/llama-3.1-8b-instant":[5e-8,8e-8,null,null],"llama-3.1-8b-instant":[5e-8,8e-8,null,null],"groq/llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"groq/gemma-7b-it":[5e-8,8e-8,null,null],"gemma-7b-it":[5e-8,8e-8,null,null],"groq/meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"groq/meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"groq/meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"groq/moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"groq/openai/gpt-oss-120b":[1.5e-7,6e-7,null,7.5e-8],"groq/openai/gpt-oss-20b":[7.5e-8,3e-7,null,3.75e-8],"groq/openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"groq/qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/QwQ-32B":[2e-7,2e-7,null,null],"hyperbolic/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen3-235B-A22B":[0.000002,0.000002,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1":[4e-7,4e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1-0528":[2.5e-7,2.5e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3":[2e-7,2e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3-0324":[4e-7,4e-7,null,null],"hyperbolic/meta-llama/Llama-3.2-3B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Llama-3.3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/moonshotai/Kimi-K2-Instruct":[0.000002,0.000002,null,null],"lambda_ai/deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-0528":[2e-7,6e-7,null,null],"deepseek-r1-0528":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-671b":[8e-7,8e-7,null,null],"deepseek-r1-671b":[8e-7,8e-7,null,null],"lambda_ai/deepseek-v3-0324":[2e-7,6e-7,null,null],"lambda_ai/hermes3-405b":[8e-7,8e-7,null,null],"hermes3-405b":[8e-7,8e-7,null,null],"lambda_ai/hermes3-70b":[1.2e-7,3e-7,null,null],"hermes3-70b":[1.2e-7,3e-7,null,null],"lambda_ai/hermes3-8b":[2.5e-8,4e-8,null,null],"hermes3-8b":[2.5e-8,4e-8,null,null],"lambda_ai/lfm-40b":[1e-7,2e-7,null,null],"lfm-40b":[1e-7,2e-7,null,null],"lambda_ai/lfm-7b":[2.5e-8,4e-8,null,null],"lfm-7b":[2.5e-8,4e-8,null,null],"lambda_ai/llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"lambda_ai/llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"lambda_ai/llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"lambda_ai/llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"lambda_ai/llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"lambda_ai/qwen3-32b-fp8":[5e-8,1e-7,null,null],"qwen3-32b-fp8":[5e-8,1e-7,null,null],"minimax/MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"mistral/codestral-2405":[0.000001,0.000003,null,null],"mistral/codestral-2508":[3e-7,9e-7,null,null],"codestral-2508":[3e-7,9e-7,null,null],"mistral/codestral-latest":[0.000001,0.000003,null,null],"mistral/codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"mistral/devstral-medium-2507":[4e-7,0.000002,null,null],"devstral-medium-2507":[4e-7,0.000002,null,null],"mistral/devstral-small-2505":[1e-7,3e-7,null,null],"devstral-small-2505":[1e-7,3e-7,null,null],"mistral/devstral-small-2507":[1e-7,3e-7,null,null],"devstral-small-2507":[1e-7,3e-7,null,null],"mistral/devstral-small-latest":[1e-7,3e-7,null,null],"devstral-small-latest":[1e-7,3e-7,null,null],"mistral/labs-devstral-small-2512":[1e-7,3e-7,null,null],"labs-devstral-small-2512":[1e-7,3e-7,null,null],"mistral/devstral-latest":[4e-7,0.000002,null,null],"devstral-latest":[4e-7,0.000002,null,null],"mistral/devstral-medium-latest":[4e-7,0.000002,null,null],"devstral-medium-latest":[4e-7,0.000002,null,null],"mistral/devstral-2512":[4e-7,0.000002,null,null],"devstral-2512":[4e-7,0.000002,null,null],"mistral/magistral-medium-2506":[0.000002,0.000005,null,null],"magistral-medium-2506":[0.000002,0.000005,null,null],"mistral/magistral-medium-2509":[0.000002,0.000005,null,null],"magistral-medium-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-latest":[0.000002,0.000005,null,null],"magistral-medium-latest":[0.000002,0.000005,null,null],"mistral/magistral-small-2506":[5e-7,0.0000015,null,null],"magistral-small-2506":[5e-7,0.0000015,null,null],"mistral/magistral-small-latest":[5e-7,0.0000015,null,null],"magistral-small-latest":[5e-7,0.0000015,null,null],"mistral/magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"mistral/mistral-large-2402":[0.000004,0.000012,null,null],"mistral/mistral-large-2407":[0.000003,0.000009,null,null],"mistral/mistral-large-2411":[0.000002,0.000006,null,null],"mistral-large-2411":[0.000002,0.000006,null,null],"mistral/mistral-large-latest":[5e-7,0.0000015,null,null],"mistral/mistral-large-3":[5e-7,0.0000015,null,null],"mistral/mistral-large-2512":[5e-7,0.0000015,null,null],"mistral-large-2512":[5e-7,0.0000015,null,null],"mistral/mistral-medium":[0.0000027,0.0000081,null,null],"mistral-medium":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral/mistral-medium-latest":[4e-7,0.000002,null,null],"mistral-medium-latest":[4e-7,0.000002,null,null],"mistral/mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral/mistral-small":[1e-7,3e-7,null,null],"mistral/mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral/mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral/ministral-3-3b-2512":[1e-7,1e-7,null,null],"ministral-3-3b-2512":[1e-7,1e-7,null,null],"mistral/ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"mistral/ministral-3-14b-2512":[2e-7,2e-7,null,null],"ministral-3-14b-2512":[2e-7,2e-7,null,null],"mistral/mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral/open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-7b":[2.5e-7,2.5e-7,null,null],"open-mistral-7b":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-nemo":[3e-7,3e-7,null,null],"open-mistral-nemo":[3e-7,3e-7,null,null],"mistral/open-mistral-nemo-2407":[3e-7,3e-7,null,null],"open-mistral-nemo-2407":[3e-7,3e-7,null,null],"mistral/open-mixtral-8x22b":[0.000002,0.000006,null,null],"open-mixtral-8x22b":[0.000002,0.000006,null,null],"mistral/open-mixtral-8x7b":[7e-7,7e-7,null,null],"open-mixtral-8x7b":[7e-7,7e-7,null,null],"mistral/pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-large-2411":[0.000002,0.000006,null,null],"pixtral-large-2411":[0.000002,0.000006,null,null],"mistral/pixtral-large-latest":[0.000002,0.000006,null,null],"pixtral-large-latest":[0.000002,0.000006,null,null],"moonshot/kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"moonshot/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshot/kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"moonshot/kimi-latest":[0.000002,0.000005,null,1.5e-7],"kimi-latest":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"moonshot/kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"moonshot/kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"moonshot/moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-auto":[0.000002,0.000005,null,null],"moonshot-v1-auto":[0.000002,0.000005,null,null],"morph/morph-v3-fast":[8e-7,0.0000012,null,null],"morph-v3-fast":[8e-7,0.0000012,null,null],"morph/morph-v3-large":[9e-7,0.0000019,null,null],"morph-v3-large":[9e-7,0.0000019,null,null],"nscale/Qwen/QwQ-32B":[1.8e-7,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-32B-Instruct":[6e-8,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"nscale/Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[3.75e-7,3.75e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[1.5e-7,1.5e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"nscale/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct":[9e-8,2.9e-7,null,null],"nscale/mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"nebius/deepseek-ai/DeepSeek-R1":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-0528":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2.5e-7,7.5e-7,null,null],"nebius/deepseek-ai/DeepSeek-V3":[5e-7,0.0000015,null,null],"nebius/deepseek-ai/DeepSeek-V3-0324":[5e-7,0.0000015,null,null],"nebius/google/gemma-3-27b-it":[6e-8,2e-7,null,null],"nebius/meta-llama/Llama-3.3-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Llama-Guard-3-8B":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-8B-Instruct":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Meta-Llama-3.1-405B-Instruct":[0.000001,0.000003,null,null],"nebius/mistralai/Mistral-Nemo-Instruct-2407":[4e-8,1.2e-7,null,null],"nebius/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000003,null,null],"nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nebius/Qwen/Qwen3-235B-A22B":[2e-7,6e-7,null,null],"nebius/Qwen/Qwen3-32B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-30B-A3B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-14B":[8e-8,2.4e-7,null,null],"nebius/Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"nebius/Qwen/QwQ-32B":[1.5e-7,4.5e-7,null,null],"nebius/Qwen/Qwen2.5-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"nebius/Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"nebius/Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"nebius/BAAI/bge-en-icl":[1e-8,0,null,null],"BAAI/bge-en-icl":[1e-8,0,null,null],"nebius/BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"nebius/intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"oci/meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"oci/meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-3":[0.000003,0.000015,null,null],"xai.grok-3":[0.000003,0.000015,null,null],"oci/xai.grok-3-fast":[0.000005,0.000025,null,null],"xai.grok-3-fast":[0.000005,0.000025,null,null],"oci/xai.grok-3-mini":[3e-7,5e-7,null,null],"xai.grok-3-mini":[3e-7,5e-7,null,null],"oci/xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"oci/xai.grok-4":[0.000003,0.000015,null,null],"xai.grok-4":[0.000003,0.000015,null,null],"oci/cohere.command-latest":[0.00000156,0.00000156,null,null],"cohere.command-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"oci/cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"oci/cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"oci/meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-4-fast":[0.000005,0.000025,null,null],"xai.grok-4-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.1-fast":[0.000005,0.000025,null,null],"xai.grok-4.1-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.20":[0.000003,0.000015,null,null],"xai.grok-4.20":[0.000003,0.000015,null,null],"oci/xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"oci/xai.grok-code-fast-1":[0.000005,0.000025,null,null],"xai.grok-code-fast-1":[0.000005,0.000025,null,null],"oci/google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"oci/google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"oci/google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"oci/cohere.embed-english-v3.0":[1e-7,0,null,null],"cohere.embed-english-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-v4.0":[1.2e-7,0,null,null],"cohere.embed-v4.0":[1.2e-7,0,null,null],"ollama/codegeex4":[0,0,null,null],"codegeex4":[0,0,null,null],"ollama/codegemma":[0,0,null,null],"codegemma":[0,0,null,null],"ollama/codellama":[0,0,null,null],"codellama":[0,0,null,null],"ollama/deepseek-coder-v2-base":[0,0,null,null],"deepseek-coder-v2-base":[0,0,null,null],"ollama/deepseek-coder-v2-instruct":[0,0,null,null],"deepseek-coder-v2-instruct":[0,0,null,null],"ollama/deepseek-coder-v2-lite-base":[0,0,null,null],"deepseek-coder-v2-lite-base":[0,0,null,null],"ollama/deepseek-coder-v2-lite-instruct":[0,0,null,null],"deepseek-coder-v2-lite-instruct":[0,0,null,null],"ollama/deepseek-v3.1:671b-cloud":[0,0,null,null],"deepseek-v3.1:671b-cloud":[0,0,null,null],"ollama/gpt-oss:120b-cloud":[0,0,null,null],"gpt-oss:120b-cloud":[0,0,null,null],"ollama/gpt-oss:20b-cloud":[0,0,null,null],"gpt-oss:20b-cloud":[0,0,null,null],"ollama/internlm2_5-20b-chat":[0,0,null,null],"internlm2_5-20b-chat":[0,0,null,null],"ollama/llama2":[0,0,null,null],"llama2":[0,0,null,null],"ollama/llama2-uncensored":[0,0,null,null],"llama2-uncensored":[0,0,null,null],"ollama/llama2:13b":[0,0,null,null],"llama2:13b":[0,0,null,null],"ollama/llama2:70b":[0,0,null,null],"llama2:70b":[0,0,null,null],"ollama/llama2:7b":[0,0,null,null],"llama2:7b":[0,0,null,null],"ollama/llama3":[0,0,null,null],"llama3":[0,0,null,null],"ollama/llama3.1":[0,0,null,null],"llama3.1":[0,0,null,null],"ollama/llama3:70b":[0,0,null,null],"llama3:70b":[0,0,null,null],"ollama/llama3:8b":[0,0,null,null],"llama3:8b":[0,0,null,null],"ollama/mistral":[0,0,null,null],"mistral":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.1":[0,0,null,null],"mistral-7B-Instruct-v0.1":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.2":[0,0,null,null],"mistral-7B-Instruct-v0.2":[0,0,null,null],"ollama/mistral-large-instruct-2407":[0,0,null,null],"mistral-large-instruct-2407":[0,0,null,null],"ollama/mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"ollama/mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"ollama/orca-mini":[0,0,null,null],"orca-mini":[0,0,null,null],"ollama/qwen3-coder:480b-cloud":[0,0,null,null],"qwen3-coder:480b-cloud":[0,0,null,null],"ollama/vicuna":[0,0,null,null],"vicuna":[0,0,null,null],"openrouter/anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"openrouter/anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"openrouter/anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"openrouter/bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"openrouter/deepseek/deepseek-chat":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"openrouter/deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"openrouter/deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"openrouter/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"openrouter/deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"openrouter/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"openrouter/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"openrouter/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"openrouter/google/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/google/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"openrouter/google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"openrouter/google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/mancer/weaver":[0.000005625,0.000005625,null,null],"mancer/weaver":[0.000005625,0.000005625,null,null],"openrouter/meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"openrouter/minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"openrouter/mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"openrouter/mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"openrouter/mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"openrouter/mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"openrouter/mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"openrouter/mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"openrouter/mistralai/mistral-large":[0.000008,0.000024,null,null],"mistralai/mistral-large":[0.000008,0.000024,null,null],"openrouter/mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"openrouter/moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"openrouter/openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openrouter/openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openrouter/openai/gpt-4":[0.00003,0.00006,null,null],"openai/gpt-4":[0.00003,0.00006,null,null],"openrouter/openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openrouter/openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openrouter/openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openrouter/openai/gpt-4o":[0.0000025,0.00001,null,null],"openrouter/openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openrouter/openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openrouter/openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openrouter/openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openrouter/openai/gpt-oss-120b":[1.8e-7,8e-7,null,null],"openrouter/openai/gpt-oss-20b":[2e-8,1e-7,null,null],"openrouter/openai/o1":[0.000015,0.00006,null,0.0000075],"openai/o1":[0.000015,0.00006,null,0.0000075],"openrouter/openai/o3-mini":[0.0000011,0.0000044,null,null],"openai/o3-mini":[0.0000011,0.0000044,null,null],"openrouter/openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openrouter/qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"openrouter/qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"openrouter/qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"openrouter/qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"openrouter/qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"openrouter/qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"openrouter/qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"openrouter/qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"openrouter/switchpoint/router":[8.5e-7,0.0000034,null,null],"switchpoint/router":[8.5e-7,0.0000034,null,null],"openrouter/undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/x-ai/grok-4":[0.000003,0.000015,null,null],"x-ai/grok-4":[0.000003,0.000015,null,null],"openrouter/z-ai/glm-4.6":[4e-7,0.00000175,null,null],"z-ai/glm-4.6":[4e-7,0.00000175,null,null],"openrouter/z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"openrouter/xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"openrouter/z-ai/glm-4.7":[4e-7,0.0000015,0,0],"z-ai/glm-4.7":[4e-7,0.0000015,0,0],"openrouter/z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"openrouter/z-ai/glm-5":[8e-7,0.00000256,null,null],"z-ai/glm-5":[8e-7,0.00000256,null,null],"openrouter/minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"openrouter/minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"openrouter/openrouter/auto":[0,0,null,null],"openrouter/auto":[0,0,null,null],"openrouter/openrouter/free":[0,0,null,null],"openrouter/free":[0,0,null,null],"openrouter/openrouter/bodybuilder":[0,0,null,null],"openrouter/bodybuilder":[0,0,null,null],"ovhcloud/DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"ovhcloud/Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"ovhcloud/Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"ovhcloud/Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"ovhcloud/Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"ovhcloud/Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"ovhcloud/Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"ovhcloud/Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"ovhcloud/Qwen3-32B":[8e-8,2.3e-7,null,null],"Qwen3-32B":[8e-8,2.3e-7,null,null],"ovhcloud/gpt-oss-120b":[8e-8,4e-7,null,null],"ovhcloud/gpt-oss-20b":[4e-8,1.5e-7,null,null],"gpt-oss-20b":[4e-8,1.5e-7,null,null],"ovhcloud/llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"ovhcloud/mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"palm/chat-bison":[1.25e-7,1.25e-7,null,null],"chat-bison":[1.25e-7,1.25e-7,null,null],"palm/chat-bison-001":[1.25e-7,1.25e-7,null,null],"chat-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison":[1.25e-7,1.25e-7,null,null],"text-bison":[1.25e-7,1.25e-7,null,null],"palm/text-bison-001":[1.25e-7,1.25e-7,null,null],"text-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"perplexity/codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"perplexity/codellama-70b-instruct":[7e-7,0.0000028,null,null],"codellama-70b-instruct":[7e-7,0.0000028,null,null],"perplexity/llama-2-70b-chat":[7e-7,0.0000028,null,null],"llama-2-70b-chat":[7e-7,0.0000028,null,null],"perplexity/llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"perplexity/llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"perplexity/mistral-7b-instruct":[7e-8,2.8e-7,null,null],"mistral-7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/pplx-70b-chat":[7e-7,0.0000028,null,null],"pplx-70b-chat":[7e-7,0.0000028,null,null],"perplexity/pplx-70b-online":[0,0.0000028,null,null],"pplx-70b-online":[0,0.0000028,null,null],"perplexity/pplx-7b-chat":[7e-8,2.8e-7,null,null],"pplx-7b-chat":[7e-8,2.8e-7,null,null],"perplexity/pplx-7b-online":[0,2.8e-7,null,null],"pplx-7b-online":[0,2.8e-7,null,null],"perplexity/sonar":[0.000001,0.000001,null,null],"sonar":[0.000001,0.000001,null,null],"perplexity/sonar-deep-research":[0.000002,0.000008,null,null],"sonar-deep-research":[0.000002,0.000008,null,null],"perplexity/sonar-medium-chat":[6e-7,0.0000018,null,null],"sonar-medium-chat":[6e-7,0.0000018,null,null],"perplexity/sonar-medium-online":[0,0.0000018,null,null],"sonar-medium-online":[0,0.0000018,null,null],"perplexity/sonar-pro":[0.000003,0.000015,null,null],"sonar-pro":[0.000003,0.000015,null,null],"perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"sonar-reasoning":[0.000001,0.000005,null,null],"perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"sonar-reasoning-pro":[0.000002,0.000008,null,null],"perplexity/sonar-small-chat":[7e-8,2.8e-7,null,null],"sonar-small-chat":[7e-8,2.8e-7,null,null],"perplexity/sonar-small-online":[0,2.8e-7,null,null],"sonar-small-online":[0,2.8e-7,null,null],"publicai/swiss-ai/apertus-8b-instruct":[0,0,null,null],"swiss-ai/apertus-8b-instruct":[0,0,null,null],"publicai/swiss-ai/apertus-70b-instruct":[0,0,null,null],"swiss-ai/apertus-70b-instruct":[0,0,null,null],"publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"publicai/BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"publicai/BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Instruct":[0,0,null,null],"allenai/Olmo-3-7B-Instruct":[0,0,null,null],"perplexity/pplx-embed-v1-0.6b":[4e-9,0,null,null],"pplx-embed-v1-0.6b":[4e-9,0,null,null],"perplexity/pplx-embed-v1-4b":[3e-8,0,null,null],"pplx-embed-v1-4b":[3e-8,0,null,null],"publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Think":[0,0,null,null],"allenai/Olmo-3-7B-Think":[0,0,null,null],"publicai/allenai/Olmo-3-32B-Think":[0,0,null,null],"allenai/Olmo-3-32B-Think":[0,0,null,null],"replicate/meta/llama-2-13b":[1e-7,5e-7,null,null],"meta/llama-2-13b":[1e-7,5e-7,null,null],"replicate/meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"replicate/meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-7b":[5e-8,2.5e-7,null,null],"meta/llama-2-7b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-8b":[5e-8,2.5e-7,null,null],"meta/llama-3-8b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"replicate/mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"replicate/openai/gpt-5":[0.00000125,0.00001,null,null],"replicateopenai/gpt-oss-20b":[9e-8,3.6e-7,null,null],"replicate/anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"replicate/ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"replicate/openai/gpt-4o":[0.0000025,0.00001,null,null],"replicate/openai/o4-mini":[0.000001,0.000004,null,null],"openai/o4-mini":[0.000001,0.000004,null,null],"replicate/openai/o1-mini":[0.0000011,0.0000044,null,null],"openai/o1-mini":[0.0000011,0.0000044,null,null],"replicate/openai/o1":[0.000015,0.00006,null,null],"replicate/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"replicate/qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"replicate/anthropic/claude-4-sonnet":[0.000003,0.000015,null,null],"replicate/deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"replicate/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"replicate/anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"replicate/anthropic/claude-3.5-sonnet":[0.00000375,0.00001875,null,null],"replicate/google/gemini-3-pro":[0.000002,0.000012,null,null],"google/gemini-3-pro":[0.000002,0.000012,null,null],"replicate/anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"replicate/openai/gpt-4.1":[0.000002,0.000008,null,null],"replicate/openai/gpt-4.1-nano":[1e-7,4e-7,null,null],"replicate/openai/gpt-4.1-mini":[4e-7,0.0000016,null,null],"replicate/openai/gpt-5-nano":[5e-8,4e-7,null,null],"replicate/openai/gpt-5-mini":[2.5e-7,0.000002,null,null],"replicate/google/gemini-2.5-flash":[0.0000025,0.0000025,null,null],"replicate/openai/gpt-oss-120b":[1.8e-7,7.2e-7,null,null],"replicate/deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"replicate/xai/grok-4":[0.0000072,0.000036,null,null],"xai/grok-4":[0.0000072,0.000036,null,null],"replicate/deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b":[0,0,null,null],"meta-textgeneration-llama-2-13b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b-f":[0,0,null,null],"meta-textgeneration-llama-2-13b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b":[0,0,null,null],"meta-textgeneration-llama-2-70b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b":[0,0,null,null],"meta-textgeneration-llama-2-7b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b-f":[0,0,null,null],"meta-textgeneration-llama-2-7b-f":[0,0,null,null],"sambanova/DeepSeek-R1":[0.000005,0.000007,null,null],"DeepSeek-R1":[0.000005,0.000007,null,null],"sambanova/DeepSeek-R1-Distill-Llama-70B":[7e-7,0.0000014,null,null],"sambanova/DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"sambanova/Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"sambanova/Llama-4-Scout-17B-16E-Instruct":[4e-7,7e-7,null,null],"sambanova/Meta-Llama-3.1-405B-Instruct":[0.000005,0.00001,null,null],"sambanova/Meta-Llama-3.1-8B-Instruct":[1e-7,2e-7,null,null],"sambanova/Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"sambanova/Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"sambanova/Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"sambanova/Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"sambanova/QwQ-32B":[5e-7,0.000001,null,null],"QwQ-32B":[5e-7,0.000001,null,null],"sambanova/Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"sambanova/Qwen3-32B":[4e-7,8e-7,null,null],"sambanova/DeepSeek-V3.1":[0.000003,0.0000045,null,null],"DeepSeek-V3.1":[0.000003,0.0000045,null,null],"sambanova/gpt-oss-120b":[0.000003,0.0000045,null,null],"text-completion-codestral/codestral-2405":[0,0,null,null],"text-completion-codestral/codestral-latest":[0,0,null,null],"together_ai/baai/bge-base-en-v1.5":[8e-9,0,null,null],"baai/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507":[6.5e-7,0.000003,null,null],"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"together_ai/deepseek-ai/DeepSeek-R1":[0.000003,0.000007,null,null],"together_ai/deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"together_ai/deepseek-ai/DeepSeek-V3":[0.00000125,0.00000125,null,null],"together_ai/deepseek-ai/DeepSeek-V3.1":[6e-7,0.0000017,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[2.7e-7,8.5e-7,null,null],"together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct":[1.8e-7,5.9e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[1.8e-7,1.8e-7,null,null],"together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1":[6e-7,6e-7,null,null],"together_ai/moonshotai/Kimi-K2-Instruct":[0.000001,0.000003,null,null],"together_ai/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"together_ai/openai/gpt-oss-20b":[5e-8,2e-7,null,null],"together_ai/zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"together_ai/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"together_ai/zai-org/GLM-4.7":[4.5e-7,0.000002,null,null],"together_ai/moonshotai/Kimi-K2.5":[5e-7,0.0000028,null,null],"together_ai/moonshotai/Kimi-K2-Instruct-0905":[0.000001,0.000003,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"v0/v0-1.0-md":[0.000003,0.000015,null,null],"v0-1.0-md":[0.000003,0.000015,null,null],"v0/v0-1.5-lg":[0.000015,0.000075,null,null],"v0-1.5-lg":[0.000015,0.000075,null,null],"v0/v0-1.5-md":[0.000003,0.000015,null,null],"v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"vercel_ai_gateway/amazon/nova-lite":[6e-8,2.4e-7,null,null],"amazon/nova-lite":[6e-8,2.4e-7,null,null],"vercel_ai_gateway/amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"vercel_ai_gateway/amazon/nova-pro":[8e-7,0.0000032,null,null],"amazon/nova-pro":[8e-7,0.0000032,null,null],"vercel_ai_gateway/amazon/titan-embed-text-v2":[2e-8,0,null,null],"amazon/titan-embed-text-v2":[2e-8,0,null,null],"vercel_ai_gateway/anthropic/claude-3-haiku":[2.5e-7,0.00000125,3e-7,3e-8],"vercel_ai_gateway/anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-3.5-haiku":[8e-7,0.000004,0.000001,8e-8],"vercel_ai_gateway/anthropic/claude-3.5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3.7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-4-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-4-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"vercel_ai_gateway/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/cohere/command-a":[0.0000025,0.00001,null,null],"cohere/command-a":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/command-r":[1.5e-7,6e-7,null,null],"cohere/command-r":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/cohere/command-r-plus":[0.0000025,0.00001,null,null],"cohere/command-r-plus":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/embed-v4.0":[1.2e-7,0,null,null],"vercel_ai_gateway/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"vercel_ai_gateway/deepseek/deepseek-v3":[9e-7,9e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"vercel_ai_gateway/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"vercel_ai_gateway/google/gemini-2.5-pro":[0.0000025,0.00001,null,null],"vercel_ai_gateway/google/gemini-embedding-001":[1.5e-7,0,null,null],"google/gemini-embedding-001":[1.5e-7,0,null,null],"vercel_ai_gateway/google/gemma-2-9b":[2e-7,2e-7,null,null],"google/gemma-2-9b":[2e-7,2e-7,null,null],"vercel_ai_gateway/google/text-embedding-005":[2.5e-8,0,null,null],"google/text-embedding-005":[2.5e-8,0,null,null],"vercel_ai_gateway/google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"vercel_ai_gateway/inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"vercel_ai_gateway/meta/llama-3-70b":[5.9e-7,7.9e-7,null,null],"vercel_ai_gateway/meta/llama-3-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.1-8b":[5e-8,8e-8,null,null],"meta/llama-3.1-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-1b":[1e-7,1e-7,null,null],"meta/llama-3.2-1b":[1e-7,1e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-4-maverick":[2e-7,6e-7,null,null],"meta/llama-4-maverick":[2e-7,6e-7,null,null],"vercel_ai_gateway/meta/llama-4-scout":[1e-7,3e-7,null,null],"meta/llama-4-scout":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/codestral":[3e-7,9e-7,null,null],"mistral/codestral":[3e-7,9e-7,null,null],"vercel_ai_gateway/mistral/codestral-embed":[1.5e-7,0,null,null],"mistral/codestral-embed":[1.5e-7,0,null,null],"vercel_ai_gateway/mistral/devstral-small":[7e-8,2.8e-7,null,null],"mistral/devstral-small":[7e-8,2.8e-7,null,null],"vercel_ai_gateway/mistral/magistral-medium":[0.000002,0.000005,null,null],"mistral/magistral-medium":[0.000002,0.000005,null,null],"vercel_ai_gateway/mistral/magistral-small":[5e-7,0.0000015,null,null],"mistral/magistral-small":[5e-7,0.0000015,null,null],"vercel_ai_gateway/mistral/ministral-3b":[4e-8,4e-8,null,null],"mistral/ministral-3b":[4e-8,4e-8,null,null],"vercel_ai_gateway/mistral/ministral-8b":[1e-7,1e-7,null,null],"mistral/ministral-8b":[1e-7,1e-7,null,null],"vercel_ai_gateway/mistral/mistral-embed":[1e-7,0,null,null],"mistral/mistral-embed":[1e-7,0,null,null],"vercel_ai_gateway/mistral/mistral-large":[0.000002,0.000006,null,null],"mistral/mistral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"vercel_ai_gateway/mistral/mistral-small":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"vercel_ai_gateway/mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/mistral/pixtral-large":[0.000002,0.000006,null,null],"mistral/pixtral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"vercel_ai_gateway/morph/morph-v3-fast":[8e-7,0.0000012,null,null],"vercel_ai_gateway/morph/morph-v3-large":[9e-7,0.0000019,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"vercel_ai_gateway/openai/gpt-4-turbo":[0.00001,0.00003,null,null],"openai/gpt-4-turbo":[0.00001,0.00003,null,null],"vercel_ai_gateway/openai/gpt-4.1":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/gpt-4.1-mini":[4e-7,0.0000016,0,1e-7],"vercel_ai_gateway/openai/gpt-4.1-nano":[1e-7,4e-7,0,2.5e-8],"vercel_ai_gateway/openai/gpt-4o":[0.0000025,0.00001,0,0.00000125],"vercel_ai_gateway/openai/gpt-4o-mini":[1.5e-7,6e-7,0,7.5e-8],"vercel_ai_gateway/openai/o1":[0.000015,0.00006,0,0.0000075],"vercel_ai_gateway/openai/o3":[0.000002,0.000008,0,5e-7],"openai/o3":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/o3-mini":[0.0000011,0.0000044,0,5.5e-7],"vercel_ai_gateway/openai/o4-mini":[0.0000011,0.0000044,0,2.75e-7],"vercel_ai_gateway/openai/text-embedding-3-large":[1.3e-7,0,null,null],"openai/text-embedding-3-large":[1.3e-7,0,null,null],"vercel_ai_gateway/openai/text-embedding-3-small":[2e-8,0,null,null],"openai/text-embedding-3-small":[2e-8,0,null,null],"vercel_ai_gateway/openai/text-embedding-ada-002":[1e-7,0,null,null],"openai/text-embedding-ada-002":[1e-7,0,null,null],"vercel_ai_gateway/perplexity/sonar":[0.000001,0.000001,null,null],"vercel_ai_gateway/perplexity/sonar-pro":[0.000003,0.000015,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"vercel_ai_gateway/vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-2":[0.000002,0.00001,null,null],"xai/grok-2":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-3":[0.000003,0.000015,null,null],"xai/grok-3":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-3-fast":[0.000005,0.000025,null,null],"xai/grok-3-fast":[0.000005,0.000025,null,null],"vercel_ai_gateway/xai/grok-3-mini":[3e-7,5e-7,null,null],"xai/grok-3-mini":[3e-7,5e-7,null,null],"vercel_ai_gateway/xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"vercel_ai_gateway/xai/grok-4":[0.000003,0.000015,null,null],"vercel_ai_gateway/zai/glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5":[6e-7,0.0000022,null,null],"vercel_ai_gateway/zai/glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-air":[2e-7,0.0000011,null,null],"vercel_ai_gateway/zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"vertex_ai/claude-3-5-haiku":[0.000001,0.000005,null,null],"claude-3-5-haiku":[0.000001,0.000005,null,null],"vertex_ai/claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"vertex_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-3-5-sonnet":[0.000003,0.000015,null,null],"claude-3-5-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"vertex_ai/claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-3-haiku":[2.5e-7,0.00000125,null,null],"claude-3-haiku":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-opus":[0.000015,0.000075,null,null],"claude-3-opus":[0.000015,0.000075,null,null],"vertex_ai/claude-3-opus@20240229":[0.000015,0.000075,null,null],"claude-3-opus@20240229":[0.000015,0.000075,null,null],"vertex_ai/claude-3-sonnet":[0.000003,0.000015,null,null],"claude-3-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"vertex_ai/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/mistralai/codestral-2@001":[3e-7,9e-7,null,null],"mistralai/codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/codestral-2":[3e-7,9e-7,null,null],"codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2@001":[3e-7,9e-7,null,null],"codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/mistralai/codestral-2":[3e-7,9e-7,null,null],"mistralai/codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2501":[2e-7,6e-7,null,null],"codestral-2501":[2e-7,6e-7,null,null],"vertex_ai/codestral@2405":[2e-7,6e-7,null,null],"codestral@2405":[2e-7,6e-7,null,null],"vertex_ai/codestral@latest":[2e-7,6e-7,null,null],"codestral@latest":[2e-7,6e-7,null,null],"vertex_ai/deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"vertex_ai/deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"vertex_ai/deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"vertex_ai/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"vertex_ai/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"vertex_ai/gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"vertex_ai/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"vertex_ai/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"vertex_ai/jamba-1.5":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-large":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-large@001":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-mini":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-mini@001":[2e-7,4e-7,null,null],"vertex_ai/meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"vertex_ai/meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama3-405b-instruct-maas":[0,0,null,null],"meta/llama3-405b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-70b-instruct-maas":[0,0,null,null],"meta/llama3-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-8b-instruct-maas":[0,0,null,null],"meta/llama3-8b-instruct-maas":[0,0,null,null],"vertex_ai/minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"vertex_ai/moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"vertex_ai/zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"vertex_ai/zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"vertex_ai/mistral-medium-3":[4e-7,0.000002,null,null],"mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistral-large-2411":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2407":[0.000002,0.000006,null,null],"mistral-large@2407":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2411-001":[0.000002,0.000006,null,null],"mistral-large@2411-001":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@latest":[0.000002,0.000006,null,null],"mistral-large@latest":[0.000002,0.000006,null,null],"vertex_ai/mistral-nemo@2407":[0.000003,0.000003,null,null],"mistral-nemo@2407":[0.000003,0.000003,null,null],"vertex_ai/mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"vertex_ai/mistral-small-2503":[0.000001,0.000003,null,null],"vertex_ai/mistral-small-2503@001":[0.000001,0.000003,null,null],"mistral-small-2503@001":[0.000001,0.000003,null,null],"vertex_ai/deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"vertex_ai/openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"vertex_ai/openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"voyage/rerank-2":[5e-8,0,null,null],"rerank-2":[5e-8,0,null,null],"voyage/rerank-2-lite":[2e-8,0,null,null],"rerank-2-lite":[2e-8,0,null,null],"voyage/rerank-2.5":[5e-8,0,null,null],"rerank-2.5":[5e-8,0,null,null],"voyage/rerank-2.5-lite":[2e-8,0,null,null],"rerank-2.5-lite":[2e-8,0,null,null],"voyage/voyage-2":[1e-7,0,null,null],"voyage-2":[1e-7,0,null,null],"voyage/voyage-3":[6e-8,0,null,null],"voyage-3":[6e-8,0,null,null],"voyage/voyage-3-large":[1.8e-7,0,null,null],"voyage-3-large":[1.8e-7,0,null,null],"voyage/voyage-3-lite":[2e-8,0,null,null],"voyage-3-lite":[2e-8,0,null,null],"voyage/voyage-3.5":[6e-8,0,null,null],"voyage-3.5":[6e-8,0,null,null],"voyage/voyage-3.5-lite":[2e-8,0,null,null],"voyage-3.5-lite":[2e-8,0,null,null],"voyage/voyage-code-2":[1.2e-7,0,null,null],"voyage-code-2":[1.2e-7,0,null,null],"voyage/voyage-code-3":[1.8e-7,0,null,null],"voyage-code-3":[1.8e-7,0,null,null],"voyage/voyage-context-3":[1.8e-7,0,null,null],"voyage-context-3":[1.8e-7,0,null,null],"voyage/voyage-finance-2":[1.2e-7,0,null,null],"voyage-finance-2":[1.2e-7,0,null,null],"voyage/voyage-large-2":[1.2e-7,0,null,null],"voyage-large-2":[1.2e-7,0,null,null],"voyage/voyage-law-2":[1.2e-7,0,null,null],"voyage-law-2":[1.2e-7,0,null,null],"voyage/voyage-lite-01":[1e-7,0,null,null],"voyage-lite-01":[1e-7,0,null,null],"voyage/voyage-lite-02-instruct":[1e-7,0,null,null],"voyage-lite-02-instruct":[1e-7,0,null,null],"voyage/voyage-multimodal-3":[1.2e-7,0,null,null],"voyage-multimodal-3":[1.2e-7,0,null,null],"wandb/openai/gpt-oss-120b":[0.015,0.06,null,null],"wandb/openai/gpt-oss-20b":[0.005,0.02,null,null],"wandb/zai-org/GLM-4.5":[0.055,0.2,null,null],"wandb/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.01,0.01,null,null],"wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct":[0.1,0.15,null,null],"wandb/Qwen/Qwen3-235B-A22B-Thinking-2507":[0.01,0.01,null,null],"wandb/moonshotai/Kimi-K2-Instruct":[6e-7,0.0000025,null,null],"wandb/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,1e-7],"wandb/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"wandb/meta-llama/Llama-3.1-8B-Instruct":[0.022,0.022,null,null],"wandb/deepseek-ai/DeepSeek-V3.1":[0.055,0.165,null,null],"wandb/deepseek-ai/DeepSeek-R1-0528":[0.135,0.54,null,null],"wandb/deepseek-ai/DeepSeek-V3-0324":[0.114,0.275,null,null],"wandb/meta-llama/Llama-3.3-70B-Instruct":[0.071,0.071,null,null],"wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct":[0.017,0.066,null,null],"wandb/microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"watsonx/ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/mistralai/mistral-large":[0.000003,0.00001,null,null],"watsonx/bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"watsonx/core42/jais-13b-chat":[0.0005,0.002,null,null],"core42/jais-13b-chat":[0.0005,0.002,null,null],"watsonx/google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"watsonx/ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"watsonx/ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"watsonx/ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"watsonx/meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"watsonx/meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"watsonx/meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"watsonx/meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"watsonx/meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"watsonx/mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"watsonx/mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"watsonx/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"watsonx/sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"grok-2":[0.000002,0.00001,null,null],"xai/grok-2-1212":[0.000002,0.00001,null,null],"grok-2-1212":[0.000002,0.00001,null,null],"xai/grok-2-latest":[0.000002,0.00001,null,null],"grok-2-latest":[0.000002,0.00001,null,null],"grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision-1212":[0.000002,0.00001,null,null],"grok-2-vision-1212":[0.000002,0.00001,null,null],"xai/grok-2-vision-latest":[0.000002,0.00001,null,null],"grok-2-vision-latest":[0.000002,0.00001,null,null],"xai/grok-3-beta":[0.000003,0.000015,null,7.5e-7],"grok-3-beta":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"xai/grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"xai/grok-3-latest":[0.000003,0.000015,null,7.5e-7],"grok-3-latest":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-fast":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"xai/grok-4-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-0709":[0.000003,0.000015,null,null],"grok-4-0709":[0.000003,0.000015,null,null],"xai/grok-4-latest":[0.000003,0.000015,null,null],"grok-4-latest":[0.000003,0.000015,null,null],"xai/grok-4-1-fast":[2e-7,5e-7,null,5e-8],"grok-4-1-fast":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-beta":[0.000005,0.000015,null,null],"grok-beta":[0.000005,0.000015,null,null],"xai/grok-code-fast":[2e-7,0.0000015,null,2e-8],"grok-code-fast":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"xai/grok-vision-beta":[0.000005,0.000015,null,null],"grok-vision-beta":[0.000005,0.000015,null,null],"zai/glm-5":[0.000001,0.0000032,0,2e-7],"glm-5":[0.000001,0.0000032,0,2e-7],"zai/glm-5-code":[0.0000012,0.000005,0,3e-7],"glm-5-code":[0.0000012,0.000005,0,3e-7],"zai/glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.6":[6e-7,0.0000022,0,1.1e-7],"glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5v":[6e-7,0.0000018,null,null],"glm-4.5v":[6e-7,0.0000018,null,null],"zai/glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-airx":[0.0000011,0.0000045,null,null],"glm-4.5-airx":[0.0000011,0.0000045,null,null],"zai/glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"zai/glm-4.5-flash":[0,0,null,null],"glm-4.5-flash":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"fireworks_ai/accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"fireworks_ai/accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"fireworks_ai/accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/":[1e-7,0,null,null],"accounts/fireworks/models/":[1e-7,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3":[0,0,null,null],"accounts/fireworks/models/whisper-v3":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"novita/deepseek/deepseek-v3.2":[2.69e-7,4e-7,null,1.345e-7],"novita/minimax/minimax-m2.1":[3e-7,0.0000012,null,3e-8],"novita/zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"novita/xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"novita/zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"novita/moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"novita/minimax/minimax-m2":[3e-7,0.0000012,null,3e-8],"novita/paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"novita/deepseek/deepseek-v3.2-exp":[2.7e-7,4.1e-7,null,null],"novita/qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"novita/zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"novita/zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"novita/kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"novita/qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"novita/qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"novita/deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"novita/deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"novita/qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"novita/qwen/qwen3-max":[0.00000211,0.00000845,null,null],"qwen/qwen3-max":[0.00000211,0.00000845,null,null],"novita/skywork/r1v4-lite":[2e-7,6e-7,null,null],"skywork/r1v4-lite":[2e-7,6e-7,null,null],"novita/deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"novita/moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"novita/qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"novita/qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"novita/openai/gpt-oss-120b":[5e-8,2.5e-7,null,null],"novita/moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"novita/deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"novita/zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"novita/qwen/qwen3-235b-a22b-thinking-2507":[3e-7,0.000003,null,null],"novita/meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"novita/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"novita/zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"novita/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"novita/qwen/qwen3-235b-a22b-instruct-2507":[9e-8,5.8e-7,null,null],"novita/deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"novita/meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"novita/qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"novita/mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"novita/minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"novita/deepseek/deepseek-r1-0528":[7e-7,0.0000025,null,3.5e-7],"novita/deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"novita/meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"novita/microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"novita/deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"novita/deepseek/deepseek-r1-distill-llama-70b":[8e-7,8e-7,null,null],"novita/meta-llama/llama-3-70b-instruct":[5.1e-7,7.4e-7,null,null],"novita/qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"novita/meta-llama/llama-4-scout-17b-16e-instruct":[1.8e-7,5.9e-7,null,null],"novita/nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"novita/qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"novita/sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"novita/baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"novita/sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"novita/baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"novita/baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"novita/baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"novita/deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"novita/qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"novita/qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"novita/google/gemma-3-27b-it":[1.19e-7,2e-7,null,null],"novita/deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"novita/deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"novita/Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"novita/gryphe/mythomax-l2-13b":[9e-8,9e-8,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"novita/qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"novita/zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"novita/qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"novita/baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"novita/qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"novita/qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"novita/qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"novita/meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"novita/sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"novita/qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"novita/qwen/qwen3-embedding-8b":[7e-8,0,null,null],"qwen/qwen3-embedding-8b":[7e-8,0,null,null],"novita/baai/bge-m3":[1e-8,1e-8,null,null],"baai/bge-m3":[1e-8,1e-8,null,null],"novita/qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"novita/baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"llamagate/llama-3.1-8b":[3e-8,5e-8,null,null],"llama-3.1-8b":[3e-8,5e-8,null,null],"llamagate/llama-3.2-3b":[4e-8,8e-8,null,null],"llama-3.2-3b":[4e-8,8e-8,null,null],"llamagate/mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"llamagate/qwen3-8b":[4e-8,1.4e-7,null,null],"qwen3-8b":[4e-8,1.4e-7,null,null],"llamagate/dolphin3-8b":[8e-8,1.5e-7,null,null],"dolphin3-8b":[8e-8,1.5e-7,null,null],"llamagate/deepseek-r1-8b":[1e-7,2e-7,null,null],"deepseek-r1-8b":[1e-7,2e-7,null,null],"llamagate/deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"llamagate/openthinker-7b":[8e-8,1.5e-7,null,null],"openthinker-7b":[8e-8,1.5e-7,null,null],"llamagate/qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"llamagate/deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"llamagate/codellama-7b":[6e-8,1.2e-7,null,null],"codellama-7b":[6e-8,1.2e-7,null,null],"llamagate/qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"llamagate/llava-7b":[1e-7,2e-7,null,null],"llava-7b":[1e-7,2e-7,null,null],"llamagate/gemma3-4b":[3e-8,8e-8,null,null],"gemma3-4b":[3e-8,8e-8,null,null],"llamagate/nomic-embed-text":[2e-8,0,null,null],"nomic-embed-text":[2e-8,0,null,null],"llamagate/qwen3-embedding-8b":[2e-8,0,null,null],"qwen3-embedding-8b":[2e-8,0,null,null],"sarvam/sarvam-m":[0,0,0,0],"sarvam-m":[0,0,0,0],"gemini/gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini/gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini/gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini/gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"vertex_ai/claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"bedrock_mantle/openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,null],"bedrock/us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"MiniMax-M2.7":[3e-7,0.0000012,3.75e-7,6e-8],"MiniMax-M2.7-highspeed":[6e-7,0.0000024,3.75e-7,6e-8]}
\ No newline at end of file
diff --git a/src/models.ts b/src/models.ts
index 12dff01..5e9eace 100644
--- a/src/models.ts
+++ b/src/models.ts
@@ -249,6 +249,7 @@ export function getShortModelName(model: string): string {
'gpt-5.4-mini': 'GPT-5.4 Mini',
'gpt-5.4': 'GPT-5.4',
'gpt-5.3-codex': 'GPT-5.3 Codex',
+ 'gpt-5.3': 'GPT-5.3',
'gpt-5.2-pro': 'GPT-5.2 Pro',
'gpt-5.2-low': 'GPT-5.2 Low',
'gpt-5.2': 'GPT-5.2',
@@ -263,6 +264,9 @@ export function getShortModelName(model: string): string {
'gemini-3-flash-preview': 'Gemini 3 Flash',
'gemini-2.5-pro': 'Gemini 2.5 Pro',
'gemini-2.5-flash': 'Gemini 2.5 Flash',
+ 'deepseek-coder-max': 'DeepSeek Coder Max',
+ 'deepseek-coder': 'DeepSeek Coder',
+ 'deepseek-r1': 'DeepSeek R1',
'o4-mini': 'o4-mini',
'o3': 'o3',
'MiniMax-M2.7-highspeed': 'MiniMax M2.7 Highspeed',
From 033da415c5892f85e2d68bc7fcc964531543e9fd Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Fri, 1 May 2026 08:16:14 -0700
Subject: [PATCH 005/115] Bump version to 0.9.5
---
CHANGELOG.md | 19 +++++++++++++++++++
README.md | 7 +++++++
package-lock.json | 4 ++--
package.json | 2 +-
4 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4820b56..d816b18 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,24 @@
# Changelog
+## 0.9.5 - 2026-05-01
+
+### Added (CLI)
+- **Homebrew tap.** `brew tap getagentseal/codeburn && brew install codeburn`.
+- **GPT-5.3 and DeepSeek display names.** GPT-5.3, DeepSeek Coder, DeepSeek Coder Max, DeepSeek R1.
+
+### Fixed (macOS menubar)
+- **Menubar refresh loop.** Was a single-fire Task that never repeated; now a proper while loop with 30s interval and `force: true`.
+- **Loading overlay flicker.** Counter-based `isLoading` so concurrent fetches don't toggle the overlay.
+- **Rapid tab switching race.** Previous fetch is cancelled when switching tabs; stale results are discarded via `Task.isCancelled`.
+- **Tab strip vs hero cost desync.** Provider-specific and all-provider data now fetched in parallel so costs arrive from the same snapshot.
+- **Stale menubar icon after wake.** `forceRefresh` now fetches today/all in parallel alongside the current selection.
+- **Accent color propagation.** `ThemeState` is now `@Observable`; removes `.id()` view hierarchy teardown hack.
+- **Currency flash on first switch.** Symbol and rate now apply atomically — no more wrong-symbol-with-old-rate flash.
+- **Export UI freeze.** Uses `terminationHandler` instead of `waitUntilExit`; HHmmss in filename prevents overwrite on double-export.
+- **CurrencyState concurrency.** Proper `@MainActor` isolation with `Sendable` conformance; `nonisolated` on pure static functions.
+- **Streak count.** Iterates calendar days instead of sparse history entries so gaps correctly break streaks.
+- **TrendBar chart flicker.** Stable date-based identity instead of UUID.
+
## 0.9.4 - 2026-04-29
### Added (CLI)
diff --git a/README.md b/README.md
index 7682e14..df9a68d 100644
--- a/README.md
+++ b/README.md
@@ -48,6 +48,13 @@ Everything runs locally. No wrapper, no proxy, no API keys. CodeBurn reads sessi
npm install -g codeburn
```
+Or with Homebrew:
+
+```bash
+brew tap getagentseal/codeburn
+brew install codeburn
+```
+
Or run directly without installing:
```bash
diff --git a/package-lock.json b/package-lock.json
index 7077b1b..9163725 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "codeburn",
- "version": "0.9.4",
+ "version": "0.9.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "codeburn",
- "version": "0.9.4",
+ "version": "0.9.5",
"license": "MIT",
"dependencies": {
"chalk": "^5.4.1",
diff --git a/package.json b/package.json
index 7bff793..fec34af 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "codeburn",
- "version": "0.9.4",
+ "version": "0.9.5",
"description": "See where your AI coding tokens go - by task, tool, model, and project",
"type": "module",
"main": "./dist/cli.js",
From 945da9f0bae3badf0de7cb1844c450e46cca95a0 Mon Sep 17 00:00:00 2001
From: ozymandiashh
Date: Sat, 2 May 2026 02:17:53 +0300
Subject: [PATCH 006/115] fix(codex): read full first line for session
validation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
`readFirstLine` allocated a fixed 16 KB buffer, but Codex CLI 0.128+
embeds the entire base_instructions / system prompt in the
`session_meta` line, pushing it past 20 KB. When the buffer doesn't
catch a newline, `isValidCodexSession` rejects the session, so every
recent Codex session is silently excluded from totals.
Switch to a streaming readline read so the first line is captured
regardless of length, and add a regression test that creates a
40 KB session_meta payload.
Locally, this changes my 30-day Codex total from €267 (only ~half
of sessions parsed) to €878 (all sessions parsed).
---
src/providers/codex.ts | 34 ++++++++++++++++++++++------------
tests/providers/codex.test.ts | 26 ++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index dc21aa8..60b9999 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -1,4 +1,6 @@
-import { readdir, stat, open } from 'fs/promises'
+import { readdir, stat } from 'fs/promises'
+import { createReadStream } from 'fs'
+import { createInterface } from 'readline'
import { basename, join } from 'path'
import { homedir } from 'os'
@@ -70,21 +72,29 @@ function sanitizeProject(cwd: string): string {
}
async function readFirstLine(filePath: string): Promise {
- let fh
+ // Codex CLI 0.128+ writes a session_meta line that can exceed 20 KB because
+ // it embeds the full base_instructions / system prompt. A fixed-size buffer
+ // would miss the trailing newline and reject the session as invalid.
+ // Stream the file via readline to read the first line regardless of length.
+ const stream = createReadStream(filePath, { encoding: 'utf-8' })
+ const rl = createInterface({ input: stream, crlfDelay: Infinity })
+ let firstLine: string | undefined
try {
- fh = await open(filePath, 'r')
- const buf = Buffer.alloc(16384)
- const { bytesRead } = await fh.read(buf, 0, 16384, 0)
- if (bytesRead === 0) return null
- const text = buf.toString('utf-8', 0, bytesRead)
- const nl = text.indexOf('\n')
- const line = nl >= 0 ? text.slice(0, nl) : text
- if (!line.trim()) return null
- return JSON.parse(line) as CodexEntry
+ for await (const line of rl) {
+ firstLine = line
+ break
+ }
} catch {
return null
} finally {
- await fh?.close()
+ rl.close()
+ stream.destroy()
+ }
+ if (!firstLine || !firstLine.trim()) return null
+ try {
+ return JSON.parse(firstLine) as CodexEntry
+ } catch {
+ return null
}
}
diff --git a/tests/providers/codex.test.ts b/tests/providers/codex.test.ts
index 9208811..cdf0dda 100644
--- a/tests/providers/codex.test.ts
+++ b/tests/providers/codex.test.ts
@@ -123,6 +123,32 @@ describe('codex provider - session discovery', () => {
expect(sessions).toHaveLength(1)
})
+ it('accepts session_meta lines larger than 16 KB (Codex CLI 0.128+)', async () => {
+ // Codex CLI 0.128+ embeds the full base_instructions / system prompt in the
+ // first session_meta line, often pushing it past 20 KB. Regression guard
+ // against a fixed-size buffer in readFirstLine.
+ const bigPayload = JSON.stringify({
+ type: 'session_meta',
+ timestamp: '2026-05-02T00:00:00Z',
+ payload: {
+ cwd: '/Users/test/big',
+ originator: 'codex-tui',
+ session_id: 'sess-big',
+ model: 'gpt-5.5',
+ base_instructions: { text: 'x'.repeat(40_000) },
+ },
+ })
+ await writeSession(tmpDir, '2026-05-02', 'rollout-big.jsonl', [
+ bigPayload,
+ tokenCount({ last: { input: 100, output: 50 }, total: { total: 150 } }),
+ ])
+
+ const provider = createCodexProvider(tmpDir)
+ const sessions = await provider.discoverSessions()
+ expect(sessions).toHaveLength(1)
+ expect(sessions[0]!.path).toContain('rollout-big.jsonl')
+ })
+
it('skips files without codex session_meta', async () => {
const [year, month, day] = '2026-04-14'.split('-')
const sessionDir = join(tmpDir, 'sessions', year!, month!, day!)
From 98bbe5b678ba61a64b973612c3a32c62be0326ce Mon Sep 17 00:00:00 2001
From: ozymandiashh
Date: Sat, 2 May 2026 02:30:17 +0300
Subject: [PATCH 007/115] review: cap first-line read size and add edge-case
tests
- Cap createReadStream at 1 MiB so a malformed file with no newline
cannot make readline buffer indefinitely (real session_meta lines
are 22-27 KB).
- Capture stream errors explicitly; readline's async iterator does
not always re-throw underlying stream errors per Node docs.
- Test: assert project is extracted from the >16 KB session_meta to
prove the line was actually parsed, not just discovered.
- Test: session_meta line with no trailing newline is still accepted.
- Test: empty rollout file is silently skipped.
---
src/providers/codex.ts | 18 ++++++++++++++---
tests/providers/codex.test.ts | 37 +++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 60b9999..8ba0235 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -71,14 +71,26 @@ function sanitizeProject(cwd: string): string {
return cwd.replace(/^\//, '').replace(/\//g, '-')
}
+// Cap how many bytes we'll read while looking for the first newline. Real
+// Codex session_meta lines are ~22-27 KB; this leaves plenty of headroom while
+// keeping memory bounded if a corrupt file has no newline at all.
+const FIRST_LINE_READ_CAP = 1024 * 1024
+
async function readFirstLine(filePath: string): Promise {
// Codex CLI 0.128+ writes a session_meta line that can exceed 20 KB because
// it embeds the full base_instructions / system prompt. A fixed-size buffer
// would miss the trailing newline and reject the session as invalid.
- // Stream the file via readline to read the first line regardless of length.
- const stream = createReadStream(filePath, { encoding: 'utf-8' })
+ // Stream the file via readline so we can read the first line regardless of
+ // length, with `end` capping the read to keep memory bounded.
+ const stream = createReadStream(filePath, {
+ encoding: 'utf-8',
+ start: 0,
+ end: FIRST_LINE_READ_CAP - 1,
+ })
const rl = createInterface({ input: stream, crlfDelay: Infinity })
let firstLine: string | undefined
+ let streamError: unknown
+ stream.once('error', (err) => { streamError = err })
try {
for await (const line of rl) {
firstLine = line
@@ -90,7 +102,7 @@ async function readFirstLine(filePath: string): Promise {
rl.close()
stream.destroy()
}
- if (!firstLine || !firstLine.trim()) return null
+ if (streamError || !firstLine || !firstLine.trim()) return null
try {
return JSON.parse(firstLine) as CodexEntry
} catch {
diff --git a/tests/providers/codex.test.ts b/tests/providers/codex.test.ts
index cdf0dda..b1fa2d3 100644
--- a/tests/providers/codex.test.ts
+++ b/tests/providers/codex.test.ts
@@ -147,6 +147,43 @@ describe('codex provider - session discovery', () => {
const sessions = await provider.discoverSessions()
expect(sessions).toHaveLength(1)
expect(sessions[0]!.path).toContain('rollout-big.jsonl')
+ // Confirm the large meta line was actually parsed (cwd extracted),
+ // not just that some path was registered.
+ expect(sessions[0]!.project).toBe('Users-test-big')
+ })
+
+ it('handles a session_meta line without trailing newline', async () => {
+ const [year, month, day] = '2026-05-02'.split('-')
+ const sessionDir = join(tmpDir, 'sessions', year!, month!, day!)
+ await mkdir(sessionDir, { recursive: true })
+ // Write a single session_meta line, deliberately without a trailing \n.
+ await writeFile(
+ join(sessionDir, 'rollout-no-nl.jsonl'),
+ JSON.stringify({
+ type: 'session_meta',
+ timestamp: '2026-05-02T00:00:00Z',
+ payload: {
+ cwd: '/Users/test/nonl',
+ originator: 'codex-tui',
+ session_id: 'sess-nonl',
+ model: 'gpt-5.5',
+ },
+ }),
+ )
+ const provider = createCodexProvider(tmpDir)
+ const sessions = await provider.discoverSessions()
+ expect(sessions).toHaveLength(1)
+ expect(sessions[0]!.project).toBe('Users-test-nonl')
+ })
+
+ it('returns no sessions for an empty rollout file', async () => {
+ const [year, month, day] = '2026-05-02'.split('-')
+ const sessionDir = join(tmpDir, 'sessions', year!, month!, day!)
+ await mkdir(sessionDir, { recursive: true })
+ await writeFile(join(sessionDir, 'rollout-empty.jsonl'), '')
+ const provider = createCodexProvider(tmpDir)
+ const sessions = await provider.discoverSessions()
+ expect(sessions).toHaveLength(0)
})
it('skips files without codex session_meta', async () => {
From ff8b20a79ee2189547bbc4b5ae1121ecff87267f Mon Sep 17 00:00:00 2001
From: ozymandiashh
Date: Sat, 2 May 2026 02:34:41 +0300
Subject: [PATCH 008/115] review: drop streamError flag, add multi-chunk and
torn-write tests
- Stop tracking a separate streamError flag. createReadStream's default
64 KiB highWaterMark means the stream may already be reading chunk 2
when we break out of the loop after yielding the first line; if that
later chunk errors, the flag could reject an otherwise-valid line.
readline's async iterator already re-throws stream errors on Node 16+,
which the existing catch handles.
- Test: 120 KB session_meta line forces multi-chunk line assembly.
- Test: truncated mid-write first line is rejected, not parsed as half
an object.
---
src/providers/codex.ts | 8 ++++---
tests/providers/codex.test.ts | 39 +++++++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 8ba0235..047b10d 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -89,8 +89,10 @@ async function readFirstLine(filePath: string): Promise {
})
const rl = createInterface({ input: stream, crlfDelay: Infinity })
let firstLine: string | undefined
- let streamError: unknown
- stream.once('error', (err) => { streamError = err })
+ // readline's async iterator re-throws underlying stream errors (ENOENT,
+ // EACCES, etc.) on Node 16+, which the catch below handles. Don't track a
+ // separate streamError flag: it can race with the read-ahead and reject a
+ // valid first line if a *later* chunk errors after we've already broken.
try {
for await (const line of rl) {
firstLine = line
@@ -102,7 +104,7 @@ async function readFirstLine(filePath: string): Promise {
rl.close()
stream.destroy()
}
- if (streamError || !firstLine || !firstLine.trim()) return null
+ if (!firstLine || !firstLine.trim()) return null
try {
return JSON.parse(firstLine) as CodexEntry
} catch {
diff --git a/tests/providers/codex.test.ts b/tests/providers/codex.test.ts
index b1fa2d3..c4f42fd 100644
--- a/tests/providers/codex.test.ts
+++ b/tests/providers/codex.test.ts
@@ -176,6 +176,45 @@ describe('codex provider - session discovery', () => {
expect(sessions[0]!.project).toBe('Users-test-nonl')
})
+ it('handles a session_meta line that spans multiple stream chunks', async () => {
+ // createReadStream defaults to a 64 KiB highWaterMark, so a >64 KiB first
+ // line forces readline to assemble the line across chunk boundaries.
+ const bigPayload = JSON.stringify({
+ type: 'session_meta',
+ timestamp: '2026-05-02T00:00:00Z',
+ payload: {
+ cwd: '/Users/test/multichunk',
+ originator: 'codex-tui',
+ session_id: 'sess-multichunk',
+ model: 'gpt-5.5',
+ base_instructions: { text: 'y'.repeat(120_000) },
+ },
+ })
+ await writeSession(tmpDir, '2026-05-02', 'rollout-multichunk.jsonl', [
+ bigPayload,
+ tokenCount({ last: { input: 100, output: 50 }, total: { total: 150 } }),
+ ])
+ const provider = createCodexProvider(tmpDir)
+ const sessions = await provider.discoverSessions()
+ expect(sessions).toHaveLength(1)
+ expect(sessions[0]!.project).toBe('Users-test-multichunk')
+ })
+
+ it('rejects truncated/torn first-line writes without throwing', async () => {
+ // Simulate a partial write where Codex started the session_meta object
+ // but hasn't flushed the rest yet (no closing brace, no newline).
+ const [year, month, day] = '2026-05-02'.split('-')
+ const sessionDir = join(tmpDir, 'sessions', year!, month!, day!)
+ await mkdir(sessionDir, { recursive: true })
+ await writeFile(
+ join(sessionDir, 'rollout-torn.jsonl'),
+ '{"type":"session_meta","timestamp":"2026-05-02T00:00:00Z","payload":{"cwd":"/x","originator":"codex-tui","session_id":"s","model":"gpt',
+ )
+ const provider = createCodexProvider(tmpDir)
+ const sessions = await provider.discoverSessions()
+ expect(sessions).toHaveLength(0)
+ })
+
it('returns no sessions for an empty rollout file', async () => {
const [year, month, day] = '2026-05-02'.split('-')
const sessionDir = join(tmpDir, 'sessions', year!, month!, day!)
From ffe14fecb70d0a3d86f05044471d6a1c27343224 Mon Sep 17 00:00:00 2001
From: ozymandiashh
Date: Sat, 2 May 2026 02:38:36 +0300
Subject: [PATCH 009/115] review: silence stream errors and tighten comment
wording
- Attach a no-op `stream.on('error', () => {})` so a late read-ahead
error that races with a successful first-line yield can never escape
as an unhandled 'error' event. Defense in depth: empirically the
destroy() in finally already swallows it on Node 18+, but the listener
removes any version-dependent surprise.
- Tighten the comment to say "up to FIRST_LINE_READ_CAP" instead of
"regardless of length"; the cap is real and worth being precise about.
---
src/providers/codex.ts | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 047b10d..c71f975 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -80,19 +80,21 @@ async function readFirstLine(filePath: string): Promise {
// Codex CLI 0.128+ writes a session_meta line that can exceed 20 KB because
// it embeds the full base_instructions / system prompt. A fixed-size buffer
// would miss the trailing newline and reject the session as invalid.
- // Stream the file via readline so we can read the first line regardless of
- // length, with `end` capping the read to keep memory bounded.
+ // Stream the file via readline so we can read the first line up to
+ // FIRST_LINE_READ_CAP, which keeps memory bounded if the file has no newline.
const stream = createReadStream(filePath, {
encoding: 'utf-8',
start: 0,
end: FIRST_LINE_READ_CAP - 1,
})
+ // Silence stream errors so a late read-ahead error after we've already
+ // returned the first line cannot escape as an unhandled 'error' event.
+ // readline's async iterator re-throws underlying stream errors (ENOENT,
+ // EACCES, etc.) on Node 16+, which the catch below handles for the cases
+ // that matter for validation.
+ stream.on('error', () => {})
const rl = createInterface({ input: stream, crlfDelay: Infinity })
let firstLine: string | undefined
- // readline's async iterator re-throws underlying stream errors (ENOENT,
- // EACCES, etc.) on Node 16+, which the catch below handles. Don't track a
- // separate streamError flag: it can race with the read-ahead and reject a
- // valid first line if a *later* chunk errors after we've already broken.
try {
for await (const line of rl) {
firstLine = line
From 791f2b077d4e90f818b8d5957e60f02aae910af6 Mon Sep 17 00:00:00 2001
From: Nihal Jain
Date: Sat, 2 May 2026 21:27:44 +0530
Subject: [PATCH 010/115] Add gpt-5.5 model display name for Codex
---
src/providers/codex.ts | 1 +
tests/provider-registry.test.ts | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index c71f975..5a5e824 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -11,6 +11,7 @@ import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from
const modelDisplayNames: Record = {
'codex-auto-review': 'Codex Auto Review',
+ 'gpt-5.5': 'GPT-5.5',
'gpt-5.4-mini': 'GPT-5.4 Mini',
'gpt-5.4': 'GPT-5.4',
'gpt-5.3-codex': 'GPT-5.3 Codex',
diff --git a/tests/provider-registry.test.ts b/tests/provider-registry.test.ts
index 5780d90..4497946 100644
--- a/tests/provider-registry.test.ts
+++ b/tests/provider-registry.test.ts
@@ -51,6 +51,7 @@ describe('provider registry', () => {
expect(codex.modelDisplayName('gpt-5.4')).toBe('GPT-5.4')
expect(codex.modelDisplayName('gpt-5.4-mini')).toBe('GPT-5.4 Mini')
expect(codex.modelDisplayName('gpt-5.3-codex')).toBe('GPT-5.3 Codex')
+ expect(codex.modelDisplayName('gpt-5.5')).toBe('GPT-5.5')
})
it('claude model display names are human-readable', () => {
From 8c845253c297287e721449bbc734bbd0b65070df Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Sat, 2 May 2026 08:58:23 -0700
Subject: [PATCH 011/115] Add Antigravity IDE provider
Fetch token usage from Antigravity's local language server via RPC.
Falls back to cached results when the IDE is closed.
---
src/parser.ts | 5 +
src/providers/antigravity.ts | 380 +++++++++++++++++++++++++++++++++++
src/providers/index.ts | 22 +-
3 files changed, 406 insertions(+), 1 deletion(-)
create mode 100644 src/providers/antigravity.ts
diff --git a/src/parser.ts b/src/parser.ts
index 530a99b..fa6a345 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -4,6 +4,7 @@ import { readSessionLines } from './fs-utils.js'
import { calculateCost, getShortModelName } from './models.js'
import { discoverAllSessions, getProvider } from './providers/index.js'
import { flushCodexCache } from './codex-cache.js'
+import { flushAntigravityCache } from './providers/antigravity.js'
import type { ParsedProviderCall } from './providers/types.js'
import type {
AssistantMessageContent,
@@ -437,6 +438,10 @@ async function parseProviderSources(
}
} finally {
if (providerName === 'codex') await flushCodexCache()
+ if (providerName === 'antigravity') {
+ const liveIds = new Set(sources.map(s => basename(s.path, '.pb')))
+ await flushAntigravityCache(liveIds)
+ }
}
const projectMap = new Map()
diff --git a/src/providers/antigravity.ts b/src/providers/antigravity.ts
new file mode 100644
index 0000000..6c93bb7
--- /dev/null
+++ b/src/providers/antigravity.ts
@@ -0,0 +1,380 @@
+import { readdir, readFile, mkdir, stat, open, rename, unlink } from 'fs/promises'
+import { execFile } from 'child_process'
+import { randomBytes } from 'crypto'
+import { basename, join } from 'path'
+import { homedir } from 'os'
+import https from 'https'
+
+import { calculateCost } from '../models.js'
+import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
+
+const CONVERSATIONS_DIR = join(homedir(), '.gemini', 'antigravity', 'conversations')
+const CACHE_VERSION = 1
+
+const RPC_TIMEOUT_MS = 5000
+const MAX_RESPONSE_BYTES = 16 * 1024 * 1024
+
+type ServerInfo = {
+ port: number
+ csrfToken: string
+}
+
+type ModelMap = Record
+
+type UsageEntry = {
+ model: string
+ inputTokens: string
+ outputTokens: string
+ thinkingOutputTokens?: string
+ responseOutputTokens?: string
+ apiProvider: string
+ responseId?: string
+}
+
+type GeneratorMetadata = {
+ stepIndices?: number[]
+ chatModel?: {
+ model: string
+ usage: UsageEntry
+ chatStartMetadata?: {
+ createdAt?: string
+ }
+ }
+}
+
+type CachedCascade = {
+ mtimeMs: number
+ sizeBytes: number
+ calls: ParsedProviderCall[]
+}
+
+type AntigravityCache = {
+ version: number
+ cascades: Record
+}
+
+let cachedServer: ServerInfo | null | undefined
+let cachedModelMap: ModelMap | undefined
+let memCache: AntigravityCache | null = null
+let cacheDirty = false
+let httpsAgent: https.Agent | undefined
+
+function getAgent(): https.Agent {
+ if (!httpsAgent) httpsAgent = new https.Agent({ rejectUnauthorized: false })
+ return httpsAgent
+}
+
+function getCacheDir(): string {
+ return process.env['CODEBURN_CACHE_DIR'] ?? join(homedir(), '.cache', 'codeburn')
+}
+
+function getCachePath(): string {
+ return join(getCacheDir(), 'antigravity-results.json')
+}
+
+async function loadCache(): Promise {
+ if (memCache) return memCache
+ try {
+ const raw = await readFile(getCachePath(), 'utf-8')
+ const cache = JSON.parse(raw) as AntigravityCache
+ if (cache.version === CACHE_VERSION && cache.cascades && typeof cache.cascades === 'object') {
+ memCache = cache
+ return cache
+ }
+ } catch { /* no cache or invalid */ }
+ memCache = { version: CACHE_VERSION, cascades: {} }
+ return memCache
+}
+
+async function flushCache(liveCascadeIds?: Set): Promise {
+ if (!memCache || !cacheDirty) return
+ try {
+ if (liveCascadeIds) {
+ for (const id of Object.keys(memCache.cascades)) {
+ if (!liveCascadeIds.has(id)) delete memCache.cascades[id]
+ }
+ }
+
+ const dir = getCacheDir()
+ await mkdir(dir, { recursive: true })
+ const finalPath = getCachePath()
+ const tempPath = `${finalPath}.${randomBytes(8).toString('hex')}.tmp`
+ const handle = await open(tempPath, 'w', 0o600)
+ try {
+ await handle.writeFile(JSON.stringify(memCache), { encoding: 'utf-8' })
+ await handle.sync()
+ } finally {
+ await handle.close()
+ }
+ try {
+ await rename(tempPath, finalPath)
+ } catch {
+ try { await unlink(tempPath) } catch { /* cleanup */ }
+ }
+ cacheDirty = false
+ } catch { /* best-effort */ }
+}
+
+async function detectServer(): Promise {
+ if (cachedServer !== undefined) return cachedServer
+ try {
+ const output = await new Promise((resolve, reject) => {
+ execFile('ps', ['-eo', 'args'], { encoding: 'utf-8', timeout: 3000 }, (err, stdout) => {
+ if (err) reject(err)
+ else resolve(stdout)
+ })
+ })
+ for (const line of output.split('\n')) {
+ if (!line.includes('language_server') || !line.includes('antigravity')) continue
+ if (!line.includes('--https_server_port')) continue
+
+ const csrfMatch = line.match(/--csrf_token\s+([0-9a-f-]{32,})/)
+ const portMatch = line.match(/--https_server_port\s+(\d+)/)
+ if (csrfMatch && portMatch) {
+ cachedServer = { csrfToken: csrfMatch[1]!, port: parseInt(portMatch[1]!, 10) }
+ return cachedServer
+ }
+ }
+ } catch { /* ps failed or timed out */ }
+ cachedServer = null
+ return null
+}
+
+async function rpc(server: ServerInfo, method: string, body: Record = {}): Promise {
+ return new Promise((resolve, reject) => {
+ const data = JSON.stringify(body)
+ const req = https.request({
+ hostname: '127.0.0.1',
+ port: server.port,
+ path: `/exa.language_server_pb.LanguageServerService/${method}`,
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Connect-Protocol-Version': '1',
+ 'X-Codeium-Csrf-Token': server.csrfToken,
+ 'Content-Length': Buffer.byteLength(data),
+ },
+ agent: getAgent(),
+ timeout: RPC_TIMEOUT_MS,
+ }, (res) => {
+ const chunks: Buffer[] = []
+ let totalBytes = 0
+ res.on('data', (chunk: Buffer) => {
+ totalBytes += chunk.length
+ if (totalBytes > MAX_RESPONSE_BYTES) {
+ res.destroy()
+ reject(new Error(`RPC ${method}: response too large`))
+ return
+ }
+ chunks.push(chunk)
+ })
+ res.on('end', () => {
+ if (res.statusCode !== 200) {
+ reject(new Error(`RPC ${method}: HTTP ${res.statusCode}`))
+ return
+ }
+ try {
+ resolve(JSON.parse(Buffer.concat(chunks).toString('utf-8')))
+ } catch {
+ reject(new Error(`RPC ${method}: invalid JSON`))
+ }
+ })
+ res.on('error', reject)
+ })
+ req.on('error', reject)
+ req.on('timeout', () => { req.destroy(); reject(new Error(`RPC ${method}: timeout`)) })
+ req.write(data)
+ req.end()
+ })
+}
+
+async function getModelMap(server: ServerInfo): Promise {
+ if (cachedModelMap) return cachedModelMap
+ const map: ModelMap = {}
+ try {
+ const resp = await rpc(server, 'GetAvailableModels') as {
+ response?: { models?: Record }
+ }
+ const models = resp?.response?.models
+ if (models) {
+ for (const [key, info] of Object.entries(models)) {
+ if (info.model) map[info.model] = key
+ }
+ }
+ } catch { /* best-effort */ }
+ cachedModelMap = map
+ return map
+}
+
+// Strip Antigravity-specific suffixes so the pricing DB can match
+function normalizePricingModel(model: string): string {
+ return model.replace(/-(high|low|agent)$/, '')
+}
+
+async function discoverSessions(): Promise {
+ const sources: SessionSource[] = []
+ let files: string[]
+ try {
+ files = await readdir(CONVERSATIONS_DIR)
+ } catch {
+ return sources
+ }
+
+ for (const file of files) {
+ if (!file.endsWith('.pb')) continue
+ sources.push({
+ path: join(CONVERSATIONS_DIR, file),
+ project: 'antigravity',
+ provider: 'antigravity',
+ })
+ }
+ return sources
+}
+
+function createParser(source: SessionSource, seenKeys: Set): SessionParser {
+ return {
+ async *parse(): AsyncGenerator {
+ const cascadeId = basename(source.path, '.pb')
+ const cache = await loadCache()
+
+ const s = await stat(source.path).catch(() => null)
+ if (!s) return
+
+ const cached = cache.cascades[cascadeId]
+ if (cached && cached.mtimeMs === s.mtimeMs && cached.sizeBytes === s.size) {
+ for (const call of cached.calls) {
+ if (seenKeys.has(call.deduplicationKey)) continue
+ seenKeys.add(call.deduplicationKey)
+ yield call
+ }
+ return
+ }
+
+ const server = await detectServer()
+ if (!server) {
+ if (cached) {
+ for (const call of cached.calls) {
+ if (seenKeys.has(call.deduplicationKey)) continue
+ seenKeys.add(call.deduplicationKey)
+ yield call
+ }
+ }
+ return
+ }
+
+ const modelMap = await getModelMap(server)
+
+ let metadata: GeneratorMetadata[]
+ try {
+ const resp = await rpc(server, 'GetCascadeTrajectoryGeneratorMetadata', { cascadeId }) as {
+ generatorMetadata?: GeneratorMetadata[]
+ }
+ metadata = resp?.generatorMetadata ?? []
+ } catch {
+ if (cached) {
+ for (const call of cached.calls) {
+ if (seenKeys.has(call.deduplicationKey)) continue
+ seenKeys.add(call.deduplicationKey)
+ yield call
+ }
+ }
+ return
+ }
+
+ const results: ParsedProviderCall[] = []
+
+ for (const entry of metadata) {
+ const usage = entry.chatModel?.usage
+ if (!usage) continue
+
+ const inputTokens = parseInt(usage.inputTokens ?? '0', 10)
+ const outputTokens = parseInt(usage.outputTokens ?? '0', 10)
+ const thinkingTokens = parseInt(usage.thinkingOutputTokens ?? '0', 10)
+ const responseTokens = parseInt(usage.responseOutputTokens ?? '0', 10)
+
+ if (inputTokens === 0 && outputTokens === 0) continue
+
+ const responseId = usage.responseId ?? ''
+ const dedupKey = `antigravity:${cascadeId}:${responseId}`
+
+ const model = modelMap[usage.model] ?? usage.model
+ const pricingModel = normalizePricingModel(model)
+ const timestamp = entry.chatModel?.chatStartMetadata?.createdAt ?? ''
+ const costUSD = calculateCost(pricingModel, inputTokens, responseTokens + thinkingTokens, 0, 0, 0)
+
+ results.push({
+ provider: 'antigravity',
+ model,
+ inputTokens,
+ outputTokens: responseTokens,
+ cacheCreationInputTokens: 0,
+ cacheReadInputTokens: 0,
+ cachedInputTokens: 0,
+ reasoningTokens: thinkingTokens,
+ webSearchRequests: 0,
+ costUSD,
+ tools: [],
+ bashCommands: [],
+ timestamp,
+ speed: 'standard',
+ deduplicationKey: dedupKey,
+ userMessage: '',
+ sessionId: cascadeId,
+ })
+ }
+
+ cache.cascades[cascadeId] = {
+ mtimeMs: s.mtimeMs,
+ sizeBytes: s.size,
+ calls: results,
+ }
+ cacheDirty = true
+
+ for (const call of results) {
+ if (seenKeys.has(call.deduplicationKey)) continue
+ seenKeys.add(call.deduplicationKey)
+ yield call
+ }
+ },
+ }
+}
+
+const modelDisplayNames: Record = {
+ 'gemini-3.1-pro-high': 'Gemini 3.1 Pro',
+ 'gemini-3.1-pro-low': 'Gemini 3.1 Pro (Low)',
+ 'gemini-3-flash': 'Gemini 3 Flash',
+ 'gemini-3-flash-agent': 'Gemini 3 Flash',
+ 'gemini-3.1-flash-image': 'Gemini 3.1 Flash',
+ 'gemini-3.1-flash-lite': 'Gemini 3.1 Flash Lite',
+ 'claude-opus-4-6-thinking': 'Opus 4.6',
+ 'claude-sonnet-4-6': 'Sonnet 4.6',
+}
+
+export function createAntigravityProvider(): Provider {
+ return {
+ name: 'antigravity',
+ displayName: 'Antigravity',
+
+ modelDisplayName(model: string): string {
+ return modelDisplayNames[model] ?? model
+ },
+
+ toolDisplayName(rawTool: string): string {
+ return rawTool
+ },
+
+ async discoverSessions(): Promise {
+ return discoverSessions()
+ },
+
+ createSessionParser(source: SessionSource, seenKeys: Set): SessionParser {
+ return createParser(source, seenKeys)
+ },
+ }
+}
+
+export async function flushAntigravityCache(liveCascadeIds?: Set): Promise {
+ await flushCache(liveCascadeIds)
+}
+
+export const antigravity = createAntigravityProvider()
diff --git a/src/providers/index.ts b/src/providers/index.ts
index a754ada..182c219 100644
--- a/src/providers/index.ts
+++ b/src/providers/index.ts
@@ -11,6 +11,21 @@ import { qwen } from './qwen.js'
import { rooCode } from './roo-code.js'
import type { Provider, SessionSource } from './types.js'
+let antigravityProvider: Provider | null = null
+let antigravityLoadAttempted = false
+
+async function loadAntigravity(): Promise {
+ if (antigravityLoadAttempted) return antigravityProvider
+ antigravityLoadAttempted = true
+ try {
+ const { antigravity } = await import('./antigravity.js')
+ antigravityProvider = antigravity
+ return antigravity
+ } catch {
+ return null
+ }
+}
+
let cursorProvider: Provider | null = null
let cursorLoadAttempted = false
@@ -59,8 +74,9 @@ async function loadCursorAgent(): Promise {
const coreProviders: Provider[] = [claude, codex, copilot, droid, gemini, kiloCode, kiro, openclaw, pi, omp, qwen, rooCode]
export async function getAllProviders(): Promise {
- const [cursor, opencode, cursorAgent] = await Promise.all([loadCursor(), loadOpenCode(), loadCursorAgent()])
+ const [ag, cursor, opencode, cursorAgent] = await Promise.all([loadAntigravity(), loadCursor(), loadOpenCode(), loadCursorAgent()])
const all = [...coreProviders]
+ if (ag) all.push(ag)
if (cursor) all.push(cursor)
if (opencode) all.push(opencode)
if (cursorAgent) all.push(cursorAgent)
@@ -83,6 +99,10 @@ export async function discoverAllSessions(providerFilter?: string): Promise {
+ if (name === 'antigravity') {
+ const ag = await loadAntigravity()
+ return ag ?? undefined
+ }
if (name === 'cursor') {
const cursor = await loadCursor()
return cursor ?? undefined
From 3ea4a624083a8c2d5af2c9e407684ff715cbd502 Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Sat, 2 May 2026 09:58:52 -0700
Subject: [PATCH 012/115] Add Goose provider, fix Codex fork dedup
Goose: read token usage from ~/.local/share/goose/sessions/sessions.db.
Lazy-loaded, zero overhead for non-Goose users.
Codex: use sessionId instead of file path in dedup key so forked
sessions sharing the same session_id don't double-count tokens.
---
src/providers/codex.ts | 2 +-
src/providers/goose.ts | 274 +++++++++++++++++++++++++++++++++++++++++
src/providers/index.ts | 22 +++-
3 files changed, 296 insertions(+), 2 deletions(-)
create mode 100644 src/providers/goose.ts
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 5a5e824..2c1f53a 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -299,7 +299,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
const model = resolveModel(entry.payload, sessionModel)
const timestamp = entry.timestamp ?? ''
- const dedupKey = `codex:${source.path}:${timestamp}:${cumulativeTotal}`
+ const dedupKey = `codex:${sessionId}:${timestamp}:${cumulativeTotal}`
if (seenKeys.has(dedupKey)) continue
seenKeys.add(dedupKey)
diff --git a/src/providers/goose.ts b/src/providers/goose.ts
new file mode 100644
index 0000000..b46fa13
--- /dev/null
+++ b/src/providers/goose.ts
@@ -0,0 +1,274 @@
+import { join } from 'path'
+import { homedir, platform } from 'os'
+
+import { calculateCost, getShortModelName } from '../models.js'
+import { isSqliteAvailable, getSqliteLoadError, openDatabase, type SqliteDatabase } from '../sqlite.js'
+import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
+
+type SessionRow = {
+ id: string
+ name: string
+ working_dir: string | null
+ created_at: string | null
+ updated_at: string | null
+ accumulated_input_tokens: number | null
+ accumulated_output_tokens: number | null
+ provider_name: string | null
+ model_config_json: string | null
+}
+
+type ModelConfig = {
+ model_name?: string
+ reasoning?: boolean
+}
+
+type MessageRow = {
+ message_id: string
+ role: string
+ content_json: string
+ created_timestamp: number
+}
+
+type ContentItem = {
+ type: string
+ toolCall?: { value?: { name?: string; arguments?: Record } }
+}
+
+const toolNameMap: Record = {
+ developer__shell: 'Bash',
+ developer__text_editor: 'Edit',
+ developer__read_file: 'Read',
+ developer__write_file: 'Write',
+ developer__list_directory: 'LS',
+ developer__search_files: 'Grep',
+ computercontroller__shell: 'Bash',
+}
+
+function sanitize(dir: string): string {
+ return dir.replace(/^\//, '').replace(/\//g, '-')
+}
+
+function getDbPath(): string {
+ const root = process.env['GOOSE_PATH_ROOT']
+ if (root) return join(root, 'data', 'sessions', 'sessions.db')
+
+ const p = platform()
+ if (p === 'darwin' || p === 'linux') {
+ const base = process.env['XDG_DATA_HOME'] ?? join(homedir(), '.local', 'share')
+ return join(base, 'goose', 'sessions', 'sessions.db')
+ }
+ return join(homedir(), 'AppData', 'Roaming', 'Block', 'goose', 'sessions', 'sessions.db')
+}
+
+function validateSchema(db: SqliteDatabase): boolean {
+ try {
+ db.query<{ cnt: number }>("SELECT COUNT(*) as cnt FROM sessions LIMIT 1")
+ db.query<{ cnt: number }>("SELECT COUNT(*) as cnt FROM messages LIMIT 1")
+ return true
+ } catch {
+ return false
+ }
+}
+
+function parseModelConfig(raw: string | null): ModelConfig {
+ if (!raw) return {}
+ try {
+ return JSON.parse(raw) as ModelConfig
+ } catch {
+ return {}
+ }
+}
+
+function extractToolsFromMessages(db: SqliteDatabase, sessionId: string): { tools: string[]; bashCommands: string[] } {
+ const tools: string[] = []
+ const bashCommands: string[] = []
+ const seen = new Set()
+
+ try {
+ const rows = db.query<{ content_json: string }>(
+ "SELECT content_json FROM messages WHERE session_id = ? AND role = 'assistant' AND content_json LIKE '%toolRequest%'",
+ [sessionId],
+ )
+
+ for (const row of rows) {
+ let items: ContentItem[]
+ try {
+ items = JSON.parse(row.content_json) as ContentItem[]
+ } catch {
+ continue
+ }
+ for (const item of items) {
+ if (item.type !== 'toolRequest') continue
+ const rawName = item.toolCall?.value?.name ?? ''
+ if (!rawName) continue
+ const mapped = toolNameMap[rawName] ?? rawName.split('__').pop() ?? rawName
+ if (!seen.has(mapped)) {
+ seen.add(mapped)
+ tools.push(mapped)
+ }
+ if (mapped === 'Bash') {
+ const cmd = item.toolCall?.value?.arguments?.command
+ if (typeof cmd === 'string') {
+ const first = cmd.split(/\s+/)[0] ?? ''
+ if (first && !bashCommands.includes(first)) bashCommands.push(first)
+ }
+ }
+ }
+ }
+ } catch { /* best-effort */ }
+
+ return { tools, bashCommands }
+}
+
+function getFirstUserMessage(db: SqliteDatabase, sessionId: string): string {
+ try {
+ const rows = db.query<{ content_json: string }>(
+ "SELECT content_json FROM messages WHERE session_id = ? AND role = 'user' ORDER BY created_timestamp ASC LIMIT 1",
+ [sessionId],
+ )
+ if (rows.length === 0) return ''
+ const items = JSON.parse(rows[0]!.content_json) as ContentItem[]
+ const text = items.find(i => i.type === 'text') as { text?: string } | undefined
+ return (text?.text ?? '').slice(0, 500)
+ } catch {
+ return ''
+ }
+}
+
+function createParser(source: SessionSource, seenKeys: Set): SessionParser {
+ return {
+ async *parse(): AsyncGenerator {
+ if (!isSqliteAvailable()) {
+ process.stderr.write(getSqliteLoadError() + '\n')
+ return
+ }
+
+ const segments = source.path.split(':')
+ const sessionId = segments[segments.length - 1]!
+ const dbPath = segments.slice(0, -1).join(':')
+
+ let db: SqliteDatabase
+ try {
+ db = openDatabase(dbPath)
+ } catch (err) {
+ process.stderr.write(`codeburn: cannot open Goose database: ${err instanceof Error ? err.message : err}\n`)
+ return
+ }
+
+ try {
+ if (!validateSchema(db)) return
+
+ const rows = db.query(
+ 'SELECT id, name, working_dir, created_at, updated_at, accumulated_input_tokens, accumulated_output_tokens, provider_name, model_config_json FROM sessions WHERE id = ?',
+ [sessionId],
+ )
+ if (rows.length === 0) return
+
+ const session = rows[0]!
+ const inputTokens = session.accumulated_input_tokens ?? 0
+ const outputTokens = session.accumulated_output_tokens ?? 0
+ if (inputTokens === 0 && outputTokens === 0) return
+
+ const dedupKey = `goose:${sessionId}`
+ if (seenKeys.has(dedupKey)) return
+ seenKeys.add(dedupKey)
+
+ const config = parseModelConfig(session.model_config_json)
+ const model = config.model_name ?? 'unknown'
+ const costUSD = calculateCost(model, inputTokens, outputTokens, 0, 0, 0)
+
+ const { tools, bashCommands } = extractToolsFromMessages(db, sessionId)
+ const userMessage = getFirstUserMessage(db, sessionId)
+
+ const raw = session.updated_at || session.created_at || ''
+ let ts = new Date(raw)
+ if (isNaN(ts.getTime())) ts = new Date(raw + 'Z')
+ if (isNaN(ts.getTime())) ts = new Date()
+
+ yield {
+ provider: 'goose',
+ model,
+ inputTokens,
+ outputTokens,
+ cacheCreationInputTokens: 0,
+ cacheReadInputTokens: 0,
+ cachedInputTokens: 0,
+ reasoningTokens: 0,
+ webSearchRequests: 0,
+ costUSD,
+ tools,
+ bashCommands,
+ timestamp: ts.toISOString(),
+ speed: 'standard',
+ deduplicationKey: dedupKey,
+ userMessage,
+ sessionId,
+ }
+ } finally {
+ db.close()
+ }
+ },
+ }
+}
+
+async function discoverFromDb(dbPath: string): Promise {
+ let db: SqliteDatabase
+ try {
+ db = openDatabase(dbPath)
+ } catch {
+ return []
+ }
+
+ try {
+ const rows = db.query(
+ 'SELECT id, name, working_dir, created_at, updated_at, accumulated_input_tokens, accumulated_output_tokens, provider_name, model_config_json FROM sessions ORDER BY updated_at DESC',
+ )
+
+ return rows
+ .filter(r => (r.accumulated_input_tokens ?? 0) > 0 || (r.accumulated_output_tokens ?? 0) > 0)
+ .map(row => ({
+ path: `${dbPath}:${row.id}`,
+ project: row.working_dir ? sanitize(row.working_dir) : 'goose',
+ provider: 'goose',
+ }))
+ } catch {
+ return []
+ } finally {
+ db.close()
+ }
+}
+
+const modelDisplayNames: Record = {
+ 'gpt-5.5': 'GPT-5.5',
+ 'gpt-5.4': 'GPT-5.4',
+ 'gpt-5.4-mini': 'GPT-5.4 Mini',
+ 'gpt-4o': 'GPT-4o',
+ 'gpt-4o-mini': 'GPT-4o Mini',
+}
+
+export function createGooseProvider(): Provider {
+ return {
+ name: 'goose',
+ displayName: 'Goose',
+
+ modelDisplayName(model: string): string {
+ return modelDisplayNames[model] ?? getShortModelName(model)
+ },
+
+ toolDisplayName(rawTool: string): string {
+ return toolNameMap[rawTool] ?? rawTool
+ },
+
+ async discoverSessions(): Promise {
+ if (!isSqliteAvailable()) return []
+ const dbPath = getDbPath()
+ return discoverFromDb(dbPath)
+ },
+
+ createSessionParser(source: SessionSource, seenKeys: Set): SessionParser {
+ return createParser(source, seenKeys)
+ },
+ }
+}
+
+export const goose = createGooseProvider()
diff --git a/src/providers/index.ts b/src/providers/index.ts
index 182c219..5cf8092 100644
--- a/src/providers/index.ts
+++ b/src/providers/index.ts
@@ -26,6 +26,21 @@ async function loadAntigravity(): Promise {
}
}
+let gooseProvider: Provider | null = null
+let gooseLoadAttempted = false
+
+async function loadGoose(): Promise {
+ if (gooseLoadAttempted) return gooseProvider
+ gooseLoadAttempted = true
+ try {
+ const { goose } = await import('./goose.js')
+ gooseProvider = goose
+ return goose
+ } catch {
+ return null
+ }
+}
+
let cursorProvider: Provider | null = null
let cursorLoadAttempted = false
@@ -74,9 +89,10 @@ async function loadCursorAgent(): Promise {
const coreProviders: Provider[] = [claude, codex, copilot, droid, gemini, kiloCode, kiro, openclaw, pi, omp, qwen, rooCode]
export async function getAllProviders(): Promise {
- const [ag, cursor, opencode, cursorAgent] = await Promise.all([loadAntigravity(), loadCursor(), loadOpenCode(), loadCursorAgent()])
+ const [ag, gs, cursor, opencode, cursorAgent] = await Promise.all([loadAntigravity(), loadGoose(), loadCursor(), loadOpenCode(), loadCursorAgent()])
const all = [...coreProviders]
if (ag) all.push(ag)
+ if (gs) all.push(gs)
if (cursor) all.push(cursor)
if (opencode) all.push(opencode)
if (cursorAgent) all.push(cursorAgent)
@@ -103,6 +119,10 @@ export async function getProvider(name: string): Promise {
const ag = await loadAntigravity()
return ag ?? undefined
}
+ if (name === 'goose') {
+ const gs = await loadGoose()
+ return gs ?? undefined
+ }
if (name === 'cursor') {
const cursor = await loadCursor()
return cursor ?? undefined
From db993196cf1dd0d0cce96b8525f17f1d00558500 Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Sat, 2 May 2026 10:14:14 -0700
Subject: [PATCH 013/115] Fix menubar ghost status item on macOS Tahoe
Set accessory activation policy in willFinishLaunching before the
focus chain forms. Debounce observation tracking to coalesce rapid
property changes into a single status bar refresh.
---
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 31 ++++++++++---------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index 47d1dc2..c9db46b 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -30,14 +30,16 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
let updateChecker = UpdateChecker()
/// Held for the lifetime of the app to opt out of App Nap and Automatic Termination.
private var backgroundActivity: NSObjectProtocol?
+ private var pendingRefreshWork: DispatchWorkItem?
+
+ func applicationWillFinishLaunching(_ notification: Notification) {
+ // Set accessory policy before the app's focus chain forms. On macOS Tahoe
+ // (26.x), setting it after didFinishLaunching causes ghost status items
+ // because the policy gets baked into the initial focus chain.
+ NSApp.setActivationPolicy(.accessory)
+ }
func applicationDidFinishLaunching(_ notification: Notification) {
- // On macOS Tahoe (26.x), accessory apps may fail to render their status item
- // if the activation policy is set before the status item is created. Starting
- // as a regular app and switching to accessory after setup works around this.
- NSApp.setActivationPolicy(.regular)
- NSApp.activate(ignoringOtherApps: true)
-
ProcessInfo.processInfo.automaticTerminationSupportEnabled = false
ProcessInfo.processInfo.disableSuddenTermination()
backgroundActivity = ProcessInfo.processInfo.beginActivity(
@@ -48,11 +50,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
restorePersistedCurrency()
setupStatusItem()
setupPopover()
-
- // Switch to accessory policy after status item is set up to hide from Dock
- DispatchQueue.main.async {
- NSApp.setActivationPolicy(.accessory)
- }
observeStore()
startRefreshLoop()
setupWakeObservers()
@@ -222,9 +219,15 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
_ = store.payload
_ = store.todayPayload
} onChange: { [weak self] in
- Task { @MainActor in
- self?.refreshStatusButton()
- self?.observeStore()
+ DispatchQueue.main.async {
+ guard let self else { return }
+ self.pendingRefreshWork?.cancel()
+ let work = DispatchWorkItem { [weak self] in
+ self?.refreshStatusButton()
+ self?.observeStore()
+ }
+ self.pendingRefreshWork = work
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.05, execute: work)
}
}
}
From c511627e877962014736dab66f17245caea52a05 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sat, 2 May 2026 11:54:58 -0700
Subject: [PATCH 014/115] Fix dashboard hang and ExperimentalWarning on Windows
Strip Ink v7 DEC mode 2026 synchronized output markers (BSU/ESU) on
Windows. ConPTY does not implement this protocol and buffers
indefinitely, causing the dashboard to hang with no output. The patch
intercepts standalone BSU/ESU writes on stdout while preserving full
interactivity (keyboard, live refresh, cursor management).
Fix ExperimentalWarning timing: the process.emit patch was restored
synchronously in the finally block, but Node defers the warning via
process.nextTick. Delay restore by one tick so the patch is still
active when the warning fires.
Closes #195
---
src/compare.tsx | 2 ++
src/dashboard.tsx | 2 ++
src/ink-win.ts | 14 ++++++++++++++
src/sqlite.ts | 2 +-
4 files changed, 19 insertions(+), 1 deletion(-)
create mode 100644 src/ink-win.ts
diff --git a/src/compare.tsx b/src/compare.tsx
index af1d147..d8f407d 100644
--- a/src/compare.tsx
+++ b/src/compare.tsx
@@ -7,6 +7,7 @@ import { formatCost } from './format.js'
import { parseAllSessions } from './parser.js'
import { getAllProviders } from './providers/index.js'
import type { ProjectSummary, DateRange } from './types.js'
+import { patchStdoutForWindows } from './ink-win.js'
const ORANGE = '#FF8C42'
const GREEN = '#5BF5A0'
@@ -448,6 +449,7 @@ export async function renderCompare(range: DateRange, provider: string): Promise
return
}
+ patchStdoutForWindows()
const projects = await parseAllSessions(range, provider)
const { waitUntilExit } = render(
process.exit(0)} />
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index f84254d..9233095 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -14,6 +14,7 @@ import { CompareView } from './compare.js'
import { getPlanUsageOrNull, type PlanUsage } from './plan-usage.js'
import { planDisplayName } from './plans.js'
import { join } from 'path'
+import { patchStdoutForWindows } from './ink-win.js'
type Period = 'today' | 'week' | '30days' | 'month' | 'all'
type View = 'dashboard' | 'optimize' | 'compare'
@@ -805,6 +806,7 @@ export async function renderDashboard(period: Period = 'week', provider: string
const filteredProjects = filterProjectsByName(await parseAllSessions(range, provider), projectFilter, excludeFilter)
const planUsage = await getPlanUsageOrNull()
const isTTY = process.stdin.isTTY && process.stdout.isTTY
+ patchStdoutForWindows()
if (isTTY) {
const { waitUntilExit } = render(
diff --git a/src/ink-win.ts b/src/ink-win.ts
new file mode 100644
index 0000000..5fd4bad
--- /dev/null
+++ b/src/ink-win.ts
@@ -0,0 +1,14 @@
+const BSU = '\x1b[?2026h'
+const ESU = '\x1b[?2026l'
+let patched = false
+
+export function patchStdoutForWindows(): void {
+ if (process.platform !== 'win32' || patched) return
+ patched = true
+
+ const origWrite = process.stdout.write.bind(process.stdout)
+ process.stdout.write = function (chunk: unknown, ...args: unknown[]): boolean {
+ if (chunk === BSU || chunk === ESU) return true
+ return (origWrite as Function)(chunk, ...args)
+ } as typeof process.stdout.write
+}
diff --git a/src/sqlite.ts b/src/sqlite.ts
index a1ca812..4c8b93a 100644
--- a/src/sqlite.ts
+++ b/src/sqlite.ts
@@ -71,7 +71,7 @@ function loadDriver(): boolean {
`(underlying error: ${message})`
return false
} finally {
- restore()
+ process.nextTick(restore)
}
}
From 87b660e584bbfe7477958083790bf162ffac324b Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sat, 2 May 2026 16:16:43 -0700
Subject: [PATCH 015/115] Fix hardcoded $ in forecast comparison text
The "vs last month" line in the forecast section used a hardcoded $
instead of the user's selected currency symbol and rate. Use
asCompactCurrency() which handles both.
Closes #197
---
mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
index d676fd3..ec27b48 100644
--- a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
@@ -515,7 +515,7 @@ private struct ForecastInsight: View {
guard previous > 0 else { return "no prior month" }
let diff = ((projection - previous) / previous) * 100
let sign = diff >= 0 ? "+" : ""
- return "\(sign)\(String(format: "%.0f", diff))% vs last month ($\(String(format: "%.0f", previous)))"
+ return "\(sign)\(String(format: "%.0f", diff))% vs last month (\(previous.asCompactCurrency()))"
}
}
From 73cf90cb2c95c1f2aef5376b2a0bd75504d43bc7 Mon Sep 17 00:00:00 2001
From: Nihal Jain
Date: Sun, 3 May 2026 05:46:33 +0530
Subject: [PATCH 016/115] Add Antigravity Gemini model IDs with preview pricing
aliases
---
src/models.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/models.ts b/src/models.ts
index 5e9eace..8f77d33 100644
--- a/src/models.ts
+++ b/src/models.ts
@@ -148,6 +148,12 @@ const BUILTIN_ALIASES: Record = {
'gpt-4.1': 'gpt-4.1',
'gpt-5.2-low': 'gpt-5',
'gpt-5.1-codex-high': 'gpt-5.3-codex',
+ // Antigravity Gemini model IDs resolve to preview-priced entries.
+ 'gemini-3.1-pro': 'gemini-3.1-pro-preview',
+ 'gemini-3-flash': 'gemini-3-flash-preview',
+ 'gemini-3.1-pro-high': 'gemini-3.1-pro-preview',
+ 'gemini-3.1-pro-low': 'gemini-3.1-pro-preview',
+ 'gemini-3-flash-agent': 'gemini-3-flash-preview',
}
let userAliases: Record = {}
From fe1007cc630d66266eb6920028758072215a4424 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sat, 2 May 2026 20:26:45 -0700
Subject: [PATCH 017/115] Add missing Antigravity model aliases for
gemini-3-pro, flash-image, flash-lite
---
src/models.ts | 3 +++
src/providers/antigravity.ts | 1 +
2 files changed, 4 insertions(+)
diff --git a/src/models.ts b/src/models.ts
index 8f77d33..c756fb2 100644
--- a/src/models.ts
+++ b/src/models.ts
@@ -154,6 +154,9 @@ const BUILTIN_ALIASES: Record = {
'gemini-3.1-pro-high': 'gemini-3.1-pro-preview',
'gemini-3.1-pro-low': 'gemini-3.1-pro-preview',
'gemini-3-flash-agent': 'gemini-3-flash-preview',
+ 'gemini-3-pro': 'gemini-3-pro-preview',
+ 'gemini-3.1-flash-image': 'gemini-3.1-flash-image-preview',
+ 'gemini-3.1-flash-lite': 'gemini-3.1-flash-lite-preview',
}
let userAliases: Record = {}
diff --git a/src/providers/antigravity.ts b/src/providers/antigravity.ts
index 6c93bb7..c14eb4f 100644
--- a/src/providers/antigravity.ts
+++ b/src/providers/antigravity.ts
@@ -340,6 +340,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
}
const modelDisplayNames: Record = {
+ 'gemini-3-pro': 'Gemini 3 Pro',
'gemini-3.1-pro-high': 'Gemini 3.1 Pro',
'gemini-3.1-pro-low': 'Gemini 3.1 Pro (Low)',
'gemini-3-flash': 'Gemini 3 Flash',
From 292265bf47d8321f418fd1e86a94aacbca163dfe Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sat, 2 May 2026 20:31:27 -0700
Subject: [PATCH 018/115] Add deno dx as a run method
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index df9a68d..905f093 100644
--- a/README.md
+++ b/README.md
@@ -60,6 +60,7 @@ Or run directly without installing:
```bash
npx codeburn
bunx codeburn
+dx codeburn
```
## Usage
From 341aa46f78a6f3d135e9893cb5e66672330c417c Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sat, 2 May 2026 20:59:24 -0700
Subject: [PATCH 019/115] Strip ANSI escapes from bash commands across all
providers
Use strip-ansi (already in dep tree via Ink) in extractBashCommands
to prevent terminal escape codes from leaking into dashboard bash
breakdown keys. Route goose, gemini, qwen, and openclaw through
extractBashCommands instead of inline split, which also gives them
multi-command extraction (matching claude/codex/droid behavior).
---
package-lock.json | 3 ++-
package.json | 3 ++-
src/bash-utils.ts | 6 ++++--
src/providers/gemini.ts | 4 ++--
src/providers/goose.ts | 6 ++++--
src/providers/openclaw.ts | 4 ++--
src/providers/qwen.ts | 4 ++--
7 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9163725..fc1cf6b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,8 @@
"chalk": "^5.4.1",
"commander": "^13.1.0",
"ink": "^7.0.0",
- "react": "^19.2.5"
+ "react": "^19.2.5",
+ "strip-ansi": "^7.2.0"
},
"bin": {
"codeburn": "dist/cli.js"
diff --git a/package.json b/package.json
index fec34af..718d763 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,8 @@
"chalk": "^5.4.1",
"commander": "^13.1.0",
"ink": "^7.0.0",
- "react": "^19.2.5"
+ "react": "^19.2.5",
+ "strip-ansi": "^7.2.0"
},
"devDependencies": {
"@types/node": "^22.19.17",
diff --git a/src/bash-utils.ts b/src/bash-utils.ts
index c578972..2e5fe0d 100644
--- a/src/bash-utils.ts
+++ b/src/bash-utils.ts
@@ -1,12 +1,14 @@
import { basename } from 'path'
+import stripAnsi from 'strip-ansi'
function stripQuotedStrings(command: string): string {
return command.replace(/"[^"]*"|'[^']*'/g, match => ' '.repeat(match.length))
}
-export function extractBashCommands(command: string): string[] {
- if (!command || !command.trim()) return []
+export function extractBashCommands(rawCommand: string): string[] {
+ if (!rawCommand || !rawCommand.trim()) return []
+ const command = stripAnsi(rawCommand)
const stripped = stripQuotedStrings(command)
const separatorRegex = /\s*(?:&&|;|\|)\s*/g
diff --git a/src/providers/gemini.ts b/src/providers/gemini.ts
index 48b3107..d00f0dc 100644
--- a/src/providers/gemini.ts
+++ b/src/providers/gemini.ts
@@ -3,6 +3,7 @@ import { join } from 'path'
import { homedir } from 'os'
import { calculateCost } from '../models.js'
+import { extractBashCommands } from '../bash-utils.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
const toolNameMap: Record = {
@@ -93,8 +94,7 @@ function parseSession(data: GeminiSession, seenKeys: Set): ParsedProvide
const mapped = toolNameMap[tc.displayName ?? ''] ?? toolNameMap[tc.name] ?? tc.displayName ?? tc.name
allTools.push(mapped)
if (mapped === 'Bash' && tc.args && typeof tc.args.command === 'string') {
- const cmd = tc.args.command.split(/\s+/)[0] ?? ''
- if (cmd) bashCommands.push(cmd)
+ bashCommands.push(...extractBashCommands(tc.args.command))
}
}
}
diff --git a/src/providers/goose.ts b/src/providers/goose.ts
index b46fa13..27f0c03 100644
--- a/src/providers/goose.ts
+++ b/src/providers/goose.ts
@@ -2,6 +2,7 @@ import { join } from 'path'
import { homedir, platform } from 'os'
import { calculateCost, getShortModelName } from '../models.js'
+import { extractBashCommands } from '../bash-utils.js'
import { isSqliteAvailable, getSqliteLoadError, openDatabase, type SqliteDatabase } from '../sqlite.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
@@ -109,8 +110,9 @@ function extractToolsFromMessages(db: SqliteDatabase, sessionId: string): { tool
if (mapped === 'Bash') {
const cmd = item.toolCall?.value?.arguments?.command
if (typeof cmd === 'string') {
- const first = cmd.split(/\s+/)[0] ?? ''
- if (first && !bashCommands.includes(first)) bashCommands.push(first)
+ for (const c of extractBashCommands(cmd)) {
+ if (!bashCommands.includes(c)) bashCommands.push(c)
+ }
}
}
}
diff --git a/src/providers/openclaw.ts b/src/providers/openclaw.ts
index 14575df..bc6da53 100644
--- a/src/providers/openclaw.ts
+++ b/src/providers/openclaw.ts
@@ -4,6 +4,7 @@ import { homedir } from 'os'
import { readSessionFile } from '../fs-utils.js'
import { calculateCost } from '../models.js'
+import { extractBashCommands } from '../bash-utils.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
const toolNameMap: Record = {
@@ -78,8 +79,7 @@ function extractTools(content: Array<{ type?: string; name?: string; arguments?:
const mapped = toolNameMap[block.name] ?? block.name
tools.push(mapped)
if (mapped === 'Bash' && block.arguments && typeof block.arguments.command === 'string') {
- const cmd = block.arguments.command.split(/\s+/)[0] ?? ''
- if (cmd) bashCommands.push(cmd)
+ bashCommands.push(...extractBashCommands(block.arguments.command))
}
}
}
diff --git a/src/providers/qwen.ts b/src/providers/qwen.ts
index 3b61ce4..427b5fd 100644
--- a/src/providers/qwen.ts
+++ b/src/providers/qwen.ts
@@ -4,6 +4,7 @@ import { homedir } from 'os'
import { readSessionFile } from '../fs-utils.js'
import { calculateCost } from '../models.js'
+import { extractBashCommands } from '../bash-utils.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
const toolNameMap: Record = {
@@ -66,8 +67,7 @@ function extractTools(parts: QwenPart[]): { tools: string[]; bashCommands: strin
const mapped = toolNameMap[part.functionCall.name] ?? part.functionCall.name
tools.push(mapped)
if (mapped === 'Bash' && part.functionCall.args && typeof part.functionCall.args['command'] === 'string') {
- const cmd = (part.functionCall.args['command'] as string).split(/\s+/)[0] ?? ''
- if (cmd) bashCommands.push(cmd)
+ bashCommands.push(...extractBashCommands(part.functionCall.args['command'] as string))
}
}
}
From 800c1062502cd587450192b0cdbf1bab40d1bc37 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sat, 2 May 2026 22:30:17 -0700
Subject: [PATCH 020/115] Fix streaming dedup: keep last occurrence of each
message.id within session files
Claude Code writes the same message.id multiple times during streaming.
The first write has partial tokens (often 1) and no tool_use blocks.
The last write has authoritative token counts and all tool_use/MCP blocks.
Old behavior kept the first occurrence (keep-first), silently dropping
real output tokens (+6.3% undercount) and all MCP tool calls.
New behavior keeps the last occurrence's content but preserves the first
occurrence's timestamp for correct date bucketing.
Validated against 21,390 real session files: 40.5% had duplicate IDs,
output tokens were understated by up to 78% per session.
---
src/parser.ts | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/parser.ts b/src/parser.ts
index fa6a345..97469d2 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -121,6 +121,30 @@ function parseApiCall(entry: JournalEntry): ParsedApiCall | null {
}
}
+function dedupeStreamingMessageIds(entries: JournalEntry[]): JournalEntry[] {
+ const firstIdxById = new Map()
+ const lastIdxById = new Map()
+ for (let i = 0; i < entries.length; i++) {
+ const id = getMessageId(entries[i]!)
+ if (!id) continue
+ if (!firstIdxById.has(id)) firstIdxById.set(id, i)
+ lastIdxById.set(id, i)
+ }
+ if (lastIdxById.size === 0) return entries
+ const result: JournalEntry[] = []
+ for (let i = 0; i < entries.length; i++) {
+ const id = getMessageId(entries[i]!)
+ if (id && lastIdxById.get(id) !== i) continue
+ if (id && firstIdxById.get(id) !== i) {
+ const firstTs = entries[firstIdxById.get(id)!]!.timestamp
+ result.push({ ...entries[i]!, timestamp: firstTs ?? entries[i]!.timestamp })
+ continue
+ }
+ result.push(entries[i]!)
+ }
+ return result
+}
+
function groupIntoTurns(entries: JournalEntry[], seenMsgIds: Set): ParsedTurn[] {
const turns: ParsedTurn[] = []
let currentUserMessage = ''
@@ -291,7 +315,8 @@ async function parseSessionFile(
if (entries.length === 0) return null
const sessionId = basename(filePath, '.jsonl')
- let turns = groupIntoTurns(entries, seenMsgIds)
+ const dedupedEntries = dedupeStreamingMessageIds(entries)
+ let turns = groupIntoTurns(dedupedEntries, seenMsgIds)
if (dateRange) {
// Bucket a turn by the timestamp of its first assistant call (when the cost was
// actually incurred). Filtering entries directly produced orphan assistant calls
From 8cf68e7a16344ff902991c6be290ff70d230b03b Mon Sep 17 00:00:00 2001
From: AgentSeal
Date: Sun, 3 May 2026 19:47:58 +0200
Subject: [PATCH 021/115] Fix Antigravity dedup collision and add Codex ChatGPT
Plus token estimation (#204)
- Antigravity: use loop index as fallback when responseId is empty to prevent
all entries in a cascade sharing the same dedup key; bump CACHE_VERSION to
force re-parse of stale cached data
- Codex: estimate tokens from message text when info is null (ChatGPT Plus/Pro
subscription sessions), feeding through calculateCost so subscription users
see API-equivalent spend; add costIsEstimated flag to ParsedProviderCall
- Update LiteLLM pricing snapshot
---
src/data/litellm-snapshot.json | 2 +-
src/providers/antigravity.ts | 7 +++--
src/providers/codex.ts | 55 +++++++++++++++++++++++++++++++++-
src/providers/types.ts | 1 +
4 files changed, 60 insertions(+), 5 deletions(-)
diff --git a/src/data/litellm-snapshot.json b/src/data/litellm-snapshot.json
index d3dde4e..25482e9 100644
--- a/src/data/litellm-snapshot.json
+++ b/src/data/litellm-snapshot.json
@@ -1 +1 @@
-{"ai21.j2-mid-v1":[0.0000125,0.0000125,null,null],"ai21.j2-ultra-v1":[0.0000188,0.0000188,null,null],"ai21.jamba-1-5-large-v1:0":[0.000002,0.000008,null,null],"ai21.jamba-1-5-mini-v1:0":[2e-7,4e-7,null,null],"ai21.jamba-instruct-v1:0":[5e-7,7e-7,null,null],"us.writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"us.writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"apac.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"apac.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"eu.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"eu.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"us.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"us.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"amazon.nova-2-multimodal-embeddings-v1:0":[1.35e-7,0,null,null],"amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"amazon.rerank-v1:0":[0,0,null,null],"amazon.titan-embed-image-v1":[8e-7,0,null,null],"amazon.titan-embed-text-v1":[1e-7,0,null,null],"amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"us.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"eu.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-7-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"global.anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-mythos-preview":[0,0,null,null],"global.anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-v1":[0.000008,0.000024,null,null],"anthropic.claude-v2:1":[0.000008,0.000024,null,null],"apac.amazon.nova-lite-v1:0":[6.3e-8,2.52e-7,null,null],"apac.amazon.nova-micro-v1:0":[3.7e-8,1.48e-7,null,null],"apac.amazon.nova-pro-v1:0":[8.4e-7,0.00000336,null,null],"apac.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"apac.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"apac.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"au.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"babbage-002":[4e-7,4e-7,null,null],"chatdolphin":[5e-7,5e-7,null,null],"chatgpt-4o-latest":[0.000005,0.000015,null,null],"gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"claude-haiku-4-5-20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"claude-3-7-sonnet-20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-haiku-20240307":[2.5e-7,0.00000125,3e-7,3e-8],"claude-3-opus-20240229":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-opus-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-sonnet-20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1-20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-5-20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6-20260205":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7-20260416":[0.000005,0.000025,0.00000625,5e-7],"claude-sonnet-4-20250514":[0.000003,0.000015,0.00000375,3e-7],"codex-mini-latest":[0.0000015,0.000006,null,3.75e-7],"cohere.command-light-text-v14":[3e-7,6e-7,null,null],"cohere.command-r-plus-v1:0":[0.000003,0.000015,null,null],"cohere.command-r-v1:0":[5e-7,0.0000015,null,null],"cohere.command-text-v14":[0.0000015,0.000002,null,null],"cohere.embed-english-v3":[1e-7,0,null,null],"cohere.embed-multilingual-v3":[1e-7,0,null,null],"cohere.embed-v4:0":[1.2e-7,0,null,null],"cohere.rerank-v3-5:0":[0,0,null,null],"command":[0.000001,0.000002,null,null],"command-a-03-2025":[0.0000025,0.00001,null,null],"command-light":[3e-7,6e-7,null,null],"command-nightly":[0.000001,0.000002,null,null],"command-r":[1.5e-7,6e-7,null,null],"command-r-08-2024":[1.5e-7,6e-7,null,null],"command-r-plus":[0.0000025,0.00001,null,null],"command-r-plus-08-2024":[0.0000025,0.00001,null,null],"command-r7b-12-2024":[1.5e-7,3.75e-8,null,null],"computer-use-preview":[0.000003,0.000012,null,null],"deepseek-chat":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"davinci-002":[0.000002,0.000002,null,null],"deepseek.v3-v1:0":[5.8e-7,0.00000168,null,null],"deepseek.v3.2":[6.2e-7,0.00000185,null,null],"dolphin":[5e-7,5e-7,null,null],"deepseek-v3-2-251201":[0,0,null,null],"glm-4-7-251222":[0,0,null,null],"kimi-k2-thinking-251104":[0,0,null,null],"doubao-embedding":[0,0,null,null],"doubao-embedding-large":[0,0,null,null],"doubao-embedding-large-text-240915":[0,0,null,null],"doubao-embedding-large-text-250515":[0,0,null,null],"doubao-embedding-text-240715":[0,0,null,null],"embed-english-light-v2.0":[1e-7,0,null,null],"embed-english-light-v3.0":[1e-7,0,null,null],"embed-english-v2.0":[1e-7,0,null,null],"embed-english-v3.0":[1e-7,0,null,null],"embed-multilingual-v2.0":[1e-7,0,null,null],"embed-multilingual-v3.0":[1e-7,0,null,null],"embed-multilingual-light-v3.0":[0.0001,0,null,null],"eu.amazon.nova-lite-v1:0":[7.8e-8,3.12e-7,null,null],"eu.amazon.nova-micro-v1:0":[4.6e-8,1.84e-7,null,null],"eu.amazon.nova-pro-v1:0":[0.00000105,0.0000042,null,null],"eu.anthropic.claude-3-5-haiku-20241022-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.meta.llama3-2-1b-instruct-v1:0":[1.3e-7,1.3e-7,null,null],"eu.meta.llama3-2-3b-instruct-v1:0":[1.9e-7,1.9e-7,null,null],"eu.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"fireworks-ai-4.1b-to-16b":[2e-7,2e-7,null,null],"fireworks-ai-56b-to-176b":[0.0000012,0.0000012,null,null],"fireworks-ai-above-16b":[9e-7,9e-7,null,null],"fireworks-ai-default":[0,0,null,null],"fireworks-ai-embedding-150m-to-350m":[1.6e-8,0,null,null],"fireworks-ai-embedding-up-to-150m":[8e-9,0,null,null],"fireworks-ai-moe-up-to-56b":[5e-7,5e-7,null,null],"fireworks-ai-up-to-4b":[2e-7,2e-7,null,null],"ft:babbage-002":[0.0000016,0.0000016,null,null],"ft:davinci-002":[0.000012,0.000012,null,null],"ft:gpt-3.5-turbo":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0125":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0613":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-1106":[0.000003,0.000006,null,null],"ft:gpt-4-0613":[0.00003,0.00006,null,null],"ft:gpt-4o-2024-08-06":[0.00000375,0.000015,null,0.000001875],"ft:gpt-4o-2024-11-20":[0.00000375,0.000015,0.000001875,null],"ft:gpt-4o-mini-2024-07-18":[3e-7,0.0000012,null,1.5e-7],"ft:gpt-4.1-2025-04-14":[0.000003,0.000012,null,7.5e-7],"ft:gpt-4.1-mini-2025-04-14":[8e-7,0.0000032,null,2e-7],"ft:gpt-4.1-nano-2025-04-14":[2e-7,8e-7,null,5e-8],"ft:o4-mini-2025-04-16":[0.000004,0.000016,null,0.000001],"gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini-2.0-flash-001":[1.5e-7,6e-7,null,3.75e-8],"gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini-embedding-001":[1.5e-7,0,null,null],"gemini-embedding-2-preview":[2e-7,0,null,null],"gemini-embedding-2":[2e-7,0,null,null],"gemini-flash-experimental":[0,0,null,null],"gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"google.gemma-3-12b-it":[9e-8,2.9e-7,null,null],"google.gemma-3-27b-it":[2.3e-7,3.8e-7,null,null],"google.gemma-3-4b-it":[4e-8,8e-8,null,null],"global.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"global.amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"gpt-3.5-turbo":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-1106":[0.000001,0.000002,null,null],"gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-4":[0.00003,0.00006,null,null],"gpt-4-0125-preview":[0.00001,0.00003,null,null],"gpt-4-0314":[0.00003,0.00006,null,null],"gpt-4-0613":[0.00003,0.00006,null,null],"gpt-4-1106-preview":[0.00001,0.00003,null,null],"gpt-4-turbo":[0.00001,0.00003,null,null],"gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"gpt-4-turbo-preview":[0.00001,0.00003,null,null],"gpt-4.1":[0.000002,0.000008,null,5e-7],"gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"gpt-4o":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"gpt-4o-audio-preview":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2025-06-03":[0.0000025,0.00001,null,null],"gpt-audio":[0.0000025,0.00001,null,null],"gpt-audio-1.5":[0.0000025,0.00001,null,null],"gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"gpt-audio-mini":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-12-15":[6e-7,0.0000024,null,null],"gpt-4o-mini":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-2024-07-18":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-audio-preview":[1.5e-7,6e-7,null,null],"gpt-4o-mini-audio-preview-2024-12-17":[1.5e-7,6e-7,null,null],"gpt-4o-mini-realtime-preview":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-search-preview":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-search-preview-2025-03-11":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"gpt-4o-realtime-preview":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2025-06-03":[0.000005,0.00002,null,0.0000025],"gpt-4o-search-preview":[0.0000025,0.00001,null,0.00000125],"gpt-4o-search-preview-2025-03-11":[0.0000025,0.00001,null,0.00000125],"gpt-4o-transcribe":[0.0000025,0.00001,null,null],"gpt-image-1.5":[0.000005,0.00001,null,0.00000125],"gpt-image-1.5-2025-12-16":[0.000005,0.00001,null,0.00000125],"gpt-5":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-pro":[0.000021,0.000168,null,null],"gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"gpt-5.5":[0.000005,0.00003,null,5e-7],"gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"gpt-5-pro":[0.000015,0.00012,null,null],"gpt-5-pro-2025-10-06":[0.000015,0.00012,null,null],"gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-nano":[5e-8,4e-7,null,5e-9],"gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"gpt-realtime":[0.000004,0.000016,null,4e-7],"gpt-realtime-1.5":[0.000004,0.000016,null,4e-7],"gpt-realtime-mini":[6e-7,0.0000024,null,null],"gpt-realtime-2025-08-28":[0.000004,0.000016,null,4e-7],"j2-light":[0.000003,0.000003,null,null],"j2-mid":[0.00001,0.00001,null,null],"j2-ultra":[0.000015,0.000015,null,null],"jamba-1.5":[2e-7,4e-7,null,null],"jamba-1.5-large":[0.000002,0.000008,null,null],"jamba-1.5-large@001":[0.000002,0.000008,null,null],"jamba-1.5-mini":[2e-7,4e-7,null,null],"jamba-1.5-mini@001":[2e-7,4e-7,null,null],"jamba-large-1.6":[0.000002,0.000008,null,null],"jamba-large-1.7":[0.000002,0.000008,null,null],"jamba-mini-1.6":[2e-7,4e-7,null,null],"jamba-mini-1.7":[2e-7,4e-7,null,null],"jina-reranker-v2-base-multilingual":[1.8e-8,1.8e-8,null,null],"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"jp.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"meta.llama2-13b-chat-v1":[7.5e-7,0.000001,null,null],"meta.llama2-70b-chat-v1":[0.00000195,0.00000256,null,null],"meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"minimax.minimax-m2":[3e-7,0.0000012,null,null],"minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"mistral.devstral-2-123b":[4e-7,0.000002,null,null],"mistral.magistral-small-2509":[5e-7,0.0000015,null,null],"mistral.ministral-3-14b-instruct":[2e-7,2e-7,null,null],"mistral.ministral-3-3b-instruct":[1e-7,1e-7,null,null],"mistral.ministral-3-8b-instruct":[1.5e-7,1.5e-7,null,null],"mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"mistral.mistral-large-2407-v1:0":[0.000003,0.000009,null,null],"mistral.mistral-large-3-675b-instruct":[5e-7,0.0000015,null,null],"mistral.mistral-small-2402-v1:0":[0.000001,0.000003,null,null],"mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"mistral.voxtral-mini-3b-2507":[4e-8,4e-8,null,null],"mistral.voxtral-small-24b-2507":[1e-7,3e-7,null,null],"moonshot.kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"multimodalembedding":[8e-7,0,null,null],"multimodalembedding@001":[8e-7,0,null,null],"nvidia.nemotron-nano-12b-v2":[2e-7,6e-7,null,null],"nvidia.nemotron-nano-9b-v2":[6e-8,2.3e-7,null,null],"nvidia.nemotron-nano-3-30b":[6e-8,2.4e-7,null,null],"nvidia.nemotron-super-3-120b":[1.5e-7,6.5e-7,null,null],"o1":[0.000015,0.00006,null,0.0000075],"o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"o1-pro":[0.00015,0.0006,null,null],"o1-pro-2025-03-19":[0.00015,0.0006,null,null],"o3":[0.000002,0.000008,null,5e-7],"o3-2025-04-16":[0.000002,0.000008,null,5e-7],"o3-deep-research":[0.00001,0.00004,null,0.0000025],"o3-deep-research-2025-06-26":[0.00001,0.00004,null,0.0000025],"o3-mini":[0.0000011,0.0000044,null,5.5e-7],"o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"o3-pro":[0.00002,0.00008,null,null],"o3-pro-2025-06-10":[0.00002,0.00008,null,null],"o4-mini":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-deep-research":[0.000002,0.000008,null,5e-7],"o4-mini-deep-research-2025-06-26":[0.000002,0.000008,null,5e-7],"omni-moderation-2024-09-26":[0,0,null,null],"omni-moderation-latest":[0,0,null,null],"openai.gpt-oss-120b-1:0":[1.5e-7,6e-7,null,null],"openai.gpt-oss-20b-1:0":[7e-8,3e-7,null,null],"openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-safeguard-20b":[7e-8,2e-7,null,null],"qwen.qwen3-coder-480b-a35b-v1:0":[2.2e-7,0.0000018,null,null],"qwen.qwen3-235b-a22b-2507-v1:0":[2.2e-7,8.8e-7,null,null],"qwen.qwen3-coder-30b-a3b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-32b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-next-80b-a3b":[1.5e-7,0.0000012,null,null],"qwen.qwen3-vl-235b-a22b":[5.3e-7,0.00000266,null,null],"qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"rerank-english-v2.0":[0,0,null,null],"rerank-english-v3.0":[0,0,null,null],"rerank-multilingual-v2.0":[0,0,null,null],"rerank-multilingual-v3.0":[0,0,null,null],"rerank-v3.5":[0,0,null,null],"text-embedding-004":[1e-7,0,null,null],"text-embedding-005":[1e-7,0,null,null],"text-embedding-3-large":[1.3e-7,0,null,null],"text-embedding-3-small":[2e-8,0,null,null],"text-embedding-ada-002":[1e-7,0,null,null],"text-embedding-ada-002-v2":[1e-7,0,null,null],"text-embedding-large-exp-03-07":[1e-7,0,null,null],"text-embedding-preview-0409":[6.25e-9,0,null,null],"text-moderation-007":[0,0,null,null],"text-moderation-latest":[0,0,null,null],"text-moderation-stable":[0,0,null,null],"text-multilingual-embedding-002":[1e-7,0,null,null],"text-unicorn":[0.00001,0.000028,null,null],"text-unicorn@001":[0.00001,0.000028,null,null],"together-ai-21.1b-41b":[8e-7,8e-7,null,null],"together-ai-4.1b-8b":[2e-7,2e-7,null,null],"together-ai-41.1b-80b":[9e-7,9e-7,null,null],"together-ai-8.1b-21b":[3e-7,3e-7,null,null],"together-ai-81.1b-110b":[0.0000018,0.0000018,null,null],"together-ai-embedding-151m-to-350m":[1.6e-8,0,null,null],"together-ai-embedding-up-to-150m":[8e-9,0,null,null],"together-ai-up-to-4b":[1e-7,1e-7,null,null],"us.amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"us.amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"us.amazon.nova-premier-v1:0":[0.0000025,0.0000125,null,null],"us.amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"us.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"us.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-opus-4-5-20251101-v1:0":[0.0000055,0.0000275,0.000006875,5.5e-7],"global.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"eu.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.deepseek.r1-v1:0":[0.00000135,0.0000054,null,null],"us.deepseek.v3.2":[6.2e-7,0.00000185,null,null],"eu.deepseek.v3.2":[7.4e-7,0.00000222,null,null],"us.meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"us.meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"us.meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"us.meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"us.meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"us.meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"us.meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"us.meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"us.meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"us.meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"us.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"zai.glm-4.7":[6e-7,0.0000022,null,null],"zai.glm-4.7-flash":[7e-8,4e-7,null,null],"zai.glm-5":[0.000001,0.0000032,null,null],"gpt-4o-mini-tts-2025-03-20":[0.0000025,0.00001,null,null],"gpt-4o-mini-tts-2025-12-15":[0.0000025,0.00001,null,null],"gpt-4o-mini-transcribe-2025-03-20":[0.00000125,0.000005,null,null],"gpt-4o-mini-transcribe-2025-12-15":[0.00000125,0.000005,null,null],"gpt-5-search-api":[0.00000125,0.00001,null,1.25e-7],"gpt-5-search-api-2025-10-14":[0.00000125,0.00001,null,1.25e-7],"gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"gpt-realtime-mini-2025-12-15":[6e-7,0.0000024,null,6e-8],"gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini-flash-latest":[3e-7,0.0000025,null,3e-8],"gemini-flash-lite-latest":[1e-7,4e-7,null,1e-8],"gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"gemini-exp-1206":[3e-7,0.0000025,null,3e-8],"anyscale/HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"anyscale/codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"anyscale/meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"anyscale/meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"anyscale/meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"azure/ada":[1e-7,0,null,null],"ada":[1e-7,0,null,null],"azure/codex-mini":[0.0000015,0.000006,null,3.75e-7],"codex-mini":[0.0000015,0.000006,null,3.75e-7],"azure/command-r-plus":[0.000003,0.000015,null,null],"azure_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"azure_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"azure_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"azure_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"azure/computer-use-preview":[0.000003,0.000012,null,null],"azure_ai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"gpt-oss-120b":[1.5e-7,6e-7,null,null],"azure_ai/model_router":[1.4e-7,0,null,null],"model_router":[1.4e-7,0,null,null],"azure/eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"azure/global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo":[5e-7,0.0000015,null,null],"gpt-35-turbo":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-1106":[0.000001,0.000002,null,null],"gpt-35-turbo-1106":[0.000001,0.000002,null,null],"azure/gpt-35-turbo-16k":[0.000003,0.000004,null,null],"gpt-35-turbo-16k":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-4":[0.00003,0.00006,null,null],"azure/gpt-4-0125-preview":[0.00001,0.00003,null,null],"azure/gpt-4-0613":[0.00003,0.00006,null,null],"azure/gpt-4-1106-preview":[0.00001,0.00003,null,null],"azure/gpt-4-32k":[0.00006,0.00012,null,null],"gpt-4-32k":[0.00006,0.00012,null,null],"azure/gpt-4-32k-0613":[0.00006,0.00012,null,null],"gpt-4-32k-0613":[0.00006,0.00012,null,null],"azure/gpt-4-turbo":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"azure/gpt-4.1":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"azure/gpt-4o":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"azure/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-11-20":[0.00000275,0.000011,null,0.00000125],"azure/gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"azure/gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"azure/gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"azure/gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"azure/gpt-realtime-2025-08-28":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"azure/gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"azure/gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"azure/gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-transcribe":[0.0000025,0.00001,null,null],"azure/gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"azure/gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-nano":[5e-8,4e-7,null,5e-9],"azure/gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"azure/gpt-5-pro":[0.000015,0.00012,null,null],"azure/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-pro":[0.000021,0.000168,null,null],"azure/gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"azure/gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"azure/gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"azure/mistral-large-2402":[0.000008,0.000024,null,null],"mistral-large-2402":[0.000008,0.000024,null,null],"azure/mistral-large-latest":[0.000008,0.000024,null,null],"mistral-large-latest":[0.000008,0.000024,null,null],"azure/o1":[0.000015,0.00006,null,0.0000075],"azure/o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"azure/o1-mini":[0.00000121,0.00000484,null,6.05e-7],"o1-mini":[0.00000121,0.00000484,null,6.05e-7],"azure/o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"azure/o1-preview":[0.000015,0.00006,null,0.0000075],"o1-preview":[0.000015,0.00006,null,0.0000075],"azure/o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"azure/o3":[0.000002,0.000008,null,5e-7],"azure/o3-2025-04-16":[0.000002,0.000008,null,5e-7],"azure/o3-deep-research":[0.00001,0.00004,null,0.0000025],"azure/o3-mini":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-pro":[0.00002,0.00008,null,null],"azure/o3-pro-2025-06-10":[0.00002,0.00008,null,null],"azure/o4-mini":[0.0000011,0.0000044,null,2.75e-7],"azure/o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"azure/text-embedding-3-large":[1.3e-7,0,null,null],"azure/text-embedding-3-small":[2e-8,0,null,null],"azure/text-embedding-ada-002":[1e-7,0,null,null],"azure/us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"azure/us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"azure/us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"azure/us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"azure/us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"azure_ai/Cohere-embed-v3-english":[1e-7,0,null,null],"Cohere-embed-v3-english":[1e-7,0,null,null],"azure_ai/Cohere-embed-v3-multilingual":[1e-7,0,null,null],"Cohere-embed-v3-multilingual":[1e-7,0,null,null],"azure_ai/Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"azure_ai/Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"azure_ai/Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"azure_ai/Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"azure_ai/Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"azure_ai/Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"azure_ai/Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"azure_ai/Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"azure_ai/Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"azure_ai/Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-4":[1.25e-7,5e-7,null,null],"Phi-4":[1.25e-7,5e-7,null,null],"azure_ai/Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"azure_ai/Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-reasoning":[1.25e-7,5e-7,null,null],"Phi-4-reasoning":[1.25e-7,5e-7,null,null],"azure_ai/MAI-DS-R1":[0.00000135,0.0000054,null,null],"MAI-DS-R1":[0.00000135,0.0000054,null,null],"azure_ai/cohere-rerank-v3-english":[0,0,null,null],"cohere-rerank-v3-english":[0,0,null,null],"azure_ai/cohere-rerank-v3-multilingual":[0,0,null,null],"cohere-rerank-v3-multilingual":[0,0,null,null],"azure_ai/cohere-rerank-v3.5":[0,0,null,null],"cohere-rerank-v3.5":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-pro":[0,0,null,null],"cohere-rerank-v4.0-pro":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-fast":[0,0,null,null],"cohere-rerank-v4.0-fast":[0,0,null,null],"azure_ai/deepseek-v3.2":[5.8e-7,0.00000168,null,null],"deepseek-v3.2":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-r1":[0.00000135,0.0000054,null,null],"deepseek-r1":[0.00000135,0.0000054,null,null],"azure_ai/deepseek-v3":[0.00000114,0.00000456,null,null],"deepseek-v3":[0.00000114,0.00000456,null,null],"azure_ai/deepseek-v3-0324":[0.00000114,0.00000456,null,null],"deepseek-v3-0324":[0.00000114,0.00000456,null,null],"azure_ai/embed-v-4-0":[1.2e-7,0,null,null],"embed-v-4-0":[1.2e-7,0,null,null],"azure_ai/global/grok-3":[0.000003,0.000015,null,null],"global/grok-3":[0.000003,0.000015,null,null],"azure_ai/global/grok-3-mini":[2.5e-7,0.00000127,null,null],"global/grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-3":[0.000003,0.000015,null,null],"grok-3":[0.000003,0.000015,null,null],"azure_ai/grok-3-mini":[2.5e-7,0.00000127,null,null],"grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-4":[0.000003,0.000015,null,null],"grok-4":[0.000003,0.000015,null,null],"azure_ai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-code-fast-1":[2e-7,0.0000015,null,null],"grok-code-fast-1":[2e-7,0.0000015,null,null],"azure_ai/jais-30b-chat":[0.0032,0.00971,null,null],"jais-30b-chat":[0.0032,0.00971,null,null],"azure_ai/jamba-instruct":[5e-7,7e-7,null,null],"jamba-instruct":[5e-7,7e-7,null,null],"azure_ai/kimi-k2.5":[6e-7,0.000003,null,null],"kimi-k2.5":[6e-7,0.000003,null,null],"azure_ai/ministral-3b":[4e-8,4e-8,null,null],"ministral-3b":[4e-8,4e-8,null,null],"azure_ai/mistral-large":[0.000004,0.000012,null,null],"mistral-large":[0.000004,0.000012,null,null],"azure_ai/mistral-large-2407":[0.000002,0.000006,null,null],"mistral-large-2407":[0.000002,0.000006,null,null],"azure_ai/mistral-large-latest":[0.000002,0.000006,null,null],"azure_ai/mistral-large-3":[5e-7,0.0000015,null,null],"mistral-large-3":[5e-7,0.0000015,null,null],"azure_ai/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral-medium-2505":[4e-7,0.000002,null,null],"azure_ai/mistral-nemo":[1.5e-7,1.5e-7,null,null],"mistral-nemo":[1.5e-7,1.5e-7,null,null],"azure_ai/mistral-small":[0.000001,0.000003,null,null],"mistral-small":[0.000001,0.000003,null,null],"azure_ai/mistral-small-2503":[1e-7,3e-7,null,null],"mistral-small-2503":[1e-7,3e-7,null,null],"bedrock/ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"bedrock/ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/moonshotai.kimi-k2.5":[6e-7,0.00000303,null,null],"bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"bedrock/ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"bedrock/ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"bedrock/eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"bedrock/eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"bedrock/eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"bedrock/eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"bedrock/eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"bedrock/eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"bedrock/sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"cerebras/llama-3.3-70b":[8.5e-7,0.0000012,null,null],"llama-3.3-70b":[8.5e-7,0.0000012,null,null],"cerebras/llama3.1-70b":[6e-7,6e-7,null,null],"llama3.1-70b":[6e-7,6e-7,null,null],"cerebras/llama3.1-8b":[1e-7,1e-7,null,null],"llama3.1-8b":[1e-7,1e-7,null,null],"cerebras/gpt-oss-120b":[3.5e-7,7.5e-7,null,null],"cerebras/qwen-3-32b":[4e-7,8e-7,null,null],"qwen-3-32b":[4e-7,8e-7,null,null],"cerebras/zai-glm-4.6":[0.00000225,0.00000275,null,null],"zai-glm-4.6":[0.00000225,0.00000275,null,null],"cerebras/zai-glm-4.7":[0.00000225,0.00000275,null,null],"zai-glm-4.7":[0.00000225,0.00000275,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"cloudflare/@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"cloudflare/@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"codestral/codestral-2405":[0,0,null,null],"codestral-2405":[0,0,null,null],"codestral/codestral-latest":[0,0,null,null],"codestral-latest":[0,0,null,null],"cohere/embed-v4.0":[1.2e-7,0,null,null],"embed-v4.0":[1.2e-7,0,null,null],"dashscope/qwen-coder":[3e-7,0.0000015,null,null],"qwen-coder":[3e-7,0.0000015,null,null],"dashscope/qwen-max":[0.0000016,0.0000064,null,null],"qwen-max":[0.0000016,0.0000064,null,null],"dashscope/qwen-plus":[4e-7,0.0000012,null,null],"qwen-plus":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"dashscope/qwen-turbo":[5e-8,2e-7,null,null],"qwen-turbo":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-latest":[5e-8,2e-7,null,null],"qwen-turbo-latest":[5e-8,2e-7,null,null],"dashscope/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"dashscope/qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"dashscope/qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"dashscope/qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"dashscope/qwq-plus":[8e-7,0.0000024,null,null],"qwq-plus":[8e-7,0.0000024,null,null],"databricks/databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks/databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks/databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks/databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks/databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks/databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks/databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks/databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks/databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks/databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks/databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks/databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks/databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks/databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks/databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks/databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"deepinfra/Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"deepinfra/Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"deepinfra/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"deepinfra/Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"deepinfra/Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"deepinfra/Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"deepinfra/Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"deepinfra/Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"deepinfra/Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"deepinfra/Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"deepinfra/allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"deepinfra/anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"deepinfra/anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"deepinfra/anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"deepinfra/deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"deepinfra/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"deepinfra/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"deepinfra/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"google/gemma-3-12b-it":[5e-8,1e-7,null,null],"deepinfra/google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"deepinfra/google/gemma-3-4b-it":[4e-8,8e-8,null,null],"google/gemma-3-4b-it":[4e-8,8e-8,null,null],"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"deepinfra/meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"deepinfra/meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"deepinfra/meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3-8B-Instruct":[3e-8,6e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"deepinfra/microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"deepinfra/microsoft/phi-4":[7e-8,1.4e-7,null,null],"microsoft/phi-4":[7e-8,1.4e-7,null,null],"deepinfra/mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1":[4e-7,4e-7,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"deepinfra/openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"deepinfra/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"deepinfra/zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"deepseek/deepseek-chat":[2.8e-7,4.2e-7,0,2.8e-8],"deepseek/deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"deepseek/deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek/deepseek-v3":[2.7e-7,0.0000011,0,7e-8],"deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"fireworks_ai/WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"fireworks_ai/glm-4p7":[6e-7,0.0000022,null,3e-7],"glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/kimi-k2p5":[6e-7,0.000003,null,1e-7],"kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"fireworks_ai/nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-base":[8e-9,0,null,null],"thenlper/gte-base":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-large":[1.6e-8,0,null,null],"thenlper/gte-large":[1.6e-8,0,null,null],"friendliai/meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"friendliai/meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"gemini/gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"vertex_ai/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"vertex_ai/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"vertex_ai/gemini-embedding-2-preview":[1.5e-7,0,null,null],"vertex_ai/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-embedding-001":[1.5e-7,0,null,null],"gemini/gemini-embedding-2-preview":[2e-7,0,null,null],"gemini/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-1.5-flash":[7.5e-8,0,null,null],"gemini-1.5-flash":[7.5e-8,0,null,null],"gemini/gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-001":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini/gemini-3.1-flash-image-preview":[2.5e-7,0.0000015,null,null],"gemini/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini/gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-latest":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-lite-latest":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"gemini/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"gemini/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-exp-1114":[0,0,null,null],"gemini-exp-1114":[0,0,null,null],"gemini/gemini-exp-1206":[0,0,null,null],"gemini/gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini/gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini/gemma-3-27b-it":[0,0,null,null],"gemma-3-27b-it":[0,0,null,null],"gemini/learnlm-1.5-pro-experimental":[0,0,null,null],"learnlm-1.5-pro-experimental":[0,0,null,null],"gemini/lyria-3-clip-preview":[0,0,null,null],"lyria-3-clip-preview":[0,0,null,null],"gemini/lyria-3-pro-preview":[0,0,null,null],"lyria-3-pro-preview":[0,0,null,null],"gigachat/GigaChat-2-Lite":[0,0,null,null],"GigaChat-2-Lite":[0,0,null,null],"gigachat/GigaChat-2-Max":[0,0,null,null],"GigaChat-2-Max":[0,0,null,null],"gigachat/GigaChat-2-Pro":[0,0,null,null],"GigaChat-2-Pro":[0,0,null,null],"gigachat/Embeddings":[0,0,null,null],"Embeddings":[0,0,null,null],"gigachat/Embeddings-2":[0,0,null,null],"Embeddings-2":[0,0,null,null],"gigachat/EmbeddingsGigaR":[0,0,null,null],"EmbeddingsGigaR":[0,0,null,null],"gmi/anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"gmi/anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"gmi/anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"gmi/anthropic/claude-opus-4":[0.000015,0.000075,null,null],"anthropic/claude-opus-4":[0.000015,0.000075,null,null],"gmi/openai/gpt-5.2":[0.00000175,0.000014,null,null],"openai/gpt-5.2":[0.00000175,0.000014,null,null],"gmi/openai/gpt-5.1":[0.00000125,0.00001,null,null],"openai/gpt-5.1":[0.00000125,0.00001,null,null],"gmi/openai/gpt-5":[0.00000125,0.00001,null,null],"openai/gpt-5":[0.00000125,0.00001,null,null],"gmi/openai/gpt-4o":[0.0000025,0.00001,null,null],"openai/gpt-4o":[0.0000025,0.00001,null,null],"gmi/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3-0324":[2.8e-7,8.8e-7,null,null],"gmi/google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"gmi/google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"gmi/moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"gmi/MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"baseten/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"baseten/nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"baseten/zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"baseten/zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"baseten/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"baseten/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"baseten/moonshotai/Kimi-K2-Thinking":[6e-7,0.0000025,null,null],"baseten/moonshotai/Kimi-K2-Instruct-0905":[6e-7,0.0000025,null,null],"baseten/openai/gpt-oss-120b":[1e-7,5e-7,null,null],"baseten/deepseek-ai/DeepSeek-V3.1":[5e-7,0.0000015,null,null],"baseten/deepseek-ai/DeepSeek-V3-0324":[7.7e-7,7.7e-7,null,null],"gmi/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"gmi/zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"gradient_ai/anthropic-claude-3-opus":[0.000015,0.000075,null,null],"anthropic-claude-3-opus":[0.000015,0.000075,null,null],"gradient_ai/anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"gradient_ai/anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"gradient_ai/anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"gradient_ai/deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"gradient_ai/llama3-8b-instruct":[2e-7,2e-7,null,null],"llama3-8b-instruct":[2e-7,2e-7,null,null],"gradient_ai/llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"gradient_ai/mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"gradient_ai/openai-o3":[0.000002,0.000008,null,null],"openai-o3":[0.000002,0.000008,null,null],"gradient_ai/openai-o3-mini":[0.0000011,0.0000044,null,null],"openai-o3-mini":[0.0000011,0.0000044,null,null],"lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"lemonade/gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"lemonade/gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"lemonade/Gemma-3-4b-it-GGUF":[0,0,null,null],"Gemma-3-4b-it-GGUF":[0,0,null,null],"lemonade/Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"amazon-nova/nova-micro-v1":[3.5e-8,1.4e-7,null,null],"nova-micro-v1":[3.5e-8,1.4e-7,null,null],"amazon-nova/nova-lite-v1":[6e-8,2.4e-7,null,null],"nova-lite-v1":[6e-8,2.4e-7,null,null],"amazon-nova/nova-premier-v1":[0.0000025,0.0000125,null,null],"nova-premier-v1":[0.0000025,0.0000125,null,null],"amazon-nova/nova-pro-v1":[8e-7,0.0000032,null,null],"nova-pro-v1":[8e-7,0.0000032,null,null],"groq/llama-3.1-8b-instant":[5e-8,8e-8,null,null],"llama-3.1-8b-instant":[5e-8,8e-8,null,null],"groq/llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"groq/gemma-7b-it":[5e-8,8e-8,null,null],"gemma-7b-it":[5e-8,8e-8,null,null],"groq/meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"groq/meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"groq/meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"groq/moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"groq/openai/gpt-oss-120b":[1.5e-7,6e-7,null,7.5e-8],"groq/openai/gpt-oss-20b":[7.5e-8,3e-7,null,3.75e-8],"groq/openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"groq/qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/QwQ-32B":[2e-7,2e-7,null,null],"hyperbolic/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen3-235B-A22B":[0.000002,0.000002,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1":[4e-7,4e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1-0528":[2.5e-7,2.5e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3":[2e-7,2e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3-0324":[4e-7,4e-7,null,null],"hyperbolic/meta-llama/Llama-3.2-3B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Llama-3.3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/moonshotai/Kimi-K2-Instruct":[0.000002,0.000002,null,null],"lambda_ai/deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-0528":[2e-7,6e-7,null,null],"deepseek-r1-0528":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-671b":[8e-7,8e-7,null,null],"deepseek-r1-671b":[8e-7,8e-7,null,null],"lambda_ai/deepseek-v3-0324":[2e-7,6e-7,null,null],"lambda_ai/hermes3-405b":[8e-7,8e-7,null,null],"hermes3-405b":[8e-7,8e-7,null,null],"lambda_ai/hermes3-70b":[1.2e-7,3e-7,null,null],"hermes3-70b":[1.2e-7,3e-7,null,null],"lambda_ai/hermes3-8b":[2.5e-8,4e-8,null,null],"hermes3-8b":[2.5e-8,4e-8,null,null],"lambda_ai/lfm-40b":[1e-7,2e-7,null,null],"lfm-40b":[1e-7,2e-7,null,null],"lambda_ai/lfm-7b":[2.5e-8,4e-8,null,null],"lfm-7b":[2.5e-8,4e-8,null,null],"lambda_ai/llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"lambda_ai/llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"lambda_ai/llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"lambda_ai/llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"lambda_ai/llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"lambda_ai/qwen3-32b-fp8":[5e-8,1e-7,null,null],"qwen3-32b-fp8":[5e-8,1e-7,null,null],"minimax/MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"mistral/codestral-2405":[0.000001,0.000003,null,null],"mistral/codestral-2508":[3e-7,9e-7,null,null],"codestral-2508":[3e-7,9e-7,null,null],"mistral/codestral-latest":[0.000001,0.000003,null,null],"mistral/codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"mistral/devstral-medium-2507":[4e-7,0.000002,null,null],"devstral-medium-2507":[4e-7,0.000002,null,null],"mistral/devstral-small-2505":[1e-7,3e-7,null,null],"devstral-small-2505":[1e-7,3e-7,null,null],"mistral/devstral-small-2507":[1e-7,3e-7,null,null],"devstral-small-2507":[1e-7,3e-7,null,null],"mistral/devstral-small-latest":[1e-7,3e-7,null,null],"devstral-small-latest":[1e-7,3e-7,null,null],"mistral/labs-devstral-small-2512":[1e-7,3e-7,null,null],"labs-devstral-small-2512":[1e-7,3e-7,null,null],"mistral/devstral-latest":[4e-7,0.000002,null,null],"devstral-latest":[4e-7,0.000002,null,null],"mistral/devstral-medium-latest":[4e-7,0.000002,null,null],"devstral-medium-latest":[4e-7,0.000002,null,null],"mistral/devstral-2512":[4e-7,0.000002,null,null],"devstral-2512":[4e-7,0.000002,null,null],"mistral/magistral-medium-2506":[0.000002,0.000005,null,null],"magistral-medium-2506":[0.000002,0.000005,null,null],"mistral/magistral-medium-2509":[0.000002,0.000005,null,null],"magistral-medium-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-latest":[0.000002,0.000005,null,null],"magistral-medium-latest":[0.000002,0.000005,null,null],"mistral/magistral-small-2506":[5e-7,0.0000015,null,null],"magistral-small-2506":[5e-7,0.0000015,null,null],"mistral/magistral-small-latest":[5e-7,0.0000015,null,null],"magistral-small-latest":[5e-7,0.0000015,null,null],"mistral/magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"mistral/mistral-large-2402":[0.000004,0.000012,null,null],"mistral/mistral-large-2407":[0.000003,0.000009,null,null],"mistral/mistral-large-2411":[0.000002,0.000006,null,null],"mistral-large-2411":[0.000002,0.000006,null,null],"mistral/mistral-large-latest":[5e-7,0.0000015,null,null],"mistral/mistral-large-3":[5e-7,0.0000015,null,null],"mistral/mistral-large-2512":[5e-7,0.0000015,null,null],"mistral-large-2512":[5e-7,0.0000015,null,null],"mistral/mistral-medium":[0.0000027,0.0000081,null,null],"mistral-medium":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral/mistral-medium-latest":[4e-7,0.000002,null,null],"mistral-medium-latest":[4e-7,0.000002,null,null],"mistral/mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral/mistral-small":[1e-7,3e-7,null,null],"mistral/mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral/mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral/ministral-3-3b-2512":[1e-7,1e-7,null,null],"ministral-3-3b-2512":[1e-7,1e-7,null,null],"mistral/ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"mistral/ministral-3-14b-2512":[2e-7,2e-7,null,null],"ministral-3-14b-2512":[2e-7,2e-7,null,null],"mistral/mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral/open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-7b":[2.5e-7,2.5e-7,null,null],"open-mistral-7b":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-nemo":[3e-7,3e-7,null,null],"open-mistral-nemo":[3e-7,3e-7,null,null],"mistral/open-mistral-nemo-2407":[3e-7,3e-7,null,null],"open-mistral-nemo-2407":[3e-7,3e-7,null,null],"mistral/open-mixtral-8x22b":[0.000002,0.000006,null,null],"open-mixtral-8x22b":[0.000002,0.000006,null,null],"mistral/open-mixtral-8x7b":[7e-7,7e-7,null,null],"open-mixtral-8x7b":[7e-7,7e-7,null,null],"mistral/pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-large-2411":[0.000002,0.000006,null,null],"pixtral-large-2411":[0.000002,0.000006,null,null],"mistral/pixtral-large-latest":[0.000002,0.000006,null,null],"pixtral-large-latest":[0.000002,0.000006,null,null],"moonshot/kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"moonshot/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshot/kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"moonshot/kimi-latest":[0.000002,0.000005,null,1.5e-7],"kimi-latest":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"moonshot/kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"moonshot/kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"moonshot/moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-auto":[0.000002,0.000005,null,null],"moonshot-v1-auto":[0.000002,0.000005,null,null],"morph/morph-v3-fast":[8e-7,0.0000012,null,null],"morph-v3-fast":[8e-7,0.0000012,null,null],"morph/morph-v3-large":[9e-7,0.0000019,null,null],"morph-v3-large":[9e-7,0.0000019,null,null],"nscale/Qwen/QwQ-32B":[1.8e-7,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-32B-Instruct":[6e-8,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"nscale/Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[3.75e-7,3.75e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[1.5e-7,1.5e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"nscale/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct":[9e-8,2.9e-7,null,null],"nscale/mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"nebius/deepseek-ai/DeepSeek-R1":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-0528":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2.5e-7,7.5e-7,null,null],"nebius/deepseek-ai/DeepSeek-V3":[5e-7,0.0000015,null,null],"nebius/deepseek-ai/DeepSeek-V3-0324":[5e-7,0.0000015,null,null],"nebius/google/gemma-3-27b-it":[6e-8,2e-7,null,null],"nebius/meta-llama/Llama-3.3-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Llama-Guard-3-8B":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-8B-Instruct":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Meta-Llama-3.1-405B-Instruct":[0.000001,0.000003,null,null],"nebius/mistralai/Mistral-Nemo-Instruct-2407":[4e-8,1.2e-7,null,null],"nebius/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000003,null,null],"nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nebius/Qwen/Qwen3-235B-A22B":[2e-7,6e-7,null,null],"nebius/Qwen/Qwen3-32B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-30B-A3B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-14B":[8e-8,2.4e-7,null,null],"nebius/Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"nebius/Qwen/QwQ-32B":[1.5e-7,4.5e-7,null,null],"nebius/Qwen/Qwen2.5-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"nebius/Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"nebius/Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"nebius/BAAI/bge-en-icl":[1e-8,0,null,null],"BAAI/bge-en-icl":[1e-8,0,null,null],"nebius/BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"nebius/intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"oci/meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"oci/meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-3":[0.000003,0.000015,null,null],"xai.grok-3":[0.000003,0.000015,null,null],"oci/xai.grok-3-fast":[0.000005,0.000025,null,null],"xai.grok-3-fast":[0.000005,0.000025,null,null],"oci/xai.grok-3-mini":[3e-7,5e-7,null,null],"xai.grok-3-mini":[3e-7,5e-7,null,null],"oci/xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"oci/xai.grok-4":[0.000003,0.000015,null,null],"xai.grok-4":[0.000003,0.000015,null,null],"oci/cohere.command-latest":[0.00000156,0.00000156,null,null],"cohere.command-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"oci/cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"oci/cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"oci/meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-4-fast":[0.000005,0.000025,null,null],"xai.grok-4-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.1-fast":[0.000005,0.000025,null,null],"xai.grok-4.1-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.20":[0.000003,0.000015,null,null],"xai.grok-4.20":[0.000003,0.000015,null,null],"oci/xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"oci/xai.grok-code-fast-1":[0.000005,0.000025,null,null],"xai.grok-code-fast-1":[0.000005,0.000025,null,null],"oci/google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"oci/google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"oci/google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"oci/cohere.embed-english-v3.0":[1e-7,0,null,null],"cohere.embed-english-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-v4.0":[1.2e-7,0,null,null],"cohere.embed-v4.0":[1.2e-7,0,null,null],"ollama/codegeex4":[0,0,null,null],"codegeex4":[0,0,null,null],"ollama/codegemma":[0,0,null,null],"codegemma":[0,0,null,null],"ollama/codellama":[0,0,null,null],"codellama":[0,0,null,null],"ollama/deepseek-coder-v2-base":[0,0,null,null],"deepseek-coder-v2-base":[0,0,null,null],"ollama/deepseek-coder-v2-instruct":[0,0,null,null],"deepseek-coder-v2-instruct":[0,0,null,null],"ollama/deepseek-coder-v2-lite-base":[0,0,null,null],"deepseek-coder-v2-lite-base":[0,0,null,null],"ollama/deepseek-coder-v2-lite-instruct":[0,0,null,null],"deepseek-coder-v2-lite-instruct":[0,0,null,null],"ollama/deepseek-v3.1:671b-cloud":[0,0,null,null],"deepseek-v3.1:671b-cloud":[0,0,null,null],"ollama/gpt-oss:120b-cloud":[0,0,null,null],"gpt-oss:120b-cloud":[0,0,null,null],"ollama/gpt-oss:20b-cloud":[0,0,null,null],"gpt-oss:20b-cloud":[0,0,null,null],"ollama/internlm2_5-20b-chat":[0,0,null,null],"internlm2_5-20b-chat":[0,0,null,null],"ollama/llama2":[0,0,null,null],"llama2":[0,0,null,null],"ollama/llama2-uncensored":[0,0,null,null],"llama2-uncensored":[0,0,null,null],"ollama/llama2:13b":[0,0,null,null],"llama2:13b":[0,0,null,null],"ollama/llama2:70b":[0,0,null,null],"llama2:70b":[0,0,null,null],"ollama/llama2:7b":[0,0,null,null],"llama2:7b":[0,0,null,null],"ollama/llama3":[0,0,null,null],"llama3":[0,0,null,null],"ollama/llama3.1":[0,0,null,null],"llama3.1":[0,0,null,null],"ollama/llama3:70b":[0,0,null,null],"llama3:70b":[0,0,null,null],"ollama/llama3:8b":[0,0,null,null],"llama3:8b":[0,0,null,null],"ollama/mistral":[0,0,null,null],"mistral":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.1":[0,0,null,null],"mistral-7B-Instruct-v0.1":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.2":[0,0,null,null],"mistral-7B-Instruct-v0.2":[0,0,null,null],"ollama/mistral-large-instruct-2407":[0,0,null,null],"mistral-large-instruct-2407":[0,0,null,null],"ollama/mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"ollama/mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"ollama/orca-mini":[0,0,null,null],"orca-mini":[0,0,null,null],"ollama/qwen3-coder:480b-cloud":[0,0,null,null],"qwen3-coder:480b-cloud":[0,0,null,null],"ollama/vicuna":[0,0,null,null],"vicuna":[0,0,null,null],"openrouter/anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"openrouter/anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"openrouter/anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"openrouter/bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"openrouter/deepseek/deepseek-chat":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"openrouter/deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"openrouter/deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"openrouter/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"openrouter/deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"openrouter/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"openrouter/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"openrouter/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"openrouter/google/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/google/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"openrouter/google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"openrouter/google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/mancer/weaver":[0.000005625,0.000005625,null,null],"mancer/weaver":[0.000005625,0.000005625,null,null],"openrouter/meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"openrouter/minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"openrouter/mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"openrouter/mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"openrouter/mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"openrouter/mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"openrouter/mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"openrouter/mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"openrouter/mistralai/mistral-large":[0.000008,0.000024,null,null],"mistralai/mistral-large":[0.000008,0.000024,null,null],"openrouter/mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"openrouter/moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"openrouter/openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openrouter/openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openrouter/openai/gpt-4":[0.00003,0.00006,null,null],"openai/gpt-4":[0.00003,0.00006,null,null],"openrouter/openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openrouter/openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openrouter/openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openrouter/openai/gpt-4o":[0.0000025,0.00001,null,null],"openrouter/openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openrouter/openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openrouter/openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openrouter/openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openrouter/openai/gpt-oss-120b":[1.8e-7,8e-7,null,null],"openrouter/openai/gpt-oss-20b":[2e-8,1e-7,null,null],"openrouter/openai/o1":[0.000015,0.00006,null,0.0000075],"openai/o1":[0.000015,0.00006,null,0.0000075],"openrouter/openai/o3-mini":[0.0000011,0.0000044,null,null],"openai/o3-mini":[0.0000011,0.0000044,null,null],"openrouter/openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openrouter/qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"openrouter/qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"openrouter/qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"openrouter/qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"openrouter/qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"openrouter/qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"openrouter/qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"openrouter/qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"openrouter/switchpoint/router":[8.5e-7,0.0000034,null,null],"switchpoint/router":[8.5e-7,0.0000034,null,null],"openrouter/undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/x-ai/grok-4":[0.000003,0.000015,null,null],"x-ai/grok-4":[0.000003,0.000015,null,null],"openrouter/z-ai/glm-4.6":[4e-7,0.00000175,null,null],"z-ai/glm-4.6":[4e-7,0.00000175,null,null],"openrouter/z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"openrouter/xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"openrouter/z-ai/glm-4.7":[4e-7,0.0000015,0,0],"z-ai/glm-4.7":[4e-7,0.0000015,0,0],"openrouter/z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"openrouter/z-ai/glm-5":[8e-7,0.00000256,null,null],"z-ai/glm-5":[8e-7,0.00000256,null,null],"openrouter/minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"openrouter/minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"openrouter/openrouter/auto":[0,0,null,null],"openrouter/auto":[0,0,null,null],"openrouter/openrouter/free":[0,0,null,null],"openrouter/free":[0,0,null,null],"openrouter/openrouter/bodybuilder":[0,0,null,null],"openrouter/bodybuilder":[0,0,null,null],"ovhcloud/DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"ovhcloud/Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"ovhcloud/Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"ovhcloud/Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"ovhcloud/Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"ovhcloud/Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"ovhcloud/Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"ovhcloud/Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"ovhcloud/Qwen3-32B":[8e-8,2.3e-7,null,null],"Qwen3-32B":[8e-8,2.3e-7,null,null],"ovhcloud/gpt-oss-120b":[8e-8,4e-7,null,null],"ovhcloud/gpt-oss-20b":[4e-8,1.5e-7,null,null],"gpt-oss-20b":[4e-8,1.5e-7,null,null],"ovhcloud/llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"ovhcloud/mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"palm/chat-bison":[1.25e-7,1.25e-7,null,null],"chat-bison":[1.25e-7,1.25e-7,null,null],"palm/chat-bison-001":[1.25e-7,1.25e-7,null,null],"chat-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison":[1.25e-7,1.25e-7,null,null],"text-bison":[1.25e-7,1.25e-7,null,null],"palm/text-bison-001":[1.25e-7,1.25e-7,null,null],"text-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"perplexity/codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"perplexity/codellama-70b-instruct":[7e-7,0.0000028,null,null],"codellama-70b-instruct":[7e-7,0.0000028,null,null],"perplexity/llama-2-70b-chat":[7e-7,0.0000028,null,null],"llama-2-70b-chat":[7e-7,0.0000028,null,null],"perplexity/llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"perplexity/llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"perplexity/mistral-7b-instruct":[7e-8,2.8e-7,null,null],"mistral-7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/pplx-70b-chat":[7e-7,0.0000028,null,null],"pplx-70b-chat":[7e-7,0.0000028,null,null],"perplexity/pplx-70b-online":[0,0.0000028,null,null],"pplx-70b-online":[0,0.0000028,null,null],"perplexity/pplx-7b-chat":[7e-8,2.8e-7,null,null],"pplx-7b-chat":[7e-8,2.8e-7,null,null],"perplexity/pplx-7b-online":[0,2.8e-7,null,null],"pplx-7b-online":[0,2.8e-7,null,null],"perplexity/sonar":[0.000001,0.000001,null,null],"sonar":[0.000001,0.000001,null,null],"perplexity/sonar-deep-research":[0.000002,0.000008,null,null],"sonar-deep-research":[0.000002,0.000008,null,null],"perplexity/sonar-medium-chat":[6e-7,0.0000018,null,null],"sonar-medium-chat":[6e-7,0.0000018,null,null],"perplexity/sonar-medium-online":[0,0.0000018,null,null],"sonar-medium-online":[0,0.0000018,null,null],"perplexity/sonar-pro":[0.000003,0.000015,null,null],"sonar-pro":[0.000003,0.000015,null,null],"perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"sonar-reasoning":[0.000001,0.000005,null,null],"perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"sonar-reasoning-pro":[0.000002,0.000008,null,null],"perplexity/sonar-small-chat":[7e-8,2.8e-7,null,null],"sonar-small-chat":[7e-8,2.8e-7,null,null],"perplexity/sonar-small-online":[0,2.8e-7,null,null],"sonar-small-online":[0,2.8e-7,null,null],"publicai/swiss-ai/apertus-8b-instruct":[0,0,null,null],"swiss-ai/apertus-8b-instruct":[0,0,null,null],"publicai/swiss-ai/apertus-70b-instruct":[0,0,null,null],"swiss-ai/apertus-70b-instruct":[0,0,null,null],"publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"publicai/BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"publicai/BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Instruct":[0,0,null,null],"allenai/Olmo-3-7B-Instruct":[0,0,null,null],"perplexity/pplx-embed-v1-0.6b":[4e-9,0,null,null],"pplx-embed-v1-0.6b":[4e-9,0,null,null],"perplexity/pplx-embed-v1-4b":[3e-8,0,null,null],"pplx-embed-v1-4b":[3e-8,0,null,null],"publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Think":[0,0,null,null],"allenai/Olmo-3-7B-Think":[0,0,null,null],"publicai/allenai/Olmo-3-32B-Think":[0,0,null,null],"allenai/Olmo-3-32B-Think":[0,0,null,null],"replicate/meta/llama-2-13b":[1e-7,5e-7,null,null],"meta/llama-2-13b":[1e-7,5e-7,null,null],"replicate/meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"replicate/meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-7b":[5e-8,2.5e-7,null,null],"meta/llama-2-7b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-8b":[5e-8,2.5e-7,null,null],"meta/llama-3-8b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"replicate/mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"replicate/openai/gpt-5":[0.00000125,0.00001,null,null],"replicateopenai/gpt-oss-20b":[9e-8,3.6e-7,null,null],"replicate/anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"replicate/ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"replicate/openai/gpt-4o":[0.0000025,0.00001,null,null],"replicate/openai/o4-mini":[0.000001,0.000004,null,null],"openai/o4-mini":[0.000001,0.000004,null,null],"replicate/openai/o1-mini":[0.0000011,0.0000044,null,null],"openai/o1-mini":[0.0000011,0.0000044,null,null],"replicate/openai/o1":[0.000015,0.00006,null,null],"replicate/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"replicate/qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"replicate/anthropic/claude-4-sonnet":[0.000003,0.000015,null,null],"replicate/deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"replicate/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"replicate/anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"replicate/anthropic/claude-3.5-sonnet":[0.00000375,0.00001875,null,null],"replicate/google/gemini-3-pro":[0.000002,0.000012,null,null],"google/gemini-3-pro":[0.000002,0.000012,null,null],"replicate/anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"replicate/openai/gpt-4.1":[0.000002,0.000008,null,null],"replicate/openai/gpt-4.1-nano":[1e-7,4e-7,null,null],"replicate/openai/gpt-4.1-mini":[4e-7,0.0000016,null,null],"replicate/openai/gpt-5-nano":[5e-8,4e-7,null,null],"replicate/openai/gpt-5-mini":[2.5e-7,0.000002,null,null],"replicate/google/gemini-2.5-flash":[0.0000025,0.0000025,null,null],"replicate/openai/gpt-oss-120b":[1.8e-7,7.2e-7,null,null],"replicate/deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"replicate/xai/grok-4":[0.0000072,0.000036,null,null],"xai/grok-4":[0.0000072,0.000036,null,null],"replicate/deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b":[0,0,null,null],"meta-textgeneration-llama-2-13b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b-f":[0,0,null,null],"meta-textgeneration-llama-2-13b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b":[0,0,null,null],"meta-textgeneration-llama-2-70b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b":[0,0,null,null],"meta-textgeneration-llama-2-7b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b-f":[0,0,null,null],"meta-textgeneration-llama-2-7b-f":[0,0,null,null],"sambanova/DeepSeek-R1":[0.000005,0.000007,null,null],"DeepSeek-R1":[0.000005,0.000007,null,null],"sambanova/DeepSeek-R1-Distill-Llama-70B":[7e-7,0.0000014,null,null],"sambanova/DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"sambanova/Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"sambanova/Llama-4-Scout-17B-16E-Instruct":[4e-7,7e-7,null,null],"sambanova/Meta-Llama-3.1-405B-Instruct":[0.000005,0.00001,null,null],"sambanova/Meta-Llama-3.1-8B-Instruct":[1e-7,2e-7,null,null],"sambanova/Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"sambanova/Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"sambanova/Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"sambanova/Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"sambanova/QwQ-32B":[5e-7,0.000001,null,null],"QwQ-32B":[5e-7,0.000001,null,null],"sambanova/Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"sambanova/Qwen3-32B":[4e-7,8e-7,null,null],"sambanova/DeepSeek-V3.1":[0.000003,0.0000045,null,null],"DeepSeek-V3.1":[0.000003,0.0000045,null,null],"sambanova/gpt-oss-120b":[0.000003,0.0000045,null,null],"text-completion-codestral/codestral-2405":[0,0,null,null],"text-completion-codestral/codestral-latest":[0,0,null,null],"together_ai/baai/bge-base-en-v1.5":[8e-9,0,null,null],"baai/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507":[6.5e-7,0.000003,null,null],"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"together_ai/deepseek-ai/DeepSeek-R1":[0.000003,0.000007,null,null],"together_ai/deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"together_ai/deepseek-ai/DeepSeek-V3":[0.00000125,0.00000125,null,null],"together_ai/deepseek-ai/DeepSeek-V3.1":[6e-7,0.0000017,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[2.7e-7,8.5e-7,null,null],"together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct":[1.8e-7,5.9e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[1.8e-7,1.8e-7,null,null],"together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1":[6e-7,6e-7,null,null],"together_ai/moonshotai/Kimi-K2-Instruct":[0.000001,0.000003,null,null],"together_ai/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"together_ai/openai/gpt-oss-20b":[5e-8,2e-7,null,null],"together_ai/zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"together_ai/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"together_ai/zai-org/GLM-4.7":[4.5e-7,0.000002,null,null],"together_ai/moonshotai/Kimi-K2.5":[5e-7,0.0000028,null,null],"together_ai/moonshotai/Kimi-K2-Instruct-0905":[0.000001,0.000003,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"v0/v0-1.0-md":[0.000003,0.000015,null,null],"v0-1.0-md":[0.000003,0.000015,null,null],"v0/v0-1.5-lg":[0.000015,0.000075,null,null],"v0-1.5-lg":[0.000015,0.000075,null,null],"v0/v0-1.5-md":[0.000003,0.000015,null,null],"v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"vercel_ai_gateway/amazon/nova-lite":[6e-8,2.4e-7,null,null],"amazon/nova-lite":[6e-8,2.4e-7,null,null],"vercel_ai_gateway/amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"vercel_ai_gateway/amazon/nova-pro":[8e-7,0.0000032,null,null],"amazon/nova-pro":[8e-7,0.0000032,null,null],"vercel_ai_gateway/amazon/titan-embed-text-v2":[2e-8,0,null,null],"amazon/titan-embed-text-v2":[2e-8,0,null,null],"vercel_ai_gateway/anthropic/claude-3-haiku":[2.5e-7,0.00000125,3e-7,3e-8],"vercel_ai_gateway/anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-3.5-haiku":[8e-7,0.000004,0.000001,8e-8],"vercel_ai_gateway/anthropic/claude-3.5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3.7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-4-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-4-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"vercel_ai_gateway/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/cohere/command-a":[0.0000025,0.00001,null,null],"cohere/command-a":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/command-r":[1.5e-7,6e-7,null,null],"cohere/command-r":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/cohere/command-r-plus":[0.0000025,0.00001,null,null],"cohere/command-r-plus":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/embed-v4.0":[1.2e-7,0,null,null],"vercel_ai_gateway/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"vercel_ai_gateway/deepseek/deepseek-v3":[9e-7,9e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"vercel_ai_gateway/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"vercel_ai_gateway/google/gemini-2.5-pro":[0.0000025,0.00001,null,null],"vercel_ai_gateway/google/gemini-embedding-001":[1.5e-7,0,null,null],"google/gemini-embedding-001":[1.5e-7,0,null,null],"vercel_ai_gateway/google/gemma-2-9b":[2e-7,2e-7,null,null],"google/gemma-2-9b":[2e-7,2e-7,null,null],"vercel_ai_gateway/google/text-embedding-005":[2.5e-8,0,null,null],"google/text-embedding-005":[2.5e-8,0,null,null],"vercel_ai_gateway/google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"vercel_ai_gateway/inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"vercel_ai_gateway/meta/llama-3-70b":[5.9e-7,7.9e-7,null,null],"vercel_ai_gateway/meta/llama-3-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.1-8b":[5e-8,8e-8,null,null],"meta/llama-3.1-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-1b":[1e-7,1e-7,null,null],"meta/llama-3.2-1b":[1e-7,1e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-4-maverick":[2e-7,6e-7,null,null],"meta/llama-4-maverick":[2e-7,6e-7,null,null],"vercel_ai_gateway/meta/llama-4-scout":[1e-7,3e-7,null,null],"meta/llama-4-scout":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/codestral":[3e-7,9e-7,null,null],"mistral/codestral":[3e-7,9e-7,null,null],"vercel_ai_gateway/mistral/codestral-embed":[1.5e-7,0,null,null],"mistral/codestral-embed":[1.5e-7,0,null,null],"vercel_ai_gateway/mistral/devstral-small":[7e-8,2.8e-7,null,null],"mistral/devstral-small":[7e-8,2.8e-7,null,null],"vercel_ai_gateway/mistral/magistral-medium":[0.000002,0.000005,null,null],"mistral/magistral-medium":[0.000002,0.000005,null,null],"vercel_ai_gateway/mistral/magistral-small":[5e-7,0.0000015,null,null],"mistral/magistral-small":[5e-7,0.0000015,null,null],"vercel_ai_gateway/mistral/ministral-3b":[4e-8,4e-8,null,null],"mistral/ministral-3b":[4e-8,4e-8,null,null],"vercel_ai_gateway/mistral/ministral-8b":[1e-7,1e-7,null,null],"mistral/ministral-8b":[1e-7,1e-7,null,null],"vercel_ai_gateway/mistral/mistral-embed":[1e-7,0,null,null],"mistral/mistral-embed":[1e-7,0,null,null],"vercel_ai_gateway/mistral/mistral-large":[0.000002,0.000006,null,null],"mistral/mistral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"vercel_ai_gateway/mistral/mistral-small":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"vercel_ai_gateway/mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/mistral/pixtral-large":[0.000002,0.000006,null,null],"mistral/pixtral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"vercel_ai_gateway/morph/morph-v3-fast":[8e-7,0.0000012,null,null],"vercel_ai_gateway/morph/morph-v3-large":[9e-7,0.0000019,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"vercel_ai_gateway/openai/gpt-4-turbo":[0.00001,0.00003,null,null],"openai/gpt-4-turbo":[0.00001,0.00003,null,null],"vercel_ai_gateway/openai/gpt-4.1":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/gpt-4.1-mini":[4e-7,0.0000016,0,1e-7],"vercel_ai_gateway/openai/gpt-4.1-nano":[1e-7,4e-7,0,2.5e-8],"vercel_ai_gateway/openai/gpt-4o":[0.0000025,0.00001,0,0.00000125],"vercel_ai_gateway/openai/gpt-4o-mini":[1.5e-7,6e-7,0,7.5e-8],"vercel_ai_gateway/openai/o1":[0.000015,0.00006,0,0.0000075],"vercel_ai_gateway/openai/o3":[0.000002,0.000008,0,5e-7],"openai/o3":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/o3-mini":[0.0000011,0.0000044,0,5.5e-7],"vercel_ai_gateway/openai/o4-mini":[0.0000011,0.0000044,0,2.75e-7],"vercel_ai_gateway/openai/text-embedding-3-large":[1.3e-7,0,null,null],"openai/text-embedding-3-large":[1.3e-7,0,null,null],"vercel_ai_gateway/openai/text-embedding-3-small":[2e-8,0,null,null],"openai/text-embedding-3-small":[2e-8,0,null,null],"vercel_ai_gateway/openai/text-embedding-ada-002":[1e-7,0,null,null],"openai/text-embedding-ada-002":[1e-7,0,null,null],"vercel_ai_gateway/perplexity/sonar":[0.000001,0.000001,null,null],"vercel_ai_gateway/perplexity/sonar-pro":[0.000003,0.000015,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"vercel_ai_gateway/vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-2":[0.000002,0.00001,null,null],"xai/grok-2":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-3":[0.000003,0.000015,null,null],"xai/grok-3":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-3-fast":[0.000005,0.000025,null,null],"xai/grok-3-fast":[0.000005,0.000025,null,null],"vercel_ai_gateway/xai/grok-3-mini":[3e-7,5e-7,null,null],"xai/grok-3-mini":[3e-7,5e-7,null,null],"vercel_ai_gateway/xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"vercel_ai_gateway/xai/grok-4":[0.000003,0.000015,null,null],"vercel_ai_gateway/zai/glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5":[6e-7,0.0000022,null,null],"vercel_ai_gateway/zai/glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-air":[2e-7,0.0000011,null,null],"vercel_ai_gateway/zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"vertex_ai/claude-3-5-haiku":[0.000001,0.000005,null,null],"claude-3-5-haiku":[0.000001,0.000005,null,null],"vertex_ai/claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"vertex_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-3-5-sonnet":[0.000003,0.000015,null,null],"claude-3-5-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"vertex_ai/claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-3-haiku":[2.5e-7,0.00000125,null,null],"claude-3-haiku":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-opus":[0.000015,0.000075,null,null],"claude-3-opus":[0.000015,0.000075,null,null],"vertex_ai/claude-3-opus@20240229":[0.000015,0.000075,null,null],"claude-3-opus@20240229":[0.000015,0.000075,null,null],"vertex_ai/claude-3-sonnet":[0.000003,0.000015,null,null],"claude-3-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"vertex_ai/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/mistralai/codestral-2@001":[3e-7,9e-7,null,null],"mistralai/codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/codestral-2":[3e-7,9e-7,null,null],"codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2@001":[3e-7,9e-7,null,null],"codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/mistralai/codestral-2":[3e-7,9e-7,null,null],"mistralai/codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2501":[2e-7,6e-7,null,null],"codestral-2501":[2e-7,6e-7,null,null],"vertex_ai/codestral@2405":[2e-7,6e-7,null,null],"codestral@2405":[2e-7,6e-7,null,null],"vertex_ai/codestral@latest":[2e-7,6e-7,null,null],"codestral@latest":[2e-7,6e-7,null,null],"vertex_ai/deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"vertex_ai/deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"vertex_ai/deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"vertex_ai/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"vertex_ai/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"vertex_ai/gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"vertex_ai/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"vertex_ai/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"vertex_ai/jamba-1.5":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-large":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-large@001":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-mini":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-mini@001":[2e-7,4e-7,null,null],"vertex_ai/meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"vertex_ai/meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama3-405b-instruct-maas":[0,0,null,null],"meta/llama3-405b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-70b-instruct-maas":[0,0,null,null],"meta/llama3-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-8b-instruct-maas":[0,0,null,null],"meta/llama3-8b-instruct-maas":[0,0,null,null],"vertex_ai/minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"vertex_ai/moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"vertex_ai/zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"vertex_ai/zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"vertex_ai/mistral-medium-3":[4e-7,0.000002,null,null],"mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistral-large-2411":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2407":[0.000002,0.000006,null,null],"mistral-large@2407":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2411-001":[0.000002,0.000006,null,null],"mistral-large@2411-001":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@latest":[0.000002,0.000006,null,null],"mistral-large@latest":[0.000002,0.000006,null,null],"vertex_ai/mistral-nemo@2407":[0.000003,0.000003,null,null],"mistral-nemo@2407":[0.000003,0.000003,null,null],"vertex_ai/mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"vertex_ai/mistral-small-2503":[0.000001,0.000003,null,null],"vertex_ai/mistral-small-2503@001":[0.000001,0.000003,null,null],"mistral-small-2503@001":[0.000001,0.000003,null,null],"vertex_ai/deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"vertex_ai/openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"vertex_ai/openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"voyage/rerank-2":[5e-8,0,null,null],"rerank-2":[5e-8,0,null,null],"voyage/rerank-2-lite":[2e-8,0,null,null],"rerank-2-lite":[2e-8,0,null,null],"voyage/rerank-2.5":[5e-8,0,null,null],"rerank-2.5":[5e-8,0,null,null],"voyage/rerank-2.5-lite":[2e-8,0,null,null],"rerank-2.5-lite":[2e-8,0,null,null],"voyage/voyage-2":[1e-7,0,null,null],"voyage-2":[1e-7,0,null,null],"voyage/voyage-3":[6e-8,0,null,null],"voyage-3":[6e-8,0,null,null],"voyage/voyage-3-large":[1.8e-7,0,null,null],"voyage-3-large":[1.8e-7,0,null,null],"voyage/voyage-3-lite":[2e-8,0,null,null],"voyage-3-lite":[2e-8,0,null,null],"voyage/voyage-3.5":[6e-8,0,null,null],"voyage-3.5":[6e-8,0,null,null],"voyage/voyage-3.5-lite":[2e-8,0,null,null],"voyage-3.5-lite":[2e-8,0,null,null],"voyage/voyage-code-2":[1.2e-7,0,null,null],"voyage-code-2":[1.2e-7,0,null,null],"voyage/voyage-code-3":[1.8e-7,0,null,null],"voyage-code-3":[1.8e-7,0,null,null],"voyage/voyage-context-3":[1.8e-7,0,null,null],"voyage-context-3":[1.8e-7,0,null,null],"voyage/voyage-finance-2":[1.2e-7,0,null,null],"voyage-finance-2":[1.2e-7,0,null,null],"voyage/voyage-large-2":[1.2e-7,0,null,null],"voyage-large-2":[1.2e-7,0,null,null],"voyage/voyage-law-2":[1.2e-7,0,null,null],"voyage-law-2":[1.2e-7,0,null,null],"voyage/voyage-lite-01":[1e-7,0,null,null],"voyage-lite-01":[1e-7,0,null,null],"voyage/voyage-lite-02-instruct":[1e-7,0,null,null],"voyage-lite-02-instruct":[1e-7,0,null,null],"voyage/voyage-multimodal-3":[1.2e-7,0,null,null],"voyage-multimodal-3":[1.2e-7,0,null,null],"wandb/openai/gpt-oss-120b":[0.015,0.06,null,null],"wandb/openai/gpt-oss-20b":[0.005,0.02,null,null],"wandb/zai-org/GLM-4.5":[0.055,0.2,null,null],"wandb/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.01,0.01,null,null],"wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct":[0.1,0.15,null,null],"wandb/Qwen/Qwen3-235B-A22B-Thinking-2507":[0.01,0.01,null,null],"wandb/moonshotai/Kimi-K2-Instruct":[6e-7,0.0000025,null,null],"wandb/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,1e-7],"wandb/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"wandb/meta-llama/Llama-3.1-8B-Instruct":[0.022,0.022,null,null],"wandb/deepseek-ai/DeepSeek-V3.1":[0.055,0.165,null,null],"wandb/deepseek-ai/DeepSeek-R1-0528":[0.135,0.54,null,null],"wandb/deepseek-ai/DeepSeek-V3-0324":[0.114,0.275,null,null],"wandb/meta-llama/Llama-3.3-70B-Instruct":[0.071,0.071,null,null],"wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct":[0.017,0.066,null,null],"wandb/microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"watsonx/ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/mistralai/mistral-large":[0.000003,0.00001,null,null],"watsonx/bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"watsonx/core42/jais-13b-chat":[0.0005,0.002,null,null],"core42/jais-13b-chat":[0.0005,0.002,null,null],"watsonx/google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"watsonx/ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"watsonx/ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"watsonx/ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"watsonx/meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"watsonx/meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"watsonx/meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"watsonx/meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"watsonx/meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"watsonx/mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"watsonx/mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"watsonx/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"watsonx/sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"grok-2":[0.000002,0.00001,null,null],"xai/grok-2-1212":[0.000002,0.00001,null,null],"grok-2-1212":[0.000002,0.00001,null,null],"xai/grok-2-latest":[0.000002,0.00001,null,null],"grok-2-latest":[0.000002,0.00001,null,null],"grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision-1212":[0.000002,0.00001,null,null],"grok-2-vision-1212":[0.000002,0.00001,null,null],"xai/grok-2-vision-latest":[0.000002,0.00001,null,null],"grok-2-vision-latest":[0.000002,0.00001,null,null],"xai/grok-3-beta":[0.000003,0.000015,null,7.5e-7],"grok-3-beta":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"xai/grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"xai/grok-3-latest":[0.000003,0.000015,null,7.5e-7],"grok-3-latest":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-fast":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"xai/grok-4-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-0709":[0.000003,0.000015,null,null],"grok-4-0709":[0.000003,0.000015,null,null],"xai/grok-4-latest":[0.000003,0.000015,null,null],"grok-4-latest":[0.000003,0.000015,null,null],"xai/grok-4-1-fast":[2e-7,5e-7,null,5e-8],"grok-4-1-fast":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-beta":[0.000005,0.000015,null,null],"grok-beta":[0.000005,0.000015,null,null],"xai/grok-code-fast":[2e-7,0.0000015,null,2e-8],"grok-code-fast":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"xai/grok-vision-beta":[0.000005,0.000015,null,null],"grok-vision-beta":[0.000005,0.000015,null,null],"zai/glm-5":[0.000001,0.0000032,0,2e-7],"glm-5":[0.000001,0.0000032,0,2e-7],"zai/glm-5-code":[0.0000012,0.000005,0,3e-7],"glm-5-code":[0.0000012,0.000005,0,3e-7],"zai/glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.6":[6e-7,0.0000022,0,1.1e-7],"glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5v":[6e-7,0.0000018,null,null],"glm-4.5v":[6e-7,0.0000018,null,null],"zai/glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-airx":[0.0000011,0.0000045,null,null],"glm-4.5-airx":[0.0000011,0.0000045,null,null],"zai/glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"zai/glm-4.5-flash":[0,0,null,null],"glm-4.5-flash":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"fireworks_ai/accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"fireworks_ai/accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"fireworks_ai/accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/":[1e-7,0,null,null],"accounts/fireworks/models/":[1e-7,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3":[0,0,null,null],"accounts/fireworks/models/whisper-v3":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"novita/deepseek/deepseek-v3.2":[2.69e-7,4e-7,null,1.345e-7],"novita/minimax/minimax-m2.1":[3e-7,0.0000012,null,3e-8],"novita/zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"novita/xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"novita/zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"novita/moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"novita/minimax/minimax-m2":[3e-7,0.0000012,null,3e-8],"novita/paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"novita/deepseek/deepseek-v3.2-exp":[2.7e-7,4.1e-7,null,null],"novita/qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"novita/zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"novita/zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"novita/kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"novita/qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"novita/qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"novita/deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"novita/deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"novita/qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"novita/qwen/qwen3-max":[0.00000211,0.00000845,null,null],"qwen/qwen3-max":[0.00000211,0.00000845,null,null],"novita/skywork/r1v4-lite":[2e-7,6e-7,null,null],"skywork/r1v4-lite":[2e-7,6e-7,null,null],"novita/deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"novita/moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"novita/qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"novita/qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"novita/openai/gpt-oss-120b":[5e-8,2.5e-7,null,null],"novita/moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"novita/deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"novita/zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"novita/qwen/qwen3-235b-a22b-thinking-2507":[3e-7,0.000003,null,null],"novita/meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"novita/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"novita/zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"novita/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"novita/qwen/qwen3-235b-a22b-instruct-2507":[9e-8,5.8e-7,null,null],"novita/deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"novita/meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"novita/qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"novita/mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"novita/minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"novita/deepseek/deepseek-r1-0528":[7e-7,0.0000025,null,3.5e-7],"novita/deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"novita/meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"novita/microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"novita/deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"novita/deepseek/deepseek-r1-distill-llama-70b":[8e-7,8e-7,null,null],"novita/meta-llama/llama-3-70b-instruct":[5.1e-7,7.4e-7,null,null],"novita/qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"novita/meta-llama/llama-4-scout-17b-16e-instruct":[1.8e-7,5.9e-7,null,null],"novita/nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"novita/qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"novita/sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"novita/baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"novita/sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"novita/baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"novita/baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"novita/baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"novita/deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"novita/qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"novita/qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"novita/google/gemma-3-27b-it":[1.19e-7,2e-7,null,null],"novita/deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"novita/deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"novita/Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"novita/gryphe/mythomax-l2-13b":[9e-8,9e-8,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"novita/qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"novita/zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"novita/qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"novita/baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"novita/qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"novita/qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"novita/qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"novita/meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"novita/sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"novita/qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"novita/qwen/qwen3-embedding-8b":[7e-8,0,null,null],"qwen/qwen3-embedding-8b":[7e-8,0,null,null],"novita/baai/bge-m3":[1e-8,1e-8,null,null],"baai/bge-m3":[1e-8,1e-8,null,null],"novita/qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"novita/baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"llamagate/llama-3.1-8b":[3e-8,5e-8,null,null],"llama-3.1-8b":[3e-8,5e-8,null,null],"llamagate/llama-3.2-3b":[4e-8,8e-8,null,null],"llama-3.2-3b":[4e-8,8e-8,null,null],"llamagate/mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"llamagate/qwen3-8b":[4e-8,1.4e-7,null,null],"qwen3-8b":[4e-8,1.4e-7,null,null],"llamagate/dolphin3-8b":[8e-8,1.5e-7,null,null],"dolphin3-8b":[8e-8,1.5e-7,null,null],"llamagate/deepseek-r1-8b":[1e-7,2e-7,null,null],"deepseek-r1-8b":[1e-7,2e-7,null,null],"llamagate/deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"llamagate/openthinker-7b":[8e-8,1.5e-7,null,null],"openthinker-7b":[8e-8,1.5e-7,null,null],"llamagate/qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"llamagate/deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"llamagate/codellama-7b":[6e-8,1.2e-7,null,null],"codellama-7b":[6e-8,1.2e-7,null,null],"llamagate/qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"llamagate/llava-7b":[1e-7,2e-7,null,null],"llava-7b":[1e-7,2e-7,null,null],"llamagate/gemma3-4b":[3e-8,8e-8,null,null],"gemma3-4b":[3e-8,8e-8,null,null],"llamagate/nomic-embed-text":[2e-8,0,null,null],"nomic-embed-text":[2e-8,0,null,null],"llamagate/qwen3-embedding-8b":[2e-8,0,null,null],"qwen3-embedding-8b":[2e-8,0,null,null],"sarvam/sarvam-m":[0,0,0,0],"sarvam-m":[0,0,0,0],"gemini/gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini/gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini/gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini/gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"vertex_ai/claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"bedrock_mantle/openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,null],"bedrock/us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"MiniMax-M2.7":[3e-7,0.0000012,3.75e-7,6e-8],"MiniMax-M2.7-highspeed":[6e-7,0.0000024,3.75e-7,6e-8]}
\ No newline at end of file
+{"ai21.j2-mid-v1":[0.0000125,0.0000125,null,null],"ai21.j2-ultra-v1":[0.0000188,0.0000188,null,null],"ai21.jamba-1-5-large-v1:0":[0.000002,0.000008,null,null],"ai21.jamba-1-5-mini-v1:0":[2e-7,4e-7,null,null],"ai21.jamba-instruct-v1:0":[5e-7,7e-7,null,null],"us.writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"us.writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"apac.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"apac.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"eu.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"eu.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"us.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"us.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"amazon.nova-2-multimodal-embeddings-v1:0":[1.35e-7,0,null,null],"amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"amazon.rerank-v1:0":[0,0,null,null],"amazon.titan-embed-image-v1":[8e-7,0,null,null],"amazon.titan-embed-text-v1":[1e-7,0,null,null],"amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"us.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"eu.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-7-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"global.anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-mythos-preview":[0,0,null,null],"global.anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-v1":[0.000008,0.000024,null,null],"anthropic.claude-v2:1":[0.000008,0.000024,null,null],"apac.amazon.nova-lite-v1:0":[6.3e-8,2.52e-7,null,null],"apac.amazon.nova-micro-v1:0":[3.7e-8,1.48e-7,null,null],"apac.amazon.nova-pro-v1:0":[8.4e-7,0.00000336,null,null],"apac.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"apac.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"apac.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"au.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"babbage-002":[4e-7,4e-7,null,null],"chatdolphin":[5e-7,5e-7,null,null],"chatgpt-4o-latest":[0.000005,0.000015,null,null],"gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"claude-haiku-4-5-20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"claude-3-7-sonnet-20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-haiku-20240307":[2.5e-7,0.00000125,3e-7,3e-8],"claude-3-opus-20240229":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-opus-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-sonnet-20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1-20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-5-20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6-20260205":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7-20260416":[0.000005,0.000025,0.00000625,5e-7],"claude-sonnet-4-20250514":[0.000003,0.000015,0.00000375,3e-7],"codex-mini-latest":[0.0000015,0.000006,null,3.75e-7],"cohere.command-light-text-v14":[3e-7,6e-7,null,null],"cohere.command-r-plus-v1:0":[0.000003,0.000015,null,null],"cohere.command-r-v1:0":[5e-7,0.0000015,null,null],"cohere.command-text-v14":[0.0000015,0.000002,null,null],"cohere.embed-english-v3":[1e-7,0,null,null],"cohere.embed-multilingual-v3":[1e-7,0,null,null],"cohere.embed-v4:0":[1.2e-7,0,null,null],"cohere.rerank-v3-5:0":[0,0,null,null],"command":[0.000001,0.000002,null,null],"command-a-03-2025":[0.0000025,0.00001,null,null],"command-light":[3e-7,6e-7,null,null],"command-nightly":[0.000001,0.000002,null,null],"command-r":[1.5e-7,6e-7,null,null],"command-r-08-2024":[1.5e-7,6e-7,null,null],"command-r-plus":[0.0000025,0.00001,null,null],"command-r-plus-08-2024":[0.0000025,0.00001,null,null],"command-r7b-12-2024":[1.5e-7,3.75e-8,null,null],"computer-use-preview":[0.000003,0.000012,null,null],"deepseek-chat":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"davinci-002":[0.000002,0.000002,null,null],"deepseek.v3-v1:0":[5.8e-7,0.00000168,null,null],"deepseek.v3.2":[6.2e-7,0.00000185,null,null],"dolphin":[5e-7,5e-7,null,null],"deepseek-v3-2-251201":[0,0,null,null],"glm-4-7-251222":[0,0,null,null],"kimi-k2-thinking-251104":[0,0,null,null],"doubao-embedding":[0,0,null,null],"doubao-embedding-large":[0,0,null,null],"doubao-embedding-large-text-240915":[0,0,null,null],"doubao-embedding-large-text-250515":[0,0,null,null],"doubao-embedding-text-240715":[0,0,null,null],"embed-english-light-v2.0":[1e-7,0,null,null],"embed-english-light-v3.0":[1e-7,0,null,null],"embed-english-v2.0":[1e-7,0,null,null],"embed-english-v3.0":[1e-7,0,null,null],"embed-multilingual-v2.0":[1e-7,0,null,null],"embed-multilingual-v3.0":[1e-7,0,null,null],"embed-multilingual-light-v3.0":[0.0001,0,null,null],"eu.amazon.nova-lite-v1:0":[7.8e-8,3.12e-7,null,null],"eu.amazon.nova-micro-v1:0":[4.6e-8,1.84e-7,null,null],"eu.amazon.nova-pro-v1:0":[0.00000105,0.0000042,null,null],"eu.anthropic.claude-3-5-haiku-20241022-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.meta.llama3-2-1b-instruct-v1:0":[1.3e-7,1.3e-7,null,null],"eu.meta.llama3-2-3b-instruct-v1:0":[1.9e-7,1.9e-7,null,null],"eu.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"fireworks-ai-4.1b-to-16b":[2e-7,2e-7,null,null],"fireworks-ai-56b-to-176b":[0.0000012,0.0000012,null,null],"fireworks-ai-above-16b":[9e-7,9e-7,null,null],"fireworks-ai-default":[0,0,null,null],"fireworks-ai-embedding-150m-to-350m":[1.6e-8,0,null,null],"fireworks-ai-embedding-up-to-150m":[8e-9,0,null,null],"fireworks-ai-moe-up-to-56b":[5e-7,5e-7,null,null],"fireworks-ai-up-to-4b":[2e-7,2e-7,null,null],"ft:babbage-002":[0.0000016,0.0000016,null,null],"ft:davinci-002":[0.000012,0.000012,null,null],"ft:gpt-3.5-turbo":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0125":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0613":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-1106":[0.000003,0.000006,null,null],"ft:gpt-4-0613":[0.00003,0.00006,null,null],"ft:gpt-4o-2024-08-06":[0.00000375,0.000015,null,0.000001875],"ft:gpt-4o-2024-11-20":[0.00000375,0.000015,0.000001875,null],"ft:gpt-4o-mini-2024-07-18":[3e-7,0.0000012,null,1.5e-7],"ft:gpt-4.1-2025-04-14":[0.000003,0.000012,null,7.5e-7],"ft:gpt-4.1-mini-2025-04-14":[8e-7,0.0000032,null,2e-7],"ft:gpt-4.1-nano-2025-04-14":[2e-7,8e-7,null,5e-8],"ft:o4-mini-2025-04-16":[0.000004,0.000016,null,0.000001],"gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini-2.0-flash-001":[1.5e-7,6e-7,null,3.75e-8],"gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini-embedding-001":[1.5e-7,0,null,null],"gemini-embedding-2-preview":[2e-7,0,null,null],"gemini-embedding-2":[2e-7,0,null,null],"gemini-flash-experimental":[0,0,null,null],"gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"google.gemma-3-12b-it":[9e-8,2.9e-7,null,null],"google.gemma-3-27b-it":[2.3e-7,3.8e-7,null,null],"google.gemma-3-4b-it":[4e-8,8e-8,null,null],"global.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"global.amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"gpt-3.5-turbo":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-1106":[0.000001,0.000002,null,null],"gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-4":[0.00003,0.00006,null,null],"gpt-4-0125-preview":[0.00001,0.00003,null,null],"gpt-4-0314":[0.00003,0.00006,null,null],"gpt-4-0613":[0.00003,0.00006,null,null],"gpt-4-1106-preview":[0.00001,0.00003,null,null],"gpt-4-turbo":[0.00001,0.00003,null,null],"gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"gpt-4-turbo-preview":[0.00001,0.00003,null,null],"gpt-4.1":[0.000002,0.000008,null,5e-7],"gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"gpt-4o":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"gpt-4o-audio-preview":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2025-06-03":[0.0000025,0.00001,null,null],"gpt-audio":[0.0000025,0.00001,null,null],"gpt-audio-1.5":[0.0000025,0.00001,null,null],"gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"gpt-audio-mini":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-12-15":[6e-7,0.0000024,null,null],"gpt-4o-mini":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-2024-07-18":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-audio-preview":[1.5e-7,6e-7,null,null],"gpt-4o-mini-audio-preview-2024-12-17":[1.5e-7,6e-7,null,null],"gpt-4o-mini-realtime-preview":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-search-preview":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-search-preview-2025-03-11":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"gpt-4o-realtime-preview":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2025-06-03":[0.000005,0.00002,null,0.0000025],"gpt-4o-search-preview":[0.0000025,0.00001,null,0.00000125],"gpt-4o-search-preview-2025-03-11":[0.0000025,0.00001,null,0.00000125],"gpt-4o-transcribe":[0.0000025,0.00001,null,null],"gpt-image-1.5":[0.000005,0.00001,null,0.00000125],"gpt-image-1.5-2025-12-16":[0.000005,0.00001,null,0.00000125],"gpt-image-2":[0.000005,0.00001,null,0.00000125],"gpt-image-2-2026-04-21":[0.000005,0.00001,null,0.00000125],"gpt-5":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-pro":[0.000021,0.000168,null,null],"gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"gpt-5.5":[0.000005,0.00003,null,5e-7],"gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"gpt-5-pro":[0.000015,0.00012,null,null],"gpt-5-pro-2025-10-06":[0.000015,0.00012,null,null],"gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-nano":[5e-8,4e-7,null,5e-9],"gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"gpt-realtime":[0.000004,0.000016,null,4e-7],"gpt-realtime-1.5":[0.000004,0.000016,null,4e-7],"gpt-realtime-mini":[6e-7,0.0000024,null,null],"gpt-realtime-2025-08-28":[0.000004,0.000016,null,4e-7],"j2-light":[0.000003,0.000003,null,null],"j2-mid":[0.00001,0.00001,null,null],"j2-ultra":[0.000015,0.000015,null,null],"jamba-1.5":[2e-7,4e-7,null,null],"jamba-1.5-large":[0.000002,0.000008,null,null],"jamba-1.5-large@001":[0.000002,0.000008,null,null],"jamba-1.5-mini":[2e-7,4e-7,null,null],"jamba-1.5-mini@001":[2e-7,4e-7,null,null],"jamba-large-1.6":[0.000002,0.000008,null,null],"jamba-large-1.7":[0.000002,0.000008,null,null],"jamba-mini-1.6":[2e-7,4e-7,null,null],"jamba-mini-1.7":[2e-7,4e-7,null,null],"jina-reranker-v2-base-multilingual":[1.8e-8,1.8e-8,null,null],"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"jp.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"meta.llama2-13b-chat-v1":[7.5e-7,0.000001,null,null],"meta.llama2-70b-chat-v1":[0.00000195,0.00000256,null,null],"meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"minimax.minimax-m2":[3e-7,0.0000012,null,null],"minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"mistral.devstral-2-123b":[4e-7,0.000002,null,null],"mistral.magistral-small-2509":[5e-7,0.0000015,null,null],"mistral.ministral-3-14b-instruct":[2e-7,2e-7,null,null],"mistral.ministral-3-3b-instruct":[1e-7,1e-7,null,null],"mistral.ministral-3-8b-instruct":[1.5e-7,1.5e-7,null,null],"mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"mistral.mistral-large-2407-v1:0":[0.000003,0.000009,null,null],"mistral.mistral-large-3-675b-instruct":[5e-7,0.0000015,null,null],"mistral.mistral-small-2402-v1:0":[0.000001,0.000003,null,null],"mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"mistral.voxtral-mini-3b-2507":[4e-8,4e-8,null,null],"mistral.voxtral-small-24b-2507":[1e-7,3e-7,null,null],"moonshot.kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"multimodalembedding":[8e-7,0,null,null],"multimodalembedding@001":[8e-7,0,null,null],"nvidia.nemotron-nano-12b-v2":[2e-7,6e-7,null,null],"nvidia.nemotron-nano-9b-v2":[6e-8,2.3e-7,null,null],"nvidia.nemotron-nano-3-30b":[6e-8,2.4e-7,null,null],"nvidia.nemotron-super-3-120b":[1.5e-7,6.5e-7,null,null],"o1":[0.000015,0.00006,null,0.0000075],"o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"o1-pro":[0.00015,0.0006,null,null],"o1-pro-2025-03-19":[0.00015,0.0006,null,null],"o3":[0.000002,0.000008,null,5e-7],"o3-2025-04-16":[0.000002,0.000008,null,5e-7],"o3-deep-research":[0.00001,0.00004,null,0.0000025],"o3-deep-research-2025-06-26":[0.00001,0.00004,null,0.0000025],"o3-mini":[0.0000011,0.0000044,null,5.5e-7],"o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"o3-pro":[0.00002,0.00008,null,null],"o3-pro-2025-06-10":[0.00002,0.00008,null,null],"o4-mini":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-deep-research":[0.000002,0.000008,null,5e-7],"o4-mini-deep-research-2025-06-26":[0.000002,0.000008,null,5e-7],"omni-moderation-2024-09-26":[0,0,null,null],"omni-moderation-latest":[0,0,null,null],"openai.gpt-oss-120b-1:0":[1.5e-7,6e-7,null,null],"openai.gpt-oss-20b-1:0":[7e-8,3e-7,null,null],"openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-safeguard-20b":[7e-8,2e-7,null,null],"qwen.qwen3-coder-480b-a35b-v1:0":[2.2e-7,0.0000018,null,null],"qwen.qwen3-235b-a22b-2507-v1:0":[2.2e-7,8.8e-7,null,null],"qwen.qwen3-coder-30b-a3b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-32b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-next-80b-a3b":[1.5e-7,0.0000012,null,null],"qwen.qwen3-vl-235b-a22b":[5.3e-7,0.00000266,null,null],"qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"rerank-english-v2.0":[0,0,null,null],"rerank-english-v3.0":[0,0,null,null],"rerank-multilingual-v2.0":[0,0,null,null],"rerank-multilingual-v3.0":[0,0,null,null],"rerank-v3.5":[0,0,null,null],"text-embedding-004":[1e-7,0,null,null],"text-embedding-005":[1e-7,0,null,null],"text-embedding-3-large":[1.3e-7,0,null,null],"text-embedding-3-small":[2e-8,0,null,null],"text-embedding-ada-002":[1e-7,0,null,null],"text-embedding-ada-002-v2":[1e-7,0,null,null],"text-embedding-large-exp-03-07":[1e-7,0,null,null],"text-embedding-preview-0409":[6.25e-9,0,null,null],"text-moderation-007":[0,0,null,null],"text-moderation-latest":[0,0,null,null],"text-moderation-stable":[0,0,null,null],"text-multilingual-embedding-002":[1e-7,0,null,null],"text-unicorn":[0.00001,0.000028,null,null],"text-unicorn@001":[0.00001,0.000028,null,null],"together-ai-21.1b-41b":[8e-7,8e-7,null,null],"together-ai-4.1b-8b":[2e-7,2e-7,null,null],"together-ai-41.1b-80b":[9e-7,9e-7,null,null],"together-ai-8.1b-21b":[3e-7,3e-7,null,null],"together-ai-81.1b-110b":[0.0000018,0.0000018,null,null],"together-ai-embedding-151m-to-350m":[1.6e-8,0,null,null],"together-ai-embedding-up-to-150m":[8e-9,0,null,null],"together-ai-up-to-4b":[1e-7,1e-7,null,null],"us.amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"us.amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"us.amazon.nova-premier-v1:0":[0.0000025,0.0000125,null,null],"us.amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"us.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"us.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-opus-4-5-20251101-v1:0":[0.0000055,0.0000275,0.000006875,5.5e-7],"global.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"eu.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.deepseek.r1-v1:0":[0.00000135,0.0000054,null,null],"us.deepseek.v3.2":[6.2e-7,0.00000185,null,null],"eu.deepseek.v3.2":[7.4e-7,0.00000222,null,null],"us.meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"us.meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"us.meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"us.meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"us.meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"us.meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"us.meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"us.meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"us.meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"us.meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"us.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"zai.glm-4.7":[6e-7,0.0000022,null,null],"zai.glm-4.7-flash":[7e-8,4e-7,null,null],"zai.glm-5":[0.000001,0.0000032,null,null],"gpt-4o-mini-tts-2025-03-20":[0.0000025,0.00001,null,null],"gpt-4o-mini-tts-2025-12-15":[0.0000025,0.00001,null,null],"gpt-4o-mini-transcribe-2025-03-20":[0.00000125,0.000005,null,null],"gpt-4o-mini-transcribe-2025-12-15":[0.00000125,0.000005,null,null],"gpt-5-search-api":[0.00000125,0.00001,null,1.25e-7],"gpt-5-search-api-2025-10-14":[0.00000125,0.00001,null,1.25e-7],"gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"gpt-realtime-mini-2025-12-15":[6e-7,0.0000024,null,6e-8],"gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini-flash-latest":[3e-7,0.0000025,null,3e-8],"gemini-flash-lite-latest":[1e-7,4e-7,null,1e-8],"gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"gemini-exp-1206":[3e-7,0.0000025,null,3e-8],"anyscale/HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"anyscale/codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"anyscale/meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"anyscale/meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"anyscale/meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"azure/ada":[1e-7,0,null,null],"ada":[1e-7,0,null,null],"azure/codex-mini":[0.0000015,0.000006,null,3.75e-7],"codex-mini":[0.0000015,0.000006,null,3.75e-7],"azure/command-r-plus":[0.000003,0.000015,null,null],"azure_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"azure_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"azure_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"azure_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"azure/computer-use-preview":[0.000003,0.000012,null,null],"azure_ai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"gpt-oss-120b":[1.5e-7,6e-7,null,null],"azure_ai/model_router":[1.4e-7,0,null,null],"model_router":[1.4e-7,0,null,null],"azure/eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"azure/global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo":[5e-7,0.0000015,null,null],"gpt-35-turbo":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-1106":[0.000001,0.000002,null,null],"gpt-35-turbo-1106":[0.000001,0.000002,null,null],"azure/gpt-35-turbo-16k":[0.000003,0.000004,null,null],"gpt-35-turbo-16k":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-4":[0.00003,0.00006,null,null],"azure/gpt-4-0125-preview":[0.00001,0.00003,null,null],"azure/gpt-4-0613":[0.00003,0.00006,null,null],"azure/gpt-4-1106-preview":[0.00001,0.00003,null,null],"azure/gpt-4-32k":[0.00006,0.00012,null,null],"gpt-4-32k":[0.00006,0.00012,null,null],"azure/gpt-4-32k-0613":[0.00006,0.00012,null,null],"gpt-4-32k-0613":[0.00006,0.00012,null,null],"azure/gpt-4-turbo":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"azure/gpt-4.1":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"azure/gpt-4o":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"azure/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-11-20":[0.00000275,0.000011,null,0.00000125],"azure/gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"azure/gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"azure/gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"azure/gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"azure/gpt-realtime-2025-08-28":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"azure/gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"azure/gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"azure/gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-transcribe":[0.0000025,0.00001,null,null],"azure/gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"azure/gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-nano":[5e-8,4e-7,null,5e-9],"azure/gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"azure/gpt-5-pro":[0.000015,0.00012,null,null],"azure/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-pro":[0.000021,0.000168,null,null],"azure/gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"azure/gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"azure/gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"azure/gpt-image-2":[0.000005,0.00001,null,0.00000125],"azure/gpt-image-2-2026-04-21":[0.000005,0.00001,null,0.00000125],"azure/mistral-large-2402":[0.000008,0.000024,null,null],"mistral-large-2402":[0.000008,0.000024,null,null],"azure/mistral-large-latest":[0.000008,0.000024,null,null],"mistral-large-latest":[0.000008,0.000024,null,null],"azure/o1":[0.000015,0.00006,null,0.0000075],"azure/o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"azure/o1-mini":[0.00000121,0.00000484,null,6.05e-7],"o1-mini":[0.00000121,0.00000484,null,6.05e-7],"azure/o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"azure/o1-preview":[0.000015,0.00006,null,0.0000075],"o1-preview":[0.000015,0.00006,null,0.0000075],"azure/o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"azure/o3":[0.000002,0.000008,null,5e-7],"azure/o3-2025-04-16":[0.000002,0.000008,null,5e-7],"azure/o3-deep-research":[0.00001,0.00004,null,0.0000025],"azure/o3-mini":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-pro":[0.00002,0.00008,null,null],"azure/o3-pro-2025-06-10":[0.00002,0.00008,null,null],"azure/o4-mini":[0.0000011,0.0000044,null,2.75e-7],"azure/o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"azure/text-embedding-3-large":[1.3e-7,0,null,null],"azure/text-embedding-3-small":[2e-8,0,null,null],"azure/text-embedding-ada-002":[1e-7,0,null,null],"azure/us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"azure/us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"azure/us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"azure/us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"azure/us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"azure_ai/Cohere-embed-v3-english":[1e-7,0,null,null],"Cohere-embed-v3-english":[1e-7,0,null,null],"azure_ai/Cohere-embed-v3-multilingual":[1e-7,0,null,null],"Cohere-embed-v3-multilingual":[1e-7,0,null,null],"azure_ai/Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"azure_ai/Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"azure_ai/Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"azure_ai/Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"azure_ai/Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"azure_ai/Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"azure_ai/Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"azure_ai/Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"azure_ai/Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"azure_ai/Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-4":[1.25e-7,5e-7,null,null],"Phi-4":[1.25e-7,5e-7,null,null],"azure_ai/Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"azure_ai/Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-reasoning":[1.25e-7,5e-7,null,null],"Phi-4-reasoning":[1.25e-7,5e-7,null,null],"azure_ai/MAI-DS-R1":[0.00000135,0.0000054,null,null],"MAI-DS-R1":[0.00000135,0.0000054,null,null],"azure_ai/cohere-rerank-v3-english":[0,0,null,null],"cohere-rerank-v3-english":[0,0,null,null],"azure_ai/cohere-rerank-v3-multilingual":[0,0,null,null],"cohere-rerank-v3-multilingual":[0,0,null,null],"azure_ai/cohere-rerank-v3.5":[0,0,null,null],"cohere-rerank-v3.5":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-pro":[0,0,null,null],"cohere-rerank-v4.0-pro":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-fast":[0,0,null,null],"cohere-rerank-v4.0-fast":[0,0,null,null],"azure_ai/deepseek-v3.2":[5.8e-7,0.00000168,null,null],"deepseek-v3.2":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-r1":[0.00000135,0.0000054,null,null],"deepseek-r1":[0.00000135,0.0000054,null,null],"azure_ai/deepseek-v3":[0.00000114,0.00000456,null,null],"deepseek-v3":[0.00000114,0.00000456,null,null],"azure_ai/deepseek-v3-0324":[0.00000114,0.00000456,null,null],"deepseek-v3-0324":[0.00000114,0.00000456,null,null],"azure_ai/embed-v-4-0":[1.2e-7,0,null,null],"embed-v-4-0":[1.2e-7,0,null,null],"azure_ai/global/grok-3":[0.000003,0.000015,null,null],"global/grok-3":[0.000003,0.000015,null,null],"azure_ai/global/grok-3-mini":[2.5e-7,0.00000127,null,null],"global/grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-3":[0.000003,0.000015,null,null],"grok-3":[0.000003,0.000015,null,null],"azure_ai/grok-3-mini":[2.5e-7,0.00000127,null,null],"grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-4":[0.000003,0.000015,null,null],"grok-4":[0.000003,0.000015,null,null],"azure_ai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-code-fast-1":[2e-7,0.0000015,null,null],"grok-code-fast-1":[2e-7,0.0000015,null,null],"azure_ai/jais-30b-chat":[0.0032,0.00971,null,null],"jais-30b-chat":[0.0032,0.00971,null,null],"azure_ai/jamba-instruct":[5e-7,7e-7,null,null],"jamba-instruct":[5e-7,7e-7,null,null],"azure_ai/kimi-k2.5":[6e-7,0.000003,null,null],"kimi-k2.5":[6e-7,0.000003,null,null],"azure_ai/ministral-3b":[4e-8,4e-8,null,null],"ministral-3b":[4e-8,4e-8,null,null],"azure_ai/mistral-large":[0.000004,0.000012,null,null],"mistral-large":[0.000004,0.000012,null,null],"azure_ai/mistral-large-2407":[0.000002,0.000006,null,null],"mistral-large-2407":[0.000002,0.000006,null,null],"azure_ai/mistral-large-latest":[0.000002,0.000006,null,null],"azure_ai/mistral-large-3":[5e-7,0.0000015,null,null],"mistral-large-3":[5e-7,0.0000015,null,null],"azure_ai/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral-medium-2505":[4e-7,0.000002,null,null],"azure_ai/mistral-nemo":[1.5e-7,1.5e-7,null,null],"mistral-nemo":[1.5e-7,1.5e-7,null,null],"azure_ai/mistral-small":[0.000001,0.000003,null,null],"mistral-small":[0.000001,0.000003,null,null],"azure_ai/mistral-small-2503":[1e-7,3e-7,null,null],"mistral-small-2503":[1e-7,3e-7,null,null],"bedrock/ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"bedrock/ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/moonshotai.kimi-k2.5":[6e-7,0.00000303,null,null],"bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"bedrock/ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"bedrock/ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"bedrock/eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"bedrock/eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"bedrock/eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"bedrock/eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"bedrock/eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"bedrock/eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"bedrock/sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"cerebras/llama-3.3-70b":[8.5e-7,0.0000012,null,null],"llama-3.3-70b":[8.5e-7,0.0000012,null,null],"cerebras/llama3.1-70b":[6e-7,6e-7,null,null],"llama3.1-70b":[6e-7,6e-7,null,null],"cerebras/llama3.1-8b":[1e-7,1e-7,null,null],"llama3.1-8b":[1e-7,1e-7,null,null],"cerebras/gpt-oss-120b":[3.5e-7,7.5e-7,null,null],"cerebras/qwen-3-32b":[4e-7,8e-7,null,null],"qwen-3-32b":[4e-7,8e-7,null,null],"cerebras/zai-glm-4.6":[0.00000225,0.00000275,null,null],"zai-glm-4.6":[0.00000225,0.00000275,null,null],"cerebras/zai-glm-4.7":[0.00000225,0.00000275,null,null],"zai-glm-4.7":[0.00000225,0.00000275,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"cloudflare/@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"cloudflare/@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"codestral/codestral-2405":[0,0,null,null],"codestral-2405":[0,0,null,null],"codestral/codestral-latest":[0,0,null,null],"codestral-latest":[0,0,null,null],"cohere/embed-v4.0":[1.2e-7,0,null,null],"embed-v4.0":[1.2e-7,0,null,null],"dashscope/qwen-coder":[3e-7,0.0000015,null,null],"qwen-coder":[3e-7,0.0000015,null,null],"dashscope/qwen-max":[0.0000016,0.0000064,null,null],"qwen-max":[0.0000016,0.0000064,null,null],"dashscope/qwen-plus":[4e-7,0.0000012,null,null],"qwen-plus":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"dashscope/qwen-turbo":[5e-8,2e-7,null,null],"qwen-turbo":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-latest":[5e-8,2e-7,null,null],"qwen-turbo-latest":[5e-8,2e-7,null,null],"dashscope/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"dashscope/qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"dashscope/qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"dashscope/qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"dashscope/qwq-plus":[8e-7,0.0000024,null,null],"qwq-plus":[8e-7,0.0000024,null,null],"databricks/databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks/databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks/databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks/databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks/databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks/databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks/databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks/databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks/databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks/databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks/databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks/databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks/databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks/databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks/databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks/databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"deepinfra/Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"deepinfra/Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"deepinfra/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"deepinfra/Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"deepinfra/Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"deepinfra/Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"deepinfra/Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"deepinfra/Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"deepinfra/Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"deepinfra/Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"deepinfra/allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"deepinfra/anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"deepinfra/anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"deepinfra/anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"deepinfra/deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"deepinfra/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"deepinfra/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"deepinfra/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"google/gemma-3-12b-it":[5e-8,1e-7,null,null],"deepinfra/google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"deepinfra/google/gemma-3-4b-it":[4e-8,8e-8,null,null],"google/gemma-3-4b-it":[4e-8,8e-8,null,null],"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"deepinfra/meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"deepinfra/meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"deepinfra/meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3-8B-Instruct":[3e-8,6e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"deepinfra/microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"deepinfra/microsoft/phi-4":[7e-8,1.4e-7,null,null],"microsoft/phi-4":[7e-8,1.4e-7,null,null],"deepinfra/mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1":[4e-7,4e-7,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"deepinfra/openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"deepinfra/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"deepinfra/zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"deepseek/deepseek-chat":[2.8e-7,4.2e-7,0,2.8e-8],"deepseek/deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"deepseek/deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek/deepseek-v3":[2.7e-7,0.0000011,0,7e-8],"deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"fireworks_ai/WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"fireworks_ai/glm-4p7":[6e-7,0.0000022,null,3e-7],"glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/kimi-k2p5":[6e-7,0.000003,null,1e-7],"kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"fireworks_ai/nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-base":[8e-9,0,null,null],"thenlper/gte-base":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-large":[1.6e-8,0,null,null],"thenlper/gte-large":[1.6e-8,0,null,null],"friendliai/meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"friendliai/meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"gemini/gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"vertex_ai/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"vertex_ai/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"vertex_ai/gemini-embedding-2-preview":[1.5e-7,0,null,null],"vertex_ai/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-embedding-001":[1.5e-7,0,null,null],"gemini/gemini-embedding-2-preview":[2e-7,0,null,null],"gemini/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-1.5-flash":[7.5e-8,0,null,null],"gemini-1.5-flash":[7.5e-8,0,null,null],"gemini/gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-001":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini/gemini-3.1-flash-image-preview":[2.5e-7,0.0000015,null,null],"gemini/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini/gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-latest":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-lite-latest":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"gemini/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"gemini/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-exp-1114":[0,0,null,null],"gemini-exp-1114":[0,0,null,null],"gemini/gemini-exp-1206":[0,0,null,null],"gemini/gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini/gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini/gemma-3-27b-it":[0,0,null,null],"gemma-3-27b-it":[0,0,null,null],"gemini/learnlm-1.5-pro-experimental":[0,0,null,null],"learnlm-1.5-pro-experimental":[0,0,null,null],"gemini/lyria-3-clip-preview":[0,0,null,null],"lyria-3-clip-preview":[0,0,null,null],"gemini/lyria-3-pro-preview":[0,0,null,null],"lyria-3-pro-preview":[0,0,null,null],"gigachat/GigaChat-2-Lite":[0,0,null,null],"GigaChat-2-Lite":[0,0,null,null],"gigachat/GigaChat-2-Max":[0,0,null,null],"GigaChat-2-Max":[0,0,null,null],"gigachat/GigaChat-2-Pro":[0,0,null,null],"GigaChat-2-Pro":[0,0,null,null],"gigachat/Embeddings":[0,0,null,null],"Embeddings":[0,0,null,null],"gigachat/Embeddings-2":[0,0,null,null],"Embeddings-2":[0,0,null,null],"gigachat/EmbeddingsGigaR":[0,0,null,null],"EmbeddingsGigaR":[0,0,null,null],"gmi/anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"gmi/anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"gmi/anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"gmi/anthropic/claude-opus-4":[0.000015,0.000075,null,null],"anthropic/claude-opus-4":[0.000015,0.000075,null,null],"gmi/openai/gpt-5.2":[0.00000175,0.000014,null,null],"openai/gpt-5.2":[0.00000175,0.000014,null,null],"gmi/openai/gpt-5.1":[0.00000125,0.00001,null,null],"openai/gpt-5.1":[0.00000125,0.00001,null,null],"gmi/openai/gpt-5":[0.00000125,0.00001,null,null],"openai/gpt-5":[0.00000125,0.00001,null,null],"gmi/openai/gpt-4o":[0.0000025,0.00001,null,null],"openai/gpt-4o":[0.0000025,0.00001,null,null],"gmi/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3-0324":[2.8e-7,8.8e-7,null,null],"gmi/google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"gmi/google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"gmi/moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"gmi/MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"baseten/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"baseten/nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"baseten/zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"baseten/zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"baseten/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"baseten/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"baseten/moonshotai/Kimi-K2-Thinking":[6e-7,0.0000025,null,null],"baseten/moonshotai/Kimi-K2-Instruct-0905":[6e-7,0.0000025,null,null],"baseten/openai/gpt-oss-120b":[1e-7,5e-7,null,null],"baseten/deepseek-ai/DeepSeek-V3.1":[5e-7,0.0000015,null,null],"baseten/deepseek-ai/DeepSeek-V3-0324":[7.7e-7,7.7e-7,null,null],"gmi/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"gmi/zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"gradient_ai/anthropic-claude-3-opus":[0.000015,0.000075,null,null],"anthropic-claude-3-opus":[0.000015,0.000075,null,null],"gradient_ai/anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"gradient_ai/anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"gradient_ai/anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"gradient_ai/deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"gradient_ai/llama3-8b-instruct":[2e-7,2e-7,null,null],"llama3-8b-instruct":[2e-7,2e-7,null,null],"gradient_ai/llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"gradient_ai/mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"gradient_ai/openai-o3":[0.000002,0.000008,null,null],"openai-o3":[0.000002,0.000008,null,null],"gradient_ai/openai-o3-mini":[0.0000011,0.0000044,null,null],"openai-o3-mini":[0.0000011,0.0000044,null,null],"lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"lemonade/gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"lemonade/gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"lemonade/Gemma-3-4b-it-GGUF":[0,0,null,null],"Gemma-3-4b-it-GGUF":[0,0,null,null],"lemonade/Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"amazon-nova/nova-micro-v1":[3.5e-8,1.4e-7,null,null],"nova-micro-v1":[3.5e-8,1.4e-7,null,null],"amazon-nova/nova-lite-v1":[6e-8,2.4e-7,null,null],"nova-lite-v1":[6e-8,2.4e-7,null,null],"amazon-nova/nova-premier-v1":[0.0000025,0.0000125,null,null],"nova-premier-v1":[0.0000025,0.0000125,null,null],"amazon-nova/nova-pro-v1":[8e-7,0.0000032,null,null],"nova-pro-v1":[8e-7,0.0000032,null,null],"groq/llama-3.1-8b-instant":[5e-8,8e-8,null,null],"llama-3.1-8b-instant":[5e-8,8e-8,null,null],"groq/llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"groq/gemma-7b-it":[5e-8,8e-8,null,null],"gemma-7b-it":[5e-8,8e-8,null,null],"groq/meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"groq/meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"groq/meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"groq/moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"groq/openai/gpt-oss-120b":[1.5e-7,6e-7,null,7.5e-8],"groq/openai/gpt-oss-20b":[7.5e-8,3e-7,null,3.75e-8],"groq/openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"groq/qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/QwQ-32B":[2e-7,2e-7,null,null],"hyperbolic/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen3-235B-A22B":[0.000002,0.000002,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1":[4e-7,4e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1-0528":[2.5e-7,2.5e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3":[2e-7,2e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3-0324":[4e-7,4e-7,null,null],"hyperbolic/meta-llama/Llama-3.2-3B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Llama-3.3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/moonshotai/Kimi-K2-Instruct":[0.000002,0.000002,null,null],"lambda_ai/deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-0528":[2e-7,6e-7,null,null],"deepseek-r1-0528":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-671b":[8e-7,8e-7,null,null],"deepseek-r1-671b":[8e-7,8e-7,null,null],"lambda_ai/deepseek-v3-0324":[2e-7,6e-7,null,null],"lambda_ai/hermes3-405b":[8e-7,8e-7,null,null],"hermes3-405b":[8e-7,8e-7,null,null],"lambda_ai/hermes3-70b":[1.2e-7,3e-7,null,null],"hermes3-70b":[1.2e-7,3e-7,null,null],"lambda_ai/hermes3-8b":[2.5e-8,4e-8,null,null],"hermes3-8b":[2.5e-8,4e-8,null,null],"lambda_ai/lfm-40b":[1e-7,2e-7,null,null],"lfm-40b":[1e-7,2e-7,null,null],"lambda_ai/lfm-7b":[2.5e-8,4e-8,null,null],"lfm-7b":[2.5e-8,4e-8,null,null],"lambda_ai/llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"lambda_ai/llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"lambda_ai/llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"lambda_ai/llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"lambda_ai/llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"lambda_ai/qwen3-32b-fp8":[5e-8,1e-7,null,null],"qwen3-32b-fp8":[5e-8,1e-7,null,null],"minimax/MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"mistral/codestral-2405":[0.000001,0.000003,null,null],"mistral/codestral-2508":[3e-7,9e-7,null,null],"codestral-2508":[3e-7,9e-7,null,null],"mistral/codestral-latest":[0.000001,0.000003,null,null],"mistral/codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"mistral/devstral-medium-2507":[4e-7,0.000002,null,null],"devstral-medium-2507":[4e-7,0.000002,null,null],"mistral/devstral-small-2505":[1e-7,3e-7,null,null],"devstral-small-2505":[1e-7,3e-7,null,null],"mistral/devstral-small-2507":[1e-7,3e-7,null,null],"devstral-small-2507":[1e-7,3e-7,null,null],"mistral/devstral-small-latest":[1e-7,3e-7,null,null],"devstral-small-latest":[1e-7,3e-7,null,null],"mistral/labs-devstral-small-2512":[1e-7,3e-7,null,null],"labs-devstral-small-2512":[1e-7,3e-7,null,null],"mistral/devstral-latest":[4e-7,0.000002,null,null],"devstral-latest":[4e-7,0.000002,null,null],"mistral/devstral-medium-latest":[4e-7,0.000002,null,null],"devstral-medium-latest":[4e-7,0.000002,null,null],"mistral/devstral-2512":[4e-7,0.000002,null,null],"devstral-2512":[4e-7,0.000002,null,null],"mistral/magistral-medium-2506":[0.000002,0.000005,null,null],"magistral-medium-2506":[0.000002,0.000005,null,null],"mistral/magistral-medium-2509":[0.000002,0.000005,null,null],"magistral-medium-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-latest":[0.000002,0.000005,null,null],"magistral-medium-latest":[0.000002,0.000005,null,null],"mistral/magistral-small-2506":[5e-7,0.0000015,null,null],"magistral-small-2506":[5e-7,0.0000015,null,null],"mistral/magistral-small-latest":[5e-7,0.0000015,null,null],"magistral-small-latest":[5e-7,0.0000015,null,null],"mistral/magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"mistral/mistral-large-2402":[0.000004,0.000012,null,null],"mistral/mistral-large-2407":[0.000003,0.000009,null,null],"mistral/mistral-large-2411":[0.000002,0.000006,null,null],"mistral-large-2411":[0.000002,0.000006,null,null],"mistral/mistral-large-latest":[5e-7,0.0000015,null,null],"mistral/mistral-large-3":[5e-7,0.0000015,null,null],"mistral/mistral-large-2512":[5e-7,0.0000015,null,null],"mistral-large-2512":[5e-7,0.0000015,null,null],"mistral/mistral-medium":[0.0000027,0.0000081,null,null],"mistral-medium":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral/mistral-medium-latest":[4e-7,0.000002,null,null],"mistral-medium-latest":[4e-7,0.000002,null,null],"mistral/mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral/mistral-small":[1e-7,3e-7,null,null],"mistral/mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral/mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral/ministral-3-3b-2512":[1e-7,1e-7,null,null],"ministral-3-3b-2512":[1e-7,1e-7,null,null],"mistral/ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"mistral/ministral-3-14b-2512":[2e-7,2e-7,null,null],"ministral-3-14b-2512":[2e-7,2e-7,null,null],"mistral/mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral/open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-7b":[2.5e-7,2.5e-7,null,null],"open-mistral-7b":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-nemo":[3e-7,3e-7,null,null],"open-mistral-nemo":[3e-7,3e-7,null,null],"mistral/open-mistral-nemo-2407":[3e-7,3e-7,null,null],"open-mistral-nemo-2407":[3e-7,3e-7,null,null],"mistral/open-mixtral-8x22b":[0.000002,0.000006,null,null],"open-mixtral-8x22b":[0.000002,0.000006,null,null],"mistral/open-mixtral-8x7b":[7e-7,7e-7,null,null],"open-mixtral-8x7b":[7e-7,7e-7,null,null],"mistral/pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-large-2411":[0.000002,0.000006,null,null],"pixtral-large-2411":[0.000002,0.000006,null,null],"mistral/pixtral-large-latest":[0.000002,0.000006,null,null],"pixtral-large-latest":[0.000002,0.000006,null,null],"moonshot/kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"moonshot/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshot/kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"moonshot/kimi-latest":[0.000002,0.000005,null,1.5e-7],"kimi-latest":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"moonshot/kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"moonshot/kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"moonshot/moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-auto":[0.000002,0.000005,null,null],"moonshot-v1-auto":[0.000002,0.000005,null,null],"morph/morph-v3-fast":[8e-7,0.0000012,null,null],"morph-v3-fast":[8e-7,0.0000012,null,null],"morph/morph-v3-large":[9e-7,0.0000019,null,null],"morph-v3-large":[9e-7,0.0000019,null,null],"nscale/Qwen/QwQ-32B":[1.8e-7,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-32B-Instruct":[6e-8,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"nscale/Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[3.75e-7,3.75e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[1.5e-7,1.5e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"nscale/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct":[9e-8,2.9e-7,null,null],"nscale/mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"nebius/deepseek-ai/DeepSeek-R1":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-0528":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2.5e-7,7.5e-7,null,null],"nebius/deepseek-ai/DeepSeek-V3":[5e-7,0.0000015,null,null],"nebius/deepseek-ai/DeepSeek-V3-0324":[5e-7,0.0000015,null,null],"nebius/google/gemma-3-27b-it":[6e-8,2e-7,null,null],"nebius/meta-llama/Llama-3.3-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Llama-Guard-3-8B":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-8B-Instruct":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Meta-Llama-3.1-405B-Instruct":[0.000001,0.000003,null,null],"nebius/mistralai/Mistral-Nemo-Instruct-2407":[4e-8,1.2e-7,null,null],"nebius/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000003,null,null],"nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nebius/Qwen/Qwen3-235B-A22B":[2e-7,6e-7,null,null],"nebius/Qwen/Qwen3-32B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-30B-A3B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-14B":[8e-8,2.4e-7,null,null],"nebius/Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"nebius/Qwen/QwQ-32B":[1.5e-7,4.5e-7,null,null],"nebius/Qwen/Qwen2.5-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"nebius/Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"nebius/Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"nebius/BAAI/bge-en-icl":[1e-8,0,null,null],"BAAI/bge-en-icl":[1e-8,0,null,null],"nebius/BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"nebius/intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"oci/meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"oci/meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-3":[0.000003,0.000015,null,null],"xai.grok-3":[0.000003,0.000015,null,null],"oci/xai.grok-3-fast":[0.000005,0.000025,null,null],"xai.grok-3-fast":[0.000005,0.000025,null,null],"oci/xai.grok-3-mini":[3e-7,5e-7,null,null],"xai.grok-3-mini":[3e-7,5e-7,null,null],"oci/xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"oci/xai.grok-4":[0.000003,0.000015,null,null],"xai.grok-4":[0.000003,0.000015,null,null],"oci/cohere.command-latest":[0.00000156,0.00000156,null,null],"cohere.command-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"oci/cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"oci/cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"oci/meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-4-fast":[0.000005,0.000025,null,null],"xai.grok-4-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.1-fast":[0.000005,0.000025,null,null],"xai.grok-4.1-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.20":[0.000003,0.000015,null,null],"xai.grok-4.20":[0.000003,0.000015,null,null],"oci/xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"oci/xai.grok-code-fast-1":[0.000005,0.000025,null,null],"xai.grok-code-fast-1":[0.000005,0.000025,null,null],"oci/google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"oci/google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"oci/google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"oci/cohere.embed-english-v3.0":[1e-7,0,null,null],"cohere.embed-english-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-v4.0":[1.2e-7,0,null,null],"cohere.embed-v4.0":[1.2e-7,0,null,null],"ollama/codegeex4":[0,0,null,null],"codegeex4":[0,0,null,null],"ollama/codegemma":[0,0,null,null],"codegemma":[0,0,null,null],"ollama/codellama":[0,0,null,null],"codellama":[0,0,null,null],"ollama/deepseek-coder-v2-base":[0,0,null,null],"deepseek-coder-v2-base":[0,0,null,null],"ollama/deepseek-coder-v2-instruct":[0,0,null,null],"deepseek-coder-v2-instruct":[0,0,null,null],"ollama/deepseek-coder-v2-lite-base":[0,0,null,null],"deepseek-coder-v2-lite-base":[0,0,null,null],"ollama/deepseek-coder-v2-lite-instruct":[0,0,null,null],"deepseek-coder-v2-lite-instruct":[0,0,null,null],"ollama/deepseek-v3.1:671b-cloud":[0,0,null,null],"deepseek-v3.1:671b-cloud":[0,0,null,null],"ollama/gpt-oss:120b-cloud":[0,0,null,null],"gpt-oss:120b-cloud":[0,0,null,null],"ollama/gpt-oss:20b-cloud":[0,0,null,null],"gpt-oss:20b-cloud":[0,0,null,null],"ollama/internlm2_5-20b-chat":[0,0,null,null],"internlm2_5-20b-chat":[0,0,null,null],"ollama/llama2":[0,0,null,null],"llama2":[0,0,null,null],"ollama/llama2-uncensored":[0,0,null,null],"llama2-uncensored":[0,0,null,null],"ollama/llama2:13b":[0,0,null,null],"llama2:13b":[0,0,null,null],"ollama/llama2:70b":[0,0,null,null],"llama2:70b":[0,0,null,null],"ollama/llama2:7b":[0,0,null,null],"llama2:7b":[0,0,null,null],"ollama/llama3":[0,0,null,null],"llama3":[0,0,null,null],"ollama/llama3.1":[0,0,null,null],"llama3.1":[0,0,null,null],"ollama/llama3:70b":[0,0,null,null],"llama3:70b":[0,0,null,null],"ollama/llama3:8b":[0,0,null,null],"llama3:8b":[0,0,null,null],"ollama/mistral":[0,0,null,null],"mistral":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.1":[0,0,null,null],"mistral-7B-Instruct-v0.1":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.2":[0,0,null,null],"mistral-7B-Instruct-v0.2":[0,0,null,null],"ollama/mistral-large-instruct-2407":[0,0,null,null],"mistral-large-instruct-2407":[0,0,null,null],"ollama/mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"ollama/mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"ollama/orca-mini":[0,0,null,null],"orca-mini":[0,0,null,null],"ollama/qwen3-coder:480b-cloud":[0,0,null,null],"qwen3-coder:480b-cloud":[0,0,null,null],"ollama/vicuna":[0,0,null,null],"vicuna":[0,0,null,null],"openrouter/anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"openrouter/anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"openrouter/anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"openrouter/bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"openrouter/deepseek/deepseek-chat":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"openrouter/deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"openrouter/deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"openrouter/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"openrouter/deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"openrouter/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"openrouter/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"openrouter/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"openrouter/google/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/google/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"openrouter/google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"openrouter/google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/mancer/weaver":[0.000005625,0.000005625,null,null],"mancer/weaver":[0.000005625,0.000005625,null,null],"openrouter/meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"openrouter/minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"openrouter/mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"openrouter/mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"openrouter/mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"openrouter/mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"openrouter/mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"openrouter/mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"openrouter/mistralai/mistral-large":[0.000008,0.000024,null,null],"mistralai/mistral-large":[0.000008,0.000024,null,null],"openrouter/mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"openrouter/moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"openrouter/openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openrouter/openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openrouter/openai/gpt-4":[0.00003,0.00006,null,null],"openai/gpt-4":[0.00003,0.00006,null,null],"openrouter/openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openrouter/openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openrouter/openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openrouter/openai/gpt-4o":[0.0000025,0.00001,null,null],"openrouter/openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openrouter/openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openrouter/openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openrouter/openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openrouter/openai/gpt-oss-120b":[1.8e-7,8e-7,null,null],"openrouter/openai/gpt-oss-20b":[2e-8,1e-7,null,null],"openrouter/openai/o1":[0.000015,0.00006,null,0.0000075],"openai/o1":[0.000015,0.00006,null,0.0000075],"openrouter/openai/o3-mini":[0.0000011,0.0000044,null,null],"openai/o3-mini":[0.0000011,0.0000044,null,null],"openrouter/openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openrouter/qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"openrouter/qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"openrouter/qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"openrouter/qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"openrouter/qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"openrouter/qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"openrouter/qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"openrouter/qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"openrouter/switchpoint/router":[8.5e-7,0.0000034,null,null],"switchpoint/router":[8.5e-7,0.0000034,null,null],"openrouter/undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/x-ai/grok-4":[0.000003,0.000015,null,null],"x-ai/grok-4":[0.000003,0.000015,null,null],"openrouter/z-ai/glm-4.6":[4e-7,0.00000175,null,null],"z-ai/glm-4.6":[4e-7,0.00000175,null,null],"openrouter/z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"openrouter/xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"openrouter/z-ai/glm-4.7":[4e-7,0.0000015,0,0],"z-ai/glm-4.7":[4e-7,0.0000015,0,0],"openrouter/z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"openrouter/z-ai/glm-5":[8e-7,0.00000256,null,null],"z-ai/glm-5":[8e-7,0.00000256,null,null],"openrouter/minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"openrouter/minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"openrouter/openrouter/auto":[0,0,null,null],"openrouter/auto":[0,0,null,null],"openrouter/openrouter/free":[0,0,null,null],"openrouter/free":[0,0,null,null],"openrouter/openrouter/bodybuilder":[0,0,null,null],"openrouter/bodybuilder":[0,0,null,null],"ovhcloud/DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"ovhcloud/Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"ovhcloud/Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"ovhcloud/Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"ovhcloud/Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"ovhcloud/Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"ovhcloud/Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"ovhcloud/Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"ovhcloud/Qwen3-32B":[8e-8,2.3e-7,null,null],"Qwen3-32B":[8e-8,2.3e-7,null,null],"ovhcloud/gpt-oss-120b":[8e-8,4e-7,null,null],"ovhcloud/gpt-oss-20b":[4e-8,1.5e-7,null,null],"gpt-oss-20b":[4e-8,1.5e-7,null,null],"ovhcloud/llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"ovhcloud/mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"palm/chat-bison":[1.25e-7,1.25e-7,null,null],"chat-bison":[1.25e-7,1.25e-7,null,null],"palm/chat-bison-001":[1.25e-7,1.25e-7,null,null],"chat-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison":[1.25e-7,1.25e-7,null,null],"text-bison":[1.25e-7,1.25e-7,null,null],"palm/text-bison-001":[1.25e-7,1.25e-7,null,null],"text-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"perplexity/codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"perplexity/codellama-70b-instruct":[7e-7,0.0000028,null,null],"codellama-70b-instruct":[7e-7,0.0000028,null,null],"perplexity/llama-2-70b-chat":[7e-7,0.0000028,null,null],"llama-2-70b-chat":[7e-7,0.0000028,null,null],"perplexity/llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"perplexity/llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"perplexity/mistral-7b-instruct":[7e-8,2.8e-7,null,null],"mistral-7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/pplx-70b-chat":[7e-7,0.0000028,null,null],"pplx-70b-chat":[7e-7,0.0000028,null,null],"perplexity/pplx-70b-online":[0,0.0000028,null,null],"pplx-70b-online":[0,0.0000028,null,null],"perplexity/pplx-7b-chat":[7e-8,2.8e-7,null,null],"pplx-7b-chat":[7e-8,2.8e-7,null,null],"perplexity/pplx-7b-online":[0,2.8e-7,null,null],"pplx-7b-online":[0,2.8e-7,null,null],"perplexity/sonar":[0.000001,0.000001,null,null],"sonar":[0.000001,0.000001,null,null],"perplexity/sonar-deep-research":[0.000002,0.000008,null,null],"sonar-deep-research":[0.000002,0.000008,null,null],"perplexity/sonar-medium-chat":[6e-7,0.0000018,null,null],"sonar-medium-chat":[6e-7,0.0000018,null,null],"perplexity/sonar-medium-online":[0,0.0000018,null,null],"sonar-medium-online":[0,0.0000018,null,null],"perplexity/sonar-pro":[0.000003,0.000015,null,null],"sonar-pro":[0.000003,0.000015,null,null],"perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"sonar-reasoning":[0.000001,0.000005,null,null],"perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"sonar-reasoning-pro":[0.000002,0.000008,null,null],"perplexity/sonar-small-chat":[7e-8,2.8e-7,null,null],"sonar-small-chat":[7e-8,2.8e-7,null,null],"perplexity/sonar-small-online":[0,2.8e-7,null,null],"sonar-small-online":[0,2.8e-7,null,null],"publicai/swiss-ai/apertus-8b-instruct":[0,0,null,null],"swiss-ai/apertus-8b-instruct":[0,0,null,null],"publicai/swiss-ai/apertus-70b-instruct":[0,0,null,null],"swiss-ai/apertus-70b-instruct":[0,0,null,null],"publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"publicai/BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"publicai/BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Instruct":[0,0,null,null],"allenai/Olmo-3-7B-Instruct":[0,0,null,null],"perplexity/pplx-embed-v1-0.6b":[4e-9,0,null,null],"pplx-embed-v1-0.6b":[4e-9,0,null,null],"perplexity/pplx-embed-v1-4b":[3e-8,0,null,null],"pplx-embed-v1-4b":[3e-8,0,null,null],"publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Think":[0,0,null,null],"allenai/Olmo-3-7B-Think":[0,0,null,null],"publicai/allenai/Olmo-3-32B-Think":[0,0,null,null],"allenai/Olmo-3-32B-Think":[0,0,null,null],"replicate/meta/llama-2-13b":[1e-7,5e-7,null,null],"meta/llama-2-13b":[1e-7,5e-7,null,null],"replicate/meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"replicate/meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-7b":[5e-8,2.5e-7,null,null],"meta/llama-2-7b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-8b":[5e-8,2.5e-7,null,null],"meta/llama-3-8b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"replicate/mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"replicate/openai/gpt-5":[0.00000125,0.00001,null,null],"replicateopenai/gpt-oss-20b":[9e-8,3.6e-7,null,null],"replicate/anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"replicate/ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"replicate/openai/gpt-4o":[0.0000025,0.00001,null,null],"replicate/openai/o4-mini":[0.000001,0.000004,null,null],"openai/o4-mini":[0.000001,0.000004,null,null],"replicate/openai/o1-mini":[0.0000011,0.0000044,null,null],"openai/o1-mini":[0.0000011,0.0000044,null,null],"replicate/openai/o1":[0.000015,0.00006,null,null],"replicate/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"replicate/qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"replicate/anthropic/claude-4-sonnet":[0.000003,0.000015,null,null],"replicate/deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"replicate/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"replicate/anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"replicate/anthropic/claude-3.5-sonnet":[0.00000375,0.00001875,null,null],"replicate/google/gemini-3-pro":[0.000002,0.000012,null,null],"google/gemini-3-pro":[0.000002,0.000012,null,null],"replicate/anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"replicate/openai/gpt-4.1":[0.000002,0.000008,null,null],"replicate/openai/gpt-4.1-nano":[1e-7,4e-7,null,null],"replicate/openai/gpt-4.1-mini":[4e-7,0.0000016,null,null],"replicate/openai/gpt-5-nano":[5e-8,4e-7,null,null],"replicate/openai/gpt-5-mini":[2.5e-7,0.000002,null,null],"replicate/google/gemini-2.5-flash":[0.0000025,0.0000025,null,null],"replicate/openai/gpt-oss-120b":[1.8e-7,7.2e-7,null,null],"replicate/deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"replicate/xai/grok-4":[0.0000072,0.000036,null,null],"xai/grok-4":[0.0000072,0.000036,null,null],"replicate/deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b":[0,0,null,null],"meta-textgeneration-llama-2-13b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b-f":[0,0,null,null],"meta-textgeneration-llama-2-13b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b":[0,0,null,null],"meta-textgeneration-llama-2-70b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b":[0,0,null,null],"meta-textgeneration-llama-2-7b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b-f":[0,0,null,null],"meta-textgeneration-llama-2-7b-f":[0,0,null,null],"sambanova/DeepSeek-R1":[0.000005,0.000007,null,null],"DeepSeek-R1":[0.000005,0.000007,null,null],"sambanova/DeepSeek-R1-Distill-Llama-70B":[7e-7,0.0000014,null,null],"sambanova/DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"sambanova/Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"sambanova/Llama-4-Scout-17B-16E-Instruct":[4e-7,7e-7,null,null],"sambanova/Meta-Llama-3.1-405B-Instruct":[0.000005,0.00001,null,null],"sambanova/Meta-Llama-3.1-8B-Instruct":[1e-7,2e-7,null,null],"sambanova/Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"sambanova/Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"sambanova/Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"sambanova/Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"sambanova/QwQ-32B":[5e-7,0.000001,null,null],"QwQ-32B":[5e-7,0.000001,null,null],"sambanova/Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"sambanova/Qwen3-32B":[4e-7,8e-7,null,null],"sambanova/DeepSeek-V3.1":[0.000003,0.0000045,null,null],"DeepSeek-V3.1":[0.000003,0.0000045,null,null],"sambanova/gpt-oss-120b":[0.000003,0.0000045,null,null],"text-completion-codestral/codestral-2405":[0,0,null,null],"text-completion-codestral/codestral-latest":[0,0,null,null],"together_ai/baai/bge-base-en-v1.5":[8e-9,0,null,null],"baai/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507":[6.5e-7,0.000003,null,null],"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"together_ai/deepseek-ai/DeepSeek-R1":[0.000003,0.000007,null,null],"together_ai/deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"together_ai/deepseek-ai/DeepSeek-V3":[0.00000125,0.00000125,null,null],"together_ai/deepseek-ai/DeepSeek-V3.1":[6e-7,0.0000017,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[2.7e-7,8.5e-7,null,null],"together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct":[1.8e-7,5.9e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[1.8e-7,1.8e-7,null,null],"together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1":[6e-7,6e-7,null,null],"together_ai/moonshotai/Kimi-K2-Instruct":[0.000001,0.000003,null,null],"together_ai/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"together_ai/openai/gpt-oss-20b":[5e-8,2e-7,null,null],"together_ai/zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"together_ai/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"together_ai/zai-org/GLM-4.7":[4.5e-7,0.000002,null,null],"together_ai/moonshotai/Kimi-K2.5":[5e-7,0.0000028,null,null],"together_ai/moonshotai/Kimi-K2-Instruct-0905":[0.000001,0.000003,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"v0/v0-1.0-md":[0.000003,0.000015,null,null],"v0-1.0-md":[0.000003,0.000015,null,null],"v0/v0-1.5-lg":[0.000015,0.000075,null,null],"v0-1.5-lg":[0.000015,0.000075,null,null],"v0/v0-1.5-md":[0.000003,0.000015,null,null],"v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"vercel_ai_gateway/amazon/nova-lite":[6e-8,2.4e-7,null,null],"amazon/nova-lite":[6e-8,2.4e-7,null,null],"vercel_ai_gateway/amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"vercel_ai_gateway/amazon/nova-pro":[8e-7,0.0000032,null,null],"amazon/nova-pro":[8e-7,0.0000032,null,null],"vercel_ai_gateway/amazon/titan-embed-text-v2":[2e-8,0,null,null],"amazon/titan-embed-text-v2":[2e-8,0,null,null],"vercel_ai_gateway/anthropic/claude-3-haiku":[2.5e-7,0.00000125,3e-7,3e-8],"vercel_ai_gateway/anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-3.5-haiku":[8e-7,0.000004,0.000001,8e-8],"vercel_ai_gateway/anthropic/claude-3.5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3.7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-4-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-4-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"vercel_ai_gateway/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/cohere/command-a":[0.0000025,0.00001,null,null],"cohere/command-a":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/command-r":[1.5e-7,6e-7,null,null],"cohere/command-r":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/cohere/command-r-plus":[0.0000025,0.00001,null,null],"cohere/command-r-plus":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/embed-v4.0":[1.2e-7,0,null,null],"vercel_ai_gateway/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"vercel_ai_gateway/deepseek/deepseek-v3":[9e-7,9e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"vercel_ai_gateway/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"vercel_ai_gateway/google/gemini-2.5-pro":[0.0000025,0.00001,null,null],"vercel_ai_gateway/google/gemini-embedding-001":[1.5e-7,0,null,null],"google/gemini-embedding-001":[1.5e-7,0,null,null],"vercel_ai_gateway/google/gemma-2-9b":[2e-7,2e-7,null,null],"google/gemma-2-9b":[2e-7,2e-7,null,null],"vercel_ai_gateway/google/text-embedding-005":[2.5e-8,0,null,null],"google/text-embedding-005":[2.5e-8,0,null,null],"vercel_ai_gateway/google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"vercel_ai_gateway/inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"vercel_ai_gateway/meta/llama-3-70b":[5.9e-7,7.9e-7,null,null],"vercel_ai_gateway/meta/llama-3-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.1-8b":[5e-8,8e-8,null,null],"meta/llama-3.1-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-1b":[1e-7,1e-7,null,null],"meta/llama-3.2-1b":[1e-7,1e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-4-maverick":[2e-7,6e-7,null,null],"meta/llama-4-maverick":[2e-7,6e-7,null,null],"vercel_ai_gateway/meta/llama-4-scout":[1e-7,3e-7,null,null],"meta/llama-4-scout":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/codestral":[3e-7,9e-7,null,null],"mistral/codestral":[3e-7,9e-7,null,null],"vercel_ai_gateway/mistral/codestral-embed":[1.5e-7,0,null,null],"mistral/codestral-embed":[1.5e-7,0,null,null],"vercel_ai_gateway/mistral/devstral-small":[7e-8,2.8e-7,null,null],"mistral/devstral-small":[7e-8,2.8e-7,null,null],"vercel_ai_gateway/mistral/magistral-medium":[0.000002,0.000005,null,null],"mistral/magistral-medium":[0.000002,0.000005,null,null],"vercel_ai_gateway/mistral/magistral-small":[5e-7,0.0000015,null,null],"mistral/magistral-small":[5e-7,0.0000015,null,null],"vercel_ai_gateway/mistral/ministral-3b":[4e-8,4e-8,null,null],"mistral/ministral-3b":[4e-8,4e-8,null,null],"vercel_ai_gateway/mistral/ministral-8b":[1e-7,1e-7,null,null],"mistral/ministral-8b":[1e-7,1e-7,null,null],"vercel_ai_gateway/mistral/mistral-embed":[1e-7,0,null,null],"mistral/mistral-embed":[1e-7,0,null,null],"vercel_ai_gateway/mistral/mistral-large":[0.000002,0.000006,null,null],"mistral/mistral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"vercel_ai_gateway/mistral/mistral-small":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"vercel_ai_gateway/mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/mistral/pixtral-large":[0.000002,0.000006,null,null],"mistral/pixtral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"vercel_ai_gateway/morph/morph-v3-fast":[8e-7,0.0000012,null,null],"vercel_ai_gateway/morph/morph-v3-large":[9e-7,0.0000019,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"vercel_ai_gateway/openai/gpt-4-turbo":[0.00001,0.00003,null,null],"openai/gpt-4-turbo":[0.00001,0.00003,null,null],"vercel_ai_gateway/openai/gpt-4.1":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/gpt-4.1-mini":[4e-7,0.0000016,0,1e-7],"vercel_ai_gateway/openai/gpt-4.1-nano":[1e-7,4e-7,0,2.5e-8],"vercel_ai_gateway/openai/gpt-4o":[0.0000025,0.00001,0,0.00000125],"vercel_ai_gateway/openai/gpt-4o-mini":[1.5e-7,6e-7,0,7.5e-8],"vercel_ai_gateway/openai/o1":[0.000015,0.00006,0,0.0000075],"vercel_ai_gateway/openai/o3":[0.000002,0.000008,0,5e-7],"openai/o3":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/o3-mini":[0.0000011,0.0000044,0,5.5e-7],"vercel_ai_gateway/openai/o4-mini":[0.0000011,0.0000044,0,2.75e-7],"vercel_ai_gateway/openai/text-embedding-3-large":[1.3e-7,0,null,null],"openai/text-embedding-3-large":[1.3e-7,0,null,null],"vercel_ai_gateway/openai/text-embedding-3-small":[2e-8,0,null,null],"openai/text-embedding-3-small":[2e-8,0,null,null],"vercel_ai_gateway/openai/text-embedding-ada-002":[1e-7,0,null,null],"openai/text-embedding-ada-002":[1e-7,0,null,null],"vercel_ai_gateway/perplexity/sonar":[0.000001,0.000001,null,null],"vercel_ai_gateway/perplexity/sonar-pro":[0.000003,0.000015,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"vercel_ai_gateway/vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-2":[0.000002,0.00001,null,null],"xai/grok-2":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-3":[0.000003,0.000015,null,null],"xai/grok-3":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-3-fast":[0.000005,0.000025,null,null],"xai/grok-3-fast":[0.000005,0.000025,null,null],"vercel_ai_gateway/xai/grok-3-mini":[3e-7,5e-7,null,null],"xai/grok-3-mini":[3e-7,5e-7,null,null],"vercel_ai_gateway/xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"vercel_ai_gateway/xai/grok-4":[0.000003,0.000015,null,null],"vercel_ai_gateway/zai/glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5":[6e-7,0.0000022,null,null],"vercel_ai_gateway/zai/glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-air":[2e-7,0.0000011,null,null],"vercel_ai_gateway/zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"vertex_ai/claude-3-5-haiku":[0.000001,0.000005,null,null],"claude-3-5-haiku":[0.000001,0.000005,null,null],"vertex_ai/claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"vertex_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-3-5-sonnet":[0.000003,0.000015,null,null],"claude-3-5-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"vertex_ai/claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-3-haiku":[2.5e-7,0.00000125,null,null],"claude-3-haiku":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-opus":[0.000015,0.000075,null,null],"claude-3-opus":[0.000015,0.000075,null,null],"vertex_ai/claude-3-opus@20240229":[0.000015,0.000075,null,null],"claude-3-opus@20240229":[0.000015,0.000075,null,null],"vertex_ai/claude-3-sonnet":[0.000003,0.000015,null,null],"claude-3-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"vertex_ai/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/mistralai/codestral-2@001":[3e-7,9e-7,null,null],"mistralai/codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/codestral-2":[3e-7,9e-7,null,null],"codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2@001":[3e-7,9e-7,null,null],"codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/mistralai/codestral-2":[3e-7,9e-7,null,null],"mistralai/codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2501":[2e-7,6e-7,null,null],"codestral-2501":[2e-7,6e-7,null,null],"vertex_ai/codestral@2405":[2e-7,6e-7,null,null],"codestral@2405":[2e-7,6e-7,null,null],"vertex_ai/codestral@latest":[2e-7,6e-7,null,null],"codestral@latest":[2e-7,6e-7,null,null],"vertex_ai/deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"vertex_ai/deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"vertex_ai/deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"vertex_ai/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"vertex_ai/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"vertex_ai/gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"vertex_ai/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"vertex_ai/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"vertex_ai/jamba-1.5":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-large":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-large@001":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-mini":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-mini@001":[2e-7,4e-7,null,null],"vertex_ai/meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"vertex_ai/meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama3-405b-instruct-maas":[0,0,null,null],"meta/llama3-405b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-70b-instruct-maas":[0,0,null,null],"meta/llama3-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-8b-instruct-maas":[0,0,null,null],"meta/llama3-8b-instruct-maas":[0,0,null,null],"vertex_ai/minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"vertex_ai/moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"vertex_ai/zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"vertex_ai/zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"vertex_ai/mistral-medium-3":[4e-7,0.000002,null,null],"mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistral-large-2411":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2407":[0.000002,0.000006,null,null],"mistral-large@2407":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2411-001":[0.000002,0.000006,null,null],"mistral-large@2411-001":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@latest":[0.000002,0.000006,null,null],"mistral-large@latest":[0.000002,0.000006,null,null],"vertex_ai/mistral-nemo@2407":[0.000003,0.000003,null,null],"mistral-nemo@2407":[0.000003,0.000003,null,null],"vertex_ai/mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"vertex_ai/mistral-small-2503":[0.000001,0.000003,null,null],"vertex_ai/mistral-small-2503@001":[0.000001,0.000003,null,null],"mistral-small-2503@001":[0.000001,0.000003,null,null],"vertex_ai/deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"vertex_ai/openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"vertex_ai/openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"voyage/rerank-2":[5e-8,0,null,null],"rerank-2":[5e-8,0,null,null],"voyage/rerank-2-lite":[2e-8,0,null,null],"rerank-2-lite":[2e-8,0,null,null],"voyage/rerank-2.5":[5e-8,0,null,null],"rerank-2.5":[5e-8,0,null,null],"voyage/rerank-2.5-lite":[2e-8,0,null,null],"rerank-2.5-lite":[2e-8,0,null,null],"voyage/voyage-2":[1e-7,0,null,null],"voyage-2":[1e-7,0,null,null],"voyage/voyage-3":[6e-8,0,null,null],"voyage-3":[6e-8,0,null,null],"voyage/voyage-3-large":[1.8e-7,0,null,null],"voyage-3-large":[1.8e-7,0,null,null],"voyage/voyage-3-lite":[2e-8,0,null,null],"voyage-3-lite":[2e-8,0,null,null],"voyage/voyage-3.5":[6e-8,0,null,null],"voyage-3.5":[6e-8,0,null,null],"voyage/voyage-3.5-lite":[2e-8,0,null,null],"voyage-3.5-lite":[2e-8,0,null,null],"voyage/voyage-code-2":[1.2e-7,0,null,null],"voyage-code-2":[1.2e-7,0,null,null],"voyage/voyage-code-3":[1.8e-7,0,null,null],"voyage-code-3":[1.8e-7,0,null,null],"voyage/voyage-context-3":[1.8e-7,0,null,null],"voyage-context-3":[1.8e-7,0,null,null],"voyage/voyage-finance-2":[1.2e-7,0,null,null],"voyage-finance-2":[1.2e-7,0,null,null],"voyage/voyage-large-2":[1.2e-7,0,null,null],"voyage-large-2":[1.2e-7,0,null,null],"voyage/voyage-law-2":[1.2e-7,0,null,null],"voyage-law-2":[1.2e-7,0,null,null],"voyage/voyage-lite-01":[1e-7,0,null,null],"voyage-lite-01":[1e-7,0,null,null],"voyage/voyage-lite-02-instruct":[1e-7,0,null,null],"voyage-lite-02-instruct":[1e-7,0,null,null],"voyage/voyage-multimodal-3":[1.2e-7,0,null,null],"voyage-multimodal-3":[1.2e-7,0,null,null],"wandb/openai/gpt-oss-120b":[0.015,0.06,null,null],"wandb/openai/gpt-oss-20b":[0.005,0.02,null,null],"wandb/zai-org/GLM-4.5":[0.055,0.2,null,null],"wandb/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.01,0.01,null,null],"wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct":[0.1,0.15,null,null],"wandb/Qwen/Qwen3-235B-A22B-Thinking-2507":[0.01,0.01,null,null],"wandb/moonshotai/Kimi-K2-Instruct":[6e-7,0.0000025,null,null],"wandb/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,1e-7],"wandb/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"wandb/meta-llama/Llama-3.1-8B-Instruct":[0.022,0.022,null,null],"wandb/deepseek-ai/DeepSeek-V3.1":[0.055,0.165,null,null],"wandb/deepseek-ai/DeepSeek-R1-0528":[0.135,0.54,null,null],"wandb/deepseek-ai/DeepSeek-V3-0324":[0.114,0.275,null,null],"wandb/meta-llama/Llama-3.3-70B-Instruct":[0.071,0.071,null,null],"wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct":[0.017,0.066,null,null],"wandb/microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"watsonx/ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/mistralai/mistral-large":[0.000003,0.00001,null,null],"watsonx/bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"watsonx/core42/jais-13b-chat":[0.0005,0.002,null,null],"core42/jais-13b-chat":[0.0005,0.002,null,null],"watsonx/google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"watsonx/ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"watsonx/ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"watsonx/ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"watsonx/meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"watsonx/meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"watsonx/meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"watsonx/meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"watsonx/meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"watsonx/mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"watsonx/mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"watsonx/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"watsonx/sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"grok-2":[0.000002,0.00001,null,null],"xai/grok-2-1212":[0.000002,0.00001,null,null],"grok-2-1212":[0.000002,0.00001,null,null],"xai/grok-2-latest":[0.000002,0.00001,null,null],"grok-2-latest":[0.000002,0.00001,null,null],"grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision-1212":[0.000002,0.00001,null,null],"grok-2-vision-1212":[0.000002,0.00001,null,null],"xai/grok-2-vision-latest":[0.000002,0.00001,null,null],"grok-2-vision-latest":[0.000002,0.00001,null,null],"xai/grok-3-beta":[0.000003,0.000015,null,7.5e-7],"grok-3-beta":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"xai/grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"xai/grok-3-latest":[0.000003,0.000015,null,7.5e-7],"grok-3-latest":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-fast":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"xai/grok-4-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-0709":[0.000003,0.000015,null,null],"grok-4-0709":[0.000003,0.000015,null,null],"xai/grok-4-latest":[0.000003,0.000015,null,null],"grok-4-latest":[0.000003,0.000015,null,null],"xai/grok-4-1-fast":[2e-7,5e-7,null,5e-8],"grok-4-1-fast":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-beta":[0.000005,0.000015,null,null],"grok-beta":[0.000005,0.000015,null,null],"xai/grok-code-fast":[2e-7,0.0000015,null,2e-8],"grok-code-fast":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"xai/grok-vision-beta":[0.000005,0.000015,null,null],"grok-vision-beta":[0.000005,0.000015,null,null],"zai/glm-5":[0.000001,0.0000032,0,2e-7],"glm-5":[0.000001,0.0000032,0,2e-7],"zai/glm-5-code":[0.0000012,0.000005,0,3e-7],"glm-5-code":[0.0000012,0.000005,0,3e-7],"zai/glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.6":[6e-7,0.0000022,0,1.1e-7],"glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5v":[6e-7,0.0000018,null,null],"glm-4.5v":[6e-7,0.0000018,null,null],"zai/glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-airx":[0.0000011,0.0000045,null,null],"glm-4.5-airx":[0.0000011,0.0000045,null,null],"zai/glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"zai/glm-4.5-flash":[0,0,null,null],"glm-4.5-flash":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"fireworks_ai/accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"fireworks_ai/accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"fireworks_ai/accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/":[1e-7,0,null,null],"accounts/fireworks/models/":[1e-7,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3":[0,0,null,null],"accounts/fireworks/models/whisper-v3":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"novita/deepseek/deepseek-v3.2":[2.69e-7,4e-7,null,1.345e-7],"novita/minimax/minimax-m2.1":[3e-7,0.0000012,null,3e-8],"novita/zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"novita/xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"novita/zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"novita/moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"novita/minimax/minimax-m2":[3e-7,0.0000012,null,3e-8],"novita/paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"novita/deepseek/deepseek-v3.2-exp":[2.7e-7,4.1e-7,null,null],"novita/qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"novita/zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"novita/zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"novita/kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"novita/qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"novita/qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"novita/deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"novita/deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"novita/qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"novita/qwen/qwen3-max":[0.00000211,0.00000845,null,null],"qwen/qwen3-max":[0.00000211,0.00000845,null,null],"novita/skywork/r1v4-lite":[2e-7,6e-7,null,null],"skywork/r1v4-lite":[2e-7,6e-7,null,null],"novita/deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"novita/moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"novita/qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"novita/qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"novita/openai/gpt-oss-120b":[5e-8,2.5e-7,null,null],"novita/moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"novita/deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"novita/zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"novita/qwen/qwen3-235b-a22b-thinking-2507":[3e-7,0.000003,null,null],"novita/meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"novita/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"novita/zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"novita/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"novita/qwen/qwen3-235b-a22b-instruct-2507":[9e-8,5.8e-7,null,null],"novita/deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"novita/meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"novita/qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"novita/mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"novita/minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"novita/deepseek/deepseek-r1-0528":[7e-7,0.0000025,null,3.5e-7],"novita/deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"novita/meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"novita/microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"novita/deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"novita/deepseek/deepseek-r1-distill-llama-70b":[8e-7,8e-7,null,null],"novita/meta-llama/llama-3-70b-instruct":[5.1e-7,7.4e-7,null,null],"novita/qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"novita/meta-llama/llama-4-scout-17b-16e-instruct":[1.8e-7,5.9e-7,null,null],"novita/nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"novita/qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"novita/sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"novita/baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"novita/sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"novita/baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"novita/baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"novita/baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"novita/deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"novita/qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"novita/qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"novita/google/gemma-3-27b-it":[1.19e-7,2e-7,null,null],"novita/deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"novita/deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"novita/Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"novita/gryphe/mythomax-l2-13b":[9e-8,9e-8,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"novita/qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"novita/zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"novita/qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"novita/baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"novita/qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"novita/qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"novita/qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"novita/meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"novita/sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"novita/qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"novita/qwen/qwen3-embedding-8b":[7e-8,0,null,null],"qwen/qwen3-embedding-8b":[7e-8,0,null,null],"novita/baai/bge-m3":[1e-8,1e-8,null,null],"baai/bge-m3":[1e-8,1e-8,null,null],"novita/qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"novita/baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"llamagate/llama-3.1-8b":[3e-8,5e-8,null,null],"llama-3.1-8b":[3e-8,5e-8,null,null],"llamagate/llama-3.2-3b":[4e-8,8e-8,null,null],"llama-3.2-3b":[4e-8,8e-8,null,null],"llamagate/mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"llamagate/qwen3-8b":[4e-8,1.4e-7,null,null],"qwen3-8b":[4e-8,1.4e-7,null,null],"llamagate/dolphin3-8b":[8e-8,1.5e-7,null,null],"dolphin3-8b":[8e-8,1.5e-7,null,null],"llamagate/deepseek-r1-8b":[1e-7,2e-7,null,null],"deepseek-r1-8b":[1e-7,2e-7,null,null],"llamagate/deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"llamagate/openthinker-7b":[8e-8,1.5e-7,null,null],"openthinker-7b":[8e-8,1.5e-7,null,null],"llamagate/qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"llamagate/deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"llamagate/codellama-7b":[6e-8,1.2e-7,null,null],"codellama-7b":[6e-8,1.2e-7,null,null],"llamagate/qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"llamagate/llava-7b":[1e-7,2e-7,null,null],"llava-7b":[1e-7,2e-7,null,null],"llamagate/gemma3-4b":[3e-8,8e-8,null,null],"gemma3-4b":[3e-8,8e-8,null,null],"llamagate/nomic-embed-text":[2e-8,0,null,null],"nomic-embed-text":[2e-8,0,null,null],"llamagate/qwen3-embedding-8b":[2e-8,0,null,null],"qwen3-embedding-8b":[2e-8,0,null,null],"sarvam/sarvam-m":[0,0,0,0],"sarvam-m":[0,0,0,0],"gemini/gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini/gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini/gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini/gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"vertex_ai/claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"bedrock_mantle/openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,null],"bedrock/us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"MiniMax-M2.7":[3e-7,0.0000012,3.75e-7,6e-8],"MiniMax-M2.7-highspeed":[6e-7,0.0000024,3.75e-7,6e-8]}
\ No newline at end of file
diff --git a/src/providers/antigravity.ts b/src/providers/antigravity.ts
index c14eb4f..f048313 100644
--- a/src/providers/antigravity.ts
+++ b/src/providers/antigravity.ts
@@ -9,7 +9,7 @@ import { calculateCost } from '../models.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
const CONVERSATIONS_DIR = join(homedir(), '.gemini', 'antigravity', 'conversations')
-const CACHE_VERSION = 1
+const CACHE_VERSION = 2
const RPC_TIMEOUT_MS = 5000
const MAX_RESPONSE_BYTES = 16 * 1024 * 1024
@@ -283,7 +283,8 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
const results: ParsedProviderCall[] = []
- for (const entry of metadata) {
+ for (let i = 0; i < metadata.length; i++) {
+ const entry = metadata[i]!
const usage = entry.chatModel?.usage
if (!usage) continue
@@ -294,7 +295,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
if (inputTokens === 0 && outputTokens === 0) continue
- const responseId = usage.responseId ?? ''
+ const responseId = usage.responseId || String(i)
const dedupKey = `antigravity:${cascadeId}:${responseId}`
const model = modelMap[usage.model] ?? usage.model
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 2c1f53a..9500ee0 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -64,6 +64,8 @@ type CodexTokenUsage = {
total_tokens?: number
}
+const CHARS_PER_TOKEN = 4
+
function getCodexDir(override?: string): string {
return override ?? process.env['CODEX_HOME'] ?? join(homedir(), '.codex')
}
@@ -211,6 +213,8 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
let prevReasoning = 0
let pendingTools: string[] = []
let pendingUserMessage = ''
+ let pendingOutputChars = 0
+ let estCounter = 0
const results: ParsedProviderCall[] = []
for (const line of lines) {
@@ -252,9 +256,57 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
continue
}
+ if (entry.type === 'response_item' && entry.payload?.type === 'message' && entry.payload?.role === 'assistant') {
+ const texts = (entry.payload.content ?? [])
+ .filter(c => c.type === 'output_text' || c.type === 'text')
+ .map(c => c.text ?? '')
+ pendingOutputChars += texts.join('').length
+ continue
+ }
+
if (entry.type === 'event_msg' && entry.payload?.type === 'token_count') {
const info = entry.payload.info
- if (!info) continue
+ if (!info) {
+ if (pendingOutputChars === 0 && pendingUserMessage.length === 0) continue
+ const estInput = Math.ceil(pendingUserMessage.length / CHARS_PER_TOKEN)
+ const estOutput = Math.ceil(pendingOutputChars / CHARS_PER_TOKEN)
+ if (estInput === 0 && estOutput === 0) continue
+
+ const model = sessionModel ?? 'gpt-5'
+ const timestamp = entry.timestamp ?? ''
+ const dedupKey = `codex:${sessionId}:${timestamp}:est${estCounter++}`
+
+ if (seenKeys.has(dedupKey)) { pendingTools = []; pendingUserMessage = ''; pendingOutputChars = 0; continue }
+ seenKeys.add(dedupKey)
+
+ const costUSD = calculateCost(model, estInput, estOutput, 0, 0, 0)
+
+ results.push({
+ provider: 'codex',
+ model,
+ inputTokens: estInput,
+ outputTokens: estOutput,
+ cacheCreationInputTokens: 0,
+ cacheReadInputTokens: 0,
+ cachedInputTokens: 0,
+ reasoningTokens: 0,
+ webSearchRequests: 0,
+ costUSD,
+ costIsEstimated: true,
+ tools: pendingTools,
+ bashCommands: [],
+ timestamp,
+ speed: 'standard',
+ deduplicationKey: dedupKey,
+ userMessage: pendingUserMessage,
+ sessionId,
+ })
+
+ pendingTools = []
+ pendingUserMessage = ''
+ pendingOutputChars = 0
+ continue
+ }
const cumulativeTotal = info.total_token_usage?.total_tokens ?? 0
if (cumulativeTotal > 0 && cumulativeTotal === prevCumulativeTotal) continue
@@ -335,6 +387,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
pendingTools = []
pendingUserMessage = ''
+ pendingOutputChars = 0
}
}
diff --git a/src/providers/types.ts b/src/providers/types.ts
index 3ab967a..4e9a98a 100644
--- a/src/providers/types.ts
+++ b/src/providers/types.ts
@@ -19,6 +19,7 @@ export type ParsedProviderCall = {
reasoningTokens: number
webSearchRequests: number
costUSD: number
+ costIsEstimated?: boolean
tools: string[]
bashCommands: string[]
timestamp: string
From 6702d5534508c42f03302be32341dd00bbcb08b2 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sun, 3 May 2026 11:48:44 -0700
Subject: [PATCH 022/115] Fix menubar provider view showing $0.00 after idle
and refresh race condition
CLI timeout increased from 20s to 45s to handle cold file-cache latency on
provider-specific queries. Loading overlay now appears when the all-provider
payload confirms a provider has spend but its dedicated data hasn't loaded yet.
Manual refresh (force: true) bypasses the in-flight guard so users can always
re-fetch. Tab strip prefers the provider-specific payload cost when available
so it stays in sync with the hero section.
---
mac/Sources/CodeBurnMenubar/AppStore.swift | 6 +-----
.../CodeBurnMenubar/Data/DataClient.swift | 2 +-
.../CodeBurnMenubar/Views/AgentTabStrip.swift | 3 +++
.../Views/MenuBarContent.swift | 19 +++++++++++++++----
4 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 935a70d..4374f4c 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -99,14 +99,10 @@ final class AppStore {
private var inFlightKeys: Set = []
- /// Refresh the currently selected (period, provider) combination. Guards against concurrent
- /// fetches for the same key so a slow initial request can't overwrite a newer one that
- /// finished first (which would show stale numbers the user has already moved past).
- /// When `force` is false (background timer), skips the CLI call if the cache is still fresh.
func refresh(includeOptimize: Bool, force: Bool = false) async {
let key = currentKey
if !force, cache[key]?.isFresh == true { return }
- guard !inFlightKeys.contains(key) else { return }
+ if !force, inFlightKeys.contains(key) { return }
inFlightKeys.insert(key)
let showedLoading = cache[key] == nil
if showedLoading {
diff --git a/mac/Sources/CodeBurnMenubar/Data/DataClient.swift b/mac/Sources/CodeBurnMenubar/Data/DataClient.swift
index a6884be..d7e388a 100644
--- a/mac/Sources/CodeBurnMenubar/Data/DataClient.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/DataClient.swift
@@ -6,7 +6,7 @@ import Foundation
/// Pipe file descriptors pinned forever.
private let maxPayloadBytes = 20 * 1024 * 1024
private let maxStderrBytes = 256 * 1024
-private let spawnTimeoutSeconds: UInt64 = 20
+private let spawnTimeoutSeconds: UInt64 = 45
enum DataClientError: Error {
case spawn(String)
diff --git a/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift b/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
index b54e4e9..33f7b15 100644
--- a/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
@@ -46,6 +46,9 @@ struct AgentTabStrip: View {
private func cost(for filter: ProviderFilter) -> Double? {
let data = periodAll
if filter == .all { return data.current.cost }
+ if filter == store.selectedProvider, store.hasCachedData {
+ return store.payload.current.cost
+ }
let providers = Dictionary(
data.current.providers.map { ($0.key.lowercased(), $0.value) },
uniquingKeysWith: +
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 64440ad..37befc3 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -41,7 +41,7 @@ struct MenuBarContent: View {
}
}
- if store.isLoading {
+ if store.isLoading || (providerHasCostInAllPayload && !store.hasCachedData) {
BurnLoadingOverlay(periodLabel: store.selectedPeriod.rawValue)
.transition(.opacity)
}
@@ -57,11 +57,22 @@ struct MenuBarContent: View {
}
}
- /// True when a specific provider tab is selected and that provider has no spend in the
- /// currently selected period. The .all tab is exempt -- it always shows aggregated data.
private var isFilteredEmpty: Bool {
guard store.selectedProvider != .all else { return false }
- return store.payload.current.cost <= 0 && store.payload.current.calls == 0
+ if store.payload.current.cost > 0 || store.payload.current.calls > 0 { return false }
+ if providerHasCostInAllPayload { return false }
+ return true
+ }
+
+ private var providerHasCostInAllPayload: Bool {
+ guard let allPayload = store.periodAllPayload else { return false }
+ let providers = Dictionary(
+ allPayload.current.providers.map { ($0.key.lowercased(), $0.value) },
+ uniquingKeysWith: +
+ )
+ return store.selectedProvider.providerKeys.contains { key in
+ (providers[key] ?? 0) > 0
+ }
}
/// Show the tab row whenever the CLI detected at least one AI coding tool installed
From 988398abfca3db85ee9b5a22e0d26ccc5f570aff Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sun, 3 May 2026 12:11:10 -0700
Subject: [PATCH 023/115] Fix $0.0000 display for near-zero costs
Closes #205
---
src/currency.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/currency.ts b/src/currency.ts
index 8788e07..9901698 100644
--- a/src/currency.ts
+++ b/src/currency.ts
@@ -151,5 +151,6 @@ export function formatCost(costUSD: number): string {
if (cost >= 1) return `${symbol}${cost.toFixed(2)}`
if (cost >= 0.01) return `${symbol}${cost.toFixed(3)}`
- return `${symbol}${cost.toFixed(4)}`
+ if (cost >= 0.0001) return `${symbol}${cost.toFixed(4)}`
+ return `${symbol}${cost.toFixed(2)}`
}
From 6dbd25ce55c5a028bbf4d5d5b6e1e3f8d8898528 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sun, 3 May 2026 12:12:56 -0700
Subject: [PATCH 024/115] Bump version to 0.9.6
---
CHANGELOG.md | 25 +++++++++++++++++++++++++
package.json | 2 +-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d816b18..d200b75 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,30 @@
# Changelog
+## 0.9.6 - 2026-05-03
+
+### Added (CLI)
+- **Goose provider.** New provider for Block's Goose AI coding assistant.
+- **Antigravity provider.** New provider for Windsurf/Antigravity IDE sessions.
+- **Antigravity model aliases.** gemini-3-pro, flash-image, flash-lite, and community-contributed Gemini model IDs.
+- **GPT-5.5 display name** for Codex.
+- **Deno support.** `deno dx` added as a run method.
+
+### Fixed (CLI)
+- **Streaming dedup.** Claude Code streams each `message.id` multiple times (start, intermediate, stop). The old keep-first strategy lost tool_use blocks and understated output tokens by ~6.3%. Now keeps last occurrence content with first occurrence timestamp for correct date bucketing.
+- **`$0.0000` display.** Near-zero costs showed four decimal places instead of `$0.00`. Fixes #205.
+- **ANSI escape stripping.** Shell commands containing ANSI color codes now cleaned across all providers.
+- **Antigravity dedup collision.** Fixed key collision in session dedup. Added Codex ChatGPT Plus token estimation.
+- **Codex large session validation.** Reads full first line for session meta validation; caps read size and handles torn writes.
+- **Codex fork dedup.** Deduplicates forked Codex sessions to avoid double-counting.
+- **Windows dashboard hang.** Fixed `ExperimentalWarning` and dashboard freeze on Windows.
+- **Hardcoded `$` in forecast.** Forecast comparison text now uses the configured currency symbol.
+
+### Fixed (macOS menubar)
+- **Provider tabs showing $0.00 after idle.** CLI timeout increased from 20s to 45s for cold file-cache latency. Loading overlay now appears when the all-provider payload confirms a provider has spend but its dedicated data hasn't loaded yet.
+- **Refresh button blocked by in-flight requests.** Manual refresh now bypasses the in-flight guard so users can always re-fetch.
+- **Tab strip vs hero cost mismatch.** Tab strip prefers the provider-specific payload cost when available, staying in sync with the hero section.
+- **Ghost status item on macOS Tahoe.**
+
## 0.9.5 - 2026-05-01
### Added (CLI)
diff --git a/package.json b/package.json
index 718d763..051db6b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "codeburn",
- "version": "0.9.5",
+ "version": "0.9.6",
"description": "See where your AI coding tokens go - by task, tool, model, and project",
"type": "module",
"main": "./dist/cli.js",
From 7501aee130ae06927289bc938f764c7a4800ab1a Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Sun, 3 May 2026 12:14:35 -0700
Subject: [PATCH 025/115] Add Goose and Antigravity providers to README, bump
provider count to 18
---
CHANGELOG.md | 2 +-
README.md | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d200b75..b31e30b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,7 @@
### Added (CLI)
- **Goose provider.** New provider for Block's Goose AI coding assistant.
-- **Antigravity provider.** New provider for Windsurf/Antigravity IDE sessions.
+- **Antigravity provider.** New provider for Antigravity IDE sessions.
- **Antigravity model aliases.** gemini-3-pro, flash-image, flash-lite, and community-contributed Gemini model IDs.
- **GPT-5.5 display name** for Codex.
- **Deno support.** `deno dx` added as a run method.
diff --git a/README.md b/README.md
index 905f093..2d73f26 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
-CodeBurn tracks token usage, cost, and performance across **16 AI coding tools**. It breaks down spending by task type, model, tool, project, and provider so you can see exactly where your budget goes.
+CodeBurn tracks token usage, cost, and performance across **18 AI coding tools**. It breaks down spending by task type, model, tool, project, and provider so you can see exactly where your budget goes.
Everything runs locally. No wrapper, no proxy, no API keys. CodeBurn reads session data directly from disk and prices every call using [LiteLLM](https://github.com/BerriAI/litellm).
@@ -107,6 +107,8 @@ Arrow keys switch between Today, 7 Days, 30 Days, Month, and All Time. Press `q`
| Roo Code | VS Code `globalStorage/rooveterinaryinc.roo-cline/tasks/` | Yes |
| KiloCode | VS Code `globalStorage/kilocode.kilo-code/tasks/` | Yes |
| Qwen | `~/.qwen/projects//chats/` | Yes |
+| Goose | `~/.local/share/goose/sessions/sessions.db` (SQLite) | Yes |
+| Antigravity | `~/.gemini/antigravity/conversations/` | Yes |
Paths shown are for macOS. Linux and Windows equivalents are detected automatically. If a path has changed or is wrong, please [open an issue](https://github.com/getagentseal/codeburn/issues).
@@ -412,6 +414,8 @@ src/
pi.ts Pi/OMP agent JSONL session parsing
qwen.ts Qwen CLI JSONL session parsing
roo-code.ts Roo Code VS Code extension parsing
+ goose.ts Goose SQLite session parsing
+ antigravity.ts Antigravity conversation parsing
```
## Star History
From c16b21ec504a39137a3dfa20b59f9ca0bef4209b Mon Sep 17 00:00:00 2001
From: voidborne-d
Date: Mon, 4 May 2026 06:26:45 +0800
Subject: [PATCH 026/115] fix(classifier): surface skill name as subCategory
for general turns (#203)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Turns whose only assistant tool is `Skill` collapse to category `general`
because `classifyByToolPattern` returns `'general'` and `refineByKeywords`
only operates on `coding`/`exploration`. In environments that lean on Claude
Code skills, the per-activity dashboard column flattens — every `/init`,
`/review`, `/security-review`, `/claude-api`, plus user-defined skills, all
land in `general` with no signal about which workflow ran.
Implements Option A from the issue:
- `ParsedApiCall.skills: string[]` populated in the Anthropic-path parser
via a new `extractSkillNames` helper that reads `input.skill || input.name`
from each `Skill` ToolUseBlock (mirrors `detectGhostSkills` extraction at
optimize.ts:765 so the two stay in sync).
- `ClassifiedTurn.subCategory?: string` set to the first skill name when the
resolved category is `general` AND any skill identifier was extracted.
Top-level category stays `general` — existing aggregations, exports, and
category-keyed code paths unchanged.
- `SessionSummary.skillBreakdown: Record` populated in the same per-turn loop that builds
`categoryBreakdown`. Provider sessions (Codex/Cursor/etc.) keep `skills:
[]` — they don't expose the Skill tool surface today.
- Dashboard `ActivityBreakdown` renders top-N skill sub-rows beneath the
`general` row when present (indented `/skill-name`, dimmed). Other
categories render exactly as before; if no skills were invoked, the panel
is byte-identical to current output.
Existing 419 tests still pass. New `tests/classifier.test.ts` adds 8 cases:
single skill via `input.skill`, single via `input.name`, first-wins for
multi-skill turns, aggregation across multiple assistant calls in one turn,
no-name fallback (`subCategory` stays undefined), `Skill+Edit` promoting to
`coding` and dropping subCategory, non-Skill general turns, and a legacy
ParsedApiCall shape with `skills` field absent (forward-compat). Pre-fix
verification by stashing the source change reproduces 4/8 failures with the
exact "expected 'init', received undefined" diff; restoring → 8/8 pass.
Closes #203.
🤖 AI assistance disclosure: assistant-scaffolded by Claude (Opus 4.7);
author of record reviewed every line, ran the full vitest suite locally
(`npm test` → 32 files / 427 tests pass), `npx tsc --noEmit` clean, and
`npm run build` produces a clean ESM bundle.
---
src/classifier.ts | 13 ++++-
src/dashboard.tsx | 34 ++++++++++--
src/parser.ts | 29 ++++++++++
src/types.ts | 3 +
tests/classifier.test.ts | 103 +++++++++++++++++++++++++++++++++++
tests/compare-stats.test.ts | 2 +
tests/dashboard.test.ts | 1 +
tests/day-aggregator.test.ts | 6 ++
tests/export.test.ts | 2 +
9 files changed, 188 insertions(+), 5 deletions(-)
create mode 100644 tests/classifier.test.ts
diff --git a/src/classifier.ts b/src/classifier.ts
index 33b52b2..28076c8 100644
--- a/src/classifier.ts
+++ b/src/classifier.ts
@@ -53,6 +53,10 @@ function getAllTools(turn: ParsedTurn): string[] {
return turn.assistantCalls.flatMap(c => c.tools)
}
+function getAllSkills(turn: ParsedTurn): string[] {
+ return turn.assistantCalls.flatMap(c => c.skills ?? [])
+}
+
function classifyByToolPattern(turn: ParsedTurn): TaskCategory | null {
const tools = getAllTools(turn)
if (tools.length === 0) return null
@@ -159,5 +163,12 @@ export function classifyTurn(turn: ParsedTurn): ClassifiedTurn {
}
}
- return { ...turn, category, retries: countRetries(turn), hasEdits: turnHasEdits(turn) }
+ const result: ClassifiedTurn = { ...turn, category, retries: countRetries(turn), hasEdits: turnHasEdits(turn) }
+
+ if (category === 'general') {
+ const skills = getAllSkills(turn)
+ if (skills.length > 0) result.subCategory = skills[0]
+ }
+
+ return result
}
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index 9233095..c047d69 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -353,8 +353,11 @@ function ModelBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; pw:
)
}
+const SKILL_SUB_ROWS_LIMIT = 5
+
function ActivityBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; pw: number; bw: number }) {
const categoryTotals: Record = {}
+ const skillTotals: Record = {}
for (const project of projects) {
for (const session of project.sessions) {
for (const [cat, data] of Object.entries(session.categoryBreakdown)) {
@@ -364,24 +367,47 @@ function ActivityBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; p
categoryTotals[cat].editTurns += data.editTurns
categoryTotals[cat].oneShotTurns += data.oneShotTurns
}
+ for (const [skill, data] of Object.entries(session.skillBreakdown ?? {})) {
+ if (!skillTotals[skill]) skillTotals[skill] = { turns: 0, costUSD: 0, editTurns: 0, oneShotTurns: 0 }
+ skillTotals[skill].turns += data.turns
+ skillTotals[skill].costUSD += data.costUSD
+ skillTotals[skill].editTurns += data.editTurns
+ skillTotals[skill].oneShotTurns += data.oneShotTurns
+ }
}
}
const sorted = Object.entries(categoryTotals).sort(([, a], [, b]) => b.costUSD - a.costUSD)
+ const sortedSkills = Object.entries(skillTotals).sort(([, a], [, b]) => b.costUSD - a.costUSD).slice(0, SKILL_SUB_ROWS_LIMIT)
const maxCost = sorted[0]?.[1]?.costUSD ?? 0
return (
{''.padEnd(bw + 14)}{'cost'.padStart(8)}{'turns'.padStart(6)}{'1-shot'.padStart(7)}
- {sorted.map(([cat, data]) => {
+ {sorted.flatMap(([cat, data]) => {
const oneShotPct = data.editTurns > 0 ? Math.round((data.oneShotTurns / data.editTurns) * 100) + '%' : '-'
- return (
+ const rows = [
{fit(CATEGORY_LABELS[cat as TaskCategory] ?? cat, 13)}
{formatCost(data.costUSD).padStart(8)}
{String(data.turns).padStart(6)}
{String(oneShotPct).padStart(7)}
-
- )
+ ,
+ ]
+ if (cat === 'general' && sortedSkills.length > 0) {
+ for (const [skill, sd] of sortedSkills) {
+ const subPct = sd.editTurns > 0 ? Math.round((sd.oneShotTurns / sd.editTurns) * 100) + '%' : '-'
+ rows.push(
+
+
+ {fit(` /${skill}`, 13)}
+ {formatCost(sd.costUSD).padStart(8)}
+ {String(sd.turns).padStart(6)}
+ {String(subPct).padStart(7)}
+ ,
+ )
+ }
+ }
+ return rows
})}
)
diff --git a/src/parser.ts b/src/parser.ts
index 97469d2..6af996f 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -44,6 +44,17 @@ function extractMcpTools(tools: string[]): string[] {
return tools.filter(t => t.startsWith('mcp__'))
}
+function extractSkillNames(content: ContentBlock[]): string[] {
+ return content
+ .filter((b): b is ToolUseBlock => b.type === 'tool_use' && b.name === 'Skill')
+ .map(b => {
+ const input = (b.input ?? {}) as Record
+ const raw = input['skill'] ?? input['name']
+ return typeof raw === 'string' ? raw.trim() : ''
+ })
+ .filter(name => name.length > 0)
+}
+
function extractCoreTools(tools: string[]): string[] {
return tools.filter(t => !t.startsWith('mcp__'))
}
@@ -93,6 +104,7 @@ function parseApiCall(entry: JournalEntry): ParsedApiCall | null {
}
const tools = extractToolNames(msg.content ?? [])
+ const skills = extractSkillNames(msg.content ?? [])
const costUSD = calculateCost(
msg.model,
tokens.inputTokens,
@@ -112,6 +124,7 @@ function parseApiCall(entry: JournalEntry): ParsedApiCall | null {
costUSD,
tools,
mcpTools: extractMcpTools(tools),
+ skills,
hasAgentSpawn: tools.includes('Agent'),
hasPlanMode: tools.includes('EnterPlanMode'),
speed: usage.speed ?? 'standard',
@@ -200,6 +213,7 @@ function buildSessionSummary(
const mcpBreakdown: SessionSummary['mcpBreakdown'] = Object.create(null)
const bashBreakdown: SessionSummary['bashBreakdown'] = Object.create(null)
const categoryBreakdown: SessionSummary['categoryBreakdown'] = Object.create(null)
+ const skillBreakdown: SessionSummary['skillBreakdown'] = Object.create(null)
let totalCost = 0
let totalInput = 0
@@ -224,6 +238,19 @@ function buildSessionSummary(
if (turn.retries === 0) categoryBreakdown[turn.category].oneShotTurns++
}
+ if (turn.subCategory) {
+ const skillKey = turn.subCategory
+ if (!skillBreakdown[skillKey]) {
+ skillBreakdown[skillKey] = { turns: 0, costUSD: 0, editTurns: 0, oneShotTurns: 0 }
+ }
+ skillBreakdown[skillKey].turns++
+ skillBreakdown[skillKey].costUSD += turnCost
+ if (turn.hasEdits) {
+ skillBreakdown[skillKey].editTurns++
+ if (turn.retries === 0) skillBreakdown[skillKey].oneShotTurns++
+ }
+ }
+
for (const call of turn.assistantCalls) {
totalCost += call.costUSD
totalInput += call.usage.inputTokens
@@ -283,6 +310,7 @@ function buildSessionSummary(
mcpBreakdown,
bashBreakdown,
categoryBreakdown,
+ skillBreakdown,
}
}
@@ -402,6 +430,7 @@ function providerCallToTurn(call: ParsedProviderCall): ParsedTurn {
costUSD: call.costUSD,
tools,
mcpTools: extractMcpTools(tools),
+ skills: [],
hasAgentSpawn: tools.includes('Agent'),
hasPlanMode: tools.includes('EnterPlanMode'),
speed: call.speed,
diff --git a/src/types.ts b/src/types.ts
index 208eba5..ab67515 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -72,6 +72,7 @@ export type ParsedApiCall = {
costUSD: number
tools: string[]
mcpTools: string[]
+ skills: string[]
hasAgentSpawn: boolean
hasPlanMode: boolean
speed: 'standard' | 'fast'
@@ -97,6 +98,7 @@ export type TaskCategory =
export type ClassifiedTurn = ParsedTurn & {
category: TaskCategory
+ subCategory?: string
retries: number
hasEdits: boolean
}
@@ -118,6 +120,7 @@ export type SessionSummary = {
mcpBreakdown: Record
bashBreakdown: Record
categoryBreakdown: Record
+ skillBreakdown: Record
}
export type ProjectSummary = {
diff --git a/tests/classifier.test.ts b/tests/classifier.test.ts
new file mode 100644
index 0000000..ab322bb
--- /dev/null
+++ b/tests/classifier.test.ts
@@ -0,0 +1,103 @@
+import { describe, it, expect } from 'vitest'
+
+import { classifyTurn } from '../src/classifier.js'
+import type { ParsedApiCall, ParsedTurn } from '../src/types.js'
+
+function makeCall(opts: Partial & { tools?: string[]; skills?: string[] }): ParsedApiCall {
+ const tools = opts.tools ?? []
+ return {
+ provider: 'claude',
+ model: 'Opus 4.7',
+ usage: {
+ inputTokens: 0,
+ outputTokens: 0,
+ cacheCreationInputTokens: 0,
+ cacheReadInputTokens: 0,
+ cachedInputTokens: 0,
+ reasoningTokens: 0,
+ webSearchRequests: 0,
+ },
+ costUSD: 0,
+ tools,
+ mcpTools: tools.filter(t => t.startsWith('mcp__')),
+ skills: opts.skills ?? [],
+ hasAgentSpawn: tools.includes('Agent'),
+ hasPlanMode: tools.includes('EnterPlanMode'),
+ speed: 'standard',
+ timestamp: '2026-05-04T00:00:00Z',
+ bashCommands: [],
+ deduplicationKey: 'k',
+ ...opts,
+ }
+}
+
+function makeTurn(calls: ParsedApiCall[], userMessage = ''): ParsedTurn {
+ return {
+ userMessage,
+ assistantCalls: calls,
+ timestamp: '2026-05-04T00:00:00Z',
+ sessionId: 's1',
+ }
+}
+
+describe('classifyTurn — Skill subCategory', () => {
+ it('attaches subCategory when a Skill tool fires alone (input.skill)', () => {
+ const turn = makeTurn([makeCall({ tools: ['Skill'], skills: ['init'] })])
+ const c = classifyTurn(turn)
+ expect(c.category).toBe('general')
+ expect(c.subCategory).toBe('init')
+ })
+
+ it('attaches subCategory when skill identifier comes via input.name (extracted upstream)', () => {
+ const turn = makeTurn([makeCall({ tools: ['Skill'], skills: ['atelier'] })])
+ const c = classifyTurn(turn)
+ expect(c.category).toBe('general')
+ expect(c.subCategory).toBe('atelier')
+ })
+
+ it('uses the first skill identifier when a single turn invokes multiple skills', () => {
+ const turn = makeTurn([makeCall({ tools: ['Skill', 'Skill'], skills: ['review', 'security-review'] })])
+ const c = classifyTurn(turn)
+ expect(c.category).toBe('general')
+ expect(c.subCategory).toBe('review')
+ })
+
+ it('aggregates skills across multiple assistant calls in the same turn', () => {
+ const turn = makeTurn([
+ makeCall({ tools: ['Skill'], skills: ['claude-api'] }),
+ makeCall({ tools: ['Skill'], skills: ['init'] }),
+ ])
+ const c = classifyTurn(turn)
+ expect(c.category).toBe('general')
+ expect(c.subCategory).toBe('claude-api')
+ })
+
+ it('does not attach subCategory when the Skill tool fires but no skill name was extracted', () => {
+ const turn = makeTurn([makeCall({ tools: ['Skill'], skills: [] })])
+ const c = classifyTurn(turn)
+ expect(c.category).toBe('general')
+ expect(c.subCategory).toBeUndefined()
+ })
+
+ it('does not attach subCategory when category is not general (e.g. Skill alongside Edit promotes to coding)', () => {
+ const turn = makeTurn([makeCall({ tools: ['Skill', 'Edit'], skills: ['init'] })])
+ const c = classifyTurn(turn)
+ expect(c.category).toBe('coding')
+ expect(c.subCategory).toBeUndefined()
+ })
+
+ it('does not attach subCategory for non-Skill general turns', () => {
+ const turn = makeTurn([makeCall({ tools: [] })], 'just chatting')
+ const c = classifyTurn(turn)
+ expect(c.subCategory).toBeUndefined()
+ })
+
+ it('tolerates missing skills field on legacy ParsedApiCall shape', () => {
+ const baseCall = makeCall({ tools: ['Skill'], skills: ['init'] })
+ const legacyCall = { ...baseCall } as unknown as ParsedApiCall & { skills?: string[] }
+ delete (legacyCall as { skills?: string[] }).skills
+ const c = classifyTurn(makeTurn([legacyCall]))
+ expect(c.category).toBe('general')
+ expect(c.subCategory).toBeUndefined()
+ })
+})
diff --git a/tests/compare-stats.test.ts b/tests/compare-stats.test.ts
index a7ecb85..63d3534 100644
--- a/tests/compare-stats.test.ts
+++ b/tests/compare-stats.test.ts
@@ -28,6 +28,7 @@ function makeTurn(model: string, cost: number, opts: { hasEdits?: boolean; retri
costUSD: cost,
tools: defaultTools,
mcpTools: [],
+ skills: [],
hasAgentSpawn: opts.hasAgentSpawn ?? false,
hasPlanMode: opts.hasPlanMode ?? false,
speed: opts.speed ?? 'standard' as const,
@@ -56,6 +57,7 @@ function makeProject(turns: ClassifiedTurn[]): ProjectSummary {
mcpBreakdown: {},
bashBreakdown: {},
categoryBreakdown: {} as SessionSummary['categoryBreakdown'],
+ skillBreakdown: {} as SessionSummary['skillBreakdown'],
}
return {
project: 'test-project',
diff --git a/tests/dashboard.test.ts b/tests/dashboard.test.ts
index a29ae38..0d36e2e 100644
--- a/tests/dashboard.test.ts
+++ b/tests/dashboard.test.ts
@@ -37,6 +37,7 @@ function makeSession(id: string, cost: number, timestamp = '2026-04-14T10:00:00Z
mcpBreakdown: {},
bashBreakdown: {},
categoryBreakdown: { ...EMPTY_CATEGORY_BREAKDOWN },
+ skillBreakdown: {},
}
}
diff --git a/tests/day-aggregator.test.ts b/tests/day-aggregator.test.ts
index 1c3baed..9ca9239 100644
--- a/tests/day-aggregator.test.ts
+++ b/tests/day-aggregator.test.ts
@@ -29,6 +29,7 @@ function makeCall(timestamp: string, costUSD: number, model = 'Opus 4.7', provid
costUSD,
tools: [],
mcpTools: [],
+ skills: [],
hasAgentSpawn: false,
hasPlanMode: false,
speed: 'standard' as const,
@@ -72,6 +73,7 @@ describe('aggregateProjectsIntoDays', () => {
mcpBreakdown: {},
bashBreakdown: {},
categoryBreakdown: {} as never,
+ skillBreakdown: {} as never,
}],
}),
]
@@ -114,6 +116,7 @@ describe('aggregateProjectsIntoDays', () => {
mcpBreakdown: {},
bashBreakdown: {},
categoryBreakdown: {} as never,
+ skillBreakdown: {} as never,
}],
}),
]
@@ -143,6 +146,7 @@ describe('aggregateProjectsIntoDays', () => {
turns: [],
modelBreakdown: {}, toolBreakdown: {}, mcpBreakdown: {}, bashBreakdown: {},
categoryBreakdown: {} as never,
+ skillBreakdown: {} as never,
}],
}),
]
@@ -175,6 +179,7 @@ describe('aggregateProjectsIntoDays', () => {
],
modelBreakdown: {}, toolBreakdown: {}, mcpBreakdown: {}, bashBreakdown: {},
categoryBreakdown: {} as never,
+ skillBreakdown: {} as never,
}],
}),
]
@@ -290,6 +295,7 @@ describe('buildPeriodDataFromDays', () => {
}],
modelBreakdown: {}, toolBreakdown: {}, mcpBreakdown: {}, bashBreakdown: {},
categoryBreakdown: {} as never,
+ skillBreakdown: {} as never,
}],
}),
]
diff --git a/tests/export.test.ts b/tests/export.test.ts
index 83fdf5a..91c2d4c 100644
--- a/tests/export.test.ts
+++ b/tests/export.test.ts
@@ -56,6 +56,7 @@ function makeProject(projectPath: string): ProjectSummary {
costUSD: 1.23,
tools: ['Read'],
mcpTools: [],
+ skills: [],
hasAgentSpawn: false,
hasPlanMode: false,
speed: 'standard',
@@ -103,6 +104,7 @@ function makeProject(projectPath: string): ProjectSummary {
brainstorming: { turns: 0, costUSD: 0, retries: 0, editTurns: 0, oneShotTurns: 0 },
general: { turns: 0, costUSD: 0, retries: 0, editTurns: 0, oneShotTurns: 0 },
},
+ skillBreakdown: {},
},
],
totalCostUSD: 1.23,
From 61be92a8348c1a7cbc1a0e0843dbbfd56c112967 Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Mon, 4 May 2026 02:15:04 +0300
Subject: [PATCH 027/115] Stream-parse Codex session files to handle 250+ MB
rollouts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Heavy Codex users hit MAX_SESSION_FILE_BYTES (128 MB) on long-running
sessions. The file is read in full via readSessionFile and then split on
'\n', so even bumping the cap eventually runs into V8's 512 MB string
limit (split doubles the high-water mark).
readSessionLines is a streaming generator that already exists in
fs-utils for exactly this case but only readFirstLine was using it.
Switch the Codex provider to consume it and let the cap apply only when
streaming would still be unreasonable.
Changes:
- src/fs-utils.ts: introduce MAX_STREAM_SESSION_FILE_BYTES (2 GB) and
apply it in readSessionLines instead of the full-read cap. Keep
MAX_SESSION_FILE_BYTES for readSessionFile / readSessionFileSync
consumers that materialize the whole file.
- src/providers/codex.ts: replace `readSessionFile -> split('\n')` with
`for await (... of readSessionLines)`. Add sawAnyLine guard so a
failed/empty stream skips cache write, preserving the previous
early-return behavior.
Empirical impact on a real account with one 247 MB rollout: 7-day totals
went from 4,536 calls / €358.69 / 20.1M input tokens to 6,111 calls /
€550.67 / 37.3M input tokens. The previously-skipped session is now
included; no other behavior changes.
Refs #204
---
src/fs-utils.ts | 13 +++++++++++--
src/providers/codex.ts | 21 ++++++++++++++++-----
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/src/fs-utils.ts b/src/fs-utils.ts
index 823a630..d851ce4 100644
--- a/src/fs-utils.ts
+++ b/src/fs-utils.ts
@@ -8,6 +8,13 @@ import { createInterface } from 'readline'
export const MAX_SESSION_FILE_BYTES = 128 * 1024 * 1024
export const STREAM_THRESHOLD_BYTES = 8 * 1024 * 1024
+// Line-by-line streaming has bounded memory (one line at a time) and is not
+// constrained by V8's string limit, so it can safely handle multi-GB session
+// files. The cap here is purely a sanity check against pathological inputs;
+// real Codex sessions for heavy users have been observed at 250+ MB and will
+// continue to grow as context windows expand.
+export const MAX_STREAM_SESSION_FILE_BYTES = 2 * 1024 * 1024 * 1024
+
function verbose(): boolean {
return process.env.CODEBURN_VERBOSE === '1'
}
@@ -78,8 +85,10 @@ export async function* readSessionLines(filePath: string): AsyncGenerator MAX_SESSION_FILE_BYTES) {
- warn(`skipped oversize file ${filePath} (${size} bytes > cap ${MAX_SESSION_FILE_BYTES})`)
+ if (size > MAX_STREAM_SESSION_FILE_BYTES) {
+ warn(
+ `skipped oversize file ${filePath} (${size} bytes > stream cap ${MAX_STREAM_SESSION_FILE_BYTES})`,
+ )
return
}
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 9500ee0..83d81eb 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -4,7 +4,7 @@ import { createInterface } from 'readline'
import { basename, join } from 'path'
import { homedir } from 'os'
-import { readSessionFile } from '../fs-utils.js'
+import { readSessionLines } from '../fs-utils.js'
import { calculateCost } from '../models.js'
import { readCachedCodexResults, writeCachedCodexResults, getCachedCodexProject, fingerprintFile } from '../codex-cache.js'
import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js'
@@ -201,9 +201,6 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
const fp = await fingerprintFile(source.path)
if (!fp) return
- const content = await readSessionFile(source.path)
- if (content === null) return
- const lines = content.split('\n').filter(l => l.trim())
let sessionModel: string | undefined
let sessionId = ''
let prevCumulativeTotal = 0
@@ -215,9 +212,18 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
let pendingUserMessage = ''
let pendingOutputChars = 0
let estCounter = 0
+ let sawAnyLine = false
const results: ParsedProviderCall[] = []
- for (const line of lines) {
+ // Stream the session file line by line. Heavy Codex sessions can exceed
+ // 250 MB on disk; reading the entire file into a string would either hit
+ // the readSessionFile cap or push V8 toward its 512 MB string limit
+ // after split('\n'). readSessionLines streams via readline so memory
+ // stays bounded to the longest line.
+ for await (const rawLine of readSessionLines(source.path)) {
+ sawAnyLine = true
+ const line = rawLine.trim()
+ if (!line) continue
let entry: CodexEntry
try {
entry = JSON.parse(line) as CodexEntry
@@ -391,6 +397,11 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
}
}
+ // If the stream yielded nothing the file was unreadable, oversized, or
+ // empty. Skip cache write so a transient failure can't pin an empty
+ // result set against a fingerprint that would otherwise be re-parsed.
+ if (!sawAnyLine) return
+
await writeCachedCodexResults(source.path, source.project, results, fp)
for (const call of results) {
From 30b3ad05039d554580e25363a0e5a6154d086d3c Mon Sep 17 00:00:00 2001
From: thameem-abbas
Date: Mon, 4 May 2026 09:44:35 -0400
Subject: [PATCH 028/115] feat: add GNOME Shell extension for Linux panel
indicator
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GNOME 45+ extension that shows live token costs in the top bar panel
with a dropdown for provider breakdown, top activities/models, cache
stats, and budget alerts. Polls `codeburn status --format menubar-json`
every 30s — same data contract as the macOS menubar app.
Includes GSettings preferences (refresh interval, compact mode, budget
threshold, per-provider enable/disable toggles) with Libadwaita UI.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
gnome/README.md | 70 ++++
gnome/dataClient.js | 141 +++++++
gnome/extension.js | 15 +
gnome/icons/codeburn-symbolic.svg | 4 +
gnome/indicator.js | 384 ++++++++++++++++++
gnome/install.sh | 38 ++
gnome/metadata.json | 8 +
gnome/prefs.js | 155 +++++++
...nome.shell.extensions.codeburn.gschema.xml | 56 +++
gnome/stylesheet.css | 23 ++
10 files changed, 894 insertions(+)
create mode 100644 gnome/README.md
create mode 100644 gnome/dataClient.js
create mode 100644 gnome/extension.js
create mode 100644 gnome/icons/codeburn-symbolic.svg
create mode 100644 gnome/indicator.js
create mode 100755 gnome/install.sh
create mode 100644 gnome/metadata.json
create mode 100644 gnome/prefs.js
create mode 100644 gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml
create mode 100644 gnome/stylesheet.css
diff --git a/gnome/README.md b/gnome/README.md
new file mode 100644
index 0000000..3b76632
--- /dev/null
+++ b/gnome/README.md
@@ -0,0 +1,70 @@
+# CodeBurn GNOME Extension
+
+Monitor AI coding assistant token usage and costs from your GNOME desktop panel.
+
+## Requirements
+
+- GNOME Shell 45 or later
+- CodeBurn CLI installed (`npm i -g codeburn`)
+- `glib-compile-schemas` (usually part of `glib2-devel` or `libglib2.0-dev`)
+
+## Install
+
+```bash
+cd gnome
+chmod +x install.sh
+./install.sh
+```
+
+Then restart GNOME Shell:
+- **Wayland:** Log out and back in
+- **X11:** Press `Alt+F2`, type `r`, press Enter
+
+Enable the extension:
+
+```bash
+gnome-extensions enable codeburn@codeburn.dev
+```
+
+## Configure
+
+Open preferences:
+
+```bash
+gnome-extensions prefs codeburn@codeburn.dev
+```
+
+Or use the GNOME Extensions app.
+
+### Settings
+
+| Setting | Default | Description |
+|---------|---------|-------------|
+| Refresh Interval | 30s | How often to poll CodeBurn CLI |
+| Default Period | Today | Period shown on open |
+| Compact Mode | Off | Hide cost label, show icon only |
+| Budget Threshold | $0 | Daily budget alert (0 = disabled) |
+| Budget Alerts | Off | Show warning when budget exceeded |
+| CLI Path | (auto) | Custom path to `codeburn` binary |
+
+## Uninstall
+
+```bash
+gnome-extensions disable codeburn@codeburn.dev
+rm -r ~/.local/share/gnome-shell/extensions/codeburn@codeburn.dev
+```
+
+## Development
+
+Test changes without installing:
+
+```bash
+# Compile schemas locally
+glib-compile-schemas schemas/
+
+# Symlink for development
+ln -sf "$(pwd)" ~/.local/share/gnome-shell/extensions/codeburn@codeburn.dev
+
+# Watch logs
+journalctl -f -o cat /usr/bin/gnome-shell
+```
diff --git a/gnome/dataClient.js b/gnome/dataClient.js
new file mode 100644
index 0000000..87d602d
--- /dev/null
+++ b/gnome/dataClient.js
@@ -0,0 +1,141 @@
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+
+const TIMEOUT_SECONDS = 45;
+const SAFE_ARG_RE = /^[A-Za-z0-9 ._/\-]+$/;
+const ADDITIONAL_PATH_ENTRIES = ['/usr/local/bin', `${GLib.get_home_dir()}/.local/bin`, `${GLib.get_home_dir()}/.npm-global/bin`];
+
+export class DataClient {
+ _cache = new Map();
+ _inFlight = null;
+ _codeburnPath;
+
+ constructor(codeburnPath) {
+ this._codeburnPath = codeburnPath || '';
+ }
+
+ setCodeburnPath(path) {
+ this._codeburnPath = path || '';
+ }
+
+ cancelInFlight() {
+ if (this._inFlight) {
+ this._inFlight.cancellable.cancel();
+ this._inFlight = null;
+ }
+ }
+
+ getCached(period, provider) {
+ const key = `${period}:${provider}`;
+ return this._cache.get(key) ?? null;
+ }
+
+ async fetch(period, provider) {
+ this.cancelInFlight();
+
+ const cancellable = new Gio.Cancellable();
+ this._inFlight = { cancellable };
+
+ try {
+ const payload = await this._spawn(period, provider, cancellable);
+ const key = `${period}:${provider}`;
+ this._cache.set(key, payload);
+ return payload;
+ } finally {
+ if (this._inFlight?.cancellable === cancellable)
+ this._inFlight = null;
+ }
+ }
+
+ _buildArgv(period, provider) {
+ let base;
+ if (this._codeburnPath && SAFE_ARG_RE.test(this._codeburnPath)) {
+ base = this._codeburnPath.split(' ').filter(s => s.length > 0);
+ } else {
+ base = ['codeburn'];
+ }
+
+ const args = [
+ ...base,
+ 'status',
+ '--format', 'menubar-json',
+ '--period', period,
+ '--no-optimize',
+ ];
+
+ if (provider && provider !== 'all')
+ args.push('--provider', provider);
+
+ return args;
+ }
+
+ _augmentedEnv() {
+ const currentPath = GLib.getenv('PATH') || '/usr/bin:/bin';
+ const parts = currentPath.split(':');
+ for (const extra of ADDITIONAL_PATH_ENTRIES) {
+ if (!parts.includes(extra))
+ parts.push(extra);
+ }
+ return [`PATH=${parts.join(':')}`];
+ }
+
+ _spawn(period, provider, cancellable) {
+ return new Promise((resolve, reject) => {
+ const argv = this._buildArgv(period, provider);
+
+ let proc;
+ try {
+ const launcher = Gio.SubprocessLauncher.new(
+ Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE
+ );
+ for (const entry of this._augmentedEnv()) {
+ const [key, val] = entry.split('=', 2);
+ launcher.setenv(key, val, true);
+ }
+ proc = launcher.spawnv(argv);
+ } catch (e) {
+ reject(new Error(`CLI not found: ${e.message}`));
+ return;
+ }
+
+ let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, TIMEOUT_SECONDS, () => {
+ timeoutId = 0;
+ proc.force_exit();
+ reject(new Error('CLI timeout'));
+ return GLib.SOURCE_REMOVE;
+ });
+
+ proc.communicate_utf8_async(null, cancellable, (_proc, res) => {
+ if (timeoutId) {
+ GLib.Source.remove(timeoutId);
+ timeoutId = 0;
+ }
+
+ try {
+ const [, stdout, stderr] = _proc.communicate_utf8_finish(res);
+
+ if (!_proc.get_successful()) {
+ const msg = stderr?.trim() || 'CLI exited with error';
+ reject(new Error(msg));
+ return;
+ }
+
+ if (!stdout || stdout.trim().length === 0) {
+ reject(new Error('CLI returned empty output'));
+ return;
+ }
+
+ const payload = JSON.parse(stdout);
+ resolve(payload);
+ } catch (e) {
+ reject(e);
+ }
+ });
+ });
+ }
+
+ destroy() {
+ this.cancelInFlight();
+ this._cache.clear();
+ }
+}
diff --git a/gnome/extension.js b/gnome/extension.js
new file mode 100644
index 0000000..031f7aa
--- /dev/null
+++ b/gnome/extension.js
@@ -0,0 +1,15 @@
+import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js';
+import { CodeBurnIndicator } from './indicator.js';
+
+export default class CodeBurnExtension extends Extension {
+ _indicator = null;
+
+ enable() {
+ this._indicator = new CodeBurnIndicator(this);
+ }
+
+ disable() {
+ this._indicator?.destroy();
+ this._indicator = null;
+ }
+}
diff --git a/gnome/icons/codeburn-symbolic.svg b/gnome/icons/codeburn-symbolic.svg
new file mode 100644
index 0000000..3a4ee85
--- /dev/null
+++ b/gnome/icons/codeburn-symbolic.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/gnome/indicator.js b/gnome/indicator.js
new file mode 100644
index 0000000..f77d669
--- /dev/null
+++ b/gnome/indicator.js
@@ -0,0 +1,384 @@
+import GObject from 'gi://GObject';
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
+import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import { DataClient } from './dataClient.js';
+
+const PERIODS = [
+ { id: 'today', label: 'Today' },
+ { id: 'week', label: '7 Days' },
+ { id: '30days', label: '30 Days' },
+ { id: 'month', label: 'Month' },
+ { id: 'all', label: 'All' },
+];
+
+function formatCost(cost) {
+ if (cost == null || isNaN(cost)) return '$?';
+ return `$${cost.toFixed(2)}`;
+}
+
+function formatPercent(val) {
+ if (val == null || isNaN(val)) return '—';
+ return `${(val * 100).toFixed(0)}%`;
+}
+
+function formatPercentDirect(val) {
+ if (val == null || isNaN(val)) return '—';
+ return `${val.toFixed(1)}%`;
+}
+
+export const CodeBurnIndicator = GObject.registerClass(
+class CodeBurnIndicator extends PanelMenu.Button {
+ _extension;
+ _settings;
+ _dataClient;
+ _refreshSourceId = 0;
+ _panelLabel;
+ _panelIcon;
+ _currentPeriod = 'today';
+ _currentProvider = 'all';
+ _lastPayload = null;
+ _isStale = false;
+ _settingsChangedIds = [];
+
+ _init(extension) {
+ super._init(0.5, 'CodeBurn Monitor', false);
+ this._extension = extension;
+ this._settings = extension.getSettings();
+ this._dataClient = new DataClient(this._settings.get_string('codeburn-path'));
+ this._currentPeriod = this._settings.get_string('default-period') || 'today';
+
+ this._buildPanelButton();
+ this._buildMenu();
+ Main.panel.addToStatusArea('codeburn-indicator', this);
+
+ this._connectSettings();
+ this._startRefreshLoop();
+ this._refresh();
+ }
+
+ _buildPanelButton() {
+ const box = new St.BoxLayout({ style_class: 'panel-button' });
+
+ this._panelIcon = new St.Icon({
+ icon_name: 'codeburn-symbolic',
+ style_class: 'system-status-icon',
+ });
+
+ this._panelLabel = new St.Label({
+ text: '$—',
+ y_expand: true,
+ y_align: Clutter.ActorAlign.CENTER,
+ style_class: 'codeburn-panel-label',
+ });
+
+ box.add_child(this._panelIcon);
+
+ if (!this._settings.get_boolean('compact-mode'))
+ box.add_child(this._panelLabel);
+
+ this.add_child(box);
+ }
+
+ _buildMenu() {
+ this.menu.removeAll();
+
+ this._heroItem = this._addMenuItem('Loading...');
+ this._heroItem.label.style_class = 'codeburn-hero-label';
+
+ this._statsItem = this._addMenuItem('');
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+
+ this._periodSection = new PopupMenu.PopupSubMenuMenuItem('Period: Today');
+ this.menu.addMenuItem(this._periodSection);
+ for (const p of PERIODS) {
+ const item = new PopupMenu.PopupMenuItem(p.label);
+ item.connect('activate', () => {
+ this._currentPeriod = p.id;
+ this._periodSection.label.text = `Period: ${p.label}`;
+ this._refresh();
+ });
+ this._periodSection.menu.addMenuItem(item);
+ }
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+
+ this._providerHeader = this._addMenuItem('Providers');
+ this._providerHeader.setSensitive(false);
+ this._providerItems = [];
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(''));
+ this._providerSeparator = this.menu._getMenuItems().at(-1);
+
+ this._activitiesSection = new PopupMenu.PopupSubMenuMenuItem('Top Activities');
+ this.menu.addMenuItem(this._activitiesSection);
+
+ this._modelsSection = new PopupMenu.PopupSubMenuMenuItem('Top Models');
+ this.menu.addMenuItem(this._modelsSection);
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+
+ this._cacheItem = this._addMenuItem('Cache Hit: —');
+ this._oneShotItem = this._addMenuItem('One-shot Rate: —');
+
+ this._budgetItem = this._addMenuItem('');
+ this._budgetItem.visible = false;
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+
+ const refreshItem = new PopupMenu.PopupMenuItem('Refresh');
+ refreshItem.connect('activate', () => this._refresh());
+ this.menu.addMenuItem(refreshItem);
+
+ const reportItem = new PopupMenu.PopupMenuItem('Open Full Report');
+ reportItem.connect('activate', () => this._openReport());
+ this.menu.addMenuItem(reportItem);
+
+ const prefsItem = new PopupMenu.PopupMenuItem('Preferences');
+ prefsItem.connect('activate', () => {
+ this._extension.openPreferences();
+ });
+ this.menu.addMenuItem(prefsItem);
+ }
+
+ _addMenuItem(text) {
+ const item = new PopupMenu.PopupMenuItem(text);
+ item.setSensitive(false);
+ this.menu.addMenuItem(item);
+ return item;
+ }
+
+ _connectSettings() {
+ const watch = (key, cb) => {
+ const id = this._settings.connect(`changed::${key}`, cb);
+ this._settingsChangedIds.push(id);
+ };
+
+ watch('refresh-interval', () => this._restartRefreshLoop());
+ watch('compact-mode', () => this._rebuildPanelButton());
+ watch('codeburn-path', () => {
+ this._dataClient.setCodeburnPath(this._settings.get_string('codeburn-path'));
+ this._refresh();
+ });
+ watch('default-period', () => {
+ this._currentPeriod = this._settings.get_string('default-period');
+ this._refresh();
+ });
+ watch('budget-threshold', () => this._updateBudget());
+ watch('budget-alert-enabled', () => this._updateBudget());
+ watch('disabled-providers', () => {
+ if (this._lastPayload) {
+ this._updatePanel(this._lastPayload);
+ this._updateMenu(this._lastPayload);
+ }
+ });
+ }
+
+ _rebuildPanelButton() {
+ this.remove_all_children();
+ this._buildPanelButton();
+ this._updatePanel(this._lastPayload);
+ }
+
+ _startRefreshLoop() {
+ const interval = this._settings.get_uint('refresh-interval') || 30;
+ this._refreshSourceId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, interval, () => {
+ this._refresh();
+ return GLib.SOURCE_CONTINUE;
+ });
+ }
+
+ _restartRefreshLoop() {
+ if (this._refreshSourceId) {
+ GLib.Source.remove(this._refreshSourceId);
+ this._refreshSourceId = 0;
+ }
+ this._startRefreshLoop();
+ }
+
+ async _refresh() {
+ try {
+ const payload = await this._dataClient.fetch(this._currentPeriod, this._currentProvider);
+ this._lastPayload = payload;
+ this._isStale = false;
+ this._updatePanel(payload);
+ this._updateMenu(payload);
+ } catch (e) {
+ if (e.message?.includes('cancelled')) return;
+ log(`CodeBurn: refresh error: ${e.message}`);
+ this._isStale = true;
+ if (!this._lastPayload)
+ this._showError(e.message);
+ else
+ this._updatePanel(this._lastPayload);
+ }
+ }
+
+ _getDisabledProviders() {
+ return new Set(this._settings.get_strv('disabled-providers'));
+ }
+
+ _filterProviders(providers) {
+ if (!providers) return { filtered: {}, cost: 0 };
+ const disabled = this._getDisabledProviders();
+ const filtered = {};
+ let cost = 0;
+ for (const [name, val] of Object.entries(providers)) {
+ if (!disabled.has(name)) {
+ filtered[name] = val;
+ cost += val;
+ }
+ }
+ return { filtered, cost };
+ }
+
+ _updatePanel(payload) {
+ if (!payload) {
+ this._panelLabel.text = '$?';
+ return;
+ }
+ const { cost } = this._filterProviders(payload.current?.providers);
+ let text = formatCost(cost);
+ if (this._isStale)
+ text += ' *';
+ this._panelLabel.text = text;
+ }
+
+ _updateMenu(payload) {
+ if (!payload?.current) return;
+ const c = payload.current;
+ const { filtered, cost } = this._filterProviders(c.providers);
+
+ this._heroItem.label.text = `${formatCost(cost)} ${c.label || this._currentPeriod}`;
+ this._statsItem.label.text = `${c.calls ?? 0} calls · ${c.sessions ?? 0} sessions`;
+
+ this._updateProviders(filtered);
+ this._updateActivities(c.topActivities);
+ this._updateModels(c.topModels);
+
+ this._cacheItem.label.text = `Cache Hit: ${formatPercentDirect(c.cacheHitPercent)}`;
+ this._oneShotItem.label.text = `One-shot Rate: ${c.oneShotRate != null ? formatPercent(c.oneShotRate) : '—'}`;
+
+ this._updateBudget();
+ }
+
+ _updateProviders(providers) {
+ for (const item of this._providerItems)
+ item.destroy();
+ this._providerItems = [];
+
+ if (!providers || Object.keys(providers).length === 0) {
+ this._providerHeader.visible = false;
+ this._providerSeparator.visible = false;
+ return;
+ }
+
+ this._providerHeader.visible = true;
+ this._providerSeparator.visible = true;
+
+ const sorted = Object.entries(providers).sort((a, b) => b[1] - a[1]);
+ const headerIndex = this.menu._getMenuItems().indexOf(this._providerHeader);
+
+ for (let i = 0; i < sorted.length; i++) {
+ const [name, cost] = sorted[i];
+ const item = new PopupMenu.PopupMenuItem(` ${name}`);
+ item.setSensitive(false);
+
+ const costLabel = new St.Label({
+ text: formatCost(cost),
+ x_expand: true,
+ x_align: Clutter.ActorAlign.END,
+ style_class: 'codeburn-provider-cost',
+ });
+ item.add_child(costLabel);
+
+ this.menu.addMenuItem(item, headerIndex + 1 + i);
+ this._providerItems.push(item);
+ }
+ }
+
+ _updateActivities(activities) {
+ this._activitiesSection.menu.removeAll();
+ if (!activities || activities.length === 0) {
+ this._activitiesSection.visible = false;
+ return;
+ }
+ this._activitiesSection.visible = true;
+ for (const act of activities.slice(0, 5)) {
+ const item = new PopupMenu.PopupMenuItem(`${act.name} ${formatCost(act.cost)}`);
+ item.setSensitive(false);
+ this._activitiesSection.menu.addMenuItem(item);
+ }
+ }
+
+ _updateModels(models) {
+ this._modelsSection.menu.removeAll();
+ if (!models || models.length === 0) {
+ this._modelsSection.visible = false;
+ return;
+ }
+ this._modelsSection.visible = true;
+ for (const model of models.slice(0, 5)) {
+ const item = new PopupMenu.PopupMenuItem(`${model.name} ${formatCost(model.cost)}`);
+ item.setSensitive(false);
+ this._modelsSection.menu.addMenuItem(item);
+ }
+ }
+
+ _updateBudget() {
+ const enabled = this._settings.get_boolean('budget-alert-enabled');
+ const threshold = this._settings.get_double('budget-threshold');
+
+ if (!enabled || threshold <= 0 || !this._lastPayload?.current) {
+ this._budgetItem.visible = false;
+ return;
+ }
+
+ const cost = this._lastPayload.current.cost;
+ if (cost >= threshold) {
+ this._budgetItem.label.text = `⚠ Budget exceeded: ${formatCost(cost)} / ${formatCost(threshold)}`;
+ this._budgetItem.visible = true;
+ } else {
+ this._budgetItem.label.text = `Budget: ${formatCost(cost)} / ${formatCost(threshold)}`;
+ this._budgetItem.visible = true;
+ }
+ }
+
+ _showError(message) {
+ this._panelLabel.text = '$?';
+ if (message?.includes('not found') || message?.includes('No such file')) {
+ this._heroItem.label.text = 'CodeBurn CLI not found';
+ this._statsItem.label.text = 'Install: npm i -g codeburn';
+ } else {
+ this._heroItem.label.text = 'Error loading data';
+ this._statsItem.label.text = message?.substring(0, 80) || 'Unknown error';
+ }
+ }
+
+ _openReport() {
+ try {
+ const argv = ['codeburn', 'report'];
+ const launcher = Gio.SubprocessLauncher.new(Gio.SubprocessFlags.NONE);
+ launcher.spawnv(argv);
+ } catch (e) {
+ log(`CodeBurn: failed to open report: ${e.message}`);
+ }
+ }
+
+ destroy() {
+ if (this._refreshSourceId) {
+ GLib.Source.remove(this._refreshSourceId);
+ this._refreshSourceId = 0;
+ }
+ this._dataClient?.destroy();
+ for (const id of this._settingsChangedIds)
+ this._settings.disconnect(id);
+ this._settingsChangedIds = [];
+ super.destroy();
+ }
+});
diff --git a/gnome/install.sh b/gnome/install.sh
new file mode 100755
index 0000000..df03881
--- /dev/null
+++ b/gnome/install.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -euo pipefail
+
+UUID="codeburn@codeburn.dev"
+INSTALL_DIR="${HOME}/.local/share/gnome-shell/extensions/${UUID}"
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+
+echo "Installing CodeBurn GNOME extension..."
+
+# Compile GSettings schema
+echo "Compiling schemas..."
+glib-compile-schemas "${SCRIPT_DIR}/schemas/"
+
+# Create install directory
+mkdir -p "${INSTALL_DIR}"
+
+# Copy extension files
+cp "${SCRIPT_DIR}/metadata.json" "${INSTALL_DIR}/"
+cp "${SCRIPT_DIR}/extension.js" "${INSTALL_DIR}/"
+cp "${SCRIPT_DIR}/indicator.js" "${INSTALL_DIR}/"
+cp "${SCRIPT_DIR}/dataClient.js" "${INSTALL_DIR}/"
+cp "${SCRIPT_DIR}/prefs.js" "${INSTALL_DIR}/"
+cp "${SCRIPT_DIR}/stylesheet.css" "${INSTALL_DIR}/"
+
+# Copy schemas
+mkdir -p "${INSTALL_DIR}/schemas"
+cp "${SCRIPT_DIR}/schemas/"* "${INSTALL_DIR}/schemas/"
+
+# Copy icons
+mkdir -p "${INSTALL_DIR}/icons"
+cp "${SCRIPT_DIR}/icons/"* "${INSTALL_DIR}/icons/"
+
+echo "Extension installed to ${INSTALL_DIR}"
+echo ""
+echo "Next steps:"
+echo " 1. Restart GNOME Shell (log out and back in on Wayland)"
+echo " 2. Enable: gnome-extensions enable ${UUID}"
+echo " 3. Configure: gnome-extensions prefs ${UUID}"
diff --git a/gnome/metadata.json b/gnome/metadata.json
new file mode 100644
index 0000000..050b0f5
--- /dev/null
+++ b/gnome/metadata.json
@@ -0,0 +1,8 @@
+{
+ "name": "CodeBurn Monitor",
+ "description": "Monitor AI coding assistant token usage and costs",
+ "uuid": "codeburn@codeburn.dev",
+ "shell-version": ["45", "46", "47", "48", "49", "50"],
+ "url": "https://github.com/anthropics/codeburn",
+ "settings-schema": "org.gnome.shell.extensions.codeburn"
+}
diff --git a/gnome/prefs.js b/gnome/prefs.js
new file mode 100644
index 0000000..8d80679
--- /dev/null
+++ b/gnome/prefs.js
@@ -0,0 +1,155 @@
+import Adw from 'gi://Adw';
+import Gtk from 'gi://Gtk';
+import Gio from 'gi://Gio';
+import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
+
+const PROVIDERS = [
+ { id: 'claude', label: 'Claude' },
+ { id: 'codex', label: 'Codex' },
+ { id: 'copilot', label: 'Copilot' },
+ { id: 'cursor', label: 'Cursor' },
+ { id: 'droid', label: 'Droid' },
+ { id: 'gemini', label: 'Gemini' },
+ { id: 'goose', label: 'Goose' },
+ { id: 'kilo-code', label: 'Kilo Code' },
+ { id: 'kiro', label: 'Kiro' },
+ { id: 'openclaw', label: 'OpenClaw' },
+ { id: 'opencode', label: 'OpenCode' },
+ { id: 'pi', label: 'Pi' },
+ { id: 'qwen', label: 'Qwen' },
+ { id: 'roo-code', label: 'Roo Code' },
+ { id: 'antigravity', label: 'Antigravity' },
+];
+
+const PERIODS = [
+ { id: 'today', label: 'Today' },
+ { id: 'week', label: '7 Days' },
+ { id: '30days', label: '30 Days' },
+ { id: 'month', label: 'Month' },
+ { id: 'all', label: 'All Time' },
+];
+
+export default class CodeBurnPreferences extends ExtensionPreferences {
+ fillPreferencesWindow(window) {
+ const settings = this.getSettings();
+
+ const displayPage = new Adw.PreferencesPage({
+ title: 'Display',
+ icon_name: 'preferences-desktop-display-symbolic',
+ });
+ window.add(displayPage);
+
+ const displayGroup = new Adw.PreferencesGroup({
+ title: 'Display',
+ description: 'Configure how CodeBurn appears in the panel',
+ });
+ displayPage.add(displayGroup);
+
+ const refreshRow = new Adw.SpinRow({
+ title: 'Refresh Interval',
+ subtitle: 'Seconds between data refreshes',
+ adjustment: new Gtk.Adjustment({
+ lower: 5,
+ upper: 300,
+ step_increment: 5,
+ page_increment: 30,
+ value: settings.get_uint('refresh-interval'),
+ }),
+ });
+ settings.bind('refresh-interval', refreshRow, 'value', Gio.SettingsBindFlags.DEFAULT);
+ displayGroup.add(refreshRow);
+
+ const compactRow = new Adw.SwitchRow({
+ title: 'Compact Mode',
+ subtitle: 'Show only the icon, hide the cost label',
+ });
+ settings.bind('compact-mode', compactRow, 'active', Gio.SettingsBindFlags.DEFAULT);
+ displayGroup.add(compactRow);
+
+ const periodModel = new Gtk.StringList();
+ for (const p of PERIODS)
+ periodModel.append(p.label);
+
+ const periodRow = new Adw.ComboRow({
+ title: 'Default Period',
+ subtitle: 'Time period shown when extension opens',
+ model: periodModel,
+ });
+ const currentPeriod = settings.get_string('default-period');
+ const periodIndex = PERIODS.findIndex(p => p.id === currentPeriod);
+ periodRow.set_selected(periodIndex >= 0 ? periodIndex : 0);
+ periodRow.connect('notify::selected', () => {
+ const idx = periodRow.get_selected();
+ if (idx >= 0 && idx < PERIODS.length)
+ settings.set_string('default-period', PERIODS[idx].id);
+ });
+ displayGroup.add(periodRow);
+
+ const alertsGroup = new Adw.PreferencesGroup({
+ title: 'Budget Alerts',
+ description: 'Get warned when spending exceeds a threshold',
+ });
+ displayPage.add(alertsGroup);
+
+ const budgetEnabledRow = new Adw.SwitchRow({
+ title: 'Enable Budget Alerts',
+ subtitle: 'Show a warning when daily spending exceeds the threshold',
+ });
+ settings.bind('budget-alert-enabled', budgetEnabledRow, 'active', Gio.SettingsBindFlags.DEFAULT);
+ alertsGroup.add(budgetEnabledRow);
+
+ const budgetRow = new Adw.SpinRow({
+ title: 'Daily Budget (USD)',
+ subtitle: 'Set to 0 to disable',
+ adjustment: new Gtk.Adjustment({
+ lower: 0,
+ upper: 1000,
+ step_increment: 1,
+ page_increment: 10,
+ value: settings.get_double('budget-threshold'),
+ }),
+ digits: 2,
+ });
+ settings.bind('budget-threshold', budgetRow, 'value', Gio.SettingsBindFlags.DEFAULT);
+ alertsGroup.add(budgetRow);
+
+ const providersGroup = new Adw.PreferencesGroup({
+ title: 'Providers',
+ description: 'Toggle providers on/off for cost accounting',
+ });
+ displayPage.add(providersGroup);
+
+ const disabledProviders = settings.get_strv('disabled-providers');
+
+ for (const provider of PROVIDERS) {
+ const row = new Adw.SwitchRow({
+ title: provider.label,
+ active: !disabledProviders.includes(provider.id),
+ });
+ row.connect('notify::active', () => {
+ const current = settings.get_strv('disabled-providers');
+ if (row.get_active()) {
+ settings.set_strv('disabled-providers', current.filter(p => p !== provider.id));
+ } else {
+ if (!current.includes(provider.id))
+ settings.set_strv('disabled-providers', [...current, provider.id]);
+ }
+ });
+ providersGroup.add(row);
+ }
+
+ const advancedGroup = new Adw.PreferencesGroup({
+ title: 'Advanced',
+ });
+ displayPage.add(advancedGroup);
+
+ const pathRow = new Adw.EntryRow({
+ title: 'CodeBurn CLI Path',
+ text: settings.get_string('codeburn-path'),
+ });
+ pathRow.connect('changed', () => {
+ settings.set_string('codeburn-path', pathRow.get_text());
+ });
+ advancedGroup.add(pathRow);
+ }
+}
diff --git a/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml b/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml
new file mode 100644
index 0000000..7031ab0
--- /dev/null
+++ b/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+ 30
+ Refresh interval
+ Seconds between automatic data refreshes
+
+
+
+
+ 'today'
+ Default time period
+ Period shown when extension opens (today, week, 30days, month, all)
+
+
+
+ 0.0
+ Budget threshold
+ Daily budget threshold in USD. Set to 0 to disable.
+
+
+
+ false
+ Enable budget alerts
+ Show warning when spending exceeds budget threshold
+
+
+
+ false
+ Compact mode
+ Show only icon in panel, hide cost label
+
+
+
+ ''
+ CodeBurn CLI path
+ Custom path to the codeburn executable. Leave empty to use PATH.
+
+
+
+ 'all'
+ Default provider filter
+ Default provider to filter by (all shows everything)
+
+
+
+ []
+ Disabled providers
+ Providers excluded from cost accounting and display
+
+
+
+
diff --git a/gnome/stylesheet.css b/gnome/stylesheet.css
new file mode 100644
index 0000000..57489e0
--- /dev/null
+++ b/gnome/stylesheet.css
@@ -0,0 +1,23 @@
+.codeburn-panel-label {
+ margin-left: 4px;
+}
+
+.codeburn-hero-label {
+ font-size: 1.2em;
+ font-weight: bold;
+}
+
+.codeburn-provider-cost {
+ margin-left: 16px;
+ font-variant-numeric: tabular-nums;
+}
+
+.codeburn-budget-warning {
+ color: #e5a50a;
+ font-weight: bold;
+}
+
+.codeburn-stale-indicator {
+ opacity: 0.6;
+ font-style: italic;
+}
From 87e45f43df79d4cb1656b873ee156b76163cad84 Mon Sep 17 00:00:00 2001
From: thameem-abbas
Date: Mon, 4 May 2026 09:46:21 -0400
Subject: [PATCH 029/115] fix: compact mode toggle updates instantly without
restart
Toggle label visibility instead of rebuilding panel children.
Label always added to panel, just hidden when compact=true.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
gnome/indicator.js | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/gnome/indicator.js b/gnome/indicator.js
index f77d669..9fae16e 100644
--- a/gnome/indicator.js
+++ b/gnome/indicator.js
@@ -77,9 +77,8 @@ class CodeBurnIndicator extends PanelMenu.Button {
});
box.add_child(this._panelIcon);
-
- if (!this._settings.get_boolean('compact-mode'))
- box.add_child(this._panelLabel);
+ box.add_child(this._panelLabel);
+ this._panelLabel.visible = !this._settings.get_boolean('compact-mode');
this.add_child(box);
}
@@ -180,8 +179,8 @@ class CodeBurnIndicator extends PanelMenu.Button {
}
_rebuildPanelButton() {
- this.remove_all_children();
- this._buildPanelButton();
+ const compact = this._settings.get_boolean('compact-mode');
+ this._panelLabel.visible = !compact;
this._updatePanel(this._lastPayload);
}
From 15334fac675613f775f24359b65703d690cb9c98 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Mon, 4 May 2026 10:08:58 -0700
Subject: [PATCH 030/115] Add SHA-256 checksum verification to menubar
installer
The installer now downloads and verifies a .sha256 companion file
before extracting and launching the menubar app. Build script and
CI workflow generate the checksum alongside the zip. Adds SECURITY.md
with reporting instructions.
Addresses #215.
---
.github/workflows/release-menubar.yml | 4 ++-
SECURITY.md | 21 +++++++++++
mac/Scripts/package-app.sh | 7 ++++
src/menubar-installer.ts | 52 +++++++++++++++++++++------
4 files changed, 73 insertions(+), 11 deletions(-)
create mode 100644 SECURITY.md
diff --git a/.github/workflows/release-menubar.yml b/.github/workflows/release-menubar.yml
index b3902d3..990d473 100644
--- a/.github/workflows/release-menubar.yml
+++ b/.github/workflows/release-menubar.yml
@@ -65,5 +65,7 @@ jobs:
quarantine, and launches it. If you download the zip from this page directly
and macOS shows "cannot verify developer", right-click the app in Finder and
pick Open to whitelist it once.
- files: mac/.build/dist/CodeBurnMenubar-*.zip
+ files: |
+ mac/.build/dist/CodeBurnMenubar-*.zip
+ mac/.build/dist/CodeBurnMenubar-*.zip.sha256
fail_on_unmatched_files: true
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..c94d7f9
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,21 @@
+# Security Policy
+
+## Reporting a Vulnerability
+
+Please report security vulnerabilities via [GitHub's private vulnerability reporting](https://github.com/getagentseal/codeburn/security/advisories/new).
+
+Do not open a public issue for security vulnerabilities.
+
+## Scope
+
+Security reports are welcome for:
+
+- The CLI (`src/`)
+- The menubar installer (`src/menubar-installer.ts`)
+- The macOS menubar app (`mac/`)
+- The desktop app (`desktop/`)
+- CI/CD workflows (`.github/workflows/`)
+
+## Release Integrity
+
+Menubar release assets include a `.sha256` checksum file. The installer verifies the checksum before extracting and launching the downloaded bundle.
diff --git a/mac/Scripts/package-app.sh b/mac/Scripts/package-app.sh
index 5672b5e..5de94ed 100755
--- a/mac/Scripts/package-app.sh
+++ b/mac/Scripts/package-app.sh
@@ -98,6 +98,13 @@ ZIP_PATH="${DIST_DIR}/${ZIP_NAME}"
echo "▸ Packaging ${ZIP_NAME}..."
(cd "${DIST_DIR}" && /usr/bin/ditto -c -k --keepParent "${BUNDLE_NAME}" "${ZIP_NAME}")
+CHECKSUM_NAME="${ZIP_NAME}.sha256"
+CHECKSUM_PATH="${DIST_DIR}/${CHECKSUM_NAME}"
+echo "▸ Computing SHA-256 checksum..."
+(cd "${DIST_DIR}" && shasum -a 256 "${ZIP_NAME}" > "${CHECKSUM_NAME}")
+
echo ""
echo "✓ Built ${ZIP_PATH}"
+echo "✓ Checksum ${CHECKSUM_PATH}"
+cat "${CHECKSUM_PATH}"
ls -la "${DIST_DIR}"
diff --git a/src/menubar-installer.ts b/src/menubar-installer.ts
index 3557141..b2ee90b 100644
--- a/src/menubar-installer.ts
+++ b/src/menubar-installer.ts
@@ -1,6 +1,7 @@
import { spawn } from 'node:child_process'
+import { createHash } from 'node:crypto'
import { createWriteStream } from 'node:fs'
-import { mkdir, mkdtemp, rename, rm, stat } from 'node:fs/promises'
+import { mkdir, mkdtemp, readFile, rename, rm, stat } from 'node:fs/promises'
import { homedir, platform, tmpdir } from 'node:os'
import { join } from 'node:path'
import { pipeline } from 'node:stream/promises'
@@ -11,6 +12,7 @@ import { Readable } from 'node:stream'
const RELEASE_API = 'https://api.github.com/repos/getagentseal/codeburn/releases/latest'
const APP_BUNDLE_NAME = 'CodeBurnMenubar.app'
const ASSET_PATTERN = /^CodeBurnMenubar-.*\.zip$/
+const CHECKSUM_PATTERN = /^CodeBurnMenubar-.*\.zip\.sha256$/
const APP_PROCESS_NAME = 'CodeBurnMenubar'
const SUPPORTED_OS = 'darwin'
const MIN_MACOS_MAJOR = 14
@@ -19,6 +21,7 @@ export type InstallResult = { installedPath: string; launched: boolean }
type ReleaseAsset = { name: string; browser_download_url: string }
type ReleaseResponse = { tag_name: string; assets: ReleaseAsset[] }
+type ResolvedAssets = { zip: ReleaseAsset; checksum: ReleaseAsset | null }
function userApplicationsDir(): string {
return join(homedir(), 'Applications')
@@ -57,10 +60,9 @@ async function sysProductVersion(): Promise {
})
}
-async function fetchLatestReleaseAsset(): Promise {
+async function fetchLatestReleaseAssets(): Promise {
const response = await fetch(RELEASE_API, {
headers: {
- // Identify the installer so GitHub's abuse heuristics treat us as a known client.
'User-Agent': 'codeburn-menubar-installer',
Accept: 'application/vnd.github+json',
},
@@ -69,14 +71,37 @@ async function fetchLatestReleaseAsset(): Promise {
throw new Error(`GitHub release lookup failed: HTTP ${response.status}`)
}
const body = await response.json() as ReleaseResponse
- const asset = body.assets.find(a => ASSET_PATTERN.test(a.name))
- if (!asset) {
+ const zip = body.assets.find(a => ASSET_PATTERN.test(a.name))
+ if (!zip) {
throw new Error(
`No ${APP_BUNDLE_NAME} zip found in release ${body.tag_name}. ` +
`Check https://github.com/getagentseal/codeburn/releases.`
)
}
- return asset
+ const checksum = body.assets.find(a => CHECKSUM_PATTERN.test(a.name)) ?? null
+ return { zip, checksum }
+}
+
+async function verifyChecksum(archivePath: string, checksumUrl: string): Promise {
+ const response = await fetch(checksumUrl, {
+ headers: { 'User-Agent': 'codeburn-menubar-installer' },
+ redirect: 'follow',
+ })
+ if (!response.ok) {
+ throw new Error(`Checksum download failed: HTTP ${response.status}`)
+ }
+ const text = await response.text()
+ const expected = text.trim().split(/\s+/)[0]!.toLowerCase()
+ const fileBytes = await readFile(archivePath)
+ const actual = createHash('sha256').update(fileBytes).digest('hex')
+ if (actual !== expected) {
+ throw new Error(
+ `Checksum mismatch for ${archivePath}.\n` +
+ ` Expected: ${expected}\n` +
+ ` Got: ${actual}\n` +
+ `The download may be corrupted or tampered with.`
+ )
+ }
}
async function downloadToFile(url: string, destPath: string): Promise {
@@ -134,13 +159,20 @@ export async function installMenubarApp(options: { force?: boolean } = {}): Prom
}
console.log('Looking up the latest CodeBurn Menubar release...')
- const asset = await fetchLatestReleaseAsset()
+ const { zip, checksum } = await fetchLatestReleaseAssets()
const stagingDir = await mkdtemp(join(tmpdir(), 'codeburn-menubar-'))
try {
- const archivePath = join(stagingDir, asset.name)
- console.log(`Downloading ${asset.name}...`)
- await downloadToFile(asset.browser_download_url, archivePath)
+ const archivePath = join(stagingDir, zip.name)
+ console.log(`Downloading ${zip.name}...`)
+ await downloadToFile(zip.browser_download_url, archivePath)
+
+ if (checksum) {
+ console.log('Verifying checksum...')
+ await verifyChecksum(archivePath, checksum.browser_download_url)
+ } else {
+ console.log('Warning: no checksum file found in release, skipping verification.')
+ }
console.log('Unpacking...')
await runCommand('/usr/bin/unzip', ['-q', archivePath, '-d', stagingDir])
From 6fb05c6813385f63a7af6cd3c581dbd87054e1b0 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Mon, 4 May 2026 10:13:40 -0700
Subject: [PATCH 031/115] Fix command injection in yield via execFileSync
Replace execSync with execFileSync and argument arrays so shell
metacharacters in git branch names cannot be interpreted as commands.
Add SAFE_REF_PATTERN validation as defense in depth for branch names
from git symbolic-ref.
Addresses #214.
---
src/yield.ts | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/yield.ts b/src/yield.ts
index eba1900..1dda256 100644
--- a/src/yield.ts
+++ b/src/yield.ts
@@ -1,4 +1,4 @@
-import { execSync } from 'child_process'
+import { execFileSync } from 'child_process'
import { parseAllSessions } from './parser.js'
import type { DateRange, SessionSummary } from './types.js'
@@ -20,27 +20,28 @@ export type YieldSummary = {
details: SessionYield[]
}
-function runGit(cmd: string, cwd: string): string | null {
+const SAFE_REF_PATTERN = /^[A-Za-z0-9._/\-]+$/
+
+function runGit(args: string[], cwd: string): string | null {
try {
- return execSync(cmd, { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim()
+ return execFileSync('git', args, { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim()
} catch {
return null
}
}
function isGitRepo(dir: string): boolean {
- return runGit('git rev-parse --is-inside-work-tree', dir) === 'true'
+ return runGit(['rev-parse', '--is-inside-work-tree'], dir) === 'true'
}
function getMainBranch(cwd: string): string {
- // Try to get default branch from remote
- const result = runGit('git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null', cwd)
+ const result = runGit(['symbolic-ref', 'refs/remotes/origin/HEAD'], cwd)
if (result) {
- return result.replace('refs/remotes/origin/', '')
+ const branch = result.replace('refs/remotes/origin/', '')
+ if (SAFE_REF_PATTERN.test(branch)) return branch
}
- // Fallback: check common names
- const branches = runGit('git branch -a', cwd) ?? ''
+ const branches = runGit(['branch', '-a'], cwd) ?? ''
if (branches.includes('main')) return 'main'
if (branches.includes('master')) return 'master'
return 'main'
@@ -58,14 +59,14 @@ function getCommitsInRange(cwd: string, since: Date, until: Date, mainBranch: st
const untilStr = until.toISOString()
const log = runGit(
- `git log --all --since="${sinceStr}" --until="${untilStr}" --format="%H|%aI|%s"`,
+ ['log', '--all', `--since=${sinceStr}`, `--until=${untilStr}`, '--format=%H|%aI|%s'],
cwd
)
if (!log) return []
const mainCommits = new Set(
- (runGit(`git log ${mainBranch} --format="%H"`, cwd) ?? '').split('\n').filter(Boolean)
+ (runGit(['log', mainBranch, '--format=%H'], cwd) ?? '').split('\n').filter(Boolean)
)
return log.split('\n').filter(Boolean).map(line => {
From 90772a3267e9acdc8c24449aa3391c4a089f947a Mon Sep 17 00:00:00 2001
From: Nihal Jain
Date: Tue, 5 May 2026 04:21:40 +0530
Subject: [PATCH 032/115] fix: update model aliases and enhance event parsing
for Copilot provider - Fixes #219
---
src/models.ts | 5 +++++
src/providers/copilot.ts | 18 ++++++++++++++++--
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/models.ts b/src/models.ts
index c756fb2..f338c14 100644
--- a/src/models.ts
+++ b/src/models.ts
@@ -130,6 +130,11 @@ const BUILTIN_ALIASES: Record = {
'anthropic--claude-4.5-opus': 'claude-opus-4-5',
'anthropic--claude-4.5-sonnet': 'claude-sonnet-4-5',
'anthropic--claude-4.5-haiku': 'claude-haiku-4-5',
+ 'claude-sonnet-4.6': 'claude-sonnet-4-6',
+ 'claude-sonnet-4.5': 'claude-sonnet-4-5',
+ 'claude-opus-4.7': 'claude-opus-4-7',
+ 'claude-opus-4.6': 'claude-opus-4-6',
+ 'claude-opus-4.5': 'claude-opus-4-5',
'cursor-auto': 'claude-sonnet-4-5',
'cursor-agent-auto': 'claude-sonnet-4-5',
'copilot-auto': 'claude-sonnet-4-5',
diff --git a/src/providers/copilot.ts b/src/providers/copilot.ts
index baa4dcf..01a1b1f 100644
--- a/src/providers/copilot.ts
+++ b/src/providers/copilot.ts
@@ -70,6 +70,7 @@ type LegacyCopilotEvent =
| { type: 'session.model_change'; timestamp?: string; data: { newModel: string } }
| { type: 'user.message'; timestamp?: string; data: { content: string; interactionId?: string } }
| { type: 'assistant.message'; timestamp?: string; data: { messageId: string; outputTokens: number; interactionId?: string; toolRequests?: LegacyToolRequest[] } }
+ | { type: string; timestamp?: string; data: Record }
function parseLegacyEvents(content: string, sessionId: string, seenKeys: Set): ParsedProviderCall[] {
const results: ParsedProviderCall[] = []
@@ -85,8 +86,14 @@ function parseLegacyEvents(content: string, sessionId: string, seenKeys: Set = [
{ prefix: 'toolu_bdrk_', model: COPILOT_ANTHROPIC_AUTO },
{ prefix: 'toolu_vrtx_', model: COPILOT_ANTHROPIC_AUTO },
{ prefix: 'tooluse_', model: COPILOT_ANTHROPIC_AUTO },
+ { prefix: 'toolu_', model: COPILOT_ANTHROPIC_AUTO },
// OpenAI tool-call IDs.
{ prefix: 'call_', model: COPILOT_OPENAI_AUTO },
]
@@ -166,6 +174,12 @@ function inferModelFromToolCallIds(events: TranscriptEvent[]): string {
const modelCounts = new Map()
for (const e of events) {
+ // Some newer events (like tool.execution_complete) explicitly include the model ID.
+ const data = e.data as { model?: string }
+ if (typeof data.model === 'string' && data.model) {
+ modelCounts.set(data.model, (modelCounts.get(data.model) ?? 0) + 100)
+ }
+
if (e.type !== 'assistant.message') continue
const msg = e as { data: { toolRequests?: TranscriptToolRequest[] } }
for (const t of msg.data.toolRequests ?? []) {
@@ -182,7 +196,7 @@ function inferModelFromToolCallIds(events: TranscriptEvent[]): string {
return [...modelCounts.entries()].sort((a, b) => b[1] - a[1])[0]![0]
}
- return 'copilot-auto'
+ return COPILOT_OPENAI_AUTO
}
function parseTranscriptEvents(content: string, sessionId: string, seenKeys: Set): ParsedProviderCall[] {
From 3dc3e3271537bc5898c55f2ada277ff56a9cd423 Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Tue, 5 May 2026 03:29:54 +0300
Subject: [PATCH 033/115] fix(date-range): unify 'all' period semantics between
CLI and dashboard
`getDateRange` was duplicated across `src/cli.ts` and `src/dashboard.tsx`
with conflicting semantics for `'all'`. The CLI intentionally bounded
`'all'` to the last 6 months (justified inline: keeps Codex/Cursor parses
responsive on sparse multi-year history). The dashboard returned
`new Date(0)` instead, so the same `--period all` flag silently meant
two different windows depending on which entry point you hit.
`Period`, `PERIODS`, `PERIOD_LABELS`, and `toPeriod` were duplicated as
well, and `cli-date.ts` already existed for date helpers
(`parseDateRangeFlags`) so the consolidation lives there.
Both call sites now go through a single `getDateRange(period: string)`
in `cli-date.ts` that returns `{ range, label }`. The dashboard wraps it
as `getPeriodRange(period: Period)` to keep the strict `Period` type at
the React boundary while letting the CLI continue to accept extras like
`'yesterday'`.
`PERIOD_LABELS.all` becomes `'6 Months'` (short, for the dashboard tab
strip; the previous `'All Time'` was misleading and the long-form
`'Last 6 months'` from `getDateRange().label` already drives CLI output).
Changes:
- src/cli-date.ts: add `Period`, `PERIODS`, `PERIOD_LABELS`, `toPeriod`,
`getDateRange`. Pull the existing 6-month rationale into a named
`ALL_TIME_MONTHS` constant.
- src/cli.ts: drop the local copies and import from cli-date.
- src/dashboard.tsx: drop the local copies, route through
`getPeriodRange`, alias the shared `getDateRange` import to
`getDateRangeShared` to avoid shadowing the wrapper.
- tests/cli-date.test.ts: 13 cases covering `'all'` regression guard
(must never silently fall back to `Date(0)`), CLI/dashboard agreement,
end-of-month clamping tolerance, `'yesterday'` support, and
unknown-input fallback.
- README.md, CHANGELOG.md: surface the bound and point heavy users at
`--from`/`--to` for unbounded windows.
The CLI flag `--period all` continues to be accepted; only the dashboard
window changes to match what the CLI was already doing. No public API
or schema change.
Refs #93
---
CHANGELOG.md | 5 ++
README.md | 4 +-
src/cli-date.ts | 85 +++++++++++++++++++++++++++++
src/cli.ts | 52 +-----------------
src/dashboard.tsx | 29 +++-------
tests/cli-date.test.ts | 118 +++++++++++++++++++++++++++++++++++++++++
6 files changed, 217 insertions(+), 76 deletions(-)
create mode 100644 tests/cli-date.test.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b31e30b..ee16abe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# Changelog
+## Unreleased
+
+### Fixed (CLI)
+- **`all` period semantics unified between CLI and dashboard.** The dashboard treated `--period all` as all-time (epoch start) while the CLI bounded it to the last 6 months. Both now consistently mean "Last 6 months". Period helpers (`Period`, `PERIODS`, `PERIOD_LABELS`, `toPeriod`, `getDateRange`) consolidated into `cli-date.ts`. Use `--from` / `--to` for unbounded historical ranges.
+
## 0.9.6 - 2026-05-03
### Added (CLI)
diff --git a/README.md b/README.md
index 2d73f26..1602d87 100644
--- a/README.md
+++ b/README.md
@@ -85,7 +85,7 @@ codeburn yield # track productive vs reverted/abandoned spend
codeburn yield -p 30days # yield analysis for last 30 days
```
-Arrow keys switch between Today, 7 Days, 30 Days, Month, and All Time. Press `q` to quit, `1` `2` `3` `4` `5` as shortcuts, `c` to open model comparison, `o` to open optimize. The dashboard auto-refreshes every 30 seconds by default (`--refresh 0` to disable). It also shows average cost per session and the five most expensive sessions across all projects.
+Arrow keys switch between Today, 7 Days, 30 Days, Month, and 6 Months (use `--from` / `--to` for an exact historical window). Press `q` to quit, `1` `2` `3` `4` `5` as shortcuts, `c` to open model comparison, `o` to open optimize. The dashboard auto-refreshes every 30 seconds by default (`--refresh 0` to disable). It also shows average cost per session and the five most expensive sessions across all projects.
## Supported Providers
@@ -196,7 +196,7 @@ You can also open it inline from the dashboard: press `o` when a finding count a
### Compare
```bash
-codeburn compare # interactive model picker (default: all time)
+codeburn compare # interactive model picker (default: last 6 months)
codeburn compare -p week # last 7 days
codeburn compare -p today # today only
codeburn compare --provider claude # Claude Code sessions only
diff --git a/src/cli-date.ts b/src/cli-date.ts
index 66831b9..b3d502d 100644
--- a/src/cli-date.ts
+++ b/src/cli-date.ts
@@ -1,4 +1,5 @@
import type { DateRange } from './types.js'
+import { toDateString } from './daily-cache.js'
const ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}$/
@@ -7,6 +8,35 @@ const END_OF_DAY_MINUTES = 59
const END_OF_DAY_SECONDS = 59
const END_OF_DAY_MS = 999
+// "All Time" is intentionally bounded to the last 6 months. Older data is
+// rarely actionable for a cost tracker, and capping the range keeps the parse
+// path bounded so providers like Codex/Cursor with sparse multi-year history
+// still load in seconds. Users who need an unbounded window can use
+// `--from` / `--to`.
+const ALL_TIME_MONTHS = 6
+
+export type Period = 'today' | 'week' | '30days' | 'month' | 'all'
+
+export const PERIODS: Period[] = ['today', 'week', '30days', 'month', 'all']
+
+// Short labels suitable for the dashboard tab strip. Long-form labels for
+// header text come from `getDateRange().label`.
+export const PERIOD_LABELS: Record = {
+ today: 'Today',
+ week: '7 Days',
+ '30days': '30 Days',
+ month: 'This Month',
+ all: '6 Months',
+}
+
+export function toPeriod(s: string): Period {
+ if (s === 'today') return 'today'
+ if (s === 'month') return 'month'
+ if (s === '30days') return '30days'
+ if (s === 'all') return 'all'
+ return 'week'
+}
+
function parseLocalDate(s: string): Date {
if (!ISO_DATE_RE.test(s)) {
throw new Error(`Invalid date format "${s}": expected YYYY-MM-DD`)
@@ -37,3 +67,58 @@ export function parseDateRangeFlags(from: string | undefined, to: string | undef
}
return { start, end }
}
+
+/**
+ * Returns the date range and a human-readable label for a named period.
+ *
+ * Accepts a string (rather than the strict `Period` type) because the CLI
+ * surfaces a few extra inputs not exposed in the dashboard tab strip
+ * (e.g. `'yesterday'`). Unknown values fall back to `'week'`.
+ *
+ * Note: `'all'` is bounded to the last 6 months. Use `--from`/`--to` for
+ * an unbounded historical window.
+ */
+export function getDateRange(period: string): { range: DateRange; label: string } {
+ const now = new Date()
+ const end = new Date(
+ now.getFullYear(),
+ now.getMonth(),
+ now.getDate(),
+ END_OF_DAY_HOURS,
+ END_OF_DAY_MINUTES,
+ END_OF_DAY_SECONDS,
+ END_OF_DAY_MS,
+ )
+
+ switch (period) {
+ case 'today': {
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate())
+ return { range: { start, end }, label: `Today (${toDateString(start)})` }
+ }
+ case 'yesterday': {
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1)
+ const yesterdayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1, END_OF_DAY_HOURS, END_OF_DAY_MINUTES, END_OF_DAY_SECONDS, END_OF_DAY_MS)
+ return { range: { start, end: yesterdayEnd }, label: `Yesterday (${toDateString(start)})` }
+ }
+ case 'week': {
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7)
+ return { range: { start, end }, label: 'Last 7 Days' }
+ }
+ case 'month': {
+ const start = new Date(now.getFullYear(), now.getMonth(), 1)
+ return { range: { start, end }, label: `${now.toLocaleString('default', { month: 'long' })} ${now.getFullYear()}` }
+ }
+ case '30days': {
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30)
+ return { range: { start, end }, label: 'Last 30 Days' }
+ }
+ case 'all': {
+ const start = new Date(now.getFullYear(), now.getMonth() - ALL_TIME_MONTHS, now.getDate())
+ return { range: { start, end }, label: 'Last 6 months' }
+ }
+ default: {
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7)
+ return { range: { start, end }, label: 'Last 7 Days' }
+ }
+ }
+}
diff --git a/src/cli.ts b/src/cli.ts
index 368cbbc..7474efc 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -11,7 +11,7 @@ import { getDaysInRange, ensureCacheHydrated, emptyCache, BACKFILL_DAYS, toDateS
import { aggregateProjectsIntoDays, buildPeriodDataFromDays, dateKey } from './day-aggregator.js'
import { CATEGORY_LABELS, type DateRange, type ProjectSummary, type TaskCategory } from './types.js'
import { renderDashboard } from './dashboard.js'
-import { parseDateRangeFlags } from './cli-date.js'
+import { parseDateRangeFlags, getDateRange, toPeriod, type Period } from './cli-date.js'
import { runOptimize, scanAndDetect } from './optimize.js'
import { renderCompare } from './compare.js'
import { getAllProviders } from './providers/index.js'
@@ -35,56 +35,6 @@ async function hydrateCache() {
}
}
-function getDateRange(period: string): { range: DateRange; label: string } {
- const now = new Date()
- const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999)
-
- switch (period) {
- case 'today': {
- const start = new Date(now.getFullYear(), now.getMonth(), now.getDate())
- return { range: { start, end }, label: `Today (${toDateString(start)})` }
- }
- case 'yesterday': {
- const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1)
- const yesterdayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1, 23, 59, 59, 999)
- return { range: { start, end: yesterdayEnd }, label: `Yesterday (${toDateString(start)})` }
- }
- case 'week': {
- const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7)
- return { range: { start, end }, label: 'Last 7 Days' }
- }
- case 'month': {
- const start = new Date(now.getFullYear(), now.getMonth(), 1)
- return { range: { start, end }, label: `${now.toLocaleString('default', { month: 'long' })} ${now.getFullYear()}` }
- }
- case '30days': {
- const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30)
- return { range: { start, end }, label: 'Last 30 Days' }
- }
- case 'all': {
- // Cap "All Time" to the last 6 months. Older data is rarely actionable for a cost
- // tracker and keeps the parse path bounded so providers like Codex/Cursor with sparse
- // data still load in seconds.
- const start = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate())
- return { range: { start, end }, label: 'Last 6 months' }
- }
- default: {
- const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7)
- return { range: { start, end }, label: 'Last 7 Days' }
- }
- }
-}
-
-type Period = 'today' | 'week' | '30days' | 'month' | 'all'
-
-function toPeriod(s: string): Period {
- if (s === 'today') return 'today'
- if (s === 'month') return 'month'
- if (s === '30days') return '30days'
- if (s === 'all') return 'all'
- return 'week'
-}
-
function collect(val: string, acc: string[]): string[] {
acc.push(val)
return acc
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index c047d69..16aea07 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -13,21 +13,12 @@ import { dateKey } from './day-aggregator.js'
import { CompareView } from './compare.js'
import { getPlanUsageOrNull, type PlanUsage } from './plan-usage.js'
import { planDisplayName } from './plans.js'
+import { getDateRange as getDateRangeShared, PERIODS, PERIOD_LABELS, type Period } from './cli-date.js'
import { join } from 'path'
import { patchStdoutForWindows } from './ink-win.js'
-type Period = 'today' | 'week' | '30days' | 'month' | 'all'
type View = 'dashboard' | 'optimize' | 'compare'
-const PERIODS: Period[] = ['today', 'week', '30days', 'month', 'all']
-const PERIOD_LABELS: Record = {
- today: 'Today',
- week: '7 Days',
- '30days': '30 Days',
- month: 'This Month',
- all: 'All Time',
-}
-
const MIN_WIDE = 90
const ORANGE = '#FF8C42'
const DIM = '#555555'
@@ -104,16 +95,8 @@ function gradientColor(pct: number): string {
return toHex(lerp(255, 245, t), lerp(140, 91, t), lerp(66, 91, t))
}
-function getDateRange(period: Period): { start: Date; end: Date } {
- const now = new Date()
- const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999)
- switch (period) {
- case 'today': return { start: new Date(now.getFullYear(), now.getMonth(), now.getDate()), end }
- case 'week': return { start: new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7), end }
- case '30days': return { start: new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30), end }
- case 'month': return { start: new Date(now.getFullYear(), now.getMonth(), 1), end }
- case 'all': return { start: new Date(0), end }
- }
+function getPeriodRange(period: Period): { start: Date; end: Date } {
+ return getDateRangeShared(period).range
}
type Layout = { dashWidth: number; wide: boolean; halfWidth: number; barWidth: number }
@@ -711,7 +694,7 @@ function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider,
let cancelled = false
async function scan() {
if (projects.length === 0) { setOptimizeResult(null); return }
- const result = await scanAndDetect(projects, getDateRange(period))
+ const result = await scanAndDetect(projects, getPeriodRange(period))
if (!cancelled) setOptimizeResult(result)
}
scan()
@@ -723,7 +706,7 @@ function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider,
setLoading(true)
setOptimizeResult(null)
try {
- const range = getDateRange(p)
+ const range = getPeriodRange(p)
const data = await parseAllSessions(range, prov)
if (reloadGenerationRef.current !== generation) return
@@ -828,7 +811,7 @@ function StaticDashboard({ projects, period, activeProvider, planUsage }: { proj
export async function renderDashboard(period: Period = 'week', provider: string = 'all', refreshSeconds?: number, projectFilter?: string[], excludeFilter?: string[], customRange?: DateRange | null): Promise {
await loadPricing()
- const range = customRange ?? getDateRange(period)
+ const range = customRange ?? getPeriodRange(period)
const filteredProjects = filterProjectsByName(await parseAllSessions(range, provider), projectFilter, excludeFilter)
const planUsage = await getPlanUsageOrNull()
const isTTY = process.stdin.isTTY && process.stdout.isTTY
diff --git a/tests/cli-date.test.ts b/tests/cli-date.test.ts
new file mode 100644
index 0000000..f2f7404
--- /dev/null
+++ b/tests/cli-date.test.ts
@@ -0,0 +1,118 @@
+import { describe, it, expect } from 'vitest'
+import {
+ getDateRange,
+ PERIODS,
+ PERIOD_LABELS,
+ toPeriod,
+ type Period,
+} from '../src/cli-date.js'
+
+describe('getDateRange', () => {
+ it('"all" is bounded to the last 6 months, not epoch', () => {
+ const { range, label } = getDateRange('all')
+ const now = new Date()
+
+ expect(label).toBe('Last 6 months')
+
+ // Regression guard: must never silently fall back to epoch (the old
+ // dashboard bug) or any pre-2000 date.
+ expect(range.start.getFullYear()).toBeGreaterThan(2000)
+
+ // Roughly 6 months back. Accept 5-7 months to absorb end-of-month
+ // clamping (e.g. on May 31, JS rolls Nov 31 -> Dec 1, shifting the
+ // computed month forward by one).
+ const monthsDiff =
+ (now.getFullYear() - range.start.getFullYear()) * 12 +
+ (now.getMonth() - range.start.getMonth())
+ expect(monthsDiff).toBeGreaterThanOrEqual(5)
+ expect(monthsDiff).toBeLessThanOrEqual(7)
+
+ // End is today, end of day.
+ expect(range.end.getHours()).toBe(23)
+ expect(range.end.getMinutes()).toBe(59)
+ })
+
+ it('CLI and dashboard agree on "all" semantics (no Date(0) drift)', () => {
+ const a = getDateRange('all')
+ const b = getDateRange('all')
+ expect(a.range.start.getTime()).toBe(b.range.start.getTime())
+ expect(a.label).toBe(b.label)
+ // Regression guard: must never silently fall back to epoch.
+ expect(a.range.start.getFullYear()).toBeGreaterThan(2000)
+ })
+
+ it('"week" returns the last 7 days', () => {
+ const { range, label } = getDateRange('week')
+ expect(label).toBe('Last 7 Days')
+ // start = midnight 7 days ago, end = today 23:59:59.999 -> ~8 days span.
+ const diffDays = (range.end.getTime() - range.start.getTime()) / (1000 * 60 * 60 * 24)
+ expect(diffDays).toBeGreaterThanOrEqual(7)
+ expect(diffDays).toBeLessThanOrEqual(8)
+ })
+
+ it('"month" starts on day 1 of the current month', () => {
+ const { range } = getDateRange('month')
+ expect(range.start.getDate()).toBe(1)
+ expect(range.start.getHours()).toBe(0)
+ })
+
+ it('"30days" returns 30 days back', () => {
+ const { range, label } = getDateRange('30days')
+ expect(label).toBe('Last 30 Days')
+ const diffDays = (range.end.getTime() - range.start.getTime()) / (1000 * 60 * 60 * 24)
+ expect(diffDays).toBeGreaterThanOrEqual(30)
+ expect(diffDays).toBeLessThanOrEqual(31)
+ })
+
+ it('"today" starts at local midnight', () => {
+ const { range } = getDateRange('today')
+ expect(range.start.getHours()).toBe(0)
+ expect(range.start.getMinutes()).toBe(0)
+ expect(range.end.getHours()).toBe(23)
+ })
+
+ it('"yesterday" is supported (CLI-only convenience)', () => {
+ const { range, label } = getDateRange('yesterday')
+ expect(label).toMatch(/^Yesterday/)
+ expect(range.start.getHours()).toBe(0)
+ expect(range.end.getHours()).toBe(23)
+ })
+
+ it('unknown period falls back to "week"', () => {
+ const fallback = getDateRange('not-a-period')
+ const week = getDateRange('week')
+ expect(fallback.label).toBe(week.label)
+ })
+})
+
+describe('PERIODS / PERIOD_LABELS', () => {
+ it('exposes the expected period set', () => {
+ expect(PERIODS).toEqual(['today', 'week', '30days', 'month', 'all'])
+ })
+
+ it('has a label for every period', () => {
+ for (const p of PERIODS) {
+ expect(PERIOD_LABELS[p]).toBeTruthy()
+ }
+ })
+
+ it('"all" tab label reflects the 6-month bound', () => {
+ // Short label used in the dashboard tab strip. The long-form label
+ // ("Last 6 months") comes from getDateRange().label.
+ expect(PERIOD_LABELS.all).toBe('6 Months')
+ })
+})
+
+describe('toPeriod', () => {
+ it('round-trips known periods', () => {
+ const known: Period[] = ['today', 'week', '30days', 'month', 'all']
+ for (const p of known) {
+ expect(toPeriod(p)).toBe(p)
+ }
+ })
+
+ it('falls back to "week" for unknown input', () => {
+ expect(toPeriod('garbage')).toBe('week')
+ expect(toPeriod('')).toBe('week')
+ })
+})
From f5cbfe28bbf4eb526de6a50be8380242ad6539cd Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Mon, 4 May 2026 18:05:59 -0700
Subject: [PATCH 034/115] Overhaul GNOME Shell extension with full-featured UI
(#222)
* Rewrite GNOME extension UI with branded popover matching macOS menubar
Combines PR #212's modular architecture (DataClient, GSettings, Libadwaita
prefs) with the custom St widget UI from feat/tauri-menubar-win-linux.
Adds: branded header, horizontal agent tabs, hero typography, period/insight
pills, 19-day token histogram, 6 content views (Activity, Trend, Forecast,
Pulse, Stats, Plan), currency switcher with FX conversion, findings CTA,
budget alerts, theme detection, payload caching with TTL.
* Add Main.panel.addToStatusArea call to extension entry point
* Align activity/model rows as table with separators, gear icon for prefs
* Add table column headers, oneshot placeholder, currency picker dropdown
* Enhance GNOME extension with scrollable UI, dark mode, charts, and performance fixes
- Add vertical scroll for popup content and horizontal scroll for 6+ provider tabs
- Add token histogram chart with hover tooltips showing date, in/out tokens, cost
- Add skeleton loading animation with stale-while-revalidate caching (5min TTL)
- Add dark/light theme support with force-dark-mode setting
- Add exact costs toggle for full decimal values
- Add right-aligned columns for cost, turns, oneshot, and model data
- Remove unsupported St CSS properties (text-align, letter-spacing)
- Fix post-destroy crash: guard async callbacks, abort Soup session on teardown
- Fix dataClient double-resolve race with settled guard
- Expand PATH resolution for volta, bun, cargo, asdf, fnm, pnpm
- Reduce CLI timeout from 45s to 15s and cache augmented PATH
- Remove unused imports (Pango, Main) and dead constants
- Show 10 top activities, remove Plan pill
---
gnome/dataClient.js | 50 +-
gnome/extension.js | 2 +
gnome/indicator.js | 1071 +++++++++++++----
gnome/metadata.json | 2 +-
gnome/prefs.js | 14 +
...nome.shell.extensions.codeburn.gschema.xml | 12 +
gnome/stylesheet.css | 607 +++++++++-
7 files changed, 1506 insertions(+), 252 deletions(-)
diff --git a/gnome/dataClient.js b/gnome/dataClient.js
index 87d602d..4d0056b 100644
--- a/gnome/dataClient.js
+++ b/gnome/dataClient.js
@@ -1,17 +1,33 @@
import GLib from 'gi://GLib';
import Gio from 'gi://Gio';
-const TIMEOUT_SECONDS = 45;
+const TIMEOUT_SECONDS = 15;
const SAFE_ARG_RE = /^[A-Za-z0-9 ._/\-]+$/;
-const ADDITIONAL_PATH_ENTRIES = ['/usr/local/bin', `${GLib.get_home_dir()}/.local/bin`, `${GLib.get_home_dir()}/.npm-global/bin`];
+
+function buildAdditionalPaths() {
+ const home = GLib.get_home_dir();
+ return [
+ '/usr/local/bin',
+ `${home}/.local/bin`,
+ `${home}/.npm-global/bin`,
+ `${home}/.volta/bin`,
+ `${home}/.bun/bin`,
+ `${home}/.cargo/bin`,
+ `${home}/.asdf/shims`,
+ `${home}/.local/share/fnm/aliases/default/bin`,
+ `${home}/.local/share/pnpm`,
+ ];
+}
export class DataClient {
_cache = new Map();
_inFlight = null;
_codeburnPath;
+ _augmentedPath;
constructor(codeburnPath) {
this._codeburnPath = codeburnPath || '';
+ this._augmentedPath = this._buildAugmentedPath();
}
setCodeburnPath(path) {
@@ -69,39 +85,43 @@ export class DataClient {
return args;
}
- _augmentedEnv() {
+ _buildAugmentedPath() {
const currentPath = GLib.getenv('PATH') || '/usr/bin:/bin';
const parts = currentPath.split(':');
- for (const extra of ADDITIONAL_PATH_ENTRIES) {
+ for (const extra of buildAdditionalPaths()) {
if (!parts.includes(extra))
parts.push(extra);
}
- return [`PATH=${parts.join(':')}`];
+ return parts.join(':');
}
_spawn(period, provider, cancellable) {
return new Promise((resolve, reject) => {
const argv = this._buildArgv(period, provider);
+ let settled = false;
+
+ const settle = (fn, value) => {
+ if (settled) return;
+ settled = true;
+ fn(value);
+ };
let proc;
try {
const launcher = Gio.SubprocessLauncher.new(
Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE
);
- for (const entry of this._augmentedEnv()) {
- const [key, val] = entry.split('=', 2);
- launcher.setenv(key, val, true);
- }
+ launcher.setenv('PATH', this._augmentedPath, true);
proc = launcher.spawnv(argv);
} catch (e) {
- reject(new Error(`CLI not found: ${e.message}`));
+ settle(reject, new Error(`CLI not found: ${e.message}`));
return;
}
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, TIMEOUT_SECONDS, () => {
timeoutId = 0;
proc.force_exit();
- reject(new Error('CLI timeout'));
+ settle(reject, new Error('CLI timeout'));
return GLib.SOURCE_REMOVE;
});
@@ -116,19 +136,19 @@ export class DataClient {
if (!_proc.get_successful()) {
const msg = stderr?.trim() || 'CLI exited with error';
- reject(new Error(msg));
+ settle(reject, new Error(msg));
return;
}
if (!stdout || stdout.trim().length === 0) {
- reject(new Error('CLI returned empty output'));
+ settle(reject, new Error('CLI returned empty output'));
return;
}
const payload = JSON.parse(stdout);
- resolve(payload);
+ settle(resolve, payload);
} catch (e) {
- reject(e);
+ settle(reject, e);
}
});
});
diff --git a/gnome/extension.js b/gnome/extension.js
index 031f7aa..fba94fd 100644
--- a/gnome/extension.js
+++ b/gnome/extension.js
@@ -1,4 +1,5 @@
import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import { CodeBurnIndicator } from './indicator.js';
export default class CodeBurnExtension extends Extension {
@@ -6,6 +7,7 @@ export default class CodeBurnExtension extends Extension {
enable() {
this._indicator = new CodeBurnIndicator(this);
+ Main.panel.addToStatusArea('codeburn-indicator', this._indicator);
}
disable() {
diff --git a/gnome/indicator.js b/gnome/indicator.js
index 9fae16e..64199c1 100644
--- a/gnome/indicator.js
+++ b/gnome/indicator.js
@@ -1,13 +1,18 @@
import GObject from 'gi://GObject';
-import GLib from 'gi://GLib';
-import Gio from 'gi://Gio';
import St from 'gi://St';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
import Clutter from 'gi://Clutter';
+import Soup from 'gi://Soup?version=3.0';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
-import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import { DataClient } from './dataClient.js';
+const CACHE_TTL_MS = 300_000;
+const TOP_ACTIVITIES = 10;
+const CHART_HEIGHT = 52;
+const BAR_TRACK_WIDTH = 240;
+
const PERIODS = [
{ id: 'today', label: 'Today' },
{ id: 'week', label: '7 Days' },
@@ -16,174 +21,486 @@ const PERIODS = [
{ id: 'all', label: 'All' },
];
-function formatCost(cost) {
- if (cost == null || isNaN(cost)) return '$?';
- return `$${cost.toFixed(2)}`;
+const INSIGHTS = [
+ { id: 'activity', label: 'Activity' },
+ { id: 'trend', label: 'Trend' },
+ { id: 'forecast', label: 'Forecast' },
+ { id: 'pulse', label: 'Pulse' },
+ { id: 'stats', label: 'Stats' },
+];
+
+const PROVIDERS = [
+ { id: 'all', label: 'All' },
+ { id: 'claude', label: 'Claude' },
+ { id: 'codex', label: 'Codex' },
+ { id: 'cursor', label: 'Cursor' },
+ { id: 'copilot', label: 'Copilot' },
+ { id: 'opencode', label: 'OpenCode' },
+ { id: 'pi', label: 'Pi' },
+ { id: 'droid', label: 'Droid' },
+ { id: 'gemini', label: 'Gemini' },
+ { id: 'kilo-code', label: 'Kilo Code' },
+ { id: 'kiro', label: 'Kiro' },
+ { id: 'roo-code', label: 'Roo Code' },
+];
+
+const CURRENCIES = [
+ { code: 'USD', symbol: '$' },
+ { code: 'EUR', symbol: '€' },
+ { code: 'GBP', symbol: '£' },
+ { code: 'CAD', symbol: 'C$' },
+ { code: 'AUD', symbol: 'A$' },
+ { code: 'JPY', symbol: '¥' },
+ { code: 'INR', symbol: '₹' },
+ { code: 'BRL', symbol: 'R$' },
+ { code: 'CHF', symbol: 'CHF ' },
+ { code: 'SEK', symbol: 'kr ' },
+ { code: 'SGD', symbol: 'S$' },
+ { code: 'HKD', symbol: 'HK$' },
+ { code: 'KRW', symbol: '₩' },
+ { code: 'MXN', symbol: 'MX$' },
+ { code: 'ZAR', symbol: 'R ' },
+ { code: 'DKK', symbol: 'kr ' },
+ { code: 'CNY', symbol: '¥' },
+];
+
+const PROVIDER_PATHS = {
+ claude: '.claude/projects',
+ codex: '.codex/sessions',
+ cursor: '.config/Cursor/User/globalStorage/state.vscdb',
+ copilot: '.copilot/session-state',
+ pi: '.pi/agent/sessions',
+};
+
+function formatCost(value, currency, rate = 1, exact = false) {
+ const n = (Number(value) || 0) * (Number(rate) || 1);
+ const abs = Math.abs(n);
+ const symbol = currency?.symbol || '$';
+ if (!exact && abs >= 1000) return `${symbol}${(n / 1000).toFixed(abs >= 10000 ? 0 : 1)}k`;
+ const parts = n.toFixed(2).split('.');
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
+ return `${symbol}${parts.join('.')}`;
}
-function formatPercent(val) {
- if (val == null || isNaN(val)) return '—';
- return `${(val * 100).toFixed(0)}%`;
+function formatTokensCompact(n) {
+ const v = Number(n) || 0;
+ if (v >= 1_000_000_000) return `${(v / 1_000_000_000).toFixed(1)}B`;
+ if (v >= 1_000_000) return `${(v / 1_000_000).toFixed(1)}M`;
+ if (v >= 1000) return `${(v / 1000).toFixed(1)}k`;
+ return String(v);
}
-function formatPercentDirect(val) {
- if (val == null || isNaN(val)) return '—';
- return `${val.toFixed(1)}%`;
+function formatTime(date) {
+ if (!date || Number.isNaN(date.getTime())) return '';
+ const now = new Date();
+ const diffSec = Math.floor((now.getTime() - date.getTime()) / 1000);
+ if (diffSec < 60) return 'just now';
+ if (diffSec < 3600) return `${Math.floor(diffSec / 60)}m ago`;
+ if (diffSec < 86400) return `${Math.floor(diffSec / 3600)}h ago`;
+ return date.toLocaleDateString();
}
export const CodeBurnIndicator = GObject.registerClass(
class CodeBurnIndicator extends PanelMenu.Button {
- _extension;
- _settings;
- _dataClient;
- _refreshSourceId = 0;
- _panelLabel;
- _panelIcon;
- _currentPeriod = 'today';
- _currentProvider = 'all';
- _lastPayload = null;
- _isStale = false;
- _settingsChangedIds = [];
-
_init(extension) {
- super._init(0.5, 'CodeBurn Monitor', false);
+ super._init(0.0, 'CodeBurn');
+
this._extension = extension;
this._settings = extension.getSettings();
this._dataClient = new DataClient(this._settings.get_string('codeburn-path'));
- this._currentPeriod = this._settings.get_string('default-period') || 'today';
+ this._settingsChangedIds = [];
+
+ this._period = this._settings.get_string('default-period') || 'today';
+ this._insight = 'activity';
+ this._availableProviders = this._detectProviders();
+ this._provider = this._availableProviders.length === 1 ? this._availableProviders[0] : 'all';
+
+ this._currency = this._loadCurrency();
+ this._exactCosts = this._settings.get_boolean('show-exact-costs');
+ this._fxRate = 1;
+ this._fxCache = { USD: 1 };
+ this._soupSession = new Soup.Session();
+ this._payload = null;
+ this._payloadCache = new Map();
+ this._inFlightKeys = new Set();
+ this._refreshGen = 0;
+ this._refreshSourceId = 0;
+ this._chartSummaryText = '';
+ this._destroyed = false;
+
+ this._themeSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
+ this._themeSignal = this._themeSettings.connect('changed::color-scheme', () => this._applyThemeClass());
+ this._applyThemeClass();
+ this._updateFxRate();
this._buildPanelButton();
- this._buildMenu();
- Main.panel.addToStatusArea('codeburn-indicator', this);
-
+ this._buildPopup();
this._connectSettings();
this._startRefreshLoop();
this._refresh();
}
+ // -- Panel button --
+
_buildPanelButton() {
- const box = new St.BoxLayout({ style_class: 'panel-button' });
-
- this._panelIcon = new St.Icon({
- icon_name: 'codeburn-symbolic',
- style_class: 'system-status-icon',
- });
-
- this._panelLabel = new St.Label({
- text: '$—',
- y_expand: true,
+ const box = new St.BoxLayout({ style_class: 'panel-status-menu-box codeburn-panel' });
+ this._panelIcon = new St.Label({
+ text: '🔥',
y_align: Clutter.ActorAlign.CENTER,
- style_class: 'codeburn-panel-label',
+ style_class: 'codeburn-flame',
+ });
+ this._panelLabel = new St.Label({
+ text: '...',
+ y_align: Clutter.ActorAlign.CENTER,
+ style_class: 'codeburn-label',
});
-
box.add_child(this._panelIcon);
box.add_child(this._panelLabel);
this._panelLabel.visible = !this._settings.get_boolean('compact-mode');
-
this.add_child(box);
}
- _buildMenu() {
- this.menu.removeAll();
+ // -- Popup --
- this._heroItem = this._addMenuItem('Loading...');
- this._heroItem.label.style_class = 'codeburn-hero-label';
+ _buildPopup() {
+ try {
+ this.menu.box.add_style_class_name('codeburn-menu');
+ this._popupHost = new PopupMenu.PopupBaseMenuItem({ reactive: false, can_focus: false });
+ this._popupHost.add_style_class_name('codeburn-host');
+ this.menu.addMenuItem(this._popupHost);
- this._statsItem = this._addMenuItem('');
+ this._root = new St.BoxLayout({ vertical: true, style_class: 'codeburn-root', x_expand: true });
+ this._popupHost.add_child(this._root);
- this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._buildBrandHeader();
- this._periodSection = new PopupMenu.PopupSubMenuMenuItem('Period: Today');
- this.menu.addMenuItem(this._periodSection);
- for (const p of PERIODS) {
- const item = new PopupMenu.PopupMenuItem(p.label);
- item.connect('activate', () => {
- this._currentPeriod = p.id;
- this._periodSection.label.text = `Period: ${p.label}`;
- this._refresh();
+ this._scrollView = new St.ScrollView({
+ style_class: 'codeburn-scroll',
+ hscrollbar_policy: St.PolicyType.NEVER,
+ vscrollbar_policy: St.PolicyType.AUTOMATIC,
+ y_expand: true,
});
- this._periodSection.menu.addMenuItem(item);
+ this._scrollContent = new St.BoxLayout({ vertical: true, x_expand: true });
+ this._scrollView.set_child(this._scrollContent);
+ this._root.add_child(this._scrollView);
+
+ this._buildAgentTabs();
+ this._buildHero();
+ this._buildPeriodTabs();
+ this._buildInsightPills();
+ this._buildTokenChart();
+ this._buildLoadingIndicator();
+ this._buildContentArea();
+ this._buildBudgetAlert();
+ this._buildFindingsSection();
+ this._buildFooter();
+ } catch (e) {
+ log(`CodeBurn: popup build error: ${e.message}\n${e.stack}`);
+ }
+ }
+
+ _buildBrandHeader() {
+ const header = new St.BoxLayout({ vertical: true, style_class: 'codeburn-brand-header' });
+ const title = new St.BoxLayout({ style_class: 'codeburn-brand-row' });
+ title.add_child(new St.Label({ text: 'Code', style_class: 'codeburn-brand-primary' }));
+ title.add_child(new St.Label({ text: 'Burn', style_class: 'codeburn-brand-accent' }));
+ header.add_child(title);
+ header.add_child(new St.Label({ text: 'AI Coding Cost Tracker', style_class: 'codeburn-brand-subhead' }));
+ this._root.add_child(header);
+ }
+
+ _buildAgentTabs() {
+ const detected = this._availableProviders;
+ this._agentTabs = new Map();
+ this._agentTabRow = null;
+ if (detected.length === 0) return;
+
+ const disabled = this._getDisabledProviders();
+ const tabs = detected.length === 1
+ ? PROVIDERS.filter(p => p.id === detected[0])
+ : [PROVIDERS[0], ...PROVIDERS.slice(1).filter(p => detected.includes(p.id) && !disabled.has(p.id))];
+
+ if (tabs.length === 1) {
+ const badge = new St.Label({ text: tabs[0].label, style_class: 'codeburn-agent-badge' });
+ const row = new St.BoxLayout({ style_class: 'codeburn-tab-row' });
+ row.add_child(badge);
+ this._scrollContent.add_child(row);
+ return;
}
- this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ const useScroll = tabs.length > 5;
+ this._agentTabRow = new St.BoxLayout({ style_class: 'codeburn-tab-row' });
+ for (const p of tabs) {
+ const btn = new St.Button({ label: p.label, style_class: 'codeburn-tab', can_focus: true, x_expand: !useScroll });
+ btn.connect('clicked', () => {
+ this._provider = p.id;
+ this._updateAgentTabStyle();
+ this._refresh();
+ });
+ this._agentTabRow.add_child(btn);
+ this._agentTabs.set(p.id, btn);
+ }
+ if (useScroll) {
+ const agentScroll = new St.ScrollView({
+ style_class: 'codeburn-agent-scroll',
+ hscrollbar_policy: St.PolicyType.AUTOMATIC,
+ vscrollbar_policy: St.PolicyType.NEVER,
+ });
+ agentScroll.set_child(this._agentTabRow);
+ this._scrollContent.add_child(agentScroll);
+ } else {
+ this._scrollContent.add_child(this._agentTabRow);
+ }
+ this._updateAgentTabStyle();
+ }
- this._providerHeader = this._addMenuItem('Providers');
- this._providerHeader.setSensitive(false);
- this._providerItems = [];
+ _updateAgentTabStyle() {
+ for (const [id, btn] of this._agentTabs) {
+ if (id === this._provider) btn.add_style_class_name('codeburn-tab-active');
+ else btn.remove_style_class_name('codeburn-tab-active');
+ }
+ }
- this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(''));
- this._providerSeparator = this.menu._getMenuItems().at(-1);
+ _buildHero() {
+ const hero = new St.BoxLayout({ vertical: true, style_class: 'codeburn-hero' });
+ const topLine = new St.BoxLayout({ style_class: 'codeburn-hero-top' });
+ this._heroDot = new St.Widget({ style_class: 'codeburn-hero-dot' });
+ this._heroLabel = new St.Label({ text: 'Loading...', style_class: 'codeburn-hero-label' });
+ topLine.add_child(this._heroDot);
+ topLine.add_child(this._heroLabel);
+ this._heroAmount = new St.Label({ text: '$0.00', style_class: 'codeburn-hero-amount' });
+ this._heroMeta = new St.Label({ text: '', style_class: 'codeburn-hero-meta' });
+ hero.add_child(topLine);
+ hero.add_child(this._heroAmount);
+ hero.add_child(this._heroMeta);
+ this._scrollContent.add_child(hero);
+ }
- this._activitiesSection = new PopupMenu.PopupSubMenuMenuItem('Top Activities');
- this.menu.addMenuItem(this._activitiesSection);
+ _buildPeriodTabs() {
+ const row = new St.BoxLayout({ style_class: 'codeburn-tab-row codeburn-period-row' });
+ this._periodTabs = new Map();
+ for (const p of PERIODS) {
+ const btn = new St.Button({ label: p.label, style_class: 'codeburn-period', can_focus: true, x_expand: true });
+ btn.connect('clicked', () => {
+ this._period = p.id;
+ this._updatePeriodTabStyle();
+ this._refresh();
+ });
+ row.add_child(btn);
+ this._periodTabs.set(p.id, btn);
+ }
+ this._scrollContent.add_child(row);
+ this._updatePeriodTabStyle();
+ }
- this._modelsSection = new PopupMenu.PopupSubMenuMenuItem('Top Models');
- this.menu.addMenuItem(this._modelsSection);
+ _updatePeriodTabStyle() {
+ for (const [id, btn] of this._periodTabs) {
+ if (id === this._period) btn.add_style_class_name('codeburn-period-active');
+ else btn.remove_style_class_name('codeburn-period-active');
+ }
+ }
- this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ _buildInsightPills() {
+ const row = new St.BoxLayout({ style_class: 'codeburn-insight-row' });
+ this._insightPills = new Map();
+ for (const i of INSIGHTS) {
+ const btn = new St.Button({ label: i.label, style_class: 'codeburn-insight-pill', can_focus: true, x_expand: true });
+ btn.connect('clicked', () => {
+ this._insight = i.id;
+ this._updateInsightPillStyle();
+ this._renderContent();
+ });
+ row.add_child(btn);
+ this._insightPills.set(i.id, btn);
+ }
+ this._scrollContent.add_child(row);
+ this._updateInsightPillStyle();
+ }
- this._cacheItem = this._addMenuItem('Cache Hit: —');
- this._oneShotItem = this._addMenuItem('One-shot Rate: —');
+ _updateInsightPillStyle() {
+ for (const [id, btn] of this._insightPills) {
+ if (id === this._insight) btn.add_style_class_name('codeburn-insight-pill-active');
+ else btn.remove_style_class_name('codeburn-insight-pill-active');
+ }
+ }
- this._budgetItem = this._addMenuItem('');
- this._budgetItem.visible = false;
+ _buildTokenChart() {
+ this._chartContainer = new St.BoxLayout({ vertical: true, style_class: 'codeburn-chart' });
+ const header = new St.BoxLayout({ style_class: 'codeburn-chart-header' });
+ this._chartLabel = new St.Label({ text: 'Tokens', style_class: 'codeburn-chart-label', x_expand: true });
+ this._chartTotal = new St.Label({ text: '', style_class: 'codeburn-chart-total' });
+ header.add_child(this._chartLabel);
+ header.add_child(this._chartTotal);
+ this._chartContainer.add_child(header);
+ this._chartBars = new St.BoxLayout({ style_class: 'codeburn-chart-bars' });
+ this._chartContainer.add_child(this._chartBars);
+ this._scrollContent.add_child(this._chartContainer);
+ }
- this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ _buildContentArea() {
+ this._scrollContent.add_child(new St.Widget({ style_class: 'codeburn-divider' }));
+ this._contentArea = new St.BoxLayout({ vertical: true, style_class: 'codeburn-content' });
+ this._scrollContent.add_child(this._contentArea);
+ }
- const refreshItem = new PopupMenu.PopupMenuItem('Refresh');
- refreshItem.connect('activate', () => this._refresh());
- this.menu.addMenuItem(refreshItem);
+ _buildBudgetAlert() {
+ this._budgetLabel = new St.Label({ text: '', style_class: 'codeburn-budget-warning', visible: false });
+ this._scrollContent.add_child(this._budgetLabel);
+ }
- const reportItem = new PopupMenu.PopupMenuItem('Open Full Report');
- reportItem.connect('activate', () => this._openReport());
- this.menu.addMenuItem(reportItem);
+ _buildFindingsSection() {
+ this._findingsBtn = new St.Button({ style_class: 'codeburn-findings', visible: false });
+ const box = new St.BoxLayout({ style_class: 'codeburn-findings-inner' });
+ this._findingsCount = new St.Label({ text: '', style_class: 'codeburn-findings-count' });
+ this._findingsSavings = new St.Label({ text: '', style_class: 'codeburn-findings-savings' });
+ box.add_child(this._findingsCount);
+ box.add_child(this._findingsSavings);
+ this._findingsBtn.set_child(box);
+ this._findingsBtn.connect('clicked', () => this._spawnTerminal(['codeburn', 'optimize']));
+ this._scrollContent.add_child(this._findingsBtn);
+ }
- const prefsItem = new PopupMenu.PopupMenuItem('Preferences');
- prefsItem.connect('activate', () => {
- this._extension.openPreferences();
+ _buildLoadingIndicator() {
+ this._loadingBox = new St.BoxLayout({ vertical: true, style_class: 'codeburn-loading', visible: false, x_expand: true });
+ const widths = [0.85, 0.6, 0.92, 0.5, 0.75, 0.45];
+ for (const w of widths) {
+ const bar = new St.Widget({ style_class: 'codeburn-skeleton-bar', x_expand: false });
+ bar.set_width(Math.round(308 * w));
+ bar.set_height(10);
+ this._loadingBox.add_child(bar);
+ }
+ this._scrollContent.add_child(this._loadingBox);
+ }
+
+ _showLoading() {
+ if (!this._loadingBox) return;
+ this._loadingBox.visible = true;
+ this._loadingBox.get_children().forEach((bar, i) => {
+ bar.opacity = 255;
+ bar.ease({
+ opacity: 60,
+ duration: 900,
+ delay: i * 120,
+ mode: Clutter.AnimationMode.EASE_IN_OUT_SINE,
+ repeatCount: -1,
+ autoReverse: true,
+ });
});
- this.menu.addMenuItem(prefsItem);
}
- _addMenuItem(text) {
- const item = new PopupMenu.PopupMenuItem(text);
- item.setSensitive(false);
- this.menu.addMenuItem(item);
- return item;
+ _hideLoading() {
+ if (!this._loadingBox) return;
+ this._loadingBox.visible = false;
+ this._loadingBox.get_children().forEach(bar => {
+ bar.remove_all_transitions();
+ bar.opacity = 255;
+ });
}
+ _buildFooter() {
+ this._currencyPicker = new St.ScrollView({
+ style_class: 'codeburn-currency-picker',
+ visible: false,
+ hscrollbar_policy: St.PolicyType.NEVER,
+ vscrollbar_policy: St.PolicyType.AUTOMATIC,
+ });
+ const pickerList = new St.BoxLayout({ vertical: true, style_class: 'codeburn-currency-list' });
+ for (const c of CURRENCIES) {
+ const item = new St.Button({ label: `${c.symbol} ${c.code}`, style_class: 'codeburn-currency-item', can_focus: true });
+ if (c.code === this._currency.code) item.add_style_class_name('codeburn-currency-item-active');
+ item.connect('clicked', () => {
+ this._setCurrency(c.code);
+ this._currencyPicker.hide();
+ pickerList.get_children().forEach(ch => ch.remove_style_class_name('codeburn-currency-item-active'));
+ item.add_style_class_name('codeburn-currency-item-active');
+ });
+ pickerList.add_child(item);
+ }
+ this._currencyPicker.set_child(pickerList);
+ this._root.add_child(this._currencyPicker);
+
+ const footer = new St.BoxLayout({ style_class: 'codeburn-footer' });
+
+ this._currencyBtn = new St.Button({
+ label: `${this._currency.code} ⌄`,
+ style_class: 'codeburn-footer-btn codeburn-currency-btn',
+ can_focus: true,
+ });
+ this._currencyBtn.connect('clicked', () => this._toggleCurrencyPicker());
+ footer.add_child(this._currencyBtn);
+
+ const refreshBtn = new St.Button({ label: 'Refresh', style_class: 'codeburn-footer-btn', can_focus: true, x_expand: true });
+ refreshBtn.connect('clicked', () => this._refresh(true));
+ footer.add_child(refreshBtn);
+
+ const reportBtn = new St.Button({ label: 'Full Report', style_class: 'codeburn-footer-btn codeburn-footer-cta', can_focus: true, x_expand: true });
+ reportBtn.connect('clicked', () => this._spawnTerminal(['codeburn', 'report', '--period', this._period, '--provider', this._provider]));
+ footer.add_child(reportBtn);
+
+ const prefsBtn = new St.Button({ label: '⚙', style_class: 'codeburn-footer-btn codeburn-prefs-btn', can_focus: true });
+ prefsBtn.connect('clicked', () => {
+ this._extension.openPreferences();
+ this.menu.close();
+ });
+ footer.add_child(prefsBtn);
+
+ this._root.add_child(footer);
+ this._updatedLabel = new St.Label({ text: '', style_class: 'codeburn-updated' });
+ this._root.add_child(this._updatedLabel);
+ }
+
+ // -- Settings --
+
_connectSettings() {
const watch = (key, cb) => {
const id = this._settings.connect(`changed::${key}`, cb);
this._settingsChangedIds.push(id);
};
-
watch('refresh-interval', () => this._restartRefreshLoop());
- watch('compact-mode', () => this._rebuildPanelButton());
+ watch('compact-mode', () => { this._panelLabel.visible = !this._settings.get_boolean('compact-mode'); });
watch('codeburn-path', () => {
this._dataClient.setCodeburnPath(this._settings.get_string('codeburn-path'));
- this._refresh();
+ this._refresh(true);
});
watch('default-period', () => {
- this._currentPeriod = this._settings.get_string('default-period');
+ this._period = this._settings.get_string('default-period');
+ this._updatePeriodTabStyle();
this._refresh();
});
watch('budget-threshold', () => this._updateBudget());
watch('budget-alert-enabled', () => this._updateBudget());
+ watch('force-dark-mode', () => this._applyThemeClass());
+ watch('show-exact-costs', () => {
+ this._exactCosts = this._settings.get_boolean('show-exact-costs');
+ if (this._payload) this._render(this._payload);
+ });
watch('disabled-providers', () => {
- if (this._lastPayload) {
- this._updatePanel(this._lastPayload);
- this._updateMenu(this._lastPayload);
- }
+ if (this._payload) this._render(this._payload);
});
}
- _rebuildPanelButton() {
- const compact = this._settings.get_boolean('compact-mode');
- this._panelLabel.visible = !compact;
- this._updatePanel(this._lastPayload);
+ _getDisabledProviders() {
+ return new Set(this._settings.get_strv('disabled-providers'));
}
+ // -- Provider detection --
+
+ _detectProviders() {
+ const home = GLib.get_home_dir();
+ const xdgData = GLib.getenv('XDG_DATA_HOME') || `${home}/.local/share`;
+ const checks = Object.fromEntries(
+ Object.entries(PROVIDER_PATHS).map(([id, rel]) => [id, `${home}/${rel}`])
+ );
+ checks.opencode = `${xdgData}/opencode`;
+ const out = [];
+ for (const [id, path] of Object.entries(checks)) {
+ if (Gio.File.new_for_path(path).query_exists(null)) out.push(id);
+ }
+ return out;
+ }
+
+ // -- Refresh loop --
+
_startRefreshLoop() {
const interval = this._settings.get_uint('refresh-interval') || 30;
this._refreshSourceId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, interval, () => {
@@ -200,184 +517,486 @@ class CodeBurnIndicator extends PanelMenu.Button {
this._startRefreshLoop();
}
- async _refresh() {
+ // -- Data fetching with cache --
+
+ _cacheKey() {
+ return `${this._period}|${this._provider}`;
+ }
+
+ async _refresh(force = false) {
+ const key = this._cacheKey();
+ const cached = this._payloadCache.get(key);
+ const cacheAge = cached ? Date.now() - cached.fetchedAt : Infinity;
+
+ if (!force && cached && cacheAge < CACHE_TTL_MS) {
+ this._payload = cached.payload;
+ this._render(this._payload);
+ return;
+ }
+
+ if (this._inFlightKeys.has(key)) return;
+ this._inFlightKeys.add(key);
+ const gen = ++this._refreshGen;
+
+ if (cached) {
+ this._payload = cached.payload;
+ this._render(this._payload);
+ } else {
+ this._showLoading();
+ if (this._contentArea) this._contentArea.opacity = 120;
+ }
+
try {
- const payload = await this._dataClient.fetch(this._currentPeriod, this._currentProvider);
- this._lastPayload = payload;
- this._isStale = false;
- this._updatePanel(payload);
- this._updateMenu(payload);
+ const payload = await this._dataClient.fetch(this._period, this._provider);
+ this._inFlightKeys.delete(key);
+ if (this._destroyed || gen !== this._refreshGen) return;
+ this._payloadCache.set(key, { payload, fetchedAt: Date.now() });
+ if (this._cacheKey() === key) {
+ this._payload = payload;
+ this._hideLoading();
+ if (this._contentArea) this._contentArea.opacity = 255;
+ this._render(this._payload);
+ }
} catch (e) {
+ this._inFlightKeys.delete(key);
+ if (this._destroyed) return;
+ this._hideLoading();
+ if (this._contentArea) this._contentArea.opacity = 255;
+ if (gen !== this._refreshGen) return;
if (e.message?.includes('cancelled')) return;
log(`CodeBurn: refresh error: ${e.message}`);
- this._isStale = true;
- if (!this._lastPayload)
- this._showError(e.message);
- else
- this._updatePanel(this._lastPayload);
+ if (!this._payload) this._renderError(e.message);
}
}
- _getDisabledProviders() {
- return new Set(this._settings.get_strv('disabled-providers'));
+ // -- Rendering --
+
+ _render(payload) {
+ const current = payload?.current ?? {};
+ const cost = Number(current.cost ?? 0);
+
+ this._panelLabel.set_text(this._fmt(cost));
+ this._heroLabel.set_text(current.label || '');
+ this._heroAmount.set_text(this._fmt(cost));
+
+ const calls = Number(current.calls ?? 0);
+ const sessions = Number(current.sessions ?? 0);
+ this._heroMeta.set_text(`${calls.toLocaleString()} calls ${sessions} sessions`);
+
+ this._renderChart(payload?.history?.daily ?? []);
+ this._renderContent();
+ this._renderFindings(payload?.optimize ?? {});
+ this._updateBudget();
+
+ const updated = payload?.generated ? formatTime(new Date(payload.generated)) : '';
+ this._updatedLabel.set_text(updated ? `Updated ${updated}` : '');
}
- _filterProviders(providers) {
- if (!providers) return { filtered: {}, cost: 0 };
- const disabled = this._getDisabledProviders();
- const filtered = {};
- let cost = 0;
- for (const [name, val] of Object.entries(providers)) {
- if (!disabled.has(name)) {
- filtered[name] = val;
- cost += val;
+ _renderChart(daily) {
+ this._chartBars.destroy_all_children();
+ const days = Array.isArray(daily) ? daily.slice(-19) : [];
+ if (days.length === 0) {
+ this._chartContainer.visible = false;
+ return;
+ }
+ const inTotals = days.map(d => Number(d?.inputTokens) || 0);
+ const outTotals = days.map(d => Number(d?.outputTokens) || 0);
+ const totals = inTotals.map((v, i) => v + outTotals[i]);
+ let maxTotal = 1;
+ let totalIn = 0;
+ let totalOut = 0;
+ let hasAnyTokens = false;
+ for (let i = 0; i < days.length; i++) {
+ if (totals[i] > maxTotal) maxTotal = totals[i];
+ if (totals[i] > 0) hasAnyTokens = true;
+ totalIn += inTotals[i];
+ totalOut += outTotals[i];
+ }
+ if (!hasAnyTokens) {
+ this._chartContainer.visible = false;
+ return;
+ }
+ this._chartContainer.visible = true;
+ const summaryText = `In: ${formatTokensCompact(totalIn)} Out: ${formatTokensCompact(totalOut)}`;
+ this._chartTotal.set_text(summaryText);
+ this._chartSummaryText = summaryText;
+
+ const chartWidth = 308;
+ const gap = 2;
+ const barW = Math.max(4, Math.floor((chartWidth - gap * (days.length - 1)) / days.length));
+
+ for (let i = 0; i < days.length; i++) {
+ const h = Math.max(2, Math.round((totals[i] / maxTotal) * CHART_HEIGHT));
+ const col = new St.BoxLayout({ vertical: true, style_class: 'codeburn-chart-col', reactive: true });
+ col.set_width(barW);
+ col.set_height(CHART_HEIGHT);
+ const spacer = new St.Widget({ style_class: 'codeburn-chart-spacer' });
+ spacer.set_height(CHART_HEIGHT - h);
+ const bar = new St.Widget({ style_class: 'codeburn-chart-bar' });
+ bar.set_width(barW);
+ bar.set_height(h);
+ col.add_child(spacer);
+ col.add_child(bar);
+
+ const date = days[i]?.date || '';
+ const inTok = formatTokensCompact(inTotals[i]);
+ const outTok = formatTokensCompact(outTotals[i]);
+ const cost = days[i]?.cost != null ? this._fmt(days[i].cost) : '';
+ col.connect('enter-event', () => {
+ this._chartTotal.set_text(`${date} ${inTok}/${outTok} ${cost}`);
+ this._chartTotal.add_style_class_name('codeburn-chart-total-hover');
+ bar.add_style_class_name('codeburn-chart-bar-hover');
+ return Clutter.EVENT_PROPAGATE;
+ });
+ col.connect('leave-event', () => {
+ this._chartTotal.set_text(this._chartSummaryText);
+ this._chartTotal.remove_style_class_name('codeburn-chart-total-hover');
+ bar.remove_style_class_name('codeburn-chart-bar-hover');
+ return Clutter.EVENT_PROPAGATE;
+ });
+
+ this._chartBars.add_child(col);
+ }
+ }
+
+ _renderContent() {
+ this._contentArea.destroy_all_children();
+ switch (this._insight) {
+ case 'trend': return this._renderTrendView();
+ case 'forecast': return this._renderForecastView();
+ case 'pulse': return this._renderPulseView();
+ case 'stats': return this._renderStatsView();
+ default: return this._renderActivityView();
+ }
+ }
+
+ _renderActivityView() {
+ const current = this._payload?.current ?? {};
+ this._contentArea.add_child(this._sectionTitle('Activity'));
+ const actHeader = new St.BoxLayout({ style_class: 'codeburn-table-header' });
+ actHeader.add_child(new St.Label({ text: 'Name', style_class: 'codeburn-th', x_expand: true }));
+ actHeader.add_child(new St.Label({ text: 'Cost', style_class: 'codeburn-th codeburn-th-right codeburn-th-cost' }));
+ actHeader.add_child(new St.Label({ text: 'Turns', style_class: 'codeburn-th codeburn-th-right codeburn-th-turns' }));
+ actHeader.add_child(new St.Label({ text: '1-shot', style_class: 'codeburn-th codeburn-th-right codeburn-th-turns' }));
+ this._contentArea.add_child(actHeader);
+ const rows = new St.BoxLayout({ vertical: true, style_class: 'codeburn-activity-rows' });
+ const activities = Array.isArray(current.topActivities) ? current.topActivities : [];
+ if (!activities.length) {
+ rows.add_child(new St.Label({ text: 'No activity for this period', style_class: 'codeburn-empty' }));
+ } else {
+ const maxCost = activities.reduce((m, a) => Math.max(m, Number(a.cost) || 0), 0) || 1;
+ for (const a of activities.slice(0, TOP_ACTIVITIES)) {
+ rows.add_child(this._buildActivityRow(a, maxCost));
}
}
- return { filtered, cost };
+ this._contentArea.add_child(rows);
+
+ const models = Array.isArray(current.topModels) ? current.topModels : [];
+ if (models.length) {
+ this._contentArea.add_child(this._sectionTitle('Models'));
+ const modHeader = new St.BoxLayout({ style_class: 'codeburn-table-header' });
+ modHeader.add_child(new St.Label({ text: 'Model', style_class: 'codeburn-th', x_expand: true }));
+ modHeader.add_child(new St.Label({ text: 'Cost', style_class: 'codeburn-th codeburn-th-right codeburn-th-cost' }));
+ modHeader.add_child(new St.Label({ text: 'Calls', style_class: 'codeburn-th codeburn-th-right codeburn-th-calls' }));
+ this._contentArea.add_child(modHeader);
+ const mrows = new St.BoxLayout({ vertical: true, style_class: 'codeburn-models-rows' });
+ for (const m of models.slice(0, 3)) mrows.add_child(this._buildModelRow(m));
+ this._contentArea.add_child(mrows);
+ }
}
- _updatePanel(payload) {
- if (!payload) {
- this._panelLabel.text = '$?';
+ _renderTrendView() {
+ const daily = this._payload?.history?.daily ?? [];
+ if (!daily.length) {
+ this._contentArea.add_child(new St.Label({ text: 'Not enough history yet', style_class: 'codeburn-empty' }));
return;
}
- const { cost } = this._filterProviders(payload.current?.providers);
- let text = formatCost(cost);
- if (this._isStale)
- text += ' *';
- this._panelLabel.text = text;
+ for (const d of daily.slice(-7).reverse()) {
+ const row = new St.BoxLayout({ style_class: 'codeburn-trend-row' });
+ row.add_child(new St.Label({ text: d.date, style_class: 'codeburn-trend-date', x_expand: true }));
+ const costLabel = new St.Label({ text: this._fmt(d.cost), style_class: 'codeburn-trend-cost' });
+ costLabel.clutter_text.x_align = Clutter.ActorAlign.END;
+ row.add_child(costLabel);
+ const callsLabel = new St.Label({ text: `${Number(d.calls).toLocaleString()} calls`, style_class: 'codeburn-trend-calls' });
+ callsLabel.clutter_text.x_align = Clutter.ActorAlign.END;
+ row.add_child(callsLabel);
+ this._contentArea.add_child(row);
+ }
}
- _updateMenu(payload) {
- if (!payload?.current) return;
- const c = payload.current;
- const { filtered, cost } = this._filterProviders(c.providers);
-
- this._heroItem.label.text = `${formatCost(cost)} ${c.label || this._currentPeriod}`;
- this._statsItem.label.text = `${c.calls ?? 0} calls · ${c.sessions ?? 0} sessions`;
-
- this._updateProviders(filtered);
- this._updateActivities(c.topActivities);
- this._updateModels(c.topModels);
-
- this._cacheItem.label.text = `Cache Hit: ${formatPercentDirect(c.cacheHitPercent)}`;
- this._oneShotItem.label.text = `One-shot Rate: ${c.oneShotRate != null ? formatPercent(c.oneShotRate) : '—'}`;
-
- this._updateBudget();
- }
-
- _updateProviders(providers) {
- for (const item of this._providerItems)
- item.destroy();
- this._providerItems = [];
-
- if (!providers || Object.keys(providers).length === 0) {
- this._providerHeader.visible = false;
- this._providerSeparator.visible = false;
+ _renderForecastView() {
+ const daily = this._payload?.history?.daily ?? [];
+ if (daily.length < 3) {
+ this._contentArea.add_child(new St.Label({ text: 'Need at least 3 days of history', style_class: 'codeburn-empty' }));
return;
}
+ const last7 = daily.slice(-7);
+ const avg = last7.reduce((s, d) => s + Number(d.cost || 0), 0) / last7.length;
+ const yesterday = daily.at(-2);
+ const yestCost = Number(yesterday?.cost || 0);
+ const todCost = Number(daily.at(-1)?.cost || 0);
+ const dod = yestCost > 0 ? ((todCost - yestCost) / yestCost) * 100 : 0;
+ const now = new Date();
+ const dayOfMonth = now.getUTCDate();
+ const daysInMonth = new Date(now.getUTCFullYear(), now.getUTCMonth() + 1, 0).getUTCDate();
- this._providerHeader.visible = true;
- this._providerSeparator.visible = true;
+ this._contentArea.add_child(this._kvRow('7-day avg', this._fmt(avg)));
+ this._contentArea.add_child(this._kvRow('Yesterday', yesterday ? this._fmt(yestCost) : '-'));
+ this._contentArea.add_child(this._kvRow('Day-over-day', `${dod > 0 ? '+' : ''}${dod.toFixed(1)}%`));
+ this._contentArea.add_child(this._kvRow('Month projection', this._fmt(avg * daysInMonth)));
+ this._contentArea.add_child(this._kvRow('Days elapsed', `${dayOfMonth} of ${daysInMonth}`));
+ }
- const sorted = Object.entries(providers).sort((a, b) => b[1] - a[1]);
- const headerIndex = this.menu._getMenuItems().indexOf(this._providerHeader);
+ _renderPulseView() {
+ const current = this._payload?.current ?? {};
+ const daily = this._payload?.history?.daily ?? [];
+ this._contentArea.add_child(this._sectionTitle('Pulse'));
+ const row = new St.BoxLayout({ style_class: 'codeburn-pulse-row' });
+ row.add_child(this._pulseTile(this._fmt(current.cost), 'cost'));
+ row.add_child(this._pulseTile(Number(current.calls || 0).toLocaleString(), 'calls'));
+ row.add_child(this._pulseTile(`${Number(current.cacheHitPercent || 0).toFixed(0)}%`, 'cache hit'));
+ this._contentArea.add_child(row);
- for (let i = 0; i < sorted.length; i++) {
- const [name, cost] = sorted[i];
- const item = new PopupMenu.PopupMenuItem(` ${name}`);
- item.setSensitive(false);
-
- const costLabel = new St.Label({
- text: formatCost(cost),
- x_expand: true,
- x_align: Clutter.ActorAlign.END,
- style_class: 'codeburn-provider-cost',
- });
- item.add_child(costLabel);
-
- this.menu.addMenuItem(item, headerIndex + 1 + i);
- this._providerItems.push(item);
+ if (daily.length) {
+ this._contentArea.add_child(this._sectionTitle('Last 7 days'));
+ const last7 = daily.slice(-7);
+ const sumCost = last7.reduce((s, d) => s + Number(d.cost || 0), 0);
+ const sumCalls = last7.reduce((s, d) => s + Number(d.calls || 0), 0);
+ const peakDay = last7.reduce((best, d) => Number(d.cost || 0) > Number(best.cost || 0) ? d : best, last7[0]);
+ this._contentArea.add_child(this._kvRow('Total spend', this._fmt(sumCost)));
+ this._contentArea.add_child(this._kvRow('Total calls', Number(sumCalls).toLocaleString()));
+ this._contentArea.add_child(this._kvRow('Peak day', `${peakDay?.date || '-'} ${this._fmt(peakDay?.cost)}`));
}
}
- _updateActivities(activities) {
- this._activitiesSection.menu.removeAll();
- if (!activities || activities.length === 0) {
- this._activitiesSection.visible = false;
+ _renderStatsView() {
+ const current = this._payload?.current ?? {};
+ const daily = this._payload?.history?.daily ?? [];
+ this._contentArea.add_child(this._sectionTitle('Stats'));
+ const models = Array.isArray(current.topModels) ? current.topModels : [];
+ const favModel = models[0]?.name ?? '-';
+ const activeDays = daily.filter(d => Number(d.cost || 0) > 0).length;
+ const peakDay = daily.reduce((best, d) => Number(d.cost || 0) > Number((best || {}).cost || 0) ? d : best, null);
+ let streak = 0;
+ for (let i = daily.length - 1; i >= 0; i--) {
+ if (Number(daily[i].cost || 0) > 0) streak++;
+ else break;
+ }
+ this._contentArea.add_child(this._kvRow('Favorite model', favModel));
+ this._contentArea.add_child(this._kvRow('Active days', `${activeDays}`));
+ this._contentArea.add_child(this._kvRow('Current streak', `${streak} days`));
+ if (peakDay) this._contentArea.add_child(this._kvRow('Peak day', `${peakDay.date} ${this._fmt(peakDay.cost)}`));
+ }
+
+ _renderFindings(optimize) {
+ const count = Number(optimize?.findingCount ?? 0);
+ if (count === 0) {
+ this._findingsBtn.hide();
return;
}
- this._activitiesSection.visible = true;
- for (const act of activities.slice(0, 5)) {
- const item = new PopupMenu.PopupMenuItem(`${act.name} ${formatCost(act.cost)}`);
- item.setSensitive(false);
- this._activitiesSection.menu.addMenuItem(item);
- }
+ const savings = Number(optimize?.savingsUSD ?? 0);
+ this._findingsCount.set_text(`${count} optimize findings`);
+ this._findingsSavings.set_text(`save ~${this._fmt(savings)}`);
+ this._findingsBtn.show();
}
- _updateModels(models) {
- this._modelsSection.menu.removeAll();
- if (!models || models.length === 0) {
- this._modelsSection.visible = false;
- return;
- }
- this._modelsSection.visible = true;
- for (const model of models.slice(0, 5)) {
- const item = new PopupMenu.PopupMenuItem(`${model.name} ${formatCost(model.cost)}`);
- item.setSensitive(false);
- this._modelsSection.menu.addMenuItem(item);
+ _renderError(message) {
+ this._panelLabel.set_text('!');
+ if (message?.includes('not found') || message?.includes('No such file')) {
+ this._heroLabel.set_text('CodeBurn CLI not found');
+ this._heroMeta.set_text('Install: npm i -g codeburn');
+ } else {
+ this._heroLabel.set_text('Error loading data');
+ this._heroMeta.set_text(message?.substring(0, 80) || 'Unknown error');
}
+ this._heroAmount.set_text('');
+ this._findingsBtn.hide();
}
+ // -- Budget --
+
_updateBudget() {
const enabled = this._settings.get_boolean('budget-alert-enabled');
const threshold = this._settings.get_double('budget-threshold');
-
- if (!enabled || threshold <= 0 || !this._lastPayload?.current) {
- this._budgetItem.visible = false;
+ if (!enabled || threshold <= 0 || !this._payload?.current) {
+ this._budgetLabel.visible = false;
return;
}
-
- const cost = this._lastPayload.current.cost;
- if (cost >= threshold) {
- this._budgetItem.label.text = `⚠ Budget exceeded: ${formatCost(cost)} / ${formatCost(threshold)}`;
- this._budgetItem.visible = true;
+ const cost = Number(this._payload.current.cost ?? 0) * this._fxRate;
+ const thresholdConverted = threshold * this._fxRate;
+ if (cost >= thresholdConverted) {
+ this._budgetLabel.set_text(`Budget exceeded: ${this._fmt(cost)} / ${this._fmt(thresholdConverted)}`);
+ this._budgetLabel.visible = true;
} else {
- this._budgetItem.label.text = `Budget: ${formatCost(cost)} / ${formatCost(threshold)}`;
- this._budgetItem.visible = true;
+ this._budgetLabel.visible = false;
}
}
- _showError(message) {
- this._panelLabel.text = '$?';
- if (message?.includes('not found') || message?.includes('No such file')) {
- this._heroItem.label.text = 'CodeBurn CLI not found';
- this._statsItem.label.text = 'Install: npm i -g codeburn';
- } else {
- this._heroItem.label.text = 'Error loading data';
- this._statsItem.label.text = message?.substring(0, 80) || 'Unknown error';
- }
- }
+ // -- Currency --
- _openReport() {
+ _loadCurrency() {
+ const configPath = GLib.build_filenamev([GLib.get_home_dir(), '.config', 'codeburn', 'config.json']);
try {
- const argv = ['codeburn', 'report'];
- const launcher = Gio.SubprocessLauncher.new(Gio.SubprocessFlags.NONE);
- launcher.spawnv(argv);
- } catch (e) {
- log(`CodeBurn: failed to open report: ${e.message}`);
+ const [ok, contents] = GLib.file_get_contents(configPath);
+ if (ok) {
+ const config = JSON.parse(new TextDecoder().decode(contents));
+ if (config.currency?.code) {
+ const known = CURRENCIES.find(c => c.code === config.currency.code);
+ if (known) return known;
+ return { code: config.currency.code, symbol: config.currency.symbol || `${config.currency.code} ` };
+ }
+ }
+ } catch (_) { /* default */ }
+ return CURRENCIES[0];
+ }
+
+ _toggleCurrencyPicker() {
+ this._currencyPicker.visible = !this._currencyPicker.visible;
+ }
+
+ _setCurrency(code) {
+ try {
+ Gio.Subprocess.new(['codeburn', 'currency', code], Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE);
+ } catch (_) { /* CLI missing */ }
+ const known = CURRENCIES.find(c => c.code === code);
+ this._currency = known || { code, symbol: `${code} ` };
+ this._currencyBtn.set_label(`${this._currency.code} ⌄`);
+ this._updateFxRate();
+ }
+
+ _updateFxRate() {
+ const code = this._currency?.code || 'USD';
+ if (this._fxCache[code] !== undefined) {
+ this._fxRate = this._fxCache[code];
+ if (this._payload) this._render(this._payload);
+ return;
+ }
+ const url = `https://api.frankfurter.app/latest?from=USD&to=${code}`;
+ const msg = Soup.Message.new('GET', url);
+ this._soupSession.send_and_read_async(msg, GLib.PRIORITY_DEFAULT, null, (session, result) => {
+ if (this._destroyed) return;
+ try {
+ const bytes = session.send_and_read_finish(result);
+ if (!bytes) return;
+ const json = JSON.parse(new TextDecoder().decode(bytes.get_data()));
+ const rate = json?.rates?.[code];
+ if (typeof rate === 'number' && rate > 0) {
+ this._fxCache[code] = rate;
+ this._fxRate = rate;
+ if (this._payload) this._render(this._payload);
+ }
+ } catch (_) { /* FX fetch failed */ }
+ });
+ }
+
+ _fmt(value) {
+ return formatCost(value, this._currency, this._fxRate, this._exactCosts);
+ }
+
+ // -- UI helpers --
+
+ _sectionTitle(text) {
+ return new St.Label({ text, style_class: 'codeburn-section-title' });
+ }
+
+ _kvRow(label, value) {
+ const row = new St.BoxLayout({ style_class: 'codeburn-kv-row' });
+ row.add_child(new St.Label({ text: label, style_class: 'codeburn-kv-label', x_expand: true }));
+ row.add_child(new St.Label({ text: String(value ?? '-'), style_class: 'codeburn-kv-value' }));
+ return row;
+ }
+
+ _pulseTile(value, label) {
+ const tile = new St.BoxLayout({ vertical: true, style_class: 'codeburn-pulse-tile', x_expand: true });
+ tile.add_child(new St.Label({ text: value, style_class: 'codeburn-pulse-value' }));
+ tile.add_child(new St.Label({ text: label, style_class: 'codeburn-pulse-label' }));
+ return tile;
+ }
+
+ _buildActivityRow(activity, maxCost) {
+ const row = new St.BoxLayout({ vertical: true, style_class: 'codeburn-activity-row' });
+ const topLine = new St.BoxLayout({ style_class: 'codeburn-activity-top' });
+ topLine.add_child(new St.Label({ text: activity.name, style_class: 'codeburn-activity-name', x_expand: true }));
+ const costLabel = new St.Label({ text: this._fmt(activity.cost), style_class: 'codeburn-activity-cost' });
+ costLabel.clutter_text.x_align = Clutter.ActorAlign.END;
+ topLine.add_child(costLabel);
+ const turnsLabel = new St.Label({ text: `${Number(activity.turns) || 0}`, style_class: 'codeburn-activity-turns' });
+ turnsLabel.clutter_text.x_align = Clutter.ActorAlign.END;
+ topLine.add_child(turnsLabel);
+ const osText = activity.oneShotRate != null ? `${Math.round(Number(activity.oneShotRate) * 100)}%` : '--';
+ const osLabel = new St.Label({ text: osText, style_class: 'codeburn-activity-oneshot' });
+ osLabel.clutter_text.x_align = Clutter.ActorAlign.END;
+ topLine.add_child(osLabel);
+ row.add_child(topLine);
+
+ const track = new St.BoxLayout({ style_class: 'codeburn-bar-track' });
+ const pct = Math.max(0.02, Math.min(1, Number(activity.cost) / maxCost));
+ const fill = new St.Widget({ style_class: 'codeburn-bar-fill' });
+ fill.set_width(Math.round(BAR_TRACK_WIDTH * pct));
+ track.add_child(fill);
+ row.add_child(track);
+ return row;
+ }
+
+ _buildModelRow(model) {
+ const row = new St.BoxLayout({ style_class: 'codeburn-model-row' });
+ row.add_child(new St.Label({ text: model.name, style_class: 'codeburn-model-name', x_expand: true }));
+ const mc = new St.Label({ text: this._fmt(model.cost), style_class: 'codeburn-model-cost' });
+ mc.clutter_text.x_align = Clutter.ActorAlign.END;
+ row.add_child(mc);
+ const mcalls = new St.Label({ text: `${Number(model.calls || 0).toLocaleString()}`, style_class: 'codeburn-model-calls' });
+ mcalls.clutter_text.x_align = Clutter.ActorAlign.END;
+ row.add_child(mcalls);
+ return row;
+ }
+
+ // -- Theme --
+
+ _applyThemeClass() {
+ const forceDark = this._settings.get_boolean('force-dark-mode');
+ const scheme = this._themeSettings.get_string('color-scheme');
+ const isDark = forceDark || scheme === 'prefer-dark';
+ if (isDark) {
+ this._root?.add_style_class_name('codeburn-dark');
+ this._root?.remove_style_class_name('codeburn-light');
+ } else {
+ this._root?.add_style_class_name('codeburn-light');
+ this._root?.remove_style_class_name('codeburn-dark');
}
}
+ // -- Terminal spawning --
+
+ _spawnTerminal(argv) {
+ const command = `${argv.join(' ')}; echo; read -n 1 -s -r -p 'Press any key to close...'`;
+ try {
+ Gio.Subprocess.new(['gnome-terminal', '--', 'bash', '-lc', command], Gio.SubprocessFlags.NONE);
+ } catch (e) {
+ log(`CodeBurn: terminal spawn error: ${e.message}`);
+ }
+ this.menu.close();
+ }
+
+ // -- Cleanup --
+
destroy() {
+ this._destroyed = true;
if (this._refreshSourceId) {
GLib.Source.remove(this._refreshSourceId);
this._refreshSourceId = 0;
}
- this._dataClient?.destroy();
- for (const id of this._settingsChangedIds)
- this._settings.disconnect(id);
+ if (this._themeSettings && this._themeSignal) {
+ this._themeSettings.disconnect(this._themeSignal);
+ this._themeSignal = null;
+ this._themeSettings = null;
+ }
+ for (const id of this._settingsChangedIds) this._settings.disconnect(id);
this._settingsChangedIds = [];
+ this._dataClient?.destroy();
+ if (this._soupSession) {
+ this._soupSession.abort();
+ this._soupSession = null;
+ }
super.destroy();
}
});
diff --git a/gnome/metadata.json b/gnome/metadata.json
index 050b0f5..be8d2c0 100644
--- a/gnome/metadata.json
+++ b/gnome/metadata.json
@@ -3,6 +3,6 @@
"description": "Monitor AI coding assistant token usage and costs",
"uuid": "codeburn@codeburn.dev",
"shell-version": ["45", "46", "47", "48", "49", "50"],
- "url": "https://github.com/anthropics/codeburn",
+ "url": "https://github.com/getagentseal/codeburn",
"settings-schema": "org.gnome.shell.extensions.codeburn"
}
diff --git a/gnome/prefs.js b/gnome/prefs.js
index 8d80679..41a0e50 100644
--- a/gnome/prefs.js
+++ b/gnome/prefs.js
@@ -66,6 +66,20 @@ export default class CodeBurnPreferences extends ExtensionPreferences {
settings.bind('compact-mode', compactRow, 'active', Gio.SettingsBindFlags.DEFAULT);
displayGroup.add(compactRow);
+ const darkModeRow = new Adw.SwitchRow({
+ title: 'Force Dark Mode',
+ subtitle: 'Always use dark theme for the popup',
+ });
+ settings.bind('force-dark-mode', darkModeRow, 'active', Gio.SettingsBindFlags.DEFAULT);
+ displayGroup.add(darkModeRow);
+
+ const exactCostsRow = new Adw.SwitchRow({
+ title: 'Show Exact Costs',
+ subtitle: 'Show full values like $2,655.23 instead of $2.7k',
+ });
+ settings.bind('show-exact-costs', exactCostsRow, 'active', Gio.SettingsBindFlags.DEFAULT);
+ displayGroup.add(exactCostsRow);
+
const periodModel = new Gtk.StringList();
for (const p of PERIODS)
periodModel.append(p.label);
diff --git a/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml b/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml
index 7031ab0..e122cd8 100644
--- a/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml
+++ b/gnome/schemas/org.gnome.shell.extensions.codeburn.gschema.xml
@@ -34,6 +34,18 @@
Show only icon in panel, hide cost label
+
+ false
+ Force dark mode
+ Always use dark theme for the popup, regardless of system theme
+
+
+
+ false
+ Show exact costs
+ Show full decimal values instead of compact notation (e.g. $2,655.23 instead of $2.7k)
+
+
''
CodeBurn CLI path
diff --git a/gnome/stylesheet.css b/gnome/stylesheet.css
index 57489e0..74bf896 100644
--- a/gnome/stylesheet.css
+++ b/gnome/stylesheet.css
@@ -1,23 +1,610 @@
-.codeburn-panel-label {
- margin-left: 4px;
+/* ---- panel button ---- */
+.codeburn-panel {
+ spacing: 4px;
+}
+.codeburn-flame {
+ font-size: 14px;
+}
+.codeburn-label {
+ font-weight: 500;
+ padding-left: 2px;
+ padding-right: 2px;
}
+/* ---- popup host ---- */
+.codeburn-menu {
+ padding: 0;
+}
+.codeburn-host {
+ padding: 0;
+ margin: 0;
+ background: transparent;
+ border: none;
+}
+.codeburn-host:hover,
+.codeburn-host:focus,
+.codeburn-host:active,
+.codeburn-host:selected {
+ background: transparent;
+}
+.codeburn-root {
+ width: 340px;
+ height: 540px;
+ padding: 0;
+ spacing: 0;
+}
+.codeburn-scroll {
+ padding: 0;
+}
+
+/* ---- brand header ---- */
+.codeburn-brand-header {
+ padding: 14px 16px 10px 16px;
+ spacing: 2px;
+}
+.codeburn-brand-row {
+ spacing: 0;
+}
+.codeburn-brand-primary {
+ font-weight: 700;
+ font-size: 18px;
+}
+.codeburn-brand-accent {
+ font-weight: 700;
+ font-size: 18px;
+ color: #ff8c42;
+}
+.codeburn-brand-subhead {
+ font-size: 10.5px;
+ opacity: 0.55;
+}
+
+/* ---- tab rows ---- */
+.codeburn-tab-row {
+ padding: 4px 10px 8px 10px;
+ spacing: 4px;
+}
+.codeburn-period-row {
+ padding-top: 0;
+ padding-bottom: 10px;
+}
+.codeburn-tab,
+.codeburn-period {
+ padding: 5px 6px;
+ border-radius: 6px;
+ font-size: 11px;
+ font-weight: 500;
+ background: transparent;
+ border: none;
+ opacity: 0.7;
+ transition-duration: 80ms;
+}
+.codeburn-tab:hover,
+.codeburn-period:hover {
+ background: rgba(255, 140, 66, 0.08);
+ opacity: 1;
+}
+.codeburn-tab-active,
+.codeburn-period-active {
+ background: rgba(255, 140, 66, 0.18);
+ color: #ff8c42;
+ opacity: 1;
+ font-weight: 600;
+}
+.codeburn-agent-scroll {
+ padding: 0;
+}
+.codeburn-agent-badge {
+ padding: 3px 10px;
+ border-radius: 10px;
+ background: rgba(255, 140, 66, 0.12);
+ color: #ff8c42;
+ font-size: 10.5px;
+ font-weight: 500;
+}
+
+/* ---- hero ---- */
+.codeburn-hero {
+ padding: 4px 16px 10px 16px;
+ spacing: 2px;
+}
+.codeburn-hero-top {
+ spacing: 6px;
+}
+.codeburn-hero-dot {
+ width: 6px;
+ height: 6px;
+ border-radius: 3px;
+ background-color: #ff8c42;
+ margin-top: 7px;
+}
.codeburn-hero-label {
- font-size: 1.2em;
- font-weight: bold;
+ font-size: 11px;
+ opacity: 0.65;
+ font-weight: 500;
+}
+.codeburn-hero-amount {
+ font-size: 28px;
+ font-weight: 700;
+ color: #ffd700;
+}
+.codeburn-hero-meta {
+ font-size: 11px;
+ opacity: 0.6;
}
-.codeburn-provider-cost {
- margin-left: 16px;
- font-variant-numeric: tabular-nums;
+/* ---- activity section ---- */
+.codeburn-section-title {
+ font-weight: 600;
+ font-size: 11px;
+ opacity: 0.6;
+ padding-bottom: 2px;
+}
+/* ---- table headers ---- */
+.codeburn-table-header {
+ spacing: 6px;
+ padding: 2px 0 4px 0;
+}
+.codeburn-th {
+ font-size: 10px;
+ font-weight: 600;
+ opacity: 0.45;
+}
+.codeburn-th-cost {
+ min-width: 64px;
+}
+.codeburn-th-turns {
+ min-width: 40px;
+}
+.codeburn-th-calls {
+ min-width: 50px;
}
+.codeburn-activity-rows {
+ spacing: 0;
+}
+.codeburn-activity-row {
+ spacing: 3px;
+ padding: 6px 0;
+}
+.codeburn-activity-top {
+ spacing: 6px;
+}
+.codeburn-activity-name {
+ font-size: 11.5px;
+ font-weight: 500;
+ min-width: 120px;
+}
+.codeburn-activity-cost {
+ font-size: 11.5px;
+ font-family: monospace;
+ font-weight: 600;
+ color: #ffd700;
+ min-width: 64px;
+}
+.codeburn-activity-turns {
+ font-size: 10.5px;
+ font-family: monospace;
+ opacity: 0.6;
+ min-width: 40px;
+}
+.codeburn-activity-oneshot {
+ font-size: 10.5px;
+ font-family: monospace;
+ color: #4ec972;
+ min-width: 40px;
+}
+.codeburn-bar-track {
+ height: 4px;
+ border-radius: 2px;
+ background-color: rgba(255, 255, 255, 0.08);
+ width: 240px;
+}
+.codeburn-bar-fill {
+ height: 4px;
+ border-radius: 2px;
+ background-color: #ff8c42;
+}
+.codeburn-empty {
+ font-style: italic;
+ opacity: 0.55;
+ padding: 6px 0;
+}
+
+/* ---- loading skeleton ---- */
+.codeburn-loading {
+ padding: 10px 16px;
+ spacing: 10px;
+}
+.codeburn-skeleton-bar {
+ background-color: rgba(255, 140, 66, 0.15);
+ border-radius: 4px;
+}
+.codeburn-light .codeburn-skeleton-bar {
+ background-color: rgba(200, 80, 30, 0.12);
+}
+
+/* ---- findings CTA ---- */
+.codeburn-findings {
+ margin: 2px 16px 10px 16px;
+ padding: 9px 11px;
+ border-radius: 8px;
+ background: rgba(255, 140, 66, 0.12);
+ border: none;
+ transition-duration: 120ms;
+}
+.codeburn-findings:hover {
+ background: rgba(255, 140, 66, 0.2);
+}
+.codeburn-findings-inner {
+ spacing: 8px;
+}
+.codeburn-findings-count {
+ font-size: 11.5px;
+ font-weight: 600;
+ color: #ff8c42;
+}
+.codeburn-findings-savings {
+ font-size: 11.5px;
+ font-weight: 500;
+ color: #ff8c42;
+ opacity: 0.8;
+}
+
+/* ---- footer ---- */
+.codeburn-footer {
+ padding: 10px 12px;
+ spacing: 6px;
+}
+.codeburn-footer-btn {
+ padding: 6px 10px;
+ border-radius: 6px;
+ background: rgba(255, 255, 255, 0.05);
+ border: none;
+ font-size: 11px;
+ font-weight: 500;
+ transition-duration: 80ms;
+}
+.codeburn-footer-btn:hover {
+ background: rgba(255, 255, 255, 0.1);
+}
+.codeburn-currency-box {
+ spacing: 2px;
+}
+.codeburn-currency-btn {
+ font-family: monospace;
+ min-width: 62px;
+}
+.codeburn-currency-picker {
+ background: rgba(30, 30, 30, 0.95);
+ border-radius: 8px;
+ padding: 4px;
+ height: 180px;
+}
+.codeburn-currency-list {
+ spacing: 1px;
+}
+.codeburn-currency-item {
+ padding: 4px 10px;
+ border-radius: 4px;
+ font-size: 11px;
+ font-family: monospace;
+ background: transparent;
+ border: none;
+}
+.codeburn-currency-item:hover {
+ background: rgba(255, 140, 66, 0.12);
+}
+.codeburn-currency-item-active {
+ background: rgba(255, 140, 66, 0.2);
+ color: #ff8c42;
+ font-weight: 600;
+}
+.codeburn-footer-cta {
+ background: #c9521d;
+ color: #ffffff;
+}
+.codeburn-footer-cta:hover {
+ background: #ff8c42;
+}
+.codeburn-updated {
+ font-size: 10px;
+ opacity: 0.45;
+ padding: 0 16px 10px 16px;
+}
+
+/* ---- insight pills row ---- */
+.codeburn-insight-row {
+ padding: 4px 10px 8px 10px;
+ spacing: 4px;
+}
+.codeburn-insight-pill {
+ padding: 4px 4px;
+ border-radius: 6px;
+ font-size: 10.5px;
+ font-weight: 500;
+ background: transparent;
+ border: none;
+ opacity: 0.65;
+ transition-duration: 80ms;
+}
+.codeburn-insight-pill:hover {
+ background: rgba(255, 140, 66, 0.08);
+ opacity: 1;
+}
+.codeburn-insight-pill-active {
+ background: rgba(255, 140, 66, 0.18);
+ color: #ff8c42;
+ opacity: 1;
+ font-weight: 600;
+}
+
+/* ---- token histogram chart ---- */
+.codeburn-chart {
+ padding: 0 16px 10px 16px;
+ spacing: 4px;
+}
+.codeburn-chart-header {
+ spacing: 6px;
+}
+.codeburn-chart-label {
+ font-weight: 600;
+ font-size: 11px;
+ opacity: 0.6;
+}
+.codeburn-chart-total {
+ font-family: monospace;
+ font-size: 11px;
+ opacity: 0.7;
+ color: #ff8c42;
+}
+.codeburn-chart-bars {
+ spacing: 2px;
+ height: 52px;
+}
+.codeburn-chart-col {
+ height: 52px;
+}
+.codeburn-chart-spacer {
+ background: transparent;
+}
+.codeburn-chart-bar {
+ background-color: #ff8c42;
+ border-radius: 2px 2px 0 0;
+}
+.codeburn-chart-bar-hover {
+ background-color: #ffa94d;
+}
+.codeburn-chart-total-hover {
+ font-weight: 600;
+}
+.codeburn-divider {
+ height: 1px;
+ background-color: rgba(255, 255, 255, 0.08);
+ margin: 4px 16px;
+}
+
+/* ---- trend, pulse, stats, kv rows ---- */
+.codeburn-content {
+ padding: 6px 16px 10px 16px;
+ spacing: 6px;
+}
+.codeburn-trend-row,
+.codeburn-kv-row {
+ padding: 4px 0;
+ spacing: 8px;
+}
+.codeburn-trend-date,
+.codeburn-kv-label {
+ font-size: 11.5px;
+ font-weight: 500;
+}
+.codeburn-trend-cost,
+.codeburn-kv-value {
+ font-family: monospace;
+ font-size: 11.5px;
+ font-weight: 600;
+ color: #ffd700;
+}
+.codeburn-trend-calls {
+ font-size: 10.5px;
+ opacity: 0.6;
+ min-width: 62px;
+}
+
+/* ---- pulse tiles ---- */
+.codeburn-pulse-row {
+ spacing: 6px;
+ padding: 4px 0;
+}
+.codeburn-pulse-tile {
+ padding: 10px 8px;
+ border-radius: 8px;
+ background: rgba(255, 140, 66, 0.08);
+ spacing: 2px;
+}
+.codeburn-pulse-value {
+ font-size: 16px;
+ font-weight: 700;
+ color: #ff8c42;
+ font-family: monospace;
+}
+.codeburn-pulse-label {
+ font-size: 10px;
+ opacity: 0.6;
+}
+
+/* ---- models rows ---- */
+.codeburn-models-rows {
+ spacing: 0;
+ padding-top: 4px;
+}
+.codeburn-model-row {
+ spacing: 8px;
+ padding: 6px 0;
+}
+.codeburn-model-name {
+ font-size: 11.5px;
+ min-width: 120px;
+}
+.codeburn-model-cost {
+ font-family: monospace;
+ font-size: 11.5px;
+ color: #ffd700;
+ min-width: 64px;
+}
+.codeburn-model-calls {
+ font-family: monospace;
+ font-size: 10.5px;
+ opacity: 0.6;
+ min-width: 50px;
+}
+
+/* ---- settings gear button ---- */
+.codeburn-prefs-btn {
+ padding: 6px 8px;
+ font-size: 14px;
+}
+
+/* ---- budget warning ---- */
.codeburn-budget-warning {
color: #e5a50a;
font-weight: bold;
+ font-size: 11.5px;
+ padding: 6px 16px;
}
-.codeburn-stale-indicator {
- opacity: 0.6;
- font-style: italic;
+/* ---- dark theme ---- */
+.codeburn-dark {
+ background-color: rgba(30, 30, 30, 0.98);
+ color: #e0e0e0;
+ border-radius: 12px;
+}
+.codeburn-dark .codeburn-brand-primary {
+ color: #ffffff;
+}
+.codeburn-dark .codeburn-brand-subhead {
+ color: rgba(255, 255, 255, 0.55);
+}
+.codeburn-dark .codeburn-hero-label,
+.codeburn-dark .codeburn-hero-meta {
+ color: rgba(255, 255, 255, 0.65);
+}
+.codeburn-dark .codeburn-section-title,
+.codeburn-dark .codeburn-th,
+.codeburn-dark .codeburn-chart-label {
+ color: rgba(255, 255, 255, 0.5);
+}
+.codeburn-dark .codeburn-activity-name,
+.codeburn-dark .codeburn-model-name,
+.codeburn-dark .codeburn-trend-date,
+.codeburn-dark .codeburn-kv-label {
+ color: #e0e0e0;
+}
+.codeburn-dark .codeburn-activity-turns,
+.codeburn-dark .codeburn-model-calls,
+.codeburn-dark .codeburn-trend-calls {
+ color: rgba(255, 255, 255, 0.5);
+}
+.codeburn-dark .codeburn-footer-btn {
+ background: rgba(255, 255, 255, 0.08);
+ color: #e0e0e0;
+}
+.codeburn-dark .codeburn-footer-btn:hover {
+ background: rgba(255, 255, 255, 0.14);
+}
+.codeburn-dark .codeburn-currency-picker {
+ background: rgba(20, 20, 20, 0.98);
+}
+.codeburn-dark .codeburn-currency-item {
+ color: #e0e0e0;
+}
+.codeburn-dark .codeburn-tab,
+.codeburn-dark .codeburn-period,
+.codeburn-dark .codeburn-insight-pill {
+ color: rgba(255, 255, 255, 0.7);
+}
+.codeburn-dark .codeburn-updated {
+ color: rgba(255, 255, 255, 0.45);
+}
+
+/* ---- light theme ---- */
+.codeburn-light {
+ background-color: rgba(255, 255, 255, 0.98);
+ color: #1a1a1a;
+ border-radius: 12px;
+}
+.codeburn-light .codeburn-brand-primary {
+ color: #1a1a1a;
+}
+.codeburn-light .codeburn-brand-subhead {
+ color: rgba(0, 0, 0, 0.5);
+}
+.codeburn-light .codeburn-hero-label,
+.codeburn-light .codeburn-hero-meta {
+ color: rgba(0, 0, 0, 0.6);
+}
+.codeburn-light .codeburn-hero-amount {
+ color: #c9521d;
+}
+.codeburn-light .codeburn-section-title,
+.codeburn-light .codeburn-th,
+.codeburn-light .codeburn-chart-label {
+ color: rgba(0, 0, 0, 0.45);
+}
+.codeburn-light .codeburn-activity-name,
+.codeburn-light .codeburn-model-name,
+.codeburn-light .codeburn-trend-date,
+.codeburn-light .codeburn-kv-label {
+ color: #1a1a1a;
+}
+.codeburn-light .codeburn-activity-cost,
+.codeburn-light .codeburn-model-cost,
+.codeburn-light .codeburn-trend-cost,
+.codeburn-light .codeburn-kv-value {
+ color: #c9521d;
+}
+.codeburn-light .codeburn-activity-turns,
+.codeburn-light .codeburn-model-calls,
+.codeburn-light .codeburn-trend-calls {
+ color: rgba(0, 0, 0, 0.5);
+}
+.codeburn-light .codeburn-activity-oneshot {
+ color: #1b7a35;
+}
+.codeburn-light .codeburn-bar-track {
+ background-color: rgba(0, 0, 0, 0.08);
+}
+.codeburn-light .codeburn-bar-fill {
+ background-color: #c9521d;
+}
+.codeburn-light .codeburn-chart-bar {
+ background-color: #c9521d;
+}
+.codeburn-light .codeburn-footer-btn {
+ background: rgba(0, 0, 0, 0.06);
+ color: #1a1a1a;
+}
+.codeburn-light .codeburn-footer-btn:hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+.codeburn-light .codeburn-currency-picker {
+ background: rgba(245, 245, 245, 0.98);
+}
+.codeburn-light .codeburn-currency-item {
+ color: #1a1a1a;
+}
+.codeburn-light .codeburn-tab,
+.codeburn-light .codeburn-period,
+.codeburn-light .codeburn-insight-pill {
+ color: rgba(0, 0, 0, 0.65);
+}
+.codeburn-light .codeburn-pulse-tile {
+ background: rgba(255, 140, 66, 0.1);
+}
+.codeburn-light .codeburn-updated {
+ color: rgba(0, 0, 0, 0.4);
+}
+.codeburn-light .codeburn-divider {
+ background-color: rgba(0, 0, 0, 0.1);
}
From 1a080a006f8b136b67ae47a5d0c4083045672d96 Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Tue, 5 May 2026 04:13:04 +0300
Subject: [PATCH 035/115] feat(optimize): MCP tool coverage detector with
cache-aware costing
Adds a per-tool optimizer finding for MCP servers whose schema is loaded
on every turn but rarely invoked. Builds on the existing server-level
`detectUnusedMcp` (zero invocations) by reporting partial-use cases:
"loaded 54 tools, called 0" or "loaded 26 tools, called 2 (8% coverage)".
Inventory comes from Claude Code's JSONL `attachment.deferred_tools_delta`
entries: `addedNames` lists the exact tools available at that turn,
including every fully-qualified `mcp____` name. We union
across all delta entries in a session (not just the first) because tool
availability can change mid-session when the user reloads MCP config or
a subagent inherits a different tool set. Names that don't match the
`mcp____` shape with both segments non-empty are rejected
at extraction so downstream `split('__')` consumers can't be poisoned.
Token-savings estimates are cache-aware. MCP tool schemas live in the
cached prefix of the system prompt: a session pays the full input price
on each cache-creation turn (rebuilds happen every ~5 minutes of
inactivity) and the cache-read discount on subsequent turns. Each call's
contribution is capped at its observed `cacheCreationInputTokens` /
`cacheReadInputTokens` so we never claim more MCP overhead than the
call's own cache buckets could contain.
When multiple servers are flagged, costing happens in a single combined
pass: the per-call cap applies to the total unused-schema budget across
all flagged servers, not per server. Two flagged servers cannot both
independently claim the same call's cache bucket, which would otherwise
overstate `tokensSaved` and misclassify findings as high impact.
A session counts toward `loadedSessions` (and toward the cost estimate)
only if its observed inventory included the server. Pure invocation-only
sessions, where the server appears in `mcpBreakdown` or `call.mcpTools`
without any matching `deferred_tools_delta`, do not satisfy the
`>= 2 sessions` threshold on their own. The same invariant applies in
`estimateMcpSchemaCost` so the two passes agree.
Coverage is computed against the inventory only: invocations of names
not present in any observed inventory (older config, hallucinated tool,
typo) do not inflate `toolsInvoked` and cannot drive `unusedCount`
negative. `toolsInvoked` is derived as `inventory.size - unusedTools.length`
to keep both numbers consistent.
`detectUnusedMcp` and the new detector are explicitly disjoint:
`detectUnusedMcp` skips servers that the coverage detector will report,
not every server that happens to be in any inventory, so a small
inventoried-but-uninvoked server below the coverage thresholds still
gets flagged as "configured but never called."
Thresholds for the coverage finding:
- > 10 tools available (small servers are noise)
- < 20% coverage
- >= 2 sessions with observed inventory
- High impact when total effective tokens >= 200_000 or >= 3 servers flagged
Smoke-tested on a real account: 7 servers flagged across 93 sessions
(`office-word-mcp` 0/54, `notebooklm-mcp` 0/38, `office-ppt-mcp` 0/37,
`excel-mcp-server` 0/25, `github-mcp-server` 2/26, `peekaboo` 3/22, plus
`claude_ai_Asana`). Combined-cap costing keeps `tokensSaved` honest.
Changes:
- src/types.ts: optional `mcpInventory: string[]` on `SessionSummary`.
Provider-agnostic field; currently populated only by the Claude parser.
- src/parser.ts: `extractMcpInventory` walks all entries, validates
fully-qualified names, returns sorted unique list. `buildSessionSummary`
passes it through; field is omitted when empty so JSON exports stay
clean.
- src/optimize.ts: `aggregateMcpCoverage`, `estimateMcpSchemaCost`
(single- and multi-server signatures), `detectMcpToolCoverage`. Wired
into `scanAndDetect`. `detectUnusedMcp` updated to disjoint with the
new detector.
- tests/mcp-coverage.test.ts: 23 cases covering aggregation, costing,
combined-cap behaviour, threshold gates, invocation-only-session
filtering, foreign-tool invocations, cache rebuild events, write+read
on the same call, multi-server pluralisation.
- tests/parser-mcp-inventory.test.ts: 12 cases for the JSONL extractor
including malformed name rejection and tolerant attachment parsing.
- CHANGELOG.md: entry under Unreleased / Added (CLI).
Closes #2
---
CHANGELOG.md | 13 +
src/optimize.ts | 322 +++++++++++++++++++++
src/parser.ts | 54 +++-
src/types.ts | 6 +
tests/mcp-coverage.test.ts | 450 +++++++++++++++++++++++++++++
tests/parser-mcp-inventory.test.ts | 126 ++++++++
6 files changed, 970 insertions(+), 1 deletion(-)
create mode 100644 tests/mcp-coverage.test.ts
create mode 100644 tests/parser-mcp-inventory.test.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b31e30b..e5022c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## Unreleased
+
+### Added (CLI)
+- **MCP tool coverage detector.** New `optimize` finding flags MCP servers
+ whose tool inventory is largely unused. Inventory is observed from the
+ Claude `deferred_tools_delta` JSONL attachments (exact tool names per
+ session) instead of guessed at five tools per server. Token-savings
+ estimates are cache-aware: schema bytes pay full input price on the first
+ cache-creation turn of a session, then carry at the cache-read discount
+ on subsequent turns, capped per call so we never claim more overhead
+ than the call's own cache buckets could contain. Threshold:
+ >10 tools available, <20% coverage, observed in ≥2 sessions. Closes #2.
+
## 0.9.6 - 2026-05-03
### Added (CLI)
diff --git a/src/optimize.ts b/src/optimize.ts
index 7077b29..7882660 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -53,6 +53,18 @@ const LOW_RATIO_MEDIUM_THRESHOLD = 3
const MIN_API_CALLS_FOR_CACHE = 10
const CACHE_EXCESS_HIGH_THRESHOLD = 15000
const UNUSED_MCP_HIGH_THRESHOLD = 3
+// MCP tool coverage detector thresholds. A server only earns a finding when
+// every condition holds: the inventory is large enough to matter, real-world
+// usage is poor, and we observed it in enough sessions to trust the signal.
+const MCP_COVERAGE_MIN_TOOLS = 10
+const MCP_COVERAGE_MIN_SESSIONS = 2
+const MCP_COVERAGE_LOW_THRESHOLD = 0.20
+const MCP_COVERAGE_HIGH_IMPACT_TOKENS = 200_000
+// Anthropic prices cached input reads at roughly 10% of fresh input. We use
+// this to keep "ongoing" overhead estimates honest: most MCP schema bytes
+// live in the cached prefix and only get charged at the discount rate after
+// the first turn of a session.
+const CACHE_READ_DISCOUNT = 0.10
const GHOST_AGENTS_HIGH_THRESHOLD = 5
const GHOST_AGENTS_MEDIUM_THRESHOLD = 2
const GHOST_SKILLS_HIGH_THRESHOLD = 10
@@ -477,6 +489,298 @@ export function detectDuplicateReads(calls: ToolCall[], dateRange?: DateRange):
}
}
+/**
+ * Per-server breakdown of MCP tool inventory vs invocations, computed from the
+ * `mcpInventory` field captured by the Claude parser.
+ *
+ * Each session that loaded a server contributes its observed tool list to
+ * the union for that server. Invocations come from the existing
+ * `mcpBreakdown` per-call counts plus the parser's `call.tools` stream.
+ */
+export type McpServerCoverage = {
+ server: string
+ toolsAvailable: number
+ toolsInvoked: number
+ unusedTools: string[]
+ invocations: number
+ loadedSessions: number
+ coverageRatio: number
+}
+
+/**
+ * Aggregate MCP inventory and invocations across the projects in scope.
+ *
+ * Returns one entry per `mcp____*` namespace observed in any
+ * session's `mcpInventory`. Counts of invocations come from
+ * `session.mcpBreakdown` (per-server call totals already maintained by the
+ * parser).
+ */
+export function aggregateMcpCoverage(projects: ProjectSummary[]): McpServerCoverage[] {
+ type ServerAcc = {
+ inventory: Set
+ invokedTools: Set
+ invocations: number
+ loadedSessions: number
+ }
+ const servers = new Map()
+
+ function getOrInit(server: string): ServerAcc {
+ let acc = servers.get(server)
+ if (!acc) {
+ acc = { inventory: new Set(), invokedTools: new Set(), invocations: 0, loadedSessions: 0 }
+ servers.set(server, acc)
+ }
+ return acc
+ }
+
+ for (const project of projects) {
+ for (const session of project.sessions) {
+ // Only sessions with an observed inventory count toward `loadedSessions`.
+ // Pure invocation-only sessions (server seen via `call.mcpTools` or
+ // `session.mcpBreakdown` without any matching `deferred_tools_delta`)
+ // could otherwise satisfy the `MCP_COVERAGE_MIN_SESSIONS` threshold
+ // without giving us evidence that the schema was actually loaded.
+ const inventoriedServers = new Set()
+ const sessionInvoked = new Map>()
+
+ // Inventory: union of tools observed available in this session.
+ for (const fqn of session.mcpInventory ?? []) {
+ const parts = fqn.split('__')
+ if (parts.length < 3 || parts[0] !== 'mcp') continue
+ const server = parts[1]
+ if (!server) continue
+ const tool = parts.slice(2).join('__')
+ if (!tool) continue
+ const acc = getOrInit(server)
+ acc.inventory.add(fqn)
+ inventoriedServers.add(server)
+ }
+
+ // Invoked tools: walk turns to collect per-tool invocations. We can't
+ // get this from session.mcpBreakdown alone because that's keyed by
+ // server, not tool.
+ for (const turn of session.turns) {
+ for (const call of turn.assistantCalls) {
+ for (const fqn of call.mcpTools) {
+ const parts = fqn.split('__')
+ if (parts.length < 3 || parts[0] !== 'mcp') continue
+ const server = parts[1]
+ if (!server) continue
+ let invoked = sessionInvoked.get(server)
+ if (!invoked) {
+ invoked = new Set()
+ sessionInvoked.set(server, invoked)
+ }
+ invoked.add(fqn)
+ }
+ }
+ }
+
+ // Invocation totals: trust mcpBreakdown which was already aggregated
+ // turn-by-turn, including any invocations the inventory pass missed.
+ for (const [server, data] of Object.entries(session.mcpBreakdown)) {
+ const acc = getOrInit(server)
+ acc.invocations += data.calls
+ }
+
+ for (const [server, invoked] of sessionInvoked) {
+ const acc = getOrInit(server)
+ for (const fqn of invoked) acc.invokedTools.add(fqn)
+ }
+
+ for (const server of inventoriedServers) {
+ getOrInit(server).loadedSessions += 1
+ }
+ }
+ }
+
+ const result: McpServerCoverage[] = []
+ for (const [server, acc] of servers) {
+ if (acc.inventory.size === 0) continue
+ // Coverage is only meaningful against tools we actually observed in the
+ // inventory: invocations of tools never inventoried (older config, typo,
+ // etc.) would otherwise inflate the numerator and could even drive
+ // `unusedCount` negative.
+ const invokedInInventory = new Set()
+ for (const fqn of acc.invokedTools) {
+ if (acc.inventory.has(fqn)) invokedInInventory.add(fqn)
+ }
+ const unusedTools = Array.from(acc.inventory).filter(t => !invokedInInventory.has(t)).sort()
+ const toolsInvoked = acc.inventory.size - unusedTools.length
+ result.push({
+ server,
+ toolsAvailable: acc.inventory.size,
+ toolsInvoked,
+ unusedTools,
+ invocations: acc.invocations,
+ loadedSessions: acc.loadedSessions,
+ coverageRatio: acc.inventory.size === 0 ? 0 : toolsInvoked / acc.inventory.size,
+ })
+ }
+ result.sort((a, b) => b.toolsAvailable - a.toolsAvailable)
+ return result
+}
+
+/**
+ * Cache-aware token cost estimate for the unused-tool overhead of one or
+ * more servers, summed across all sessions that loaded any of them.
+ *
+ * Returns three buckets:
+ * - `cacheWriteTokens`: schema bytes paid at full input price (each
+ * cache-creation event in a session that loaded one of the servers).
+ * - `cacheReadTokens`: schema bytes carried at the cache-read discount on
+ * subsequent turns (ongoing overhead).
+ * - `effectiveInputTokens`: equivalent fresh-input tokens, weighted by
+ * cache pricing. Used to estimate dollar cost downstream by multiplying
+ * by the project's input rate.
+ *
+ * We cap each call's contribution at the observed cache-creation /
+ * cache-read totals for that call: it is not meaningful to claim more MCP
+ * overhead than the call's own cache bucket could possibly contain. The
+ * cap is applied once across the combined unused-schema budget for all
+ * flagged servers, not per server, so two flagged servers cannot both
+ * independently claim the same call's cache bucket.
+ *
+ * Anthropic caches expire after roughly 5 minutes of inactivity, so a long
+ * session can rebuild the cache multiple times. Every call that reports
+ * `cacheCreationInputTokens > 0` is treated as another rebuild, not just
+ * the very first one.
+ *
+ * "Loaded" is defined exclusively by observed inventory: a session that
+ * invoked a server without ever emitting a `deferred_tools_delta` for it
+ * does not count, matching the invariant `aggregateMcpCoverage` uses for
+ * `loadedSessions`.
+ */
+export function estimateMcpSchemaCost(
+ unusedToolCounts: Record | number,
+ projects: ProjectSummary[],
+ serverOrServers: string | string[],
+): { cacheWriteTokens: number; cacheReadTokens: number; effectiveInputTokens: number } {
+ // Backward-compatible single-server signature used by tests.
+ const servers = Array.isArray(serverOrServers) ? serverOrServers : [serverOrServers]
+ const counts: Record = typeof unusedToolCounts === 'number'
+ ? { [serverOrServers as string]: unusedToolCounts }
+ : unusedToolCounts
+
+ const totalUnusedSchemaTokens = servers.reduce(
+ (s, srv) => s + (counts[srv] ?? 0) * TOKENS_PER_MCP_TOOL,
+ 0,
+ )
+ if (totalUnusedSchemaTokens === 0) {
+ return { cacheWriteTokens: 0, cacheReadTokens: 0, effectiveInputTokens: 0 }
+ }
+
+ const serverSet = new Set(servers)
+ let cacheWriteTokens = 0
+ let cacheReadTokens = 0
+
+ for (const project of projects) {
+ for (const session of project.sessions) {
+ // A session counts only if its observed inventory included at least
+ // one of the flagged servers — same invariant `aggregateMcpCoverage`
+ // uses for `loadedSessions`.
+ let loaded = false
+ for (const fqn of session.mcpInventory ?? []) {
+ const seg = fqn.split('__')[1]
+ if (seg && serverSet.has(seg)) { loaded = true; break }
+ }
+ if (!loaded) continue
+
+ for (const turn of session.turns) {
+ for (const call of turn.assistantCalls) {
+ // Both buckets can be non-zero on the same call (cache rebuild
+ // alongside a partial read), so account for them independently.
+ // The cap is applied to the combined unused-schema budget so
+ // multiple flagged servers cannot all claim the same call.
+ if (call.usage.cacheCreationInputTokens > 0) {
+ cacheWriteTokens += Math.min(totalUnusedSchemaTokens, call.usage.cacheCreationInputTokens)
+ }
+ if (call.usage.cacheReadInputTokens > 0) {
+ cacheReadTokens += Math.min(totalUnusedSchemaTokens, call.usage.cacheReadInputTokens)
+ }
+ }
+ }
+ }
+ }
+
+ const effectiveInputTokens = cacheWriteTokens + cacheReadTokens * CACHE_READ_DISCOUNT
+ return { cacheWriteTokens, cacheReadTokens, effectiveInputTokens }
+}
+
+/**
+ * Find MCP servers whose tool inventory is largely unused. Replaces the
+ * older server-only `detectUnusedMcp` (which only flagged servers with
+ * literal zero invocations).
+ *
+ * A server is flagged when, taken together:
+ * - it exposed more than `MCP_COVERAGE_MIN_TOOLS` tools,
+ * - we saw it loaded in at least `MCP_COVERAGE_MIN_SESSIONS` sessions,
+ * - the coverage ratio is below `MCP_COVERAGE_LOW_THRESHOLD`.
+ *
+ * Token-savings estimates use the cache-aware accounting from
+ * `estimateMcpSchemaCost` so we don't mistake cached-prefix carry-over for
+ * fresh-input billing.
+ */
+export function detectMcpToolCoverage(
+ projects: ProjectSummary[],
+): WasteFinding | null {
+ const coverage = aggregateMcpCoverage(projects)
+ if (coverage.length === 0) return null
+
+ const flagged = coverage.filter(c =>
+ c.toolsAvailable > MCP_COVERAGE_MIN_TOOLS
+ && c.loadedSessions >= MCP_COVERAGE_MIN_SESSIONS
+ && c.coverageRatio < MCP_COVERAGE_LOW_THRESHOLD,
+ )
+ if (flagged.length === 0) return null
+
+ flagged.sort((a, b) => (b.toolsAvailable - b.toolsInvoked) - (a.toolsAvailable - a.toolsInvoked))
+
+ const lines: string[] = []
+ const removeCommands: string[] = []
+ const unusedCountsByServer: Record = {}
+ const flaggedServers: string[] = []
+
+ for (const c of flagged) {
+ unusedCountsByServer[c.server] = c.toolsAvailable - c.toolsInvoked
+ flaggedServers.push(c.server)
+ const pct = Math.round(c.coverageRatio * 100)
+ lines.push(
+ `${c.server}: ${c.toolsInvoked}/${c.toolsAvailable} tools used (${pct}% coverage) across ${c.loadedSessions} session${c.loadedSessions === 1 ? '' : 's'}`,
+ )
+ removeCommands.push(`claude mcp remove ${c.server}`)
+ }
+
+ // Single combined cost pass: caps each call's contribution at the
+ // total unused-schema budget across all flagged servers, so two
+ // flagged servers cannot independently claim the same call's cache
+ // bucket and overstate `tokensSaved`.
+ const cost = estimateMcpSchemaCost(unusedCountsByServer, projects, flaggedServers)
+ const tokensSaved = Math.round(cost.effectiveInputTokens)
+ const impact: Impact = tokensSaved >= MCP_COVERAGE_HIGH_IMPACT_TOKENS
+ ? 'high'
+ : flagged.length >= UNUSED_MCP_HIGH_THRESHOLD
+ ? 'high'
+ : 'medium'
+
+ return {
+ title: `${flagged.length} MCP server${flagged.length === 1 ? '' : 's'} with low tool coverage`,
+ explanation:
+ `Schema for unused tools is loaded into the system prompt every session and ` +
+ `carried in the cached prefix on every turn. ` +
+ `${lines.join('; ')}.`,
+ impact,
+ tokensSaved,
+ fix: {
+ type: 'command',
+ label: flagged.length === 1
+ ? 'Remove the underused server, or trim its tools in your MCP config:'
+ : 'Remove underused servers, or trim their tools in your MCP config:',
+ text: removeCommands.join('\n'),
+ },
+ }
+}
+
export function detectUnusedMcp(
calls: ToolCall[],
projects: ProjectSummary[],
@@ -497,10 +801,27 @@ export function detectUnusedMcp(
}
}
+ // Servers that the new coverage detector will flag fall under its
+ // jurisdiction (per-tool granularity, cache-aware costing) and we
+ // suppress them here to avoid double-flagging. Importantly, we suppress
+ // only the servers that actually clear the coverage detector's
+ // thresholds — a small, inventoried-but-uninvoked server that the
+ // coverage detector skips would otherwise become a blind spot.
+ const coverageReportedServers = new Set(
+ aggregateMcpCoverage(projects)
+ .filter(c =>
+ c.toolsAvailable > MCP_COVERAGE_MIN_TOOLS
+ && c.loadedSessions >= MCP_COVERAGE_MIN_SESSIONS
+ && c.coverageRatio < MCP_COVERAGE_LOW_THRESHOLD,
+ )
+ .map(c => c.server),
+ )
+
const now = Date.now()
const unused: string[] = []
for (const entry of configured.values()) {
if (calledServers.has(entry.normalized)) continue
+ if (coverageReportedServers.has(entry.normalized)) continue
if (entry.mtime > 0 && now - entry.mtime < MCP_NEW_CONFIG_GRACE_MS) continue
unused.push(entry.original)
}
@@ -973,6 +1294,7 @@ export async function scanAndDetect(
() => detectJunkReads(toolCalls, dateRange),
() => detectDuplicateReads(toolCalls, dateRange),
() => detectUnusedMcp(toolCalls, projects, projectCwds),
+ () => detectMcpToolCoverage(projects),
() => detectBloatedClaudeMd(projectCwds),
() => detectBashBloat(),
]
diff --git a/src/parser.ts b/src/parser.ts
index 6af996f..09cf99c 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -203,10 +203,54 @@ function groupIntoTurns(entries: JournalEntry[], seenMsgIds: Set): Parse
return turns
}
+/**
+ * Extract MCP tool inventory observed across a session's JSONL entries.
+ *
+ * Claude Code emits `attachment.type === "deferred_tools_delta"` entries whose
+ * `addedNames` array lists every tool currently available at that turn (built-in
+ * tools plus all `mcp____` names exposed by configured MCP
+ * servers). Tool inventory can change mid-session if the user reloads MCP
+ * config, so we union every occurrence rather than trusting only the first.
+ *
+ * Built-in tools are filtered out: only `mcp__*` identifiers survive.
+ */
+// Fully-qualified MCP tool name shape: `mcp____`. Both server
+// and tool segments must be non-empty. Names like `mcp__server` (no tool
+// segment) or `mcp__server__` (trailing empty tool) would silently pollute
+// the inventory and break downstream `split('__')` consumers, so they're
+// rejected here.
+function isMcpToolName(name: string): boolean {
+ if (!name.startsWith('mcp__')) return false
+ const rest = name.slice(5) // strip `mcp__`
+ const sep = rest.indexOf('__')
+ if (sep <= 0) return false // missing or empty server
+ if (sep >= rest.length - 2) return false // missing or empty tool
+ return true
+}
+
+export function extractMcpInventory(entries: JournalEntry[]): string[] {
+ const inventory = new Set()
+ for (const entry of entries) {
+ const att = entry['attachment']
+ if (!att || typeof att !== 'object') continue
+ const a = att as { type?: unknown; addedNames?: unknown }
+ if (a.type !== 'deferred_tools_delta') continue
+ if (!Array.isArray(a.addedNames)) continue
+ for (const name of a.addedNames) {
+ if (typeof name !== 'string') continue
+ if (!isMcpToolName(name)) continue
+ inventory.add(name)
+ }
+ }
+ if (inventory.size === 0) return []
+ return Array.from(inventory).sort()
+}
+
function buildSessionSummary(
sessionId: string,
project: string,
turns: ClassifiedTurn[],
+ mcpInventory?: string[],
): SessionSummary {
const modelBreakdown: SessionSummary['modelBreakdown'] = Object.create(null)
const toolBreakdown: SessionSummary['toolBreakdown'] = Object.create(null)
@@ -311,6 +355,7 @@ function buildSessionSummary(
bashBreakdown,
categoryBreakdown,
skillBreakdown,
+ ...(mcpInventory && mcpInventory.length > 0 ? { mcpInventory } : {}),
}
}
@@ -362,7 +407,14 @@ async function parseSessionFile(
}
const classified = turns.map(classifyTurn)
- return buildSessionSummary(sessionId, project, classified)
+ // Inventory is extracted from the full entry stream, not just the
+ // turns we kept after date filtering: tool availability is set up
+ // once at the start of a session (with possible mid-session reloads),
+ // and we want to reflect what was loaded even if the user only ran
+ // turns inside a narrow date window.
+ const mcpInventory = extractMcpInventory(entries)
+
+ return buildSessionSummary(sessionId, project, classified, mcpInventory)
}
async function collectJsonlFiles(dirPath: string): Promise {
diff --git a/src/types.ts b/src/types.ts
index ab67515..e5562e8 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -121,6 +121,12 @@ export type SessionSummary = {
bashBreakdown: Record
categoryBreakdown: Record
skillBreakdown: Record
+ // Observed MCP tools available in this session, captured from
+ // `attachment.deferred_tools_delta.addedNames` entries. Union across all
+ // turns. Each name is a fully-qualified `mcp____` identifier.
+ // Built-in tools (Bash, Edit, etc.) are filtered out. Provider-agnostic field;
+ // currently populated only by the Claude parser.
+ mcpInventory?: string[]
}
export type ProjectSummary = {
diff --git a/tests/mcp-coverage.test.ts b/tests/mcp-coverage.test.ts
new file mode 100644
index 0000000..1d078d2
--- /dev/null
+++ b/tests/mcp-coverage.test.ts
@@ -0,0 +1,450 @@
+import { describe, it, expect } from 'vitest'
+
+import {
+ aggregateMcpCoverage,
+ detectMcpToolCoverage,
+ estimateMcpSchemaCost,
+} from '../src/optimize.js'
+import type {
+ ClassifiedTurn,
+ ParsedApiCall,
+ ProjectSummary,
+ SessionSummary,
+ TaskCategory,
+ TokenUsage,
+} from '../src/types.js'
+
+// ---------------------------------------------------------------------------
+// Test fixtures
+// ---------------------------------------------------------------------------
+
+const ZERO_USAGE: TokenUsage = {
+ inputTokens: 0,
+ outputTokens: 0,
+ cacheCreationInputTokens: 0,
+ cacheReadInputTokens: 0,
+ cachedInputTokens: 0,
+ reasoningTokens: 0,
+ webSearchRequests: 0,
+}
+
+function makeCall(opts: {
+ tools?: string[]
+ cacheCreation?: number
+ cacheRead?: number
+ cost?: number
+} = {}): ParsedApiCall {
+ const tools = opts.tools ?? []
+ return {
+ provider: 'claude',
+ model: 'Opus 4.7',
+ usage: {
+ ...ZERO_USAGE,
+ cacheCreationInputTokens: opts.cacheCreation ?? 0,
+ cacheReadInputTokens: opts.cacheRead ?? 0,
+ },
+ costUSD: opts.cost ?? 0,
+ tools,
+ mcpTools: tools.filter(t => t.startsWith('mcp__')),
+ skills: [],
+ hasAgentSpawn: false,
+ hasPlanMode: false,
+ speed: 'standard',
+ timestamp: '2026-05-04T00:00:00Z',
+ bashCommands: [],
+ deduplicationKey: 'k',
+ }
+}
+
+function makeTurn(calls: ParsedApiCall[]): ClassifiedTurn {
+ return {
+ userMessage: '',
+ assistantCalls: calls,
+ timestamp: '2026-05-04T00:00:00Z',
+ sessionId: 's1',
+ category: 'coding',
+ retries: 0,
+ hasEdits: false,
+ }
+}
+
+function makeSession(opts: {
+ sessionId?: string
+ inventory?: string[]
+ turns?: ClassifiedTurn[]
+ mcpBreakdown?: Record
+}): SessionSummary {
+ const turns = opts.turns ?? []
+ const apiCalls = turns.reduce((s, t) => s + t.assistantCalls.length, 0)
+ const emptyCategoryBreakdown = {} as Record
+ return {
+ sessionId: opts.sessionId ?? 's1',
+ project: 'p',
+ firstTimestamp: '2026-05-04T00:00:00Z',
+ lastTimestamp: '2026-05-04T00:00:00Z',
+ totalCostUSD: 0,
+ totalInputTokens: 0,
+ totalOutputTokens: 0,
+ totalCacheReadTokens: 0,
+ totalCacheWriteTokens: 0,
+ apiCalls,
+ turns,
+ modelBreakdown: {},
+ toolBreakdown: {},
+ mcpBreakdown: opts.mcpBreakdown ?? {},
+ bashBreakdown: {},
+ categoryBreakdown: emptyCategoryBreakdown,
+ skillBreakdown: {},
+ ...(opts.inventory ? { mcpInventory: opts.inventory } : {}),
+ }
+}
+
+function project(sessions: SessionSummary[]): ProjectSummary {
+ return {
+ project: 'p',
+ projectPath: '/tmp/p',
+ sessions,
+ totalCostUSD: 0,
+ totalApiCalls: sessions.reduce((s, ses) => s + ses.apiCalls, 0),
+ }
+}
+
+// ---------------------------------------------------------------------------
+// aggregateMcpCoverage
+// ---------------------------------------------------------------------------
+
+describe('aggregateMcpCoverage', () => {
+ it('returns empty list when no session has MCP inventory', () => {
+ const projects = [project([makeSession({})])]
+ expect(aggregateMcpCoverage(projects)).toEqual([])
+ })
+
+ it('reports per-server tools available, invoked, and unused', () => {
+ const inventory = [
+ 'mcp__hf__hub_repo_search',
+ 'mcp__hf__paper_search',
+ 'mcp__hf__hf_doc_search',
+ ]
+ const turns = [
+ makeTurn([makeCall({ tools: ['mcp__hf__hub_repo_search'] })]),
+ ]
+ const sessions = [
+ makeSession({ inventory, turns, mcpBreakdown: { hf: { calls: 1 } } }),
+ ]
+ const result = aggregateMcpCoverage([project(sessions)])
+
+ expect(result).toHaveLength(1)
+ expect(result[0]!.server).toBe('hf')
+ expect(result[0]!.toolsAvailable).toBe(3)
+ expect(result[0]!.toolsInvoked).toBe(1)
+ expect(result[0]!.unusedTools).toEqual([
+ 'mcp__hf__hf_doc_search',
+ 'mcp__hf__paper_search',
+ ])
+ expect(result[0]!.coverageRatio).toBeCloseTo(1 / 3, 5)
+ expect(result[0]!.invocations).toBe(1)
+ expect(result[0]!.loadedSessions).toBe(1)
+ })
+
+ it('unions inventory across multiple sessions for the same server', () => {
+ const sessions = [
+ makeSession({ sessionId: 'a', inventory: ['mcp__x__a', 'mcp__x__b'] }),
+ makeSession({ sessionId: 'b', inventory: ['mcp__x__b', 'mcp__x__c'] }),
+ ]
+ const result = aggregateMcpCoverage([project(sessions)])
+ expect(result[0]!.toolsAvailable).toBe(3)
+ expect(result[0]!.loadedSessions).toBe(2)
+ })
+
+ it('separates servers with similar names', () => {
+ const sessions = [
+ makeSession({ inventory: ['mcp__hf__a', 'mcp__hugface__a'] }),
+ ]
+ const result = aggregateMcpCoverage([project(sessions)])
+ expect(result.map(r => r.server).sort()).toEqual(['hf', 'hugface'])
+ })
+
+ it('skips invocations without inventory (foreign server, no inventory observed)', () => {
+ // A server can show up only via a call. We still report it so the
+ // operator knows it was invoked, but coverage is 0/0 and it is not a
+ // candidate for the unused-coverage finding.
+ const turns = [makeTurn([makeCall({ tools: ['mcp__ghost__t1'] })])]
+ const sessions = [
+ makeSession({ turns, mcpBreakdown: { ghost: { calls: 1 } } }),
+ ]
+ const result = aggregateMcpCoverage([project(sessions)])
+ // No inventory entry -> aggregator drops the server from the report
+ // because we cannot reason about coverage without an inventory baseline.
+ expect(result).toEqual([])
+ })
+})
+
+// ---------------------------------------------------------------------------
+// estimateMcpSchemaCost — cache-aware accounting
+// ---------------------------------------------------------------------------
+
+describe('estimateMcpSchemaCost', () => {
+ it('charges first cacheCreation turn at full price, subsequent turns at cache-read', () => {
+ const turns = [
+ makeTurn([makeCall({ cacheCreation: 50_000 })]), // first turn: write
+ makeTurn([makeCall({ cacheRead: 60_000 })]), // ongoing: read
+ makeTurn([makeCall({ cacheRead: 60_000 })]),
+ ]
+ const sessions = [makeSession({
+ inventory: Array.from({ length: 30 }, (_, i) => `mcp__svc__t${i}`),
+ turns,
+ mcpBreakdown: { svc: { calls: 0 } },
+ })]
+ // 30 unused tools * 400 token estimate = 12_000 schema tokens
+ // cap by call cache buckets so we never overclaim
+ const cost = estimateMcpSchemaCost(30, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(12_000) // capped by 50k creation, 12k schema fits
+ expect(cost.cacheReadTokens).toBe(24_000) // 12k + 12k across two ongoing turns
+ // effective = write + read * 0.10 (cache discount)
+ expect(cost.effectiveInputTokens).toBeCloseTo(12_000 + 24_000 * 0.10, 5)
+ })
+
+ it('caps by available cache bucket so we never overclaim', () => {
+ const turns = [makeTurn([makeCall({ cacheCreation: 1_000 })])]
+ const sessions = [makeSession({
+ inventory: Array.from({ length: 30 }, (_, i) => `mcp__svc__t${i}`),
+ turns,
+ mcpBreakdown: { svc: { calls: 0 } },
+ })]
+ // 30*400 = 12k schema tokens, but the call only had 1k cache-creation,
+ // so we should not claim more than 1k of overhead for that turn.
+ const cost = estimateMcpSchemaCost(30, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(1_000)
+ })
+
+ it('returns zero when no unused tools', () => {
+ const sessions = [makeSession({
+ inventory: ['mcp__svc__t1'],
+ turns: [makeTurn([makeCall({ cacheCreation: 5000 })])],
+ })]
+ const cost = estimateMcpSchemaCost(0, [project(sessions)], 'svc')
+ expect(cost).toEqual({ cacheWriteTokens: 0, cacheReadTokens: 0, effectiveInputTokens: 0 })
+ })
+
+ it('counts cache write AND cache read on the same call', () => {
+ // A long session can have a cache rebuild mid-stream where one call
+ // reports both buckets. The estimator must charge both, not skip the
+ // read because of the write.
+ const turns = [makeTurn([
+ makeCall({ cacheCreation: 50_000, cacheRead: 30_000 }),
+ ])]
+ const sessions = [makeSession({
+ inventory: Array.from({ length: 30 }, (_, i) => `mcp__svc__t${i}`),
+ turns,
+ mcpBreakdown: { svc: { calls: 0 } },
+ })]
+ const cost = estimateMcpSchemaCost(30, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(12_000) // capped at 50k creation
+ expect(cost.cacheReadTokens).toBe(12_000) // capped at 30k read
+ })
+
+ it('counts every cache rebuild, not just the first one', () => {
+ // Sessions that span more than 5 minutes can rebuild the cache
+ // multiple times. The estimator should treat every cacheCreation
+ // bucket as another write.
+ const turns = [makeTurn([
+ makeCall({ cacheCreation: 50_000 }),
+ makeCall({ cacheCreation: 50_000 }), // rebuild after cache TTL
+ makeCall({ cacheRead: 60_000 }),
+ ])]
+ const sessions = [makeSession({
+ inventory: Array.from({ length: 30 }, (_, i) => `mcp__svc__t${i}`),
+ turns,
+ mcpBreakdown: { svc: { calls: 0 } },
+ })]
+ const cost = estimateMcpSchemaCost(30, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(24_000) // both rebuilds counted
+ expect(cost.cacheReadTokens).toBe(12_000)
+ })
+
+ it('skips sessions where the server was never loaded', () => {
+ const turns = [makeTurn([makeCall({ cacheCreation: 100_000 })])]
+ const sessions = [makeSession({
+ inventory: ['mcp__other__t1'],
+ turns,
+ })]
+ const cost = estimateMcpSchemaCost(10, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(0)
+ })
+
+ it('requires observed inventory for the server, not just invocations', () => {
+ // Session invoked the server (mcpBreakdown set, mcpTools called) but
+ // never reported a deferred_tools_delta for it. Cost should be 0 to
+ // stay consistent with aggregateMcpCoverage's loadedSessions rule.
+ const turns = [makeTurn([
+ makeCall({ tools: ['mcp__svc__t1'], cacheCreation: 100_000 }),
+ ])]
+ const sessions = [makeSession({
+ // No inventory at all
+ turns,
+ mcpBreakdown: { svc: { calls: 1 } },
+ })]
+ const cost = estimateMcpSchemaCost(10, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(0)
+ expect(cost.cacheReadTokens).toBe(0)
+ })
+
+ it('caps combined unused-schema budget across multiple flagged servers', () => {
+ // Two flagged servers, each with 30 unused tools (12k schema each =
+ // 24k combined). One call has a 50k cache-creation bucket. The
+ // combined cap means total write tokens reported is min(24k, 50k) =
+ // 24k, not 24k + 24k = 48k.
+ const inventory = [
+ ...Array.from({ length: 30 }, (_, i) => `mcp__a__t${i}`),
+ ...Array.from({ length: 30 }, (_, i) => `mcp__b__t${i}`),
+ ]
+ const turns = [makeTurn([makeCall({ cacheCreation: 50_000 })])]
+ const sessions = [makeSession({ inventory, turns })]
+ const cost = estimateMcpSchemaCost(
+ { a: 30, b: 30 },
+ [project(sessions)],
+ ['a', 'b'],
+ )
+ expect(cost.cacheWriteTokens).toBe(24_000)
+ })
+
+ it('still works with the single-server signature (backward compat)', () => {
+ const turns = [makeTurn([makeCall({ cacheCreation: 50_000 })])]
+ const sessions = [makeSession({
+ inventory: Array.from({ length: 30 }, (_, i) => `mcp__svc__t${i}`),
+ turns,
+ })]
+ const cost = estimateMcpSchemaCost(30, [project(sessions)], 'svc')
+ expect(cost.cacheWriteTokens).toBe(12_000)
+ })
+})
+
+// ---------------------------------------------------------------------------
+// detectMcpToolCoverage — finding emission with thresholds
+// ---------------------------------------------------------------------------
+
+describe('detectMcpToolCoverage', () => {
+ it('returns null when no inventory exists at all', () => {
+ expect(detectMcpToolCoverage([project([makeSession({})])])).toBeNull()
+ })
+
+ it('does not flag a server with healthy coverage', () => {
+ const inventory = Array.from({ length: 20 }, (_, i) => `mcp__svc__t${i}`)
+ const turns = [makeTurn(
+ Array.from({ length: 8 }, (_, i) => makeCall({ tools: [`mcp__svc__t${i}`] })),
+ )]
+ const sessions = [
+ makeSession({ sessionId: 'a', inventory, turns }),
+ makeSession({ sessionId: 'b', inventory, turns }),
+ ]
+ // 8/20 = 40% coverage, above the 20% threshold -> no finding
+ expect(detectMcpToolCoverage([project(sessions)])).toBeNull()
+ })
+
+ it('does not flag a server with too few tools (signal too noisy)', () => {
+ // Below MCP_COVERAGE_MIN_TOOLS=10
+ const inventory = ['mcp__svc__a', 'mcp__svc__b']
+ const sessions = [
+ makeSession({ sessionId: 'a', inventory }),
+ makeSession({ sessionId: 'b', inventory }),
+ ]
+ expect(detectMcpToolCoverage([project(sessions)])).toBeNull()
+ })
+
+ it('does not flag if seen in only one session (insufficient evidence)', () => {
+ const inventory = Array.from({ length: 20 }, (_, i) => `mcp__svc__t${i}`)
+ const sessions = [makeSession({ inventory })]
+ expect(detectMcpToolCoverage([project(sessions)])).toBeNull()
+ })
+
+ it('flags a large server with low coverage across multiple sessions', () => {
+ const inventory = Array.from({ length: 30 }, (_, i) => `mcp__hf__t${i}`)
+ const turns = [makeTurn([
+ makeCall({ tools: ['mcp__hf__t0'], cacheCreation: 100_000 }),
+ ])]
+ const sessions = [
+ makeSession({ sessionId: 'a', inventory, turns, mcpBreakdown: { hf: { calls: 1 } } }),
+ makeSession({ sessionId: 'b', inventory, turns, mcpBreakdown: { hf: { calls: 1 } } }),
+ ]
+ const finding = detectMcpToolCoverage([project(sessions)])
+ expect(finding).not.toBeNull()
+ expect(finding!.title).toContain('1 MCP server')
+ expect(finding!.title).toContain('low tool coverage')
+ expect(finding!.explanation).toContain('hf')
+ expect(finding!.explanation).toContain('1/30')
+ expect(finding!.fix.type).toBe('command')
+ expect((finding!.fix as { text: string }).text).toContain('claude mcp remove hf')
+ expect(finding!.tokensSaved).toBeGreaterThan(0)
+ })
+
+ it('escalates impact to high when token waste crosses the threshold', () => {
+ const inventory = Array.from({ length: 60 }, (_, i) => `mcp__big__t${i}`)
+ // 60 tools * 400 tokens = 24k schema. With many sessions and large
+ // cache-creation buckets, total effective tokens easily clear 200k.
+ const turns = [makeTurn([
+ makeCall({ tools: ['mcp__big__t0'], cacheCreation: 50_000 }),
+ makeCall({ cacheRead: 60_000 }),
+ makeCall({ cacheRead: 60_000 }),
+ ])]
+ // Need enough sessions so the per-session ~28.8k effective tokens
+ // (24k write + 48k read × 0.10) sum past the 200k high-impact threshold.
+ const sessions = Array.from({ length: 8 }, (_, i) =>
+ makeSession({ sessionId: `s${i}`, inventory, turns, mcpBreakdown: { big: { calls: 1 } } }),
+ )
+ const finding = detectMcpToolCoverage([project(sessions)])
+ expect(finding).not.toBeNull()
+ expect(finding!.impact).toBe('high')
+ })
+
+ it('does not count invocation-only sessions toward loadedSessions', () => {
+ // Server `svc` has inventory in only one session, but is invoked in
+ // a second session that never observed the schema. Pre-fix this
+ // would have satisfied the >=2 session threshold; it must not now.
+ const inventory = Array.from({ length: 20 }, (_, i) => `mcp__svc__t${i}`)
+ const turns = [makeTurn([
+ makeCall({ tools: ['mcp__svc__t0'], cacheCreation: 50_000 }),
+ ])]
+ const sessions = [
+ makeSession({ sessionId: 'a', inventory, turns, mcpBreakdown: { svc: { calls: 1 } } }),
+ // No inventory — this shouldn't be considered a "loaded" session.
+ makeSession({ sessionId: 'b', turns, mcpBreakdown: { svc: { calls: 1 } } }),
+ ]
+ expect(detectMcpToolCoverage([project(sessions)])).toBeNull()
+ })
+
+ it('does not let invocations of un-inventoried tools inflate coverage', () => {
+ // Inventory has 20 tools, none invoked. Calls hit a 21st tool that
+ // never appeared in any deferred_tools_delta (could be a renamed/
+ // removed tool from an older session config). Coverage must stay 0%
+ // and unusedCount must not go negative.
+ const inventory = Array.from({ length: 20 }, (_, i) => `mcp__svc__t${i}`)
+ const turns = [makeTurn([makeCall({ tools: ['mcp__svc__ghost'] })])]
+ const sessions = [
+ makeSession({ sessionId: 'a', inventory, turns, mcpBreakdown: { svc: { calls: 1 } } }),
+ makeSession({ sessionId: 'b', inventory, turns, mcpBreakdown: { svc: { calls: 1 } } }),
+ ]
+ const result = aggregateMcpCoverage([project(sessions)])
+ expect(result[0]!.toolsAvailable).toBe(20)
+ expect(result[0]!.toolsInvoked).toBe(0)
+ expect(result[0]!.coverageRatio).toBe(0)
+ expect(result[0]!.unusedTools).toHaveLength(20)
+ })
+
+ it('handles multiple flagged servers and pluralises the title', () => {
+ const sessions: SessionSummary[] = []
+ for (const server of ['svc1', 'svc2']) {
+ const inventory = Array.from({ length: 20 }, (_, i) => `mcp__${server}__t${i}`)
+ const turns = [makeTurn([
+ makeCall({ tools: [`mcp__${server}__t0`], cacheCreation: 50_000 }),
+ ])]
+ sessions.push(
+ makeSession({ sessionId: `${server}-a`, inventory, turns, mcpBreakdown: { [server]: { calls: 1 } } }),
+ makeSession({ sessionId: `${server}-b`, inventory, turns, mcpBreakdown: { [server]: { calls: 1 } } }),
+ )
+ }
+ const finding = detectMcpToolCoverage([project(sessions)])
+ expect(finding).not.toBeNull()
+ expect(finding!.title).toContain('2 MCP servers')
+ expect((finding!.fix as { text: string }).text.split('\n')).toHaveLength(2)
+ })
+})
diff --git a/tests/parser-mcp-inventory.test.ts b/tests/parser-mcp-inventory.test.ts
new file mode 100644
index 0000000..cbbe34c
--- /dev/null
+++ b/tests/parser-mcp-inventory.test.ts
@@ -0,0 +1,126 @@
+import { describe, it, expect } from 'vitest'
+
+import { extractMcpInventory } from '../src/parser.js'
+import type { JournalEntry } from '../src/types.js'
+
+function entry(overrides: Partial & Record): JournalEntry {
+ return { type: 'attachment', ...overrides } as JournalEntry
+}
+
+describe('extractMcpInventory', () => {
+ it('returns empty array when no entries have an attachment', () => {
+ expect(extractMcpInventory([entry({ type: 'user' })])).toEqual([])
+ })
+
+ it('returns empty array when no deferred_tools_delta is present', () => {
+ expect(extractMcpInventory([
+ entry({ attachment: { type: 'something_else', addedNames: ['mcp__a__b'] } }),
+ ])).toEqual([])
+ })
+
+ it('extracts mcp__server__tool names from a single delta', () => {
+ const result = extractMcpInventory([
+ entry({
+ attachment: {
+ type: 'deferred_tools_delta',
+ addedNames: ['Bash', 'Edit', 'mcp__hf__hub_repo_search', 'mcp__hf__paper_search'],
+ },
+ }),
+ ])
+ expect(result).toEqual(['mcp__hf__hub_repo_search', 'mcp__hf__paper_search'])
+ })
+
+ it('filters out built-in tools (no mcp__ prefix)', () => {
+ const result = extractMcpInventory([
+ entry({
+ attachment: {
+ type: 'deferred_tools_delta',
+ addedNames: ['Bash', 'Edit', 'WebFetch', 'mcp__svc__t1'],
+ },
+ }),
+ ])
+ expect(result).toEqual(['mcp__svc__t1'])
+ })
+
+ it('rejects malformed names: empty server segment', () => {
+ const result = extractMcpInventory([
+ entry({
+ attachment: {
+ type: 'deferred_tools_delta',
+ addedNames: ['mcp____tool', 'mcp__svc__t1'],
+ },
+ }),
+ ])
+ expect(result).toEqual(['mcp__svc__t1'])
+ })
+
+ it('rejects malformed names: missing tool segment (no second `__`)', () => {
+ const result = extractMcpInventory([
+ entry({
+ attachment: {
+ type: 'deferred_tools_delta',
+ addedNames: ['mcp__server', 'mcp__svc__t1'],
+ },
+ }),
+ ])
+ expect(result).toEqual(['mcp__svc__t1'])
+ })
+
+ it('rejects malformed names: empty tool segment (trailing `__`)', () => {
+ const result = extractMcpInventory([
+ entry({
+ attachment: {
+ type: 'deferred_tools_delta',
+ addedNames: ['mcp__server__', 'mcp__svc__t1'],
+ },
+ }),
+ ])
+ expect(result).toEqual(['mcp__svc__t1'])
+ })
+
+ it('unions across multiple delta entries (incremental adds)', () => {
+ const result = extractMcpInventory([
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: ['mcp__a__t1'] } }),
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: ['mcp__a__t2', 'mcp__b__t1'] } }),
+ ])
+ expect(result).toEqual(['mcp__a__t1', 'mcp__a__t2', 'mcp__b__t1'])
+ })
+
+ it('deduplicates names seen in multiple deltas', () => {
+ const result = extractMcpInventory([
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: ['mcp__a__t1', 'mcp__a__t1'] } }),
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: ['mcp__a__t1'] } }),
+ ])
+ expect(result).toEqual(['mcp__a__t1'])
+ })
+
+ it('tolerates missing or non-string addedNames', () => {
+ const result = extractMcpInventory([
+ entry({ attachment: { type: 'deferred_tools_delta' } }),
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: 'not-an-array' } }),
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: [42, null, 'mcp__svc__t1', undefined] } }),
+ ])
+ expect(result).toEqual(['mcp__svc__t1'])
+ })
+
+ it('tolerates malformed attachment object', () => {
+ const result = extractMcpInventory([
+ entry({ attachment: null }),
+ entry({ attachment: 'string-not-object' }),
+ entry({ attachment: { type: 'deferred_tools_delta', addedNames: ['mcp__svc__t1'] } }),
+ ])
+ expect(result).toEqual(['mcp__svc__t1'])
+ })
+
+ it('returns names in sorted order', () => {
+ const result = extractMcpInventory([
+ entry({
+ attachment: {
+ type: 'deferred_tools_delta',
+ addedNames: ['mcp__zzz__a', 'mcp__aaa__z', 'mcp__mmm__m'],
+ },
+ }),
+ ])
+ expect(result).toEqual(['mcp__aaa__z', 'mcp__mmm__m', 'mcp__zzz__a'])
+ })
+})
From 9a258a8a99860f83d48a30cff2fe64c03b08a46b Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Tue, 5 May 2026 05:05:13 +0300
Subject: [PATCH 036/115] fix(date-range): avoid all-period month overflow
---
gnome/prefs.js | 2 +-
src/cli-date.ts | 2 +-
src/dashboard.tsx | 4 ++--
tests/cli-date.test.ts | 29 ++++++++++++++++-------------
4 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/gnome/prefs.js b/gnome/prefs.js
index 8d80679..b0d13f9 100644
--- a/gnome/prefs.js
+++ b/gnome/prefs.js
@@ -26,7 +26,7 @@ const PERIODS = [
{ id: 'week', label: '7 Days' },
{ id: '30days', label: '30 Days' },
{ id: 'month', label: 'Month' },
- { id: 'all', label: 'All Time' },
+ { id: 'all', label: '6 Months' },
];
export default class CodeBurnPreferences extends ExtensionPreferences {
diff --git a/src/cli-date.ts b/src/cli-date.ts
index b3d502d..7dfd06f 100644
--- a/src/cli-date.ts
+++ b/src/cli-date.ts
@@ -113,7 +113,7 @@ export function getDateRange(period: string): { range: DateRange; label: string
return { range: { start, end }, label: 'Last 30 Days' }
}
case 'all': {
- const start = new Date(now.getFullYear(), now.getMonth() - ALL_TIME_MONTHS, now.getDate())
+ const start = new Date(now.getFullYear(), now.getMonth() - ALL_TIME_MONTHS, 1)
return { range: { start, end }, label: 'Last 6 months' }
}
default: {
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index 16aea07..3193b5a 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -13,7 +13,7 @@ import { dateKey } from './day-aggregator.js'
import { CompareView } from './compare.js'
import { getPlanUsageOrNull, type PlanUsage } from './plan-usage.js'
import { planDisplayName } from './plans.js'
-import { getDateRange as getDateRangeShared, PERIODS, PERIOD_LABELS, type Period } from './cli-date.js'
+import { getDateRange, PERIODS, PERIOD_LABELS, type Period } from './cli-date.js'
import { join } from 'path'
import { patchStdoutForWindows } from './ink-win.js'
@@ -96,7 +96,7 @@ function gradientColor(pct: number): string {
}
function getPeriodRange(period: Period): { start: Date; end: Date } {
- return getDateRangeShared(period).range
+ return getDateRange(period).range
}
type Layout = { dashWidth: number; wide: boolean; halfWidth: number; barWidth: number }
diff --git a/tests/cli-date.test.ts b/tests/cli-date.test.ts
index f2f7404..e30096d 100644
--- a/tests/cli-date.test.ts
+++ b/tests/cli-date.test.ts
@@ -1,4 +1,4 @@
-import { describe, it, expect } from 'vitest'
+import { afterEach, describe, it, expect, vi } from 'vitest'
import {
getDateRange,
PERIODS,
@@ -7,6 +7,10 @@ import {
type Period,
} from '../src/cli-date.js'
+afterEach(() => {
+ vi.useRealTimers()
+})
+
describe('getDateRange', () => {
it('"all" is bounded to the last 6 months, not epoch', () => {
const { range, label } = getDateRange('all')
@@ -18,27 +22,26 @@ describe('getDateRange', () => {
// dashboard bug) or any pre-2000 date.
expect(range.start.getFullYear()).toBeGreaterThan(2000)
- // Roughly 6 months back. Accept 5-7 months to absorb end-of-month
- // clamping (e.g. on May 31, JS rolls Nov 31 -> Dec 1, shifting the
- // computed month forward by one).
const monthsDiff =
(now.getFullYear() - range.start.getFullYear()) * 12 +
(now.getMonth() - range.start.getMonth())
- expect(monthsDiff).toBeGreaterThanOrEqual(5)
- expect(monthsDiff).toBeLessThanOrEqual(7)
+ expect(monthsDiff).toBe(6)
+ expect(range.start.getDate()).toBe(1)
// End is today, end of day.
expect(range.end.getHours()).toBe(23)
expect(range.end.getMinutes()).toBe(59)
})
- it('CLI and dashboard agree on "all" semantics (no Date(0) drift)', () => {
- const a = getDateRange('all')
- const b = getDateRange('all')
- expect(a.range.start.getTime()).toBe(b.range.start.getTime())
- expect(a.label).toBe(b.label)
- // Regression guard: must never silently fall back to epoch.
- expect(a.range.start.getFullYear()).toBeGreaterThan(2000)
+ it('"all" does not overflow past the target month at end-of-month', () => {
+ vi.useFakeTimers()
+ vi.setSystemTime(new Date(2026, 7, 31, 12, 0, 0))
+
+ const { range } = getDateRange('all')
+
+ expect(range.start.getFullYear()).toBe(2026)
+ expect(range.start.getMonth()).toBe(1)
+ expect(range.start.getDate()).toBe(1)
})
it('"week" returns the last 7 days', () => {
From e46b20b9272537f1df42842a49a8a4148c7a7368 Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Tue, 5 May 2026 05:11:00 +0300
Subject: [PATCH 037/115] fix(optimize): reuse mcp coverage and type schema
estimator
---
src/optimize.ts | 48 ++++++++++++++++++++++++++++++++++++++----------
1 file changed, 38 insertions(+), 10 deletions(-)
diff --git a/src/optimize.ts b/src/optimize.ts
index 7882660..04d95c5 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -507,6 +507,12 @@ export type McpServerCoverage = {
coverageRatio: number
}
+type McpSchemaCostEstimate = {
+ cacheWriteTokens: number
+ cacheReadTokens: number
+ effectiveInputTokens: number
+}
+
/**
* Aggregate MCP inventory and invocations across the projects in scope.
*
@@ -651,16 +657,36 @@ export function aggregateMcpCoverage(projects: ProjectSummary[]): McpServerCover
* does not count, matching the invariant `aggregateMcpCoverage` uses for
* `loadedSessions`.
*/
+export function estimateMcpSchemaCost(
+ unusedToolCount: number,
+ projects: ProjectSummary[],
+ server: string,
+): McpSchemaCostEstimate
+export function estimateMcpSchemaCost(
+ unusedToolCountsByServer: Record,
+ projects: ProjectSummary[],
+ servers: string[],
+): McpSchemaCostEstimate
export function estimateMcpSchemaCost(
unusedToolCounts: Record | number,
projects: ProjectSummary[],
serverOrServers: string | string[],
-): { cacheWriteTokens: number; cacheReadTokens: number; effectiveInputTokens: number } {
- // Backward-compatible single-server signature used by tests.
- const servers = Array.isArray(serverOrServers) ? serverOrServers : [serverOrServers]
- const counts: Record = typeof unusedToolCounts === 'number'
- ? { [serverOrServers as string]: unusedToolCounts }
- : unusedToolCounts
+): McpSchemaCostEstimate {
+ let servers: string[]
+ let counts: Record
+ if (typeof unusedToolCounts === 'number') {
+ if (typeof serverOrServers !== 'string') {
+ throw new TypeError('single-server MCP cost estimates require a string server name')
+ }
+ servers = [serverOrServers]
+ counts = { [serverOrServers]: unusedToolCounts }
+ } else {
+ if (!Array.isArray(serverOrServers)) {
+ throw new TypeError('multi-server MCP cost estimates require a string[] server list')
+ }
+ servers = serverOrServers
+ counts = unusedToolCounts
+ }
const totalUnusedSchemaTokens = servers.reduce(
(s, srv) => s + (counts[srv] ?? 0) * TOKENS_PER_MCP_TOOL,
@@ -723,8 +749,8 @@ export function estimateMcpSchemaCost(
*/
export function detectMcpToolCoverage(
projects: ProjectSummary[],
+ coverage = aggregateMcpCoverage(projects),
): WasteFinding | null {
- const coverage = aggregateMcpCoverage(projects)
if (coverage.length === 0) return null
const flagged = coverage.filter(c =>
@@ -785,6 +811,7 @@ export function detectUnusedMcp(
calls: ToolCall[],
projects: ProjectSummary[],
projectCwds: Set,
+ mcpCoverage = aggregateMcpCoverage(projects),
): WasteFinding | null {
const configured = loadMcpConfigs(projectCwds)
if (configured.size === 0) return null
@@ -808,7 +835,7 @@ export function detectUnusedMcp(
// thresholds — a small, inventoried-but-uninvoked server that the
// coverage detector skips would otherwise become a blind spot.
const coverageReportedServers = new Set(
- aggregateMcpCoverage(projects)
+ mcpCoverage
.filter(c =>
c.toolsAvailable > MCP_COVERAGE_MIN_TOOLS
&& c.loadedSessions >= MCP_COVERAGE_MIN_SESSIONS
@@ -1286,6 +1313,7 @@ export async function scanAndDetect(
const costRate = computeInputCostRate(projects)
const { toolCalls, projectCwds, apiCalls, userMessages } = await scanSessions(dateRange)
+ const mcpCoverage = aggregateMcpCoverage(projects)
const findings: WasteFinding[] = []
const syncDetectors: Array<() => WasteFinding | null> = [
@@ -1293,8 +1321,8 @@ export async function scanAndDetect(
() => detectLowReadEditRatio(toolCalls),
() => detectJunkReads(toolCalls, dateRange),
() => detectDuplicateReads(toolCalls, dateRange),
- () => detectUnusedMcp(toolCalls, projects, projectCwds),
- () => detectMcpToolCoverage(projects),
+ () => detectUnusedMcp(toolCalls, projects, projectCwds, mcpCoverage),
+ () => detectMcpToolCoverage(projects, mcpCoverage),
() => detectBloatedClaudeMd(projectCwds),
() => detectBashBloat(),
]
From d18ba3d2feb3d8d96f67a89484d59008738b8bbf Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Tue, 5 May 2026 05:25:49 +0300
Subject: [PATCH 038/115] feat(optimize): detect session cost outliers
---
src/optimize.ts | 76 ++++++++++++++++++++++++++++++++++++++++++
tests/optimize.test.ts | 72 +++++++++++++++++++++++++++++++++++++++
2 files changed, 148 insertions(+)
diff --git a/src/optimize.ts b/src/optimize.ts
index 7077b29..2cc2b87 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -61,6 +61,10 @@ const GHOST_COMMANDS_MEDIUM_THRESHOLD = 10
const MCP_NEW_CONFIG_GRACE_MS = 24 * 60 * 60 * 1000
const BASH_DEFAULT_LIMIT = 30000
const BASH_RECOMMENDED_LIMIT = 15000
+const MIN_SESSIONS_FOR_OUTLIER = 3
+const SESSION_OUTLIER_MULTIPLIER = 2
+const MIN_SESSION_OUTLIER_COST_USD = 1
+const SESSION_OUTLIER_PREVIEW = 5
// ============================================================================
// Scoring constants
@@ -853,6 +857,77 @@ export function detectBashBloat(): WasteFinding | null {
}
}
+function sessionTokenTotal(session: ProjectSummary['sessions'][number]): number {
+ return session.totalInputTokens
+ + session.totalOutputTokens
+ + session.totalCacheReadTokens
+ + session.totalCacheWriteTokens
+}
+
+export function detectSessionOutliers(projects: ProjectSummary[]): WasteFinding | null {
+ type Outlier = {
+ project: string
+ sessionId: string
+ date: string
+ cost: number
+ avgCost: number
+ ratio: number
+ tokenExcess: number
+ }
+
+ const outliers: Outlier[] = []
+
+ for (const project of projects) {
+ const sessions = project.sessions.filter(s => s.totalCostUSD > 0)
+ if (sessions.length < MIN_SESSIONS_FOR_OUTLIER) continue
+
+ const totalCost = sessions.reduce((sum, s) => sum + s.totalCostUSD, 0)
+ const totalTokens = sessions.reduce((sum, s) => sum + sessionTokenTotal(s), 0)
+ for (const session of sessions) {
+ const avgCost = (totalCost - session.totalCostUSD) / (sessions.length - 1)
+ const avgTokens = (totalTokens - sessionTokenTotal(session)) / (sessions.length - 1)
+ if (avgCost <= 0) continue
+
+ const ratio = session.totalCostUSD / avgCost
+ if (ratio <= SESSION_OUTLIER_MULTIPLIER) continue
+ if (session.totalCostUSD < MIN_SESSION_OUTLIER_COST_USD) continue
+
+ outliers.push({
+ project: project.project,
+ sessionId: session.sessionId,
+ date: session.firstTimestamp.slice(0, 10),
+ cost: session.totalCostUSD,
+ avgCost,
+ ratio,
+ tokenExcess: Math.max(0, sessionTokenTotal(session) - avgTokens),
+ })
+ }
+ }
+
+ if (outliers.length === 0) return null
+
+ outliers.sort((a, b) => b.cost - a.cost)
+ const preview = outliers.slice(0, SESSION_OUTLIER_PREVIEW)
+ const list = preview
+ .map(o => `${o.project}/${o.sessionId} on ${o.date}: ${formatCost(o.cost)} (${o.ratio.toFixed(1)}x avg)`)
+ .join('; ')
+ const extra = outliers.length > preview.length ? `; +${outliers.length - preview.length} more` : ''
+ const tokensSaved = Math.round(outliers.reduce((sum, o) => sum + o.tokenExcess, 0))
+ const totalExcessCost = outliers.reduce((sum, o) => sum + Math.max(0, o.cost - o.avgCost), 0)
+
+ return {
+ title: `${outliers.length} high-cost session outlier${outliers.length === 1 ? '' : 's'}`,
+ explanation: `Sessions costing more than ${SESSION_OUTLIER_MULTIPLIER}x their peer-session average in the same project: ${list}${extra}. These usually come from broad prompts, runaway loops, or context-heavy work that should be split into smaller sessions.`,
+ impact: outliers.length >= 3 || totalExcessCost >= 10 ? 'high' : 'medium',
+ tokensSaved,
+ fix: {
+ type: 'paste',
+ label: 'For expensive work, start with a tighter operating constraint:',
+ text: 'Before making changes, summarize the smallest viable plan. Keep context narrow, avoid broad searches, and stop after the first working patch so I can review before continuing.',
+ },
+ }
+}
+
// ============================================================================
// Scoring
// ============================================================================
@@ -973,6 +1048,7 @@ export async function scanAndDetect(
() => detectJunkReads(toolCalls, dateRange),
() => detectDuplicateReads(toolCalls, dateRange),
() => detectUnusedMcp(toolCalls, projects, projectCwds),
+ () => detectSessionOutliers(projects),
() => detectBloatedClaudeMd(projectCwds),
() => detectBashBloat(),
]
diff --git a/tests/optimize.test.ts b/tests/optimize.test.ts
index 698a18f..970b277 100644
--- a/tests/optimize.test.ts
+++ b/tests/optimize.test.ts
@@ -6,6 +6,7 @@ import {
detectLowReadEditRatio,
detectCacheBloat,
detectBloatedClaudeMd,
+ detectSessionOutliers,
computeHealth,
computeTrend,
type ToolCall,
@@ -22,6 +23,39 @@ function emptyProjects(): ProjectSummary[] {
return []
}
+function projectWithSessions(costs: number[], project = 'app'): ProjectSummary {
+ const sessions = costs.map((cost, i) => {
+ const tokens = Math.round(cost * 1000)
+ return {
+ sessionId: `s${i + 1}`,
+ project,
+ firstTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:00:00Z`,
+ lastTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:30:00Z`,
+ totalCostUSD: cost,
+ totalInputTokens: tokens,
+ totalOutputTokens: tokens,
+ totalCacheReadTokens: 0,
+ totalCacheWriteTokens: 0,
+ apiCalls: 1,
+ turns: [],
+ modelBreakdown: {},
+ toolBreakdown: {},
+ mcpBreakdown: {},
+ bashBreakdown: {},
+ categoryBreakdown: {} as ProjectSummary['sessions'][number]['categoryBreakdown'],
+ skillBreakdown: {},
+ }
+ })
+
+ return {
+ project,
+ projectPath: `/tmp/${project}`,
+ sessions,
+ totalCostUSD: costs.reduce((sum, cost) => sum + cost, 0),
+ totalApiCalls: sessions.length,
+ }
+}
+
describe('detectJunkReads', () => {
it('returns null below minimum threshold', () => {
const calls = [
@@ -207,6 +241,44 @@ describe('detectBloatedClaudeMd', () => {
})
})
+describe('detectSessionOutliers', () => {
+ it('returns null when there are too few sessions for a project baseline', () => {
+ expect(detectSessionOutliers([projectWithSessions([0.5, 4])])).toBeNull()
+ })
+
+ it('returns null when no session exceeds twice the project average', () => {
+ expect(detectSessionOutliers([projectWithSessions([1, 1.2, 1.4, 1.6])])).toBeNull()
+ })
+
+ it('does not flag the exact 2x boundary', () => {
+ expect(detectSessionOutliers([projectWithSessions([1, 1, 2])])).toBeNull()
+ })
+
+ it('flags sessions costing more than twice their project average', () => {
+ const finding = detectSessionOutliers([projectWithSessions([1, 1, 1, 10])])
+ expect(finding).not.toBeNull()
+ expect(finding!.title).toContain('high-cost session outlier')
+ expect(finding!.explanation).toContain('app/s4')
+ expect(finding!.impact).toBe('medium')
+ expect(finding!.tokensSaved).toBeGreaterThan(0)
+ })
+
+ it('ignores tiny absolute-cost outliers', () => {
+ expect(detectSessionOutliers([projectWithSessions([0.01, 0.01, 0.01, 0.2])])).toBeNull()
+ })
+
+ it('isolates baselines per project', () => {
+ const finding = detectSessionOutliers([
+ projectWithSessions([8, 9, 10], 'web'),
+ projectWithSessions([1, 1, 1, 12], 'api'),
+ ])
+
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('api/s4')
+ expect(finding!.explanation).not.toContain('web/')
+ })
+})
+
describe('computeHealth', () => {
it('returns A with 100 for no findings', () => {
const { score, grade } = computeHealth([])
From bfa5fe7fa099d96ca8fd3f128e08047f10c628e9 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Mon, 4 May 2026 19:46:20 -0700
Subject: [PATCH 039/115] fix(labels): update remaining 'all' period labels to
'6 Months'
PR #221 unified the period logic but missed the TUI hotkey bar,
GNOME indicator popup, and macOS menubar app. All surfaces now
consistently show '6 Months' instead of 'All' or 'all time'.
---
gnome/indicator.js | 2 +-
mac/Sources/CodeBurnMenubar/AppStore.swift | 2 +-
mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift | 2 +-
src/dashboard.tsx | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gnome/indicator.js b/gnome/indicator.js
index 64199c1..c2f8266 100644
--- a/gnome/indicator.js
+++ b/gnome/indicator.js
@@ -18,7 +18,7 @@ const PERIODS = [
{ id: 'week', label: '7 Days' },
{ id: '30days', label: '30 Days' },
{ id: 'month', label: 'Month' },
- { id: 'all', label: 'All' },
+ { id: 'all', label: '6 Months' },
];
const INSIGHTS = [
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 4374f4c..8dd40a1 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -321,7 +321,7 @@ enum Period: String, CaseIterable, Identifiable {
case sevenDays = "7 Days"
case thirtyDays = "30 Days"
case month = "Month"
- case all = "All"
+ case all = "6 Months"
var id: String { rawValue }
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 37befc3..892d0a1 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -109,7 +109,7 @@ private struct EmptyProviderState: View {
case .sevenDays: "the last 7 days"
case .thirtyDays: "the last 30 days"
case .month: "this month"
- case .all: "all time"
+ case .all: "the last 6 months"
}
}
}
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index 3193b5a..b759e64 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -591,7 +591,7 @@ function StatusBar({ width, showProvider, view, findingCount, optimizeAvailable,
2 week
3 30 days
4 month
- 5 all time
+ 5 6 months
{!isOptimize && optimizeAvailable && findingCount != null && findingCount > 0 && (
<> o optimize ({findingCount})>
)}
From 735f41bc6c89916e417e719e3fe58ec5386fbe95 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Mon, 4 May 2026 20:11:50 -0700
Subject: [PATCH 040/115] Fix cache-write pricing and shell-quote server names
in fix commands
- Use 1.25x multiplier for cache-write tokens to match Anthropic's
actual pricing (was incorrectly using 1x)
- Shell-quote server names in `claude mcp remove` fix text to prevent
issues with unusual server names
---
src/optimize.ts | 13 +++++++------
tests/mcp-coverage.test.ts | 6 +++---
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/optimize.ts b/src/optimize.ts
index 04d95c5..1f2a4cf 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -60,10 +60,11 @@ const MCP_COVERAGE_MIN_TOOLS = 10
const MCP_COVERAGE_MIN_SESSIONS = 2
const MCP_COVERAGE_LOW_THRESHOLD = 0.20
const MCP_COVERAGE_HIGH_IMPACT_TOKENS = 200_000
-// Anthropic prices cached input reads at roughly 10% of fresh input. We use
-// this to keep "ongoing" overhead estimates honest: most MCP schema bytes
-// live in the cached prefix and only get charged at the discount rate after
-// the first turn of a session.
+// Anthropic prices cache writes at 125% of base input and cache reads at
+// roughly 10% of base input. We use these to keep overhead estimates honest:
+// most MCP schema bytes live in the cached prefix and only get charged at
+// the discount rate after the first turn of a session.
+const CACHE_WRITE_MULTIPLIER = 1.25
const CACHE_READ_DISCOUNT = 0.10
const GHOST_AGENTS_HIGH_THRESHOLD = 5
const GHOST_AGENTS_MEDIUM_THRESHOLD = 2
@@ -729,7 +730,7 @@ export function estimateMcpSchemaCost(
}
}
- const effectiveInputTokens = cacheWriteTokens + cacheReadTokens * CACHE_READ_DISCOUNT
+ const effectiveInputTokens = cacheWriteTokens * CACHE_WRITE_MULTIPLIER + cacheReadTokens * CACHE_READ_DISCOUNT
return { cacheWriteTokens, cacheReadTokens, effectiveInputTokens }
}
@@ -774,7 +775,7 @@ export function detectMcpToolCoverage(
lines.push(
`${c.server}: ${c.toolsInvoked}/${c.toolsAvailable} tools used (${pct}% coverage) across ${c.loadedSessions} session${c.loadedSessions === 1 ? '' : 's'}`,
)
- removeCommands.push(`claude mcp remove ${c.server}`)
+ removeCommands.push(`claude mcp remove '${c.server}'`)
}
// Single combined cost pass: caps each call's contribution at the
diff --git a/tests/mcp-coverage.test.ts b/tests/mcp-coverage.test.ts
index 1d078d2..c2a4595 100644
--- a/tests/mcp-coverage.test.ts
+++ b/tests/mcp-coverage.test.ts
@@ -200,8 +200,8 @@ describe('estimateMcpSchemaCost', () => {
const cost = estimateMcpSchemaCost(30, [project(sessions)], 'svc')
expect(cost.cacheWriteTokens).toBe(12_000) // capped by 50k creation, 12k schema fits
expect(cost.cacheReadTokens).toBe(24_000) // 12k + 12k across two ongoing turns
- // effective = write + read * 0.10 (cache discount)
- expect(cost.effectiveInputTokens).toBeCloseTo(12_000 + 24_000 * 0.10, 5)
+ // effective = write * 1.25 + read * 0.10 (cache pricing)
+ expect(cost.effectiveInputTokens).toBeCloseTo(12_000 * 1.25 + 24_000 * 0.10, 5)
})
it('caps by available cache bucket so we never overclaim', () => {
@@ -373,7 +373,7 @@ describe('detectMcpToolCoverage', () => {
expect(finding!.explanation).toContain('hf')
expect(finding!.explanation).toContain('1/30')
expect(finding!.fix.type).toBe('command')
- expect((finding!.fix as { text: string }).text).toContain('claude mcp remove hf')
+ expect((finding!.fix as { text: string }).text).toContain("claude mcp remove 'hf'")
expect(finding!.tokensSaved).toBeGreaterThan(0)
})
From c706cd2de26c6652e3ca386fb670278f263c7ba2 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Mon, 4 May 2026 23:11:42 -0700
Subject: [PATCH 041/115] Strip optimize from menubar, fix stuck loading
spinner
The menubar ran --optimize on every 30-second CLI invocation. As
sessions accumulated throughout the day, optimize got heavier until
it exceeded the 45-second timeout. When the fetch failed with no
cached data, the loading overlay had no escape hatch and stayed
forever.
- Never pass includeOptimize from the menubar (background loop,
forceRefresh, tab/period switches, manual refresh button)
- On fetch failure with empty cache, retry without optimize as
fallback so the spinner always clears
- refreshQuietly also skips optimize
---
mac/Sources/CodeBurnMenubar/AppStore.swift | 24 ++++++++++++++-----
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 4 ++--
.../Views/MenuBarContent.swift | 2 +-
3 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 8dd40a1..27ef0a4 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -71,9 +71,9 @@ final class AppStore {
switchTask?.cancel()
switchTask = Task {
if selectedProvider == .all {
- await refresh(includeOptimize: true, force: true)
+ await refresh(includeOptimize: false, force: true)
} else {
- async let main: Void = refresh(includeOptimize: true, force: true)
+ async let main: Void = refresh(includeOptimize: false, force: true)
async let all: Void = refreshQuietly(period: period)
_ = await (main, all)
}
@@ -88,9 +88,9 @@ final class AppStore {
switchTask?.cancel()
switchTask = Task {
if provider == .all {
- await refresh(includeOptimize: true, force: true)
+ await refresh(includeOptimize: false, force: true)
} else {
- async let main: Void = refresh(includeOptimize: true, force: true)
+ async let main: Void = refresh(includeOptimize: false, force: true)
async let all: Void = refreshQuietly(period: selectedPeriod)
_ = await (main, all)
}
@@ -119,8 +119,20 @@ final class AppStore {
lastError = nil
} catch {
if Task.isCancelled { return }
- lastError = String(describing: error)
NSLog("CodeBurn: fetch failed for \(key.period.rawValue)/\(key.provider.rawValue): \(error)")
+ if includeOptimize, cache[key] == nil {
+ do {
+ let fallback = try await DataClient.fetch(period: key.period, provider: key.provider, includeOptimize: false)
+ guard !Task.isCancelled else { return }
+ cache[key] = CachedPayload(payload: fallback, fetchedAt: Date())
+ lastError = nil
+ return
+ } catch {
+ if Task.isCancelled { return }
+ NSLog("CodeBurn: fallback fetch also failed: \(error)")
+ }
+ }
+ lastError = String(describing: error)
}
let allKey = PayloadCacheKey(period: selectedPeriod, provider: .all)
@@ -134,7 +146,7 @@ final class AppStore {
/// Always uses the .all provider since the menubar badge shows total spend.
func refreshQuietly(period: Period) async {
do {
- let fresh = try await DataClient.fetch(period: period, provider: .all, includeOptimize: true)
+ let fresh = try await DataClient.fetch(period: period, provider: .all, includeOptimize: false)
cache[PayloadCacheKey(period: period, provider: .all)] = CachedPayload(payload: fresh, fetchedAt: Date())
} catch {
NSLog("CodeBurn: quiet refresh failed for \(period.rawValue): \(error)")
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index c9db46b..dbc2e66 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -171,7 +171,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
lastRefreshTime = now
Task {
- async let main: Void = store.refresh(includeOptimize: true, force: true)
+ async let main: Void = store.refresh(includeOptimize: false, force: true)
async let today: Void = store.refreshQuietly(period: .today)
_ = await (main, today)
refreshStatusButton()
@@ -207,7 +207,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
if self.store.selectedPeriod != .today || self.store.selectedProvider != .all {
await self.store.refreshQuietly(period: .today)
}
- await self.store.refresh(includeOptimize: true, force: true)
+ await self.store.refresh(includeOptimize: false, force: true)
self.refreshStatusButton()
try? await Task.sleep(nanoseconds: refreshIntervalNanos)
}
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 892d0a1..59ffdbb 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -407,7 +407,7 @@ struct FooterBar: View {
.fixedSize()
Button {
- Task { await store.refresh(includeOptimize: true, force: true) }
+ Task { await store.refresh(includeOptimize: false, force: true) }
} label: {
Image(systemName: store.isLoading ? "arrow.triangle.2.circlepath" : "arrow.clockwise")
.font(.system(size: 11, weight: .medium))
From 719432aaf4425636593724f776bb8838d6d34aa0 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Mon, 4 May 2026 23:12:46 -0700
Subject: [PATCH 042/115] Add session outlier detector and menubar spinner fix
to changelog
---
CHANGELOG.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 50d8c7f..eec81a1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,10 +12,14 @@
on subsequent turns, capped per call so we never claim more overhead
than the call's own cache buckets could contain. Threshold:
>10 tools available, <20% coverage, observed in ≥2 sessions. Closes #2.
+- **Session cost outlier detector.** New `optimize` finding flags sessions costing more than 2x their peer-session average within the same project. Ignores sub-$1 outliers to avoid noise. Requires at least 3 sessions per project for a baseline.
### Fixed (CLI)
- **`all` period semantics unified between CLI and dashboard.** The dashboard treated `--period all` as all-time (epoch start) while the CLI bounded it to the last 6 months. Both now consistently mean "Last 6 months". Period helpers (`Period`, `PERIODS`, `PERIOD_LABELS`, `toPeriod`, `getDateRange`) consolidated into `cli-date.ts`. Use `--from` / `--to` for unbounded historical ranges.
+### Fixed (macOS menubar)
+- **Stuck loading spinner.** The menubar ran `--optimize` on every 30-second background refresh. As sessions accumulated, optimize exceeded the 45-second timeout, and the loading overlay stayed forever with no fallback. Optimize is now stripped from all menubar fetches (use `codeburn optimize` in the CLI instead). On fetch failure with empty cache, the app retries without optimize so the spinner always clears.
+
## 0.9.6 - 2026-05-03
### Added (CLI)
From 58b14c7561f31ed53ff61d1b9a121ab19304cadb Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Tue, 5 May 2026 11:23:52 -0700
Subject: [PATCH 043/115] Keep copilot-auto as provider-agnostic fallback
copilot-openai-auto maps to gpt-5.3-codex pricing, which is wrong
for users on Anthropic models. The original copilot-auto fallback
is provider-agnostic and correct when no model can be inferred.
---
src/providers/copilot.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/providers/copilot.ts b/src/providers/copilot.ts
index 01a1b1f..deda4b0 100644
--- a/src/providers/copilot.ts
+++ b/src/providers/copilot.ts
@@ -196,7 +196,7 @@ function inferModelFromToolCallIds(events: TranscriptEvent[]): string {
return [...modelCounts.entries()].sort((a, b) => b[1] - a[1])[0]![0]
}
- return COPILOT_OPENAI_AUTO
+ return 'copilot-auto'
}
function parseTranscriptEvents(content: string, sessionId: string, seenKeys: Set): ParsedProviderCall[] {
From 18c3c8f9086b68bac05ece8bc476515ec682ede8 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Tue, 5 May 2026 11:35:38 -0700
Subject: [PATCH 044/115] Fix stale menubar data after sleep and silent refresh
button
Cache now tracks the calendar date and clears on day rollover so
overnight sleep no longer shows yesterday's numbers. Wake-from-sleep
invalidates the entire cache before fetching. Manual refresh and wake
explicitly request loading feedback so the spinner is visible even
when stale data exists.
---
CHANGELOG.md | 2 ++
mac/Sources/CodeBurnMenubar/AppStore.swift | 25 ++++++++++++++++---
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 3 ++-
.../Views/MenuBarContent.swift | 2 +-
4 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eec81a1..47a2ed6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,8 @@
### Fixed (macOS menubar)
- **Stuck loading spinner.** The menubar ran `--optimize` on every 30-second background refresh. As sessions accumulated, optimize exceeded the 45-second timeout, and the loading overlay stayed forever with no fallback. Optimize is now stripped from all menubar fetches (use `codeburn optimize` in the CLI instead). On fetch failure with empty cache, the app retries without optimize so the spinner always clears.
+- **Stale data after overnight sleep.** Cache keys used the period enum (`.today`) not a calendar date, so data from yesterday persisted after midnight. Cache now tracks the current date and clears itself on day rollover. Wake-from-sleep additionally clears all cached entries before fetching fresh data.
+- **Refresh button appeared to do nothing.** Clicking refresh with stale cached data never showed the loading overlay because loading state only triggered on empty cache. Manual refresh and wake-from-sleep now explicitly request loading feedback.
## 0.9.6 - 2026-05-03
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 27ef0a4..af1947a 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -34,6 +34,7 @@ final class AppStore {
var capacityEstimates: [String: CapacityEstimate] = [:]
private var cache: [PayloadCacheKey: CachedPayload] = [:]
+ private var cacheDate: String = ""
private var switchTask: Task?
private var currentKey: PayloadCacheKey {
@@ -99,18 +100,33 @@ final class AppStore {
private var inFlightKeys: Set = []
- func refresh(includeOptimize: Bool, force: Bool = false) async {
+ private func invalidateStaleDayCache() {
+ let formatter = DateFormatter()
+ formatter.dateFormat = "yyyy-MM-dd"
+ let today = formatter.string(from: Date())
+ if cacheDate != today {
+ cache.removeAll()
+ cacheDate = today
+ }
+ }
+
+ func invalidateCache() {
+ cache.removeAll()
+ }
+
+ func refresh(includeOptimize: Bool, force: Bool = false, showLoading: Bool = false) async {
+ invalidateStaleDayCache()
let key = currentKey
if !force, cache[key]?.isFresh == true { return }
if !force, inFlightKeys.contains(key) { return }
inFlightKeys.insert(key)
- let showedLoading = cache[key] == nil
- if showedLoading {
+ let didShowLoading = showLoading || cache[key] == nil
+ if didShowLoading {
loadingCount += 1
}
defer {
inFlightKeys.remove(key)
- if showedLoading { loadingCount = max(loadingCount - 1, 0) }
+ if didShowLoading { loadingCount = max(loadingCount - 1, 0) }
}
do {
let fresh = try await DataClient.fetch(period: key.period, provider: key.provider, includeOptimize: includeOptimize)
@@ -145,6 +161,7 @@ final class AppStore {
/// Does not toggle isLoading, so the popover's loading overlay is unaffected.
/// Always uses the .all provider since the menubar badge shows total spend.
func refreshQuietly(period: Period) async {
+ invalidateStaleDayCache()
do {
let fresh = try await DataClient.fetch(period: period, provider: .all, includeOptimize: false)
cache[PayloadCacheKey(period: period, provider: .all)] = CachedPayload(payload: fresh, fetchedAt: Date())
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index dbc2e66..bf5bacf 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -170,8 +170,9 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
guard now.timeIntervalSince(lastRefreshTime) > 5 else { return }
lastRefreshTime = now
+ store.invalidateCache()
Task {
- async let main: Void = store.refresh(includeOptimize: false, force: true)
+ async let main: Void = store.refresh(includeOptimize: false, force: true, showLoading: true)
async let today: Void = store.refreshQuietly(period: .today)
_ = await (main, today)
refreshStatusButton()
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 59ffdbb..2315353 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -407,7 +407,7 @@ struct FooterBar: View {
.fixedSize()
Button {
- Task { await store.refresh(includeOptimize: false, force: true) }
+ Task { await store.refresh(includeOptimize: false, force: true, showLoading: true) }
} label: {
Image(systemName: store.isLoading ? "arrow.triangle.2.circlepath" : "arrow.clockwise")
.font(.system(size: 11, weight: .medium))
From 869474b3b41f28f880c6deab80aa30a8923074e1 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Tue, 5 May 2026 11:38:54 -0700
Subject: [PATCH 045/115] Fix update button stuck spinning after successful
install
terminationHandler only reset isUpdating on non-zero exit, assuming
the app would be killed and relaunched on success. If pkill fails
silently the old process survives with isUpdating stuck true. Now
always resets on termination and clears the update badge on success.
---
CHANGELOG.md | 1 +
mac/Sources/CodeBurnMenubar/Data/UpdateChecker.swift | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 47a2ed6..56310f1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,7 @@
- **Stuck loading spinner.** The menubar ran `--optimize` on every 30-second background refresh. As sessions accumulated, optimize exceeded the 45-second timeout, and the loading overlay stayed forever with no fallback. Optimize is now stripped from all menubar fetches (use `codeburn optimize` in the CLI instead). On fetch failure with empty cache, the app retries without optimize so the spinner always clears.
- **Stale data after overnight sleep.** Cache keys used the period enum (`.today`) not a calendar date, so data from yesterday persisted after midnight. Cache now tracks the current date and clears itself on day rollover. Wake-from-sleep additionally clears all cached entries before fetching fresh data.
- **Refresh button appeared to do nothing.** Clicking refresh with stale cached data never showed the loading overlay because loading state only triggered on empty cache. Manual refresh and wake-from-sleep now explicitly request loading feedback.
+- **Update button stuck spinning forever.** `performUpdate()` only reset `isUpdating` on failure. On success the installer kills and relaunches the app, but if the process survives (pkill fails silently), the button stayed on "Updating..." permanently. Now always resets on termination and clears the update badge on success.
## 0.9.6 - 2026-05-03
diff --git a/mac/Sources/CodeBurnMenubar/Data/UpdateChecker.swift b/mac/Sources/CodeBurnMenubar/Data/UpdateChecker.swift
index ddf7dc4..6ad0a90 100644
--- a/mac/Sources/CodeBurnMenubar/Data/UpdateChecker.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/UpdateChecker.swift
@@ -75,10 +75,12 @@ final class UpdateChecker {
let stderr = String(data: errData, encoding: .utf8) ?? ""
Task { @MainActor in
guard let self else { return }
+ self.isUpdating = false
if proc.terminationStatus != 0 {
- self.isUpdating = false
self.updateError = stderr.isEmpty ? "Update failed (exit \(proc.terminationStatus))" : stderr
NSLog("CodeBurn: update failed (exit \(proc.terminationStatus)): \(stderr)")
+ } else {
+ self.latestVersion = nil
}
}
}
From fc4c4f0091ca010b6de982e664f13d1e738db3d4 Mon Sep 17 00:00:00 2001
From: ozymandiashh <234437643+ozymandiashh@users.noreply.github.com>
Date: Wed, 6 May 2026 09:18:48 +0300
Subject: [PATCH 046/115] feat(export): support custom date ranges
---
src/cli-date.ts | 4 ++
src/cli.ts | 32 +++++++---
src/export.ts | 8 +--
tests/cli-export-date-range.test.ts | 96 +++++++++++++++++++++++++++++
tests/date-range-filter.test.ts | 8 ++-
tests/export.test.ts | 16 +++++
6 files changed, 150 insertions(+), 14 deletions(-)
create mode 100644 tests/cli-export-date-range.test.ts
diff --git a/src/cli-date.ts b/src/cli-date.ts
index 7dfd06f..2adfe97 100644
--- a/src/cli-date.ts
+++ b/src/cli-date.ts
@@ -122,3 +122,7 @@ export function getDateRange(period: string): { range: DateRange; label: string
}
}
}
+
+export function formatDateRangeLabel(from: string | undefined, to: string | undefined): string {
+ return `${from ?? 'all'} to ${to ?? 'today'}`
+}
diff --git a/src/cli.ts b/src/cli.ts
index 7474efc..3828da2 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -11,7 +11,7 @@ import { getDaysInRange, ensureCacheHydrated, emptyCache, BACKFILL_DAYS, toDateS
import { aggregateProjectsIntoDays, buildPeriodDataFromDays, dateKey } from './day-aggregator.js'
import { CATEGORY_LABELS, type DateRange, type ProjectSummary, type TaskCategory } from './types.js'
import { renderDashboard } from './dashboard.js'
-import { parseDateRangeFlags, getDateRange, toPeriod, type Period } from './cli-date.js'
+import { formatDateRangeLabel, parseDateRangeFlags, getDateRange, toPeriod, type Period } from './cli-date.js'
import { runOptimize, scanAndDetect } from './optimize.js'
import { renderCompare } from './compare.js'
import { getAllProviders } from './providers/index.js'
@@ -271,7 +271,7 @@ program
await loadPricing()
await hydrateCache()
if (customRange) {
- const label = `${opts.from ?? 'all'} to ${opts.to ?? 'today'}`
+ const label = formatDateRangeLabel(opts.from, opts.to)
const projects = filterProjectsByName(
await parseAllSessions(customRange, opts.provider),
opts.project,
@@ -528,9 +528,11 @@ program
program
.command('export')
- .description('Export usage data to CSV or JSON (includes 1 day, 7 days, 30 days)')
+ .description('Export usage data to CSV or JSON')
.option('-f, --format ', 'Export format: csv, json', 'csv')
.option('-o, --output ', 'Output file path')
+ .option('--from ', 'Start date (YYYY-MM-DD). Exports a single custom period when set')
+ .option('--to ', 'End date (YYYY-MM-DD). Exports a single custom period when set')
.option('--provider ', 'Filter by provider (e.g. claude, gemini, cursor, copilot)', 'all')
.option('--project ', 'Show only projects matching name (repeatable)', collect, [])
.option('--exclude ', 'Exclude projects matching name (repeatable)', collect, [])
@@ -539,11 +541,22 @@ program
await hydrateCache()
const pf = opts.provider
const fp = (p: ProjectSummary[]) => filterProjectsByName(p, opts.project, opts.exclude)
- const periods: PeriodExport[] = [
- { label: 'Today', projects: fp(await parseAllSessions(getDateRange('today').range, pf)) },
- { label: '7 Days', projects: fp(await parseAllSessions(getDateRange('week').range, pf)) },
- { label: '30 Days', projects: fp(await parseAllSessions(getDateRange('30days').range, pf)) },
- ]
+ let customRange: DateRange | null = null
+ try {
+ customRange = parseDateRangeFlags(opts.from, opts.to)
+ } catch (err) {
+ const message = err instanceof Error ? err.message : String(err)
+ console.error(`\n Error: ${message}\n`)
+ process.exit(1)
+ }
+
+ const periods: PeriodExport[] = customRange
+ ? [{ label: formatDateRangeLabel(opts.from, opts.to), projects: fp(await parseAllSessions(customRange, pf)) }]
+ : [
+ { label: 'Today', projects: fp(await parseAllSessions(getDateRange('today').range, pf)) },
+ { label: '7 Days', projects: fp(await parseAllSessions(getDateRange('week').range, pf)) },
+ { label: '30 Days', projects: fp(await parseAllSessions(getDateRange('30days').range, pf)) },
+ ]
if (periods.every(p => p.projects.length === 0)) {
console.log('\n No usage data found.\n')
@@ -569,7 +582,8 @@ program
process.exit(1)
}
- console.log(`\n Exported (Today + 7 Days + 30 Days) to: ${savedPath}\n`)
+ const exportedLabel = customRange ? formatDateRangeLabel(opts.from, opts.to) : 'Today + 7 Days + 30 Days'
+ console.log(`\n Exported (${exportedLabel}) to: ${savedPath}\n`)
})
program
diff --git a/src/export.ts b/src/export.ts
index 4e1afc1..e6e2ff9 100644
--- a/src/export.ts
+++ b/src/export.ts
@@ -247,10 +247,10 @@ function buildReadme(periods: PeriodExport[]): string {
' daily.csv Day-by-day breakdown, Period column distinguishes the window.',
' activity.csv Time spent per task category (Coding, Debugging, Exploration, etc.).',
' models.csv Spend per model with token totals and cache usage.',
- ' projects.csv Spend per project folder (30-day window).',
- ' sessions.csv One row per session (30-day window) with session IDs and costs.',
- ' tools.csv Tool invocations and share (30-day window).',
- ' shell-commands.csv Shell commands executed via Bash tool (30-day window).',
+ ' projects.csv Spend per project folder for the selected detail period.',
+ ' sessions.csv One row per session for the selected detail period.',
+ ' tools.csv Tool invocations and share for the selected detail period.',
+ ' shell-commands.csv Shell commands executed via Bash tool for the selected detail period.',
'',
'Notes',
'-----',
diff --git a/tests/cli-export-date-range.test.ts b/tests/cli-export-date-range.test.ts
new file mode 100644
index 0000000..73d9e4b
--- /dev/null
+++ b/tests/cli-export-date-range.test.ts
@@ -0,0 +1,96 @@
+import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'
+import { tmpdir } from 'node:os'
+import { join } from 'node:path'
+import { spawnSync } from 'node:child_process'
+
+import { describe, expect, it } from 'vitest'
+
+function runCli(args: string[], home: string) {
+ return spawnSync(process.execPath, ['--import', 'tsx', 'src/cli.ts', ...args], {
+ cwd: process.cwd(),
+ env: {
+ ...process.env,
+ CLAUDE_CONFIG_DIR: join(home, '.claude'),
+ HOME: home,
+ TZ: 'UTC',
+ },
+ encoding: 'utf-8',
+ })
+}
+
+function userLine(sessionId: string, timestamp: string): string {
+ return JSON.stringify({
+ type: 'user',
+ sessionId,
+ timestamp,
+ message: { role: 'user', content: 'add feature' },
+ })
+}
+
+function assistantLine(sessionId: string, timestamp: string, messageId: string): string {
+ return JSON.stringify({
+ type: 'assistant',
+ sessionId,
+ timestamp,
+ message: {
+ id: messageId,
+ type: 'message',
+ role: 'assistant',
+ model: 'claude-sonnet-4-5',
+ content: [{ type: 'text', text: 'done' }],
+ usage: {
+ input_tokens: 1000,
+ output_tokens: 100,
+ },
+ },
+ })
+}
+
+describe('codeburn export custom date range', () => {
+ it('exports a single custom period filtered by --from/--to', async () => {
+ const home = await mkdtemp(join(tmpdir(), 'codeburn-cli-export-'))
+
+ try {
+ const projectDir = join(home, '.claude', 'projects', 'app')
+ await mkdir(projectDir, { recursive: true })
+ await writeFile(
+ join(projectDir, 'in-range.jsonl'),
+ [
+ userLine('in-range', '2026-04-10T09:00:00Z'),
+ assistantLine('in-range', '2026-04-10T09:01:00Z', 'msg-in-range'),
+ ].join('\n'),
+ )
+ await writeFile(
+ join(projectDir, 'out-of-range.jsonl'),
+ [
+ userLine('out-of-range', '2026-04-11T09:00:00Z'),
+ assistantLine('out-of-range', '2026-04-11T09:01:00Z', 'msg-out-of-range'),
+ ].join('\n'),
+ )
+
+ const outputPath = join(home, 'custom-export.json')
+ const result = runCli([
+ 'export',
+ '--format', 'json',
+ '--from', '2026-04-10',
+ '--to', '2026-04-10',
+ '--provider', 'claude',
+ '--output', outputPath,
+ ], home)
+
+ expect(result.status).toBe(0)
+ expect(result.stdout).toContain('Exported (2026-04-10 to 2026-04-10)')
+
+ const exported = JSON.parse(await readFile(outputPath, 'utf-8')) as {
+ summary: Array<{ Period: string; Sessions: number }>
+ sessions: Array<{ 'Session ID': string }>
+ }
+ expect(exported.summary).toHaveLength(1)
+ expect(exported.summary[0]?.Period).toBe('2026-04-10 to 2026-04-10')
+ expect(exported.summary[0]?.Sessions).toBe(1)
+ expect(exported.sessions.map(s => s['Session ID'])).toEqual(['in-range'])
+ } finally {
+ await rm(home, { recursive: true, force: true })
+ }
+ })
+})
diff --git a/tests/date-range-filter.test.ts b/tests/date-range-filter.test.ts
index c4f9408..76a3118 100644
--- a/tests/date-range-filter.test.ts
+++ b/tests/date-range-filter.test.ts
@@ -1,5 +1,5 @@
import { describe, it, expect } from 'vitest'
-import { parseDateRangeFlags } from '../src/cli-date.js'
+import { formatDateRangeLabel, parseDateRangeFlags } from '../src/cli-date.js'
describe('parseDateRangeFlags', () => {
it('returns null when neither flag is provided', () => {
@@ -54,4 +54,10 @@ describe('parseDateRangeFlags', () => {
expect(range!.start.getDate()).toBe(10)
expect(range!.end.getDate()).toBe(10)
})
+
+ it('formats custom range labels consistently', () => {
+ expect(formatDateRangeLabel('2026-04-07', '2026-04-10')).toBe('2026-04-07 to 2026-04-10')
+ expect(formatDateRangeLabel(undefined, '2026-04-10')).toBe('all to 2026-04-10')
+ expect(formatDateRangeLabel('2026-04-07', undefined)).toBe('2026-04-07 to today')
+ })
})
diff --git a/tests/export.test.ts b/tests/export.test.ts
index 91c2d4c..daf200c 100644
--- a/tests/export.test.ts
+++ b/tests/export.test.ts
@@ -158,4 +158,20 @@ describe('exportCsv', () => {
const entries = await readdir(folder)
expect(entries.length).toBeGreaterThanOrEqual(0)
})
+
+ it('describes detail files without hardcoding a 30-day window', async () => {
+ const periods: PeriodExport[] = [
+ {
+ label: '2026-04-07 to 2026-04-10',
+ projects: [makeProject('app')],
+ },
+ ]
+
+ const outputPath = join(tmpDir, 'custom.csv')
+ const folder = await exportCsv(periods, outputPath)
+ const readme = await readFile(join(folder, 'README.txt'), 'utf-8')
+
+ expect(readme).toContain('selected detail period')
+ expect(readme).not.toContain('30-day window')
+ })
})
From be6068b244bf14861c1969357c4816baf4c4af13 Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Tue, 5 May 2026 23:36:59 -0700
Subject: [PATCH 047/115] feat(report): add per-model efficiency metrics
Adds per-model efficiency metrics (edit turns, one-shot rate, retries/edit, cost/edit) to the TUI By Model panel, JSON report output, and CSV export. Closes item 4 of #12. Supersedes #226 with review fixes (units rename, min-sample guard in TUI, tighter filter, multi-model attribution test). Original implementation by @ozymandiashh.
---
src/cli.ts | 18 ++++-
src/dashboard.tsx | 11 ++-
src/export.ts | 33 +++++---
src/model-efficiency.ts | 60 ++++++++++++++
tests/export.test.ts | 19 +++++
tests/model-efficiency.test.ts | 141 +++++++++++++++++++++++++++++++++
6 files changed, 269 insertions(+), 13 deletions(-)
create mode 100644 src/model-efficiency.ts
create mode 100644 tests/model-efficiency.test.ts
diff --git a/src/cli.ts b/src/cli.ts
index 3828da2..396e811 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -10,6 +10,7 @@ import { buildMenubarPayload } from './menubar-json.js'
import { getDaysInRange, ensureCacheHydrated, emptyCache, BACKFILL_DAYS, toDateString } from './daily-cache.js'
import { aggregateProjectsIntoDays, buildPeriodDataFromDays, dateKey } from './day-aggregator.js'
import { CATEGORY_LABELS, type DateRange, type ProjectSummary, type TaskCategory } from './types.js'
+import { aggregateModelEfficiency } from './model-efficiency.js'
import { renderDashboard } from './dashboard.js'
import { formatDateRangeLabel, parseDateRangeFlags, getDateRange, toPeriod, type Period } from './cli-date.js'
import { runOptimize, scanAndDetect } from './optimize.js'
@@ -158,6 +159,7 @@ function buildJsonReport(projects: ProjectSummary[], period: string, periodKey:
}))
const modelMap: Record = {}
+ const modelEfficiency = aggregateModelEfficiency(projects)
for (const sess of sessions) {
for (const [model, d] of Object.entries(sess.modelBreakdown)) {
if (!modelMap[model]) { modelMap[model] = { calls: 0, cost: 0, inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0 } }
@@ -171,7 +173,21 @@ function buildJsonReport(projects: ProjectSummary[], period: string, periodKey:
}
const models = Object.entries(modelMap)
.sort(([, a], [, b]) => b.cost - a.cost)
- .map(([name, { cost, ...rest }]) => ({ name, ...rest, cost: convertCost(cost) }))
+ .map(([name, { cost, ...rest }]) => {
+ const efficiency = modelEfficiency.get(name)
+ return {
+ name,
+ ...rest,
+ cost: convertCost(cost),
+ editTurns: efficiency?.editTurns ?? 0,
+ oneShotTurns: efficiency?.oneShotTurns ?? 0,
+ oneShotRate: efficiency?.oneShotRate ?? null,
+ retriesPerEdit: efficiency?.retriesPerEdit ?? null,
+ costPerEdit: efficiency?.costPerEditUSD !== null && efficiency?.costPerEditUSD !== undefined
+ ? convertCost(efficiency.costPerEditUSD)
+ : null,
+ }
+ })
const catMap: Record = {}
for (const sess of sessions) {
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index b759e64..f9efe6a 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -4,6 +4,7 @@ import React, { useState, useCallback, useEffect, useRef } from 'react'
import { render, Box, Text, useInput, useApp, useWindowSize } from 'ink'
import { CATEGORY_LABELS, type DateRange, type ProjectSummary, type TaskCategory } from './types.js'
import { formatCost, formatTokens } from './format.js'
+import { aggregateModelEfficiency } from './model-efficiency.js'
import { parseAllSessions, filterProjectsByName } from './parser.js'
import { loadPricing } from './models.js'
import { getAllProviders } from './providers/index.js'
@@ -296,10 +297,13 @@ function ProjectBreakdown({ projects, pw, bw, budgets }: { projects: ProjectSumm
const MODEL_COL_COST = 8
const MODEL_COL_CACHE = 7
const MODEL_COL_CALLS = 7
+const MODEL_COL_ONESHOT = 7
const MODEL_NAME_WIDTH = 14
+const MIN_EDIT_TURNS_FOR_RATE = 5
function ModelBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; pw: number; bw: number }) {
const modelTotals: Record = {}
+ const modelEfficiency = aggregateModelEfficiency(projects)
for (const project of projects) {
for (const session of project.sessions) {
for (const [model, data] of Object.entries(session.modelBreakdown)) {
@@ -317,11 +321,15 @@ function ModelBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; pw:
return (
- {''.padEnd(bw + 1 + MODEL_NAME_WIDTH)}{'cost'.padStart(MODEL_COL_COST)}{'cache'.padStart(MODEL_COL_CACHE)}{'calls'.padStart(MODEL_COL_CALLS)}
+ {''.padEnd(bw + 1 + MODEL_NAME_WIDTH)}{'cost'.padStart(MODEL_COL_COST)}{'cache'.padStart(MODEL_COL_CACHE)}{'calls'.padStart(MODEL_COL_CALLS)}{'1-shot'.padStart(MODEL_COL_ONESHOT)}
{sorted.map(([model, data], i) => {
const totalInput = data.freshInput + data.cacheRead + data.cacheWrite
const cacheHit = totalInput > 0 ? (data.cacheRead / totalInput) * 100 : 0
const cacheLabel = totalInput > 0 ? `${cacheHit.toFixed(1)}%` : '-'
+ const efficiency = modelEfficiency.get(model)
+ const oneShotLabel = efficiency && efficiency.editTurns >= MIN_EDIT_TURNS_FOR_RATE && efficiency.oneShotRate !== null
+ ? `${efficiency.oneShotRate.toFixed(1)}%`
+ : '-'
return (
@@ -329,6 +337,7 @@ function ModelBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; pw:
{formatCost(data.costUSD).padStart(MODEL_COL_COST)}
{cacheLabel.padStart(MODEL_COL_CACHE)}
{String(data.calls).padStart(MODEL_COL_CALLS)}
+ {oneShotLabel.padStart(MODEL_COL_ONESHOT)}
)
})}
diff --git a/src/export.ts b/src/export.ts
index e6e2ff9..d51406e 100644
--- a/src/export.ts
+++ b/src/export.ts
@@ -4,6 +4,7 @@ import { dirname, join, resolve } from 'path'
import { CATEGORY_LABELS, type ProjectSummary, type TaskCategory } from './types.js'
import { getCurrency, convertCost } from './currency.js'
import { dateKey } from './day-aggregator.js'
+import { aggregateModelEfficiency } from './model-efficiency.js'
function escCsv(s: string): string {
const sanitized = /^[\t\r=+\-@]/.test(s) ? `'${s}` : s
@@ -105,6 +106,7 @@ function buildActivityRows(projects: ProjectSummary[], period: string): Row[] {
function buildModelRows(projects: ProjectSummary[], period: string): Row[] {
const modelTotals: Record = {}
+ const modelEfficiency = aggregateModelEfficiency(projects)
for (const project of projects) {
for (const session of project.sessions) {
for (const [model, d] of Object.entries(session.modelBreakdown)) {
@@ -123,17 +125,26 @@ function buildModelRows(projects: ProjectSummary[], period: string): Row[] {
return Object.entries(modelTotals)
.filter(([name]) => name !== '')
.sort(([, a], [, b]) => b.cost - a.cost)
- .map(([model, d]) => ({
- Period: period,
- Model: model,
- [`Cost (${code})`]: round2(convertCost(d.cost)),
- 'Share (%)': pct(d.cost, totalCost),
- 'API Calls': d.calls,
- 'Input Tokens': d.input,
- 'Output Tokens': d.output,
- 'Cache Read Tokens': d.cacheRead,
- 'Cache Write Tokens': d.cacheWrite,
- }))
+ .map(([model, d]) => {
+ const efficiency = modelEfficiency.get(model)
+ return {
+ Period: period,
+ Model: model,
+ [`Cost (${code})`]: round2(convertCost(d.cost)),
+ 'Share (%)': pct(d.cost, totalCost),
+ 'API Calls': d.calls,
+ 'Edit Turns': efficiency?.editTurns ?? 0,
+ 'One-shot Rate (%)': efficiency?.oneShotRate ?? '',
+ 'Retries/Edit': efficiency?.retriesPerEdit ?? '',
+ [`Cost/Edit (${code})`]: efficiency?.costPerEditUSD !== null && efficiency?.costPerEditUSD !== undefined
+ ? round2(convertCost(efficiency.costPerEditUSD))
+ : '',
+ 'Input Tokens': d.input,
+ 'Output Tokens': d.output,
+ 'Cache Read Tokens': d.cacheRead,
+ 'Cache Write Tokens': d.cacheWrite,
+ }
+ })
}
function buildToolRows(projects: ProjectSummary[]): Row[] {
diff --git a/src/model-efficiency.ts b/src/model-efficiency.ts
new file mode 100644
index 0000000..dec5204
--- /dev/null
+++ b/src/model-efficiency.ts
@@ -0,0 +1,60 @@
+import { getShortModelName } from './models.js'
+import type { ProjectSummary } from './types.js'
+
+export type ModelEfficiency = {
+ model: string
+ editTurns: number
+ oneShotTurns: number
+ retries: number
+ editCostUSD: number
+ oneShotRate: number | null
+ retriesPerEdit: number | null
+ costPerEditUSD: number | null
+}
+
+type MutableModelEfficiency = Omit
+
+function rate(num: number, den: number): number | null {
+ if (den === 0) return null
+ return Math.round((num / den) * 1000) / 10
+}
+
+export function aggregateModelEfficiency(projects: ProjectSummary[]): Map {
+ const byModel = new Map()
+
+ function ensure(model: string): MutableModelEfficiency {
+ let stats = byModel.get(model)
+ if (!stats) {
+ stats = { model, editTurns: 0, oneShotTurns: 0, retries: 0, editCostUSD: 0 }
+ byModel.set(model, stats)
+ }
+ return stats
+ }
+
+ for (const project of projects) {
+ for (const session of project.sessions) {
+ for (const turn of session.turns) {
+ if (!turn.hasEdits || turn.assistantCalls.length === 0) continue
+
+ const primaryCall = turn.assistantCalls.find(c => getShortModelName(c.model) !== '')
+ if (!primaryCall) continue
+ const primaryModel = getShortModelName(primaryCall.model)
+
+ const stats = ensure(primaryModel)
+ stats.editTurns++
+ if (turn.retries === 0) stats.oneShotTurns++
+ stats.retries += turn.retries
+ stats.editCostUSD += turn.assistantCalls.reduce((sum, call) => {
+ return getShortModelName(call.model) === '' ? sum : sum + call.costUSD
+ }, 0)
+ }
+ }
+ }
+
+ return new Map([...byModel.entries()].map(([model, stats]) => [model, {
+ ...stats,
+ oneShotRate: rate(stats.oneShotTurns, stats.editTurns),
+ retriesPerEdit: stats.editTurns > 0 ? Math.round((stats.retries / stats.editTurns) * 10) / 10 : null,
+ costPerEditUSD: stats.editTurns > 0 ? stats.editCostUSD / stats.editTurns : null,
+ }]))
+}
diff --git a/tests/export.test.ts b/tests/export.test.ts
index daf200c..83b8b15 100644
--- a/tests/export.test.ts
+++ b/tests/export.test.ts
@@ -152,6 +152,25 @@ describe('exportCsv', () => {
expect(projects).toContain("'\rcmd")
})
+ it('includes per-model efficiency metrics', async () => {
+ const periods: PeriodExport[] = [
+ {
+ label: '30 Days',
+ projects: [makeProject('app')],
+ },
+ ]
+
+ const outputPath = join(tmpDir, 'models.csv')
+ const folder = await exportCsv(periods, outputPath)
+ const models = await readFile(join(folder, 'models.csv'), 'utf-8')
+
+ expect(models).toContain('Edit Turns')
+ expect(models).toContain('One-shot Rate (%)')
+ expect(models).toContain('Retries/Edit')
+ expect(models).toContain('Cost/Edit')
+ expect(models).toContain(',1,100,0,')
+ })
+
it('does not crash when periods array is empty', async () => {
const outputPath = join(tmpDir, 'empty.csv')
const folder = await exportCsv([], outputPath)
diff --git a/tests/model-efficiency.test.ts b/tests/model-efficiency.test.ts
new file mode 100644
index 0000000..cd7ae89
--- /dev/null
+++ b/tests/model-efficiency.test.ts
@@ -0,0 +1,141 @@
+import { describe, expect, it } from 'vitest'
+
+import { aggregateModelEfficiency } from '../src/model-efficiency.js'
+import type { ClassifiedTurn, ParsedApiCall, ProjectSummary, SessionSummary } from '../src/types.js'
+
+function call(model: string, costUSD = 1): ParsedApiCall {
+ return {
+ provider: 'claude',
+ model,
+ usage: {
+ inputTokens: 100,
+ outputTokens: 50,
+ cacheCreationInputTokens: 0,
+ cacheReadInputTokens: 0,
+ cachedInputTokens: 0,
+ reasoningTokens: 0,
+ webSearchRequests: 0,
+ },
+ costUSD,
+ tools: ['Edit'],
+ mcpTools: [],
+ skills: [],
+ hasAgentSpawn: false,
+ hasPlanMode: false,
+ speed: 'standard',
+ timestamp: '2026-05-05T00:00:00Z',
+ bashCommands: [],
+ deduplicationKey: `${model}-${costUSD}`,
+ }
+}
+
+function turn(model: string, opts: { hasEdits?: boolean; retries?: number; costUSD?: number } = {}): ClassifiedTurn {
+ return {
+ userMessage: '',
+ assistantCalls: [call(model, opts.costUSD ?? 1)],
+ timestamp: '2026-05-05T00:00:00Z',
+ sessionId: 's1',
+ category: 'coding',
+ retries: opts.retries ?? 0,
+ hasEdits: opts.hasEdits ?? true,
+ }
+}
+
+function multiModelTurn(calls: ParsedApiCall[], opts: { retries?: number; hasEdits?: boolean } = {}): ClassifiedTurn {
+ return {
+ userMessage: '',
+ assistantCalls: calls,
+ timestamp: '2026-05-05T00:00:00Z',
+ sessionId: 's1',
+ category: 'coding',
+ retries: opts.retries ?? 0,
+ hasEdits: opts.hasEdits ?? true,
+ }
+}
+
+function project(turns: ClassifiedTurn[]): ProjectSummary {
+ const session: SessionSummary = {
+ sessionId: 's1',
+ project: 'app',
+ firstTimestamp: '2026-05-05T00:00:00Z',
+ lastTimestamp: '2026-05-05T00:00:00Z',
+ totalCostUSD: turns.reduce((sum, t) => sum + t.assistantCalls.reduce((s, c) => s + c.costUSD, 0), 0),
+ totalInputTokens: 0,
+ totalOutputTokens: 0,
+ totalCacheReadTokens: 0,
+ totalCacheWriteTokens: 0,
+ apiCalls: turns.reduce((sum, t) => sum + t.assistantCalls.length, 0),
+ turns,
+ modelBreakdown: {},
+ toolBreakdown: {},
+ mcpBreakdown: {},
+ bashBreakdown: {},
+ categoryBreakdown: {} as SessionSummary['categoryBreakdown'],
+ skillBreakdown: {},
+ }
+ return {
+ project: 'app',
+ projectPath: '/app',
+ sessions: [session],
+ totalCostUSD: session.totalCostUSD,
+ totalApiCalls: session.apiCalls,
+ }
+}
+
+describe('aggregateModelEfficiency', () => {
+ it('computes one-shot, retry, and cost-per-edit metrics by display model', () => {
+ const stats = aggregateModelEfficiency([project([
+ turn('claude-sonnet-4-5', { hasEdits: true, retries: 0, costUSD: 2 }),
+ turn('claude-sonnet-4-5', { hasEdits: true, retries: 2, costUSD: 4 }),
+ turn('claude-opus-4-6', { hasEdits: true, retries: 0, costUSD: 10 }),
+ turn('claude-sonnet-4-5', { hasEdits: false, retries: 0, costUSD: 3 }),
+ ])])
+
+ const sonnet = stats.get('Sonnet 4.5')
+ expect(sonnet?.editTurns).toBe(2)
+ expect(sonnet?.oneShotTurns).toBe(1)
+ expect(sonnet?.oneShotRate).toBe(50)
+ expect(sonnet?.retriesPerEdit).toBe(1)
+ expect(sonnet?.costPerEditUSD).toBe(3)
+
+ const opus = stats.get('Opus 4.6')
+ expect(opus?.oneShotRate).toBe(100)
+ })
+
+ it('returns no stats for non-edit turns', () => {
+ const stats = aggregateModelEfficiency([project([
+ turn('claude-sonnet-4-5', { hasEdits: false }),
+ ])])
+
+ expect(stats.size).toBe(0)
+ })
+
+ it('attributes a multi-model turn to the first non-synthetic model', () => {
+ const stats = aggregateModelEfficiency([project([
+ multiModelTurn([
+ call('', 0),
+ call('claude-opus-4-6', 2),
+ call('claude-sonnet-4-5', 1),
+ ], { retries: 0, hasEdits: true }),
+ ])])
+
+ expect(stats.has('Opus 4.6')).toBe(true)
+ expect(stats.has('Sonnet 4.5')).toBe(false)
+ expect(stats.has('')).toBe(false)
+ const opus = stats.get('Opus 4.6')!
+ expect(opus.editTurns).toBe(1)
+ expect(opus.oneShotTurns).toBe(1)
+ expect(opus.costPerEditUSD).toBe(3)
+ })
+
+ it('skips a turn whose calls are all synthetic', () => {
+ const stats = aggregateModelEfficiency([project([
+ multiModelTurn([
+ call('', 0),
+ call('', 0),
+ ], { retries: 0, hasEdits: true }),
+ ])])
+
+ expect(stats.size).toBe(0)
+ })
+})
From 6151cf6d732c74378070e415fd843090f175cc46 Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Tue, 5 May 2026 23:53:31 -0700
Subject: [PATCH 048/115] fix(parser): use Claude cwd for Windows project paths
Reads the canonical cwd already stored inside Claude session JSONL files and uses it as the project path, then groups sessions by a normalized path key (case + slash insensitive) so Windows projects no longer split into 3+ rows on case/slash variants. Falls back to the legacy slug-derived path when cwd is missing. Closes #217. Supersedes #228 with a fix that preserves the canonical cwd even when mixed with slug-only sessions in the same directory. Original implementation by @ozymandiashh.
---
CHANGELOG.md | 4 +
src/parser.ts | 64 ++++++++++---
tests/parser-claude-cwd.test.ts | 160 ++++++++++++++++++++++++++++++++
3 files changed, 217 insertions(+), 11 deletions(-)
create mode 100644 tests/parser-claude-cwd.test.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 56310f1..1ebdad1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,10 @@
- **Session cost outlier detector.** New `optimize` finding flags sessions costing more than 2x their peer-session average within the same project. Ignores sub-$1 outliers to avoid noise. Requires at least 3 sessions per project for a baseline.
### Fixed (CLI)
+- **Windows Claude project paths.** Claude Code project rollups now prefer
+ the canonical `cwd` stored in session JSONL files instead of reconstructing
+ paths from lossy directory slugs, and group case/slash variants together.
+ Closes #217.
- **`all` period semantics unified between CLI and dashboard.** The dashboard treated `--period all` as all-time (epoch start) while the CLI bounded it to the last 6 months. Both now consistently mean "Last 6 months". Period helpers (`Period`, `PERIODS`, `PERIOD_LABELS`, `toPeriod`, `getDateRange`) consolidated into `cli-date.ts`. Use `--from` / `--to` for unbounded historical ranges.
### Fixed (macOS menubar)
diff --git a/src/parser.ts b/src/parser.ts
index 09cf99c..ccde9a5 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -26,6 +26,11 @@ function unsanitizePath(dirName: string): string {
return dirName.replace(/-/g, '/')
}
+function normalizeProjectPathKey(projectPath: string): string {
+ const normalized = projectPath.trim().replace(/\\/g, '/')
+ return (normalized.replace(/\/+$/, '') || normalized).toLowerCase()
+}
+
function parseJsonlLine(line: string): JournalEntry | null {
try {
return JSON.parse(line) as JournalEntry
@@ -246,6 +251,15 @@ export function extractMcpInventory(entries: JournalEntry[]): string[] {
return Array.from(inventory).sort()
}
+function extractCanonicalCwd(entries: JournalEntry[]): string | undefined {
+ for (const entry of entries) {
+ if (typeof entry.cwd !== 'string') continue
+ const cwd = entry.cwd.trim()
+ if (cwd) return cwd
+ }
+ return undefined
+}
+
function buildSessionSummary(
sessionId: string,
project: string,
@@ -364,7 +378,7 @@ async function parseSessionFile(
project: string,
seenMsgIds: Set,
dateRange?: DateRange,
-): Promise {
+): Promise<{ session: SessionSummary; canonicalCwd?: string } | null> {
// Skip files whose mtime is older than the range start. A session file
// can only contain entries up to its last-modified time; if that predates
// the requested range, nothing in this file can match.
@@ -413,8 +427,12 @@ async function parseSessionFile(
// and we want to reflect what was loaded even if the user only ran
// turns inside a narrow date window.
const mcpInventory = extractMcpInventory(entries)
+ const canonicalCwd = extractCanonicalCwd(entries)
- return buildSessionSummary(sessionId, project, classified, mcpInventory)
+ return {
+ session: buildSessionSummary(sessionId, project, classified, mcpInventory),
+ ...(canonicalCwd ? { canonicalCwd } : {}),
+ }
}
async function collectJsonlFiles(dirPath: string): Promise {
@@ -434,26 +452,50 @@ async function collectJsonlFiles(dirPath: string): Promise {
}
async function scanProjectDirs(dirs: Array<{ path: string; name: string }>, seenMsgIds: Set, dateRange?: DateRange): Promise {
- const projectMap = new Map()
+ const projectMap = new Map()
for (const { path: dirPath, name: dirName } of dirs) {
const jsonlFiles = await collectJsonlFiles(dirPath)
for (const filePath of jsonlFiles) {
- const session = await parseSessionFile(filePath, dirName, seenMsgIds, dateRange)
- if (session && session.apiCalls > 0) {
- const existing = projectMap.get(dirName) ?? []
- existing.push(session)
- projectMap.set(dirName, existing)
+ const parsed = await parseSessionFile(filePath, dirName, seenMsgIds, dateRange)
+ if (parsed && parsed.session.apiCalls > 0) {
+ const projectPath = parsed.canonicalCwd ?? unsanitizePath(dirName)
+ const projectKey = parsed.canonicalCwd ? normalizeProjectPathKey(parsed.canonicalCwd) : `slug:${dirName}`
+ const existing = projectMap.get(projectKey)
+ if (existing) {
+ existing.sessions.push(parsed.session)
+ } else {
+ projectMap.set(projectKey, { project: dirName, projectPath, sessions: [parsed.session] })
+ }
}
}
}
+ // If a slug has both cwd-keyed and slug-keyed entries (mixed sessions where
+ // some carry a canonical cwd and some don't), fold the slug-keyed sessions
+ // into the cwd-keyed entry so the canonical projectPath is preserved
+ // regardless of file iteration order.
+ const cwdKeyByDirName = new Map()
+ for (const [key, entry] of projectMap) {
+ if (!key.startsWith('slug:') && !cwdKeyByDirName.has(entry.project)) {
+ cwdKeyByDirName.set(entry.project, key)
+ }
+ }
+ for (const [key, entry] of [...projectMap]) {
+ if (!key.startsWith('slug:')) continue
+ const cwdKey = cwdKeyByDirName.get(entry.project)
+ if (!cwdKey) continue
+ const target = projectMap.get(cwdKey)!
+ target.sessions.push(...entry.sessions)
+ projectMap.delete(key)
+ }
+
const projects: ProjectSummary[] = []
- for (const [dirName, sessions] of projectMap) {
+ for (const { project, projectPath, sessions } of projectMap.values()) {
projects.push({
- project: dirName,
- projectPath: unsanitizePath(dirName),
+ project,
+ projectPath,
sessions,
totalCostUSD: sessions.reduce((s, sess) => s + sess.totalCostUSD, 0),
totalApiCalls: sessions.reduce((s, sess) => s + sess.apiCalls, 0),
diff --git a/tests/parser-claude-cwd.test.ts b/tests/parser-claude-cwd.test.ts
new file mode 100644
index 0000000..65c96db
--- /dev/null
+++ b/tests/parser-claude-cwd.test.ts
@@ -0,0 +1,160 @@
+import { describe, it, expect, beforeEach, afterEach } from 'vitest'
+import { mkdtemp, mkdir, writeFile, rm, utimes } from 'fs/promises'
+import { join } from 'path'
+import { tmpdir } from 'os'
+
+import { parseAllSessions } from '../src/parser.js'
+import type { DateRange } from '../src/types.js'
+
+let tmpDir: string
+let originalConfigDir: string | undefined
+
+beforeEach(async () => {
+ tmpDir = await mkdtemp(join(tmpdir(), 'claude-cwd-test-'))
+ originalConfigDir = process.env['CLAUDE_CONFIG_DIR']
+ process.env['CLAUDE_CONFIG_DIR'] = tmpDir
+})
+
+afterEach(async () => {
+ if (originalConfigDir === undefined) {
+ delete process.env['CLAUDE_CONFIG_DIR']
+ } else {
+ process.env['CLAUDE_CONFIG_DIR'] = originalConfigDir
+ }
+ await rm(tmpDir, { recursive: true, force: true })
+})
+
+function dayRange(day: string): DateRange {
+ return {
+ start: new Date(`${day}T00:00:00.000Z`),
+ end: new Date(`${day}T23:59:59.999Z`),
+ }
+}
+
+async function writeClaudeSession(projectSlug: string, sessionId: string, cwd: string, timestamp: string): Promise {
+ const projectDir = join(tmpDir, 'projects', projectSlug)
+ await mkdir(projectDir, { recursive: true })
+ const filePath = join(projectDir, `${sessionId}.jsonl`)
+ await writeFile(filePath, JSON.stringify({
+ type: 'assistant',
+ sessionId,
+ timestamp,
+ cwd,
+ message: {
+ id: `msg-${sessionId}`,
+ type: 'message',
+ role: 'assistant',
+ model: 'claude-sonnet-4-5',
+ content: [],
+ usage: {
+ input_tokens: 100,
+ output_tokens: 50,
+ },
+ },
+ }) + '\n')
+
+ const mtime = new Date(timestamp)
+ await utimes(filePath, mtime, mtime)
+}
+
+describe('Claude cwd project paths', () => {
+ it('uses the JSONL cwd as the canonical project path instead of the lossy directory slug', async () => {
+ await writeClaudeSession(
+ 'c--AI-LAB-OPENCLAW',
+ 'windows-session',
+ 'C:\\AI_LAB\\OPENCLAW',
+ '2099-05-01T12:00:00.000Z',
+ )
+
+ const projects = await parseAllSessions(dayRange('2099-05-01'), 'claude')
+
+ expect(projects).toHaveLength(1)
+ expect(projects[0]!.projectPath).toBe('C:\\AI_LAB\\OPENCLAW')
+ expect(projects[0]!.projectPath).not.toBe('c//AI/LAB/OPENCLAW')
+ expect(projects[0]!.totalApiCalls).toBe(1)
+ })
+
+ it('groups Windows cwd case and slash variants into one project', async () => {
+ await writeClaudeSession(
+ 'windows-openclaw-a',
+ 'upper-backslash',
+ 'C:\\AI_LAB\\OPENCLAW',
+ '2099-05-02T10:00:00.000Z',
+ )
+ await writeClaudeSession(
+ 'windows-openclaw-b',
+ 'lower-forward-slash',
+ 'c:/AI_LAB/OPENCLAW/',
+ '2099-05-02T11:00:00.000Z',
+ )
+
+ const projects = await parseAllSessions(dayRange('2099-05-02'), 'claude')
+
+ expect(projects).toHaveLength(1)
+ expect(projects[0]!.sessions).toHaveLength(2)
+ expect(projects[0]!.totalApiCalls).toBe(2)
+ expect(projects[0]!.sessions.map(s => s.sessionId).sort()).toEqual([
+ 'lower-forward-slash',
+ 'upper-backslash',
+ ])
+ })
+
+ it('prefers the canonical cwd path even when mixed with slug-only sessions in the same directory', async () => {
+ const slug = 'c--AI-LAB-OPENCLAW'
+ const projectDir = join(tmpDir, 'projects', slug)
+ await mkdir(projectDir, { recursive: true })
+ const noCwdPath = join(projectDir, 'a-no-cwd.jsonl')
+ await writeFile(noCwdPath, JSON.stringify({
+ type: 'assistant',
+ sessionId: 'no-cwd',
+ timestamp: '2099-05-03T10:00:00.000Z',
+ message: {
+ id: 'msg-no-cwd', type: 'message', role: 'assistant',
+ model: 'claude-sonnet-4-5', content: [],
+ usage: { input_tokens: 100, output_tokens: 50 },
+ },
+ }) + '\n')
+ await utimes(noCwdPath, new Date('2099-05-03T10:00:00.000Z'), new Date('2099-05-03T10:00:00.000Z'))
+
+ await writeClaudeSession(slug, 'b-with-cwd', 'C:\\AI_LAB\\OPENCLAW', '2099-05-03T11:00:00.000Z')
+
+ const projects = await parseAllSessions(dayRange('2099-05-03'), 'claude')
+
+ expect(projects).toHaveLength(1)
+ expect(projects[0]!.sessions).toHaveLength(2)
+ expect(projects[0]!.projectPath).toBe('C:\\AI_LAB\\OPENCLAW')
+ expect(projects[0]!.projectPath).not.toBe('c//AI/LAB/OPENCLAW')
+ })
+
+ it('falls back to the slug-derived path when cwd is null, missing, or empty', async () => {
+ const slug = 'fallback-slug'
+ const projectDir = join(tmpDir, 'projects', slug)
+ await mkdir(projectDir, { recursive: true })
+
+ async function writeWith(name: string, sessionId: string, cwdField: unknown, ts: string) {
+ const filePath = join(projectDir, `${name}.jsonl`)
+ const obj: Record = {
+ type: 'assistant', sessionId, timestamp: ts,
+ message: {
+ id: `msg-${sessionId}`, type: 'message', role: 'assistant',
+ model: 'claude-sonnet-4-5', content: [],
+ usage: { input_tokens: 100, output_tokens: 50 },
+ },
+ }
+ if (cwdField !== undefined) obj.cwd = cwdField
+ await writeFile(filePath, JSON.stringify(obj) + '\n')
+ await utimes(filePath, new Date(ts), new Date(ts))
+ }
+
+ await writeWith('null-cwd', 's-null', null, '2099-05-04T10:00:00.000Z')
+ await writeWith('empty-cwd', 's-empty', '', '2099-05-04T10:30:00.000Z')
+ await writeWith('whitespace-cwd', 's-ws', ' ', '2099-05-04T11:00:00.000Z')
+ await writeWith('missing-cwd', 's-miss', undefined, '2099-05-04T11:30:00.000Z')
+
+ const projects = await parseAllSessions(dayRange('2099-05-04'), 'claude')
+
+ expect(projects).toHaveLength(1)
+ expect(projects[0]!.sessions).toHaveLength(4)
+ expect(projects[0]!.projectPath).toBe('fallback/slug')
+ })
+})
From f92d57d24ab32ca256179dcb091dc2f3e5d4cd4d Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Wed, 6 May 2026 00:11:12 -0700
Subject: [PATCH 049/115] feat(optimize): detect context-heavy sessions
Adds a context-bloat finding to codeburn optimize that flags sessions where effective input/cache tokens (cache-discounted via existing pricing constants) are large and disproportionate to output. Suggests starting fresh with a tightened context. Sessions flagged here are excluded from the cost-outlier finding to avoid double-listing. Growth-from-previous-session callouts are suppressed when the predecessor is more than 7 days back. Three impact tiers (low/medium/high). Supersedes #242 with review fixes from real-data probe. Original implementation by @ozymandiashh.
---
CHANGELOG.md | 8 ++
README.md | 1 +
src/optimize.ts | 144 ++++++++++++++++++++-
tests/optimize.test.ts | 279 +++++++++++++++++++++++++++++++++++++++++
4 files changed, 430 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1ebdad1..28e2c11 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,14 @@
than the call's own cache buckets could contain. Threshold:
>10 tools available, <20% coverage, observed in ≥2 sessions. Closes #2.
- **Session cost outlier detector.** New `optimize` finding flags sessions costing more than 2x their peer-session average within the same project. Ignores sub-$1 outliers to avoid noise. Requires at least 3 sessions per project for a baseline.
+- **Context bloat detector.** New `optimize` finding flags sessions where
+ effective input/cache tokens are large and disproportionate to output.
+ Cache reads are discounted in the estimate to avoid overstating cheap cached
+ context. The report highlights top sessions by imbalance, notes sharp
+ growth from the previous project session (within a 7-day baseline window),
+ and suggests starting fresh with only the current goal, relevant files,
+ failing output, and constraints. Sessions flagged here are excluded from
+ the cost-outlier finding so the same session is not listed twice.
### Fixed (CLI)
- **Windows Claude project paths.** Claude Code project rollups now prefer
diff --git a/README.md b/README.md
index 1602d87..7c96264 100644
--- a/README.md
+++ b/README.md
@@ -188,6 +188,7 @@ Scans your sessions and your `~/.claude/` setup for waste patterns:
- Ghost agents, skills, and slash commands defined in `~/.claude/` but never invoked
- Bloated `CLAUDE.md` files (with `@-import` expansion counted)
- Cache creation overhead and junk directory reads
+- Context-heavy sessions where effective input/cache tokens swamp output
Each finding shows the estimated token and dollar savings plus a ready-to-paste fix: a `CLAUDE.md` line, an environment variable, or a `mv` command to archive unused items. Findings are ranked by urgency (impact weighted against observed waste) and rolled up into an A to F setup health grade. Repeat runs classify each finding as new, improving, or resolved against a 48-hour recent window.
diff --git a/src/optimize.ts b/src/optimize.ts
index dcaf91d..82874d6 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -78,6 +78,17 @@ const MIN_SESSIONS_FOR_OUTLIER = 3
const SESSION_OUTLIER_MULTIPLIER = 2
const MIN_SESSION_OUTLIER_COST_USD = 1
const SESSION_OUTLIER_PREVIEW = 5
+const CONTEXT_BLOAT_MIN_INPUT_TOKENS = 75_000
+const CONTEXT_BLOAT_MIN_RATIO = 25
+const CONTEXT_BLOAT_TARGET_RATIO = 15
+const CONTEXT_BLOAT_PREVIEW = 5
+const CONTEXT_BLOAT_LOW_INPUT_TOKENS = 200_000
+const CONTEXT_BLOAT_HIGH_INPUT_TOKENS = 500_000
+const CONTEXT_BLOAT_LOW_MAX_CANDIDATES = 2
+const CONTEXT_BLOAT_HIGH_MIN_CANDIDATES = 10
+const CONTEXT_BLOAT_GROWTH_RATIO = 2
+const CONTEXT_BLOAT_GROWTH_MAX_GAP_MS = 7 * 24 * 60 * 60 * 1000
+const CONTEXT_BLOAT_RATIO_DISPLAY_CAP = 1000
// ============================================================================
// Scoring constants
@@ -1213,7 +1224,129 @@ function sessionTokenTotal(session: ProjectSummary['sessions'][number]): number
+ session.totalCacheWriteTokens
}
-export function detectSessionOutliers(projects: ProjectSummary[]): WasteFinding | null {
+function sessionEffectiveContextTokens(session: ProjectSummary['sessions'][number]): number {
+ return session.totalInputTokens
+ + session.totalCacheReadTokens * CACHE_READ_DISCOUNT
+ + session.totalCacheWriteTokens * CACHE_WRITE_MULTIPLIER
+}
+
+function formatContextRatio(ratio: number): string {
+ if (ratio >= CONTEXT_BLOAT_RATIO_DISPLAY_CAP) return `${CONTEXT_BLOAT_RATIO_DISPLAY_CAP}+`
+ return ratio.toFixed(1)
+}
+
+export type ContextBloatCandidate = {
+ project: string
+ sessionId: string
+ date: string
+ effectiveInputTokens: number
+ outputTokens: number
+ ratio: number
+ excessInputTokens: number
+ growthRatio: number | null
+}
+
+export function findContextBloatCandidates(projects: ProjectSummary[]): ContextBloatCandidate[] {
+ const candidates: ContextBloatCandidate[] = []
+
+ for (const project of projects) {
+ const sessions = [...project.sessions].sort((a, b) =>
+ new Date(a.firstTimestamp).getTime() - new Date(b.firstTimestamp).getTime()
+ )
+ let previousInputTokens: number | null = null
+ let previousTimestampMs: number | null = null
+
+ for (const session of sessions) {
+ const inputTokens = sessionEffectiveContextTokens(session)
+ const outputTokens = session.totalOutputTokens
+ const ratio = inputTokens / Math.max(outputTokens, 1)
+ const currentMs = new Date(session.firstTimestamp).getTime()
+ const gapMs = previousTimestampMs !== null ? currentMs - previousTimestampMs : null
+ // Suppress growth ratio when the previous session is too far back to be
+ // a meaningful baseline (e.g. a small test run weeks before a real
+ // working session would otherwise produce alarming "1000x" figures).
+ const growthRatio = previousInputTokens !== null
+ && previousInputTokens > 0
+ && gapMs !== null
+ && gapMs <= CONTEXT_BLOAT_GROWTH_MAX_GAP_MS
+ ? inputTokens / previousInputTokens
+ : null
+
+ // Anchor growth to the immediately previous project session, even if
+ // that session is below threshold and never becomes a finding.
+ previousInputTokens = inputTokens
+ previousTimestampMs = currentMs
+
+ if (inputTokens < CONTEXT_BLOAT_MIN_INPUT_TOKENS) continue
+ if (ratio < CONTEXT_BLOAT_MIN_RATIO) continue
+
+ candidates.push({
+ project: project.project,
+ sessionId: session.sessionId,
+ date: session.firstTimestamp.slice(0, 10),
+ effectiveInputTokens: inputTokens,
+ outputTokens,
+ ratio,
+ excessInputTokens: Math.max(0, inputTokens - outputTokens * CONTEXT_BLOAT_TARGET_RATIO),
+ growthRatio,
+ })
+ }
+ }
+
+ candidates.sort((a, b) =>
+ b.excessInputTokens - a.excessInputTokens
+ || a.date.localeCompare(b.date)
+ || a.project.localeCompare(b.project)
+ || a.sessionId.localeCompare(b.sessionId)
+ )
+ return candidates
+}
+
+export function detectContextBloat(projects: ProjectSummary[]): WasteFinding | null {
+ const candidates = findContextBloatCandidates(projects)
+ if (candidates.length === 0) return null
+
+ const preview = candidates.slice(0, CONTEXT_BLOAT_PREVIEW)
+ const list = preview
+ .map(c => {
+ const growth = c.growthRatio !== null && c.growthRatio >= CONTEXT_BLOAT_GROWTH_RATIO
+ ? `, ${c.growthRatio.toFixed(1)}x previous session input`
+ : ''
+ return `${c.project}/${c.sessionId} on ${c.date}: ${formatTokens(c.effectiveInputTokens)} effective input/cache vs ${formatTokens(c.outputTokens)} output (${formatContextRatio(c.ratio)}:1${growth})`
+ })
+ .join('; ')
+ const extra = candidates.length > preview.length ? `; +${candidates.length - preview.length} more` : ''
+ // Savings estimate only counts context above a healthier 15:1 input-output ratio.
+ // Detection stays stricter at 25:1 so borderline sessions are not shown.
+ const tokensSaved = Math.round(candidates.reduce((sum, c) => sum + c.excessInputTokens, 0))
+ const totalInputTokens = candidates.reduce((sum, c) => sum + c.effectiveInputTokens, 0)
+
+ // Tier on candidate count first, total context size second. A single 600K
+ // session is "high"; 1-2 modest-sized sessions are "low"; everything in
+ // between is "medium".
+ let impact: Impact
+ if (candidates.length >= CONTEXT_BLOAT_HIGH_MIN_CANDIDATES || totalInputTokens >= CONTEXT_BLOAT_HIGH_INPUT_TOKENS) {
+ impact = 'high'
+ } else if (candidates.length <= CONTEXT_BLOAT_LOW_MAX_CANDIDATES && totalInputTokens < CONTEXT_BLOAT_LOW_INPUT_TOKENS) {
+ impact = 'low'
+ } else {
+ impact = 'medium'
+ }
+
+ return {
+ title: `${candidates.length} context-heavy session${candidates.length === 1 ? '' : 's'}`,
+ explanation: `Effective input/cache tokens swamp output in these sessions: ${list}${extra}. This can come from stale context carryover, inherently context-heavy work, or abandoned runs that loaded too much context; starting fresh with only the current goal and relevant files can cut repeated prompt overhead.`,
+ impact,
+ tokensSaved,
+ fix: {
+ type: 'paste',
+ label: 'Start the next expensive thread with a fresh-context constraint:',
+ text: 'Start fresh before continuing. Use only the current goal, the relevant files, the failing command/output, and the constraints below. Restate the working context in under 10 bullets before editing.',
+ },
+ }
+}
+
+export function detectSessionOutliers(projects: ProjectSummary[], excludedSessionIds?: ReadonlySet): WasteFinding | null {
type Outlier = {
project: string
sessionId: string
@@ -1240,6 +1373,11 @@ export function detectSessionOutliers(projects: ProjectSummary[]): WasteFinding
const ratio = session.totalCostUSD / avgCost
if (ratio <= SESSION_OUTLIER_MULTIPLIER) continue
if (session.totalCostUSD < MIN_SESSION_OUTLIER_COST_USD) continue
+ // Avoid reporting the same session under both this finding and the
+ // context-bloat finding. Context-bloat takes priority because its
+ // suggested fix ("start fresh") is more concrete than the generic
+ // "tighter constraint" advice here.
+ if (excludedSessionIds?.has(session.sessionId)) continue
outliers.push({
project: project.project,
@@ -1392,6 +1530,7 @@ export async function scanAndDetect(
const mcpCoverage = aggregateMcpCoverage(projects)
const findings: WasteFinding[] = []
+ const contextBloatSessionIds = new Set(findContextBloatCandidates(projects).map(c => c.sessionId))
const syncDetectors: Array<() => WasteFinding | null> = [
() => detectCacheBloat(apiCalls, projects, dateRange),
() => detectLowReadEditRatio(toolCalls),
@@ -1399,7 +1538,8 @@ export async function scanAndDetect(
() => detectDuplicateReads(toolCalls, dateRange),
() => detectUnusedMcp(toolCalls, projects, projectCwds, mcpCoverage),
() => detectMcpToolCoverage(projects, mcpCoverage),
- () => detectSessionOutliers(projects),
+ () => detectContextBloat(projects),
+ () => detectSessionOutliers(projects, contextBloatSessionIds),
() => detectBloatedClaudeMd(projectCwds),
() => detectBashBloat(),
]
diff --git a/tests/optimize.test.ts b/tests/optimize.test.ts
index 970b277..b84eab2 100644
--- a/tests/optimize.test.ts
+++ b/tests/optimize.test.ts
@@ -6,6 +6,7 @@ import {
detectLowReadEditRatio,
detectCacheBloat,
detectBloatedClaudeMd,
+ detectContextBloat,
detectSessionOutliers,
computeHealth,
computeTrend,
@@ -56,6 +57,45 @@ function projectWithSessions(costs: number[], project = 'app'): ProjectSummary {
}
}
+type TestSession = ProjectSummary['sessions'][number]
+
+function contextSession(
+ i: number,
+ overrides: Partial,
+ project = 'app',
+): TestSession {
+ return {
+ sessionId: `s${i + 1}`,
+ project,
+ firstTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:00:00Z`,
+ lastTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:30:00Z`,
+ totalCostUSD: 1,
+ totalInputTokens: 0,
+ totalOutputTokens: 0,
+ totalCacheReadTokens: 0,
+ totalCacheWriteTokens: 0,
+ apiCalls: 1,
+ turns: [],
+ modelBreakdown: {},
+ toolBreakdown: {},
+ mcpBreakdown: {},
+ bashBreakdown: {},
+ categoryBreakdown: {} as TestSession['categoryBreakdown'],
+ skillBreakdown: {},
+ ...overrides,
+ }
+}
+
+function projectWithContextSessions(sessions: TestSession[], project = 'app'): ProjectSummary {
+ return {
+ project,
+ projectPath: `/tmp/${project}`,
+ sessions,
+ totalCostUSD: sessions.reduce((sum, session) => sum + session.totalCostUSD, 0),
+ totalApiCalls: sessions.reduce((sum, session) => sum + session.apiCalls, 0),
+ }
+}
+
describe('detectJunkReads', () => {
it('returns null below minimum threshold', () => {
const calls = [
@@ -241,6 +281,231 @@ describe('detectBloatedClaudeMd', () => {
})
})
+describe('detectContextBloat', () => {
+ it('returns null below the input/context token floor', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 74_999,
+ totalOutputTokens: 100,
+ }),
+ ])
+
+ expect(detectContextBloat([project])).toBeNull()
+ })
+
+ it('returns null when output is proportionate to input/context tokens', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 100_000,
+ totalOutputTokens: 5_000,
+ }),
+ ])
+
+ expect(detectContextBloat([project])).toBeNull()
+ })
+
+ it('discounts cache reads when estimating context pressure', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 5_000,
+ totalCacheReadTokens: 700_000,
+ totalOutputTokens: 5_000,
+ }),
+ ])
+
+ expect(detectContextBloat([project])).toBeNull()
+ })
+
+ it('weights cache writes when estimating context pressure', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 10_000,
+ totalCacheWriteTokens: 80_000,
+ totalOutputTokens: 3_000,
+ }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('110.0K effective input/cache')
+ expect(finding!.tokensSaved).toBe(65_000)
+ })
+
+ it('flags sessions where input/cache tokens swamp output', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 90_000,
+ totalCacheReadTokens: 30_000,
+ totalOutputTokens: 2_000,
+ }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.title).toContain('context-heavy session')
+ expect(finding!.explanation).toContain('app/s1')
+ expect(finding!.explanation).toContain('93.0K effective input/cache')
+ expect(finding!.explanation).toContain('46.5:1')
+ expect(finding!.impact).toBe('low')
+ expect(finding!.tokensSaved).toBe(63_000)
+ })
+
+ it('uses medium impact between the low and high tiers', () => {
+ const project = projectWithContextSessions(
+ Array.from({ length: 4 }, (_, i) => contextSession(i, {
+ totalInputTokens: 80_000,
+ totalOutputTokens: 1_000,
+ })),
+ )
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.impact).toBe('medium')
+ })
+
+ it('uses high impact at 10 or more candidates regardless of total size', () => {
+ const project = projectWithContextSessions(
+ Array.from({ length: 10 }, (_, i) => contextSession(i, {
+ totalInputTokens: 80_000,
+ totalOutputTokens: 1_000,
+ })),
+ )
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.impact).toBe('high')
+ })
+
+ it('includes context growth from the previous session when it is large', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 20_000,
+ totalOutputTokens: 1_000,
+ }),
+ contextSession(1, {
+ totalInputTokens: 100_000,
+ totalOutputTokens: 2_000,
+ }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('5.0x previous session input')
+ })
+
+ it('calculates context growth within each project only', () => {
+ const finding = detectContextBloat([
+ projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 20_000,
+ totalOutputTokens: 1_000,
+ }),
+ contextSession(1, {
+ totalInputTokens: 100_000,
+ totalOutputTokens: 2_000,
+ }),
+ ], 'app'),
+ projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 100_000,
+ totalOutputTokens: 2_000,
+ }, 'api'),
+ ], 'api'),
+ ])
+
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation.match(/previous session input/g)).toHaveLength(1)
+ })
+
+ it('summarizes additional candidates after the preview limit', () => {
+ const project = projectWithContextSessions(
+ Array.from({ length: 6 }, (_, i) => contextSession(i, {
+ totalInputTokens: 80_000 + i * 10_000,
+ totalOutputTokens: 1_000,
+ })),
+ )
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('app/s6')
+ expect(finding!.explanation).toContain('; +1 more')
+ expect(finding!.impact).toBe('high')
+ })
+
+ it('uses high impact for one very large context-heavy session', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 600_000,
+ totalOutputTokens: 10_000,
+ }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.impact).toBe('high')
+ })
+
+ it('handles zero-output sessions without dividing by zero', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 80_000,
+ totalOutputTokens: 0,
+ }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('1000+:1')
+ expect(finding!.tokensSaved).toBe(80_000)
+ })
+
+ it('caps display ratio at 1000+:1 for non-zero-output sessions too', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 5_000_000,
+ totalOutputTokens: 100,
+ }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('1000+:1')
+ })
+
+ it('suppresses the growth ratio when the previous session is more than 7 days back', () => {
+ const project = projectWithContextSessions([
+ {
+ ...contextSession(0, { totalInputTokens: 20_000, totalOutputTokens: 1_000 }),
+ firstTimestamp: '2026-05-01T10:00:00Z',
+ lastTimestamp: '2026-05-01T10:30:00Z',
+ },
+ {
+ ...contextSession(1, { totalInputTokens: 100_000, totalOutputTokens: 2_000 }),
+ firstTimestamp: '2026-05-15T10:00:00Z',
+ lastTimestamp: '2026-05-15T10:30:00Z',
+ },
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).not.toContain('previous session input')
+ })
+
+ it('anchors growth even when the previous session is below the reporting threshold', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, { totalInputTokens: 20_000, totalOutputTokens: 1_000 }),
+ contextSession(1, { totalInputTokens: 100_000, totalOutputTokens: 2_000 }),
+ ])
+
+ const finding = detectContextBloat([project])
+ expect(finding).not.toBeNull()
+ // The first session sits below CONTEXT_BLOAT_MIN_INPUT_TOKENS (75K) and
+ // is not itself a candidate, but the growth-from-previous comparison for
+ // the second session must still anchor against it.
+ expect(finding!.explanation).toContain('5.0x previous session input')
+ })
+})
+
describe('detectSessionOutliers', () => {
it('returns null when there are too few sessions for a project baseline', () => {
expect(detectSessionOutliers([projectWithSessions([0.5, 4])])).toBeNull()
@@ -277,6 +542,20 @@ describe('detectSessionOutliers', () => {
expect(finding!.explanation).toContain('api/s4')
expect(finding!.explanation).not.toContain('web/')
})
+
+ it('excludes sessions already flagged by detectContextBloat', () => {
+ const project = projectWithSessions([1, 1, 1, 10])
+ const excluded = new Set(['s4'])
+ expect(detectSessionOutliers([project], excluded)).toBeNull()
+ })
+
+ it('still flags cost outliers that are not context-bloat candidates', () => {
+ const project = projectWithSessions([1, 1, 1, 10])
+ const excluded = new Set(['some-other-session'])
+ const finding = detectSessionOutliers([project], excluded)
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('app/s4')
+ })
})
describe('computeHealth', () => {
From 75d4701bd8d8341da0adb3c98cfdf2998e3fa130 Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Wed, 6 May 2026 00:35:41 -0700
Subject: [PATCH 050/115] feat(optimize): flag low-worth expensive sessions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Adds a low-worth detector to codeburn optimize that flags expensive sessions with weak delivery signals (no edits, repeated retries, or no one-shot edits) when no git/gh delivery command is observed. Priority order is low-worth → context-bloat → outliers; each later detector excludes sessions named by an earlier one so the same session is never listed in three findings. Detection: floor, for no-edit, 3+ retries, regex matches git commit/push and gh pr create/merge but excludes commit-tree/commit-graph and dry-run. Three impact tiers consistent with #246. Token-savings uses full session tokens for no-edit sessions and the retry fraction for edit-with-retry sessions. Supersedes #241 with review fixes. Original implementation by @ozymandiashh.
---
CHANGELOG.md | 7 ++
README.md | 2 +
src/optimize.ts | 201 ++++++++++++++++++++++++++++++-
tests/optimize.test.ts | 265 +++++++++++++++++++++++++++++++++++++++++
4 files changed, 471 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28e2c11..9a86c48 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,13 @@
and suggests starting fresh with only the current goal, relevant files,
failing output, and constraints. Sessions flagged here are excluded from
the cost-outlier finding so the same session is not listed twice.
+- **Worth-it score detector.** New `optimize` finding flags expensive sessions
+ with weak delivery signals: no edit turns, repeated retries, or edit work
+ that never landed in one shot, when no `git`/`gh` delivery command is
+ observed. Framed as a conservative review candidate, not proof of waste.
+ Sessions flagged here take priority and are excluded from both the
+ context-bloat and cost-outlier findings so the same session is not listed
+ more than once.
### Fixed (CLI)
- **Windows Claude project paths.** Claude Code project rollups now prefer
diff --git a/README.md b/README.md
index 7c96264..8c09893 100644
--- a/README.md
+++ b/README.md
@@ -189,6 +189,8 @@ Scans your sessions and your `~/.claude/` setup for waste patterns:
- Bloated `CLAUDE.md` files (with `@-import` expansion counted)
- Cache creation overhead and junk directory reads
- Context-heavy sessions where effective input/cache tokens swamp output
+- Possibly low-worth expensive sessions with no edit turns or repeated retries
+ when no `git`/`gh` delivery command is observed
Each finding shows the estimated token and dollar savings plus a ready-to-paste fix: a `CLAUDE.md` line, an environment variable, or a `mv` command to archive unused items. Findings are ranked by urgency (impact weighted against observed waste) and rolled up into an A to F setup health grade. Repeat runs classify each finding as new, improving, or resolved against a 48-hour recent window.
diff --git a/src/optimize.ts b/src/optimize.ts
index 82874d6..7974c3f 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -89,6 +89,15 @@ const CONTEXT_BLOAT_HIGH_MIN_CANDIDATES = 10
const CONTEXT_BLOAT_GROWTH_RATIO = 2
const CONTEXT_BLOAT_GROWTH_MAX_GAP_MS = 7 * 24 * 60 * 60 * 1000
const CONTEXT_BLOAT_RATIO_DISPLAY_CAP = 1000
+const WORTH_IT_MIN_COST_USD = 2
+const WORTH_IT_NO_EDIT_MIN_COST_USD = 3
+const WORTH_IT_MIN_RETRIES = 3
+const WORTH_IT_RETRY_WITH_EDIT_MIN_RETRIES = 2
+const WORTH_IT_PREVIEW = 5
+const WORTH_IT_LOW_MAX_CANDIDATES = 2
+const WORTH_IT_LOW_MAX_TOTAL_COST_USD = 10
+const WORTH_IT_HIGH_MIN_CANDIDATES = 10
+const WORTH_IT_HIGH_TOTAL_COST_USD = 50
// ============================================================================
// Scoring constants
@@ -1235,6 +1244,179 @@ function formatContextRatio(ratio: number): string {
return ratio.toFixed(1)
}
+// ============================================================================
+// Worth-it / low-worth-session detector helpers
+// ============================================================================
+
+// Use (\s|$|--) instead of \b after commit/push so `git commit-tree` and
+// `git commit-graph` are not treated as deliveries. The `--` clause keeps
+// `git commit --amend` matching as a real delivery command.
+const DELIVERY_COMMAND_PATTERNS = [
+ /(?:^|[;&|]\s*)git\s+(?:commit|push)(?=\s|$|--)(?![^;&|]*--dry-run)/,
+ /(?:^|[;&|]\s*)gh\s+pr\s+(?:create|merge)(?=\s|$|--)(?![^;&|]*--dry-run)/,
+]
+
+function sessionDeliveryCommand(session: ProjectSummary['sessions'][number]): string | null {
+ const commands = Object.keys(session.bashBreakdown)
+ return commands.find(command => DELIVERY_COMMAND_PATTERNS.some(pattern => pattern.test(command))) ?? null
+}
+
+function hasCategoryBreakdownData(session: ProjectSummary['sessions'][number]): boolean {
+ return Object.values(session.categoryBreakdown).some(category =>
+ category.turns > 0
+ || category.costUSD > 0
+ || category.retries > 0
+ || category.editTurns > 0
+ || category.oneShotTurns > 0
+ )
+}
+
+function sessionEditTurns(session: ProjectSummary['sessions'][number]): number {
+ if (hasCategoryBreakdownData(session)) {
+ return Object.values(session.categoryBreakdown).reduce((sum, c) => sum + c.editTurns, 0)
+ }
+ return session.turns.filter(turn => turn.hasEdits).length
+}
+
+function sessionOneShotTurns(session: ProjectSummary['sessions'][number]): number {
+ if (hasCategoryBreakdownData(session)) {
+ return Object.values(session.categoryBreakdown).reduce((sum, c) => sum + c.oneShotTurns, 0)
+ }
+ return session.turns.filter(turn => turn.hasEdits && turn.retries === 0).length
+}
+
+function sessionRetryCount(session: ProjectSummary['sessions'][number]): number {
+ if (hasCategoryBreakdownData(session)) {
+ return Object.values(session.categoryBreakdown).reduce((sum, c) => sum + c.retries, 0)
+ }
+ return session.turns.reduce((sum, turn) => sum + turn.retries, 0)
+}
+
+function sessionTotalTurns(session: ProjectSummary['sessions'][number]): number {
+ if (hasCategoryBreakdownData(session)) {
+ return Object.values(session.categoryBreakdown).reduce((sum, c) => sum + c.turns, 0)
+ }
+ return session.turns.length
+}
+
+// Token-savings estimate for a low-worth candidate. Two regimes:
+// - No-edit sessions: full session tokens are at risk (the session produced
+// no apparent output to weigh against the spend).
+// - Sessions with edits but with retries / no one-shot: only the retry
+// fraction is counted as recoverable. Edits may still have been useful;
+// we credit the model with that and only flag the retry overhead.
+// Ratio is bounded to [0, 1] so retry-heavy sessions with weird turn counts
+// can't claim more than the full session token total.
+function estimateLowWorthRecoverableTokens(
+ session: ProjectSummary['sessions'][number],
+ editTurns: number,
+ retries: number,
+): number {
+ const tokens = sessionTokenTotal(session)
+ if (editTurns === 0) return tokens
+ const totalTurns = sessionTotalTurns(session)
+ if (totalTurns === 0) return 0
+ const fraction = Math.min(1, Math.max(0, retries / totalTurns))
+ return Math.round(tokens * fraction)
+}
+
+export type LowWorthCandidate = {
+ project: string
+ sessionId: string
+ date: string
+ cost: number
+ tokens: number
+ reasons: string[]
+}
+
+export function findLowWorthCandidates(projects: ProjectSummary[]): LowWorthCandidate[] {
+ const candidates: LowWorthCandidate[] = []
+
+ for (const project of projects) {
+ for (const session of project.sessions) {
+ if (session.totalCostUSD < WORTH_IT_MIN_COST_USD) continue
+ if (sessionDeliveryCommand(session)) continue
+
+ const editTurns = sessionEditTurns(session)
+ const oneShotTurns = sessionOneShotTurns(session)
+ const retries = sessionRetryCount(session)
+ const reasons: string[] = []
+
+ if (editTurns === 0 && session.totalCostUSD >= WORTH_IT_NO_EDIT_MIN_COST_USD) {
+ reasons.push('no edit turns')
+ }
+ if (retries >= WORTH_IT_MIN_RETRIES) {
+ reasons.push(`${retries} retries`)
+ }
+ if (
+ editTurns > 0
+ && oneShotTurns === 0
+ && retries >= WORTH_IT_RETRY_WITH_EDIT_MIN_RETRIES
+ ) {
+ reasons.push('no one-shot edit turns')
+ }
+
+ if (reasons.length === 0) continue
+
+ candidates.push({
+ project: project.project,
+ sessionId: session.sessionId,
+ date: session.firstTimestamp.slice(0, 10),
+ cost: session.totalCostUSD,
+ tokens: estimateLowWorthRecoverableTokens(session, editTurns, retries),
+ reasons,
+ })
+ }
+ }
+
+ candidates.sort((a, b) =>
+ b.cost - a.cost
+ || a.date.localeCompare(b.date)
+ || a.project.localeCompare(b.project)
+ || a.sessionId.localeCompare(b.sessionId)
+ )
+ return candidates
+}
+
+export function detectLowWorthSessions(projects: ProjectSummary[]): WasteFinding | null {
+ const candidates = findLowWorthCandidates(projects)
+ if (candidates.length === 0) return null
+
+ const preview = candidates.slice(0, WORTH_IT_PREVIEW)
+ const list = preview
+ .map(s => `${s.project}/${s.sessionId} on ${s.date}: ${formatCost(s.cost)} (${s.reasons.join(', ')})`)
+ .join('; ')
+ const extra = candidates.length > preview.length ? `; +${candidates.length - preview.length} more` : ''
+ // Per-candidate `tokens` is already the recoverable estimate (full session
+ // for no-edit, retry-fraction for edit-with-retries). Sum across candidates.
+ const tokensSaved = Math.round(candidates.reduce((sum, s) => sum + s.tokens, 0))
+ const totalCost = candidates.reduce((sum, s) => sum + s.cost, 0)
+
+ // Three tiers consistent with detectContextBloat: high at >=10 candidates
+ // or >=$50 total spend at risk; low at <=2 candidates AND <$10 total;
+ // medium in between.
+ let impact: Impact
+ if (candidates.length >= WORTH_IT_HIGH_MIN_CANDIDATES || totalCost >= WORTH_IT_HIGH_TOTAL_COST_USD) {
+ impact = 'high'
+ } else if (candidates.length <= WORTH_IT_LOW_MAX_CANDIDATES && totalCost < WORTH_IT_LOW_MAX_TOTAL_COST_USD) {
+ impact = 'low'
+ } else {
+ impact = 'medium'
+ }
+
+ return {
+ title: `${candidates.length} possibly low-worth expensive session${candidates.length === 1 ? '' : 's'}`,
+ explanation: `Sessions with meaningful spend but weak delivery signals: ${list}${extra}. This is a review candidate, not proof of waste: CodeBurn flags missing edit turns, repeated retries, and sessions without git delivery commands so you can decide whether the work was worth its cost before it becomes a habit.`,
+ impact,
+ tokensSaved,
+ fix: {
+ type: 'paste',
+ label: 'Set a delivery checkpoint at the start of the next expensive thread:',
+ text: 'Before continuing, name the deliverable in one sentence (PR title, file changed, command output you expect). Stop and check with me if (a) you spend more than 10 minutes without an edit, or (b) the same approach fails twice. Do not retry past two attempts on any single fix.',
+ },
+ }
+}
+
export type ContextBloatCandidate = {
project: string
sessionId: string
@@ -1302,8 +1484,9 @@ export function findContextBloatCandidates(projects: ProjectSummary[]): ContextB
return candidates
}
-export function detectContextBloat(projects: ProjectSummary[]): WasteFinding | null {
+export function detectContextBloat(projects: ProjectSummary[], excludedSessionIds?: ReadonlySet): WasteFinding | null {
const candidates = findContextBloatCandidates(projects)
+ .filter(c => !excludedSessionIds?.has(c.sessionId))
if (candidates.length === 0) return null
const preview = candidates.slice(0, CONTEXT_BLOAT_PREVIEW)
@@ -1530,7 +1713,16 @@ export async function scanAndDetect(
const mcpCoverage = aggregateMcpCoverage(projects)
const findings: WasteFinding[] = []
- const contextBloatSessionIds = new Set(findContextBloatCandidates(projects).map(c => c.sessionId))
+ // Priority order for the per-session findings: low-worth → context-bloat →
+ // outliers. Each later detector excludes sessions already named by an
+ // earlier one so a single session is not listed in three findings.
+ const lowWorthSessionIds = new Set(findLowWorthCandidates(projects).map(c => c.sessionId))
+ const contextBloatVisibleIds = new Set(
+ findContextBloatCandidates(projects)
+ .filter(c => !lowWorthSessionIds.has(c.sessionId))
+ .map(c => c.sessionId),
+ )
+ const outlierExclusions = new Set([...lowWorthSessionIds, ...contextBloatVisibleIds])
const syncDetectors: Array<() => WasteFinding | null> = [
() => detectCacheBloat(apiCalls, projects, dateRange),
() => detectLowReadEditRatio(toolCalls),
@@ -1538,8 +1730,9 @@ export async function scanAndDetect(
() => detectDuplicateReads(toolCalls, dateRange),
() => detectUnusedMcp(toolCalls, projects, projectCwds, mcpCoverage),
() => detectMcpToolCoverage(projects, mcpCoverage),
- () => detectContextBloat(projects),
- () => detectSessionOutliers(projects, contextBloatSessionIds),
+ () => detectLowWorthSessions(projects),
+ () => detectContextBloat(projects, lowWorthSessionIds),
+ () => detectSessionOutliers(projects, outlierExclusions),
() => detectBloatedClaudeMd(projectCwds),
() => detectBashBloat(),
]
diff --git a/tests/optimize.test.ts b/tests/optimize.test.ts
index b84eab2..8fb30e8 100644
--- a/tests/optimize.test.ts
+++ b/tests/optimize.test.ts
@@ -7,6 +7,7 @@ import {
detectCacheBloat,
detectBloatedClaudeMd,
detectContextBloat,
+ detectLowWorthSessions,
detectSessionOutliers,
computeHealth,
computeTrend,
@@ -504,6 +505,270 @@ describe('detectContextBloat', () => {
// the second session must still anchor against it.
expect(finding!.explanation).toContain('5.0x previous session input')
})
+
+ it('honors excludedSessionIds passed by the orchestrator', () => {
+ const project = projectWithContextSessions([
+ contextSession(0, {
+ totalInputTokens: 90_000,
+ totalCacheReadTokens: 30_000,
+ totalOutputTokens: 2_000,
+ }),
+ ])
+
+ const finding = detectContextBloat([project], new Set(['s1']))
+ expect(finding).toBeNull()
+ })
+})
+
+type LowWorthTurn = TestSession['turns'][number]
+
+function lowWorthTurn(overrides: Partial = {}): LowWorthTurn {
+ return {
+ userMessage: 'do the work',
+ assistantCalls: [],
+ timestamp: '2026-05-01T10:00:00Z',
+ sessionId: 's1',
+ category: 'coding',
+ retries: 0,
+ hasEdits: false,
+ ...overrides,
+ }
+}
+
+function lowWorthSession(cost: number, i: number, overrides: Partial = {}, project = 'app'): TestSession {
+ const tokens = Math.round(cost * 1000)
+ return {
+ sessionId: `s${i + 1}`,
+ project,
+ firstTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:00:00Z`,
+ lastTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:30:00Z`,
+ totalCostUSD: cost,
+ totalInputTokens: tokens,
+ totalOutputTokens: tokens,
+ totalCacheReadTokens: 0,
+ totalCacheWriteTokens: 0,
+ apiCalls: 1,
+ turns: [],
+ modelBreakdown: {},
+ toolBreakdown: {},
+ mcpBreakdown: {},
+ bashBreakdown: {},
+ categoryBreakdown: {} as TestSession['categoryBreakdown'],
+ skillBreakdown: {},
+ ...overrides,
+ }
+}
+
+function projectWithLowWorthSessions(sessions: TestSession[], project = 'app'): ProjectSummary {
+ return {
+ project,
+ projectPath: `/tmp/${project}`,
+ sessions,
+ totalCostUSD: sessions.reduce((sum, s) => sum + s.totalCostUSD, 0),
+ totalApiCalls: sessions.reduce((sum, s) => sum + s.apiCalls, 0),
+ }
+}
+
+describe('detectLowWorthSessions', () => {
+ it('returns null for cheap sessions', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(1.99, 0, { turns: [lowWorthTurn({ hasEdits: false })] }),
+ ])
+ expect(detectLowWorthSessions([project])).toBeNull()
+ })
+
+ it('does not flag the no-edit cost boundary', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(2.99, 0, { turns: [lowWorthTurn({ hasEdits: false })] }),
+ ])
+ expect(detectLowWorthSessions([project])).toBeNull()
+ })
+
+ it('flags expensive sessions with no edit turns', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(4, 0, { turns: [lowWorthTurn({ hasEdits: false })] }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.title).toContain('possibly low-worth')
+ expect(finding!.explanation).toContain('app/s1')
+ expect(finding!.explanation).toContain('no edit turns')
+ // sessionTokenTotal = input + output + cache. The lowWorthSession helper
+ // sets input=output=cost*1000, so the savings ceiling is 2x cost*1000.
+ expect(finding!.tokensSaved).toBe(8_000)
+ })
+
+ it('flags retry-heavy sessions', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(2.5, 0, {
+ turns: [
+ lowWorthTurn({ hasEdits: true, retries: 1 }),
+ lowWorthTurn({ hasEdits: true, retries: 2 }),
+ ],
+ }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('3 retries')
+ })
+
+ it('estimates recoverable tokens by retry fraction for sessions with edits', () => {
+ // 4 turns, 2 retries spread across 2 edits, 0 one-shot edits → trips the
+ // 'no one-shot edit turns' reason. totalTurns=4, fraction=2/4=0.5,
+ // sessionTokenTotal=8K, so recoverable savings ceiling is 4K — half the
+ // session, not the full ceiling that no-edit sessions get.
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(4, 0, {
+ turns: [
+ lowWorthTurn({ hasEdits: true, retries: 1 }),
+ lowWorthTurn({ hasEdits: true, retries: 1 }),
+ lowWorthTurn({ hasEdits: false }),
+ lowWorthTurn({ hasEdits: false }),
+ ],
+ }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.tokensSaved).toBe(4_000)
+ })
+
+ it('uses full session tokens as the savings ceiling for no-edit sessions', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(4, 0, { turns: [lowWorthTurn({ hasEdits: false })] }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ // No edits at all -> entire session is at risk. sessionTokenTotal = 8K.
+ expect(finding!.tokensSaved).toBe(8_000)
+ })
+
+ it('keeps all reasons that apply to the same session', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(4, 0, {
+ turns: [
+ lowWorthTurn({ hasEdits: false, retries: 1 }),
+ lowWorthTurn({ hasEdits: false, retries: 2 }),
+ ],
+ }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('no edit turns')
+ expect(finding!.explanation).toContain('3 retries')
+ })
+
+ it('flags edit sessions with retries but no one-shot edit turns via categoryBreakdown', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(2.25, 0, {
+ categoryBreakdown: {
+ coding: { turns: 2, costUSD: 2.25, retries: 2, editTurns: 2, oneShotTurns: 0 },
+ } as TestSession['categoryBreakdown'],
+ }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ expect(finding).not.toBeNull()
+ expect(finding!.explanation).toContain('no one-shot edit turns')
+ })
+
+ it('skips sessions with a git delivery command', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(8, 0, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ bashBreakdown: { 'cd /tmp/app && git commit -m "ship fix"': { calls: 1 } },
+ }),
+ ])
+ expect(detectLowWorthSessions([project])).toBeNull()
+ })
+
+ it('skips sessions with gh pr create', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(8, 0, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ bashBreakdown: { 'gh pr create --fill': { calls: 1 } },
+ }),
+ ])
+ expect(detectLowWorthSessions([project])).toBeNull()
+ })
+
+ it('does not treat read-only git commands as delivery', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(8, 0, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ bashBreakdown: { 'git tag -l': { calls: 1 } },
+ }),
+ ])
+ expect(detectLowWorthSessions([project])).not.toBeNull()
+ })
+
+ it('does not treat dry-run git commands as delivery', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(8, 0, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ bashBreakdown: { 'git push --dry-run origin main': { calls: 1 } },
+ }),
+ ])
+ expect(detectLowWorthSessions([project])).not.toBeNull()
+ })
+
+ it('does not treat git commit-tree as a delivery command', () => {
+ // Regex must match `git commit` only, not `git commit-tree` /
+ // `git commit-graph`. Without the (?:\s|$|--) lookahead this would be a
+ // false positive and the session would silently skip detection.
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(8, 0, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ bashBreakdown: { 'git commit-tree HEAD^{tree}': { calls: 1 } },
+ }),
+ ])
+ expect(detectLowWorthSessions([project])).not.toBeNull()
+ })
+
+ it('still treats `git commit --amend` as a delivery command', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(8, 0, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ bashBreakdown: { 'git commit --amend --no-edit': { calls: 1 } },
+ }),
+ ])
+ expect(detectLowWorthSessions([project])).toBeNull()
+ })
+
+ it('uses low impact for a single small candidate', () => {
+ const project = projectWithLowWorthSessions([
+ lowWorthSession(4, 0, { turns: [lowWorthTurn({ hasEdits: false })] }),
+ ])
+ const finding = detectLowWorthSessions([project])
+ expect(finding!.impact).toBe('low')
+ })
+
+ it('uses medium impact between low and high tiers', () => {
+ const project = projectWithLowWorthSessions(
+ Array.from({ length: 3 }, (_, i) => lowWorthSession(4, i, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ })),
+ )
+ const finding = detectLowWorthSessions([project])
+ expect(finding!.impact).toBe('medium')
+ })
+
+ it('uses high impact at 10 or more candidates', () => {
+ const project = projectWithLowWorthSessions(
+ Array.from({ length: 10 }, (_, i) => lowWorthSession(3, i, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ })),
+ )
+ const finding = detectLowWorthSessions([project])
+ expect(finding!.impact).toBe('high')
+ })
+
+ it('summarizes additional candidates after the preview limit', () => {
+ const project = projectWithLowWorthSessions(
+ Array.from({ length: 6 }, (_, i) => lowWorthSession(4 + i, i, {
+ turns: [lowWorthTurn({ hasEdits: false })],
+ })),
+ )
+ const finding = detectLowWorthSessions([project])
+ expect(finding!.explanation).toContain('; +1 more')
+ })
})
describe('detectSessionOutliers', () => {
From c782907de8a338fb73c3cd986c91e096565c91cb Mon Sep 17 00:00:00 2001
From: brunoleemann-code
Date: Wed, 6 May 2026 18:40:03 +0200
Subject: [PATCH 051/115] Fix cli-plan test failing on Windows
os.homedir() on Windows uses USERPROFILE, not HOME. Set both env vars
in the test so the temp dir is respected as the home directory on all
platforms.
---
tests/cli-plan.test.ts | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/cli-plan.test.ts b/tests/cli-plan.test.ts
index b146f2a..1430eb7 100644
--- a/tests/cli-plan.test.ts
+++ b/tests/cli-plan.test.ts
@@ -11,6 +11,9 @@ function runCli(args: string[], home: string) {
env: {
...process.env,
HOME: home,
+ USERPROFILE: home, // os.homedir() uses USERPROFILE on Windows
+ HOMEPATH: home,
+ HOMEDRIVE: '',
},
encoding: 'utf-8',
})
From 3c8ce32bf38383255306ca85af7bea44f4b77628 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Wed, 6 May 2026 10:52:55 -0700
Subject: [PATCH 052/115] Fix popover anchor, tab strip flicker, and stale-data
refresh
Five interleaving menubar regressions traced back to the cache-wipe and
showLoading additions in 18c3c8f, surfaced by adversarial multi-agent
review against the v0.9.6 baseline.
- forceRefresh no longer calls store.invalidateCache(). Wiping the
whole cache on every wake or manual refresh emptied todayPayload,
flipped showAgentTabs to false, and made cache[key] == nil for all
keys, which forced the full-popover loading overlay over already
rendered data. The day-rollover guard inside refresh() still wipes
the cache when the calendar date changes, so the legitimate part of
18c3c8f is preserved.
- Overlay condition is now !store.hasCachedData. Without this, the
popover briefly rendered $0.00 placeholders before the overlay slid
in on a cold key, and reflashed the overlay on every manual refresh
even when fresh data was on screen.
- refreshStatusButton skips while popover is anchored. Rewriting the
button's attributedTitle changes its intrinsic width, which makes
macOS reflow the status item and detaches the anchored popover to
the screen's top-left default position. popoverDidClose runs the
refresh once so the menubar title catches up immediately on
dismiss.
- showAgentTabs is sticky via hasAnyProvidersInCache. Prevents the
one-frame flicker where the tab strip vanished while the new key's
payload had not yet arrived.
- observeStore tracks store.currency. Without this, switching
currency did not propagate to refreshStatusButton until the next
30s payload tick, leaving the menubar showing the old currency
symbol and rate.
- Day-rollover race in refresh and refreshQuietly: capture cacheDate
at fetch start, drop the write if the calendar date changed during
the await. Prevents an in-flight fetch from yesterday polluting
today's freshly cleared cache.
- Manual refresh button passes showLoading: true again. Safe now that
the overlay is gated on cache state instead of isLoading; the
refresh button icon swaps to the spinner glyph for visible feedback,
while the popover body keeps the existing data and updates when the
fetch lands.
---
mac/Sources/CodeBurnMenubar/AppStore.swift | 19 +++++++++++++
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 27 ++++++++++++++++++-
.../Views/MenuBarContent.swift | 19 ++++++++++++-
3 files changed, 63 insertions(+), 2 deletions(-)
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index af1947a..00b4283 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -61,6 +61,14 @@ final class AppStore {
cache[currentKey] != nil
}
+ /// True if any cached payload reports at least one provider. Used to keep the
+ /// AgentTabStrip visible across period/provider switches even when the current
+ /// key's payload is briefly empty (e.g. immediately after a `switchTo` and
+ /// before the new fetch lands).
+ var hasAnyProvidersInCache: Bool {
+ cache.values.contains { !$0.payload.current.providers.isEmpty }
+ }
+
var findingsCount: Int {
payload.optimize.findingCount
}
@@ -117,6 +125,7 @@ final class AppStore {
func refresh(includeOptimize: Bool, force: Bool = false, showLoading: Bool = false) async {
invalidateStaleDayCache()
let key = currentKey
+ let cacheDateAtStart = cacheDate
if !force, cache[key]?.isFresh == true { return }
if !force, inFlightKeys.contains(key) { return }
inFlightKeys.insert(key)
@@ -131,6 +140,11 @@ final class AppStore {
do {
let fresh = try await DataClient.fetch(period: key.period, provider: key.provider, includeOptimize: includeOptimize)
guard !Task.isCancelled else { return }
+ // Day-rollover race guard: if the calendar date changed during the
+ // fetch, this payload was computed against yesterday's date and
+ // would pollute today's freshly-cleared cache. Drop it; the next
+ // tick will refetch with today's data.
+ if cacheDate != cacheDateAtStart { return }
cache[key] = CachedPayload(payload: fresh, fetchedAt: Date())
lastError = nil
} catch {
@@ -140,6 +154,7 @@ final class AppStore {
do {
let fallback = try await DataClient.fetch(period: key.period, provider: key.provider, includeOptimize: false)
guard !Task.isCancelled else { return }
+ if cacheDate != cacheDateAtStart { return }
cache[key] = CachedPayload(payload: fallback, fetchedAt: Date())
lastError = nil
return
@@ -162,8 +177,12 @@ final class AppStore {
/// Always uses the .all provider since the menubar badge shows total spend.
func refreshQuietly(period: Period) async {
invalidateStaleDayCache()
+ let cacheDateAtStart = cacheDate
do {
let fresh = try await DataClient.fetch(period: period, provider: .all, includeOptimize: false)
+ // Same day-rollover guard as refresh(): drop yesterday's payload if
+ // the calendar rolled over during the fetch.
+ if cacheDate != cacheDateAtStart { return }
cache[PayloadCacheKey(period: period, provider: .all)] = CachedPayload(payload: fresh, fetchedAt: Date())
} catch {
NSLog("CodeBurn: quiet refresh failed for \(period.rawValue): \(error)")
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index bf5bacf..4e9d07b 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -170,7 +170,16 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
guard now.timeIntervalSince(lastRefreshTime) > 5 else { return }
lastRefreshTime = now
- store.invalidateCache()
+ // Note: do NOT call store.invalidateCache() here. The day-rollover guard
+ // inside refresh() already wipes the cache when the calendar date has
+ // changed; wiping unconditionally on every wake/manual-refresh empties
+ // todayPayload, makes showAgentTabs go false, and triggers the
+ // full-popover loading overlay (because cache[key] == nil after wipe).
+ // That's the regression chain documented in the multi-agent review.
+ //
+ // showLoading: true is fine now that the overlay condition is
+ // `!hasCachedData`: it lights up the refresh-button spinner glyph
+ // without covering the popover body.
Task {
async let main: Void = store.refresh(includeOptimize: false, force: true, showLoading: true)
async let today: Void = store.refreshQuietly(period: .today)
@@ -219,6 +228,9 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
withObservationTracking {
_ = store.payload
_ = store.todayPayload
+ // Track currency too so the menubar title catches up immediately on
+ // currency switch instead of waiting for the next 30s payload tick.
+ _ = store.currency
} onChange: { [weak self] in
DispatchQueue.main.async {
guard let self else { return }
@@ -270,6 +282,13 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
/// flow as one typographic unit with a single, controllable gap.
private func refreshStatusButton() {
guard let button = statusItem.button else { return }
+ // Skip while the popover is anchored to this button. Rewriting the
+ // attributedTitle changes the button's intrinsic width, which makes
+ // macOS reflow the status item in the menubar and detaches the
+ // anchored popover (it pops to a stale default position). The
+ // popoverDidClose delegate calls back through here once the popover
+ // is dismissed so the menubar cost catches up immediately on close.
+ if popover != nil && popover.isShown { return }
// Clear any previously-set image so the attachment is the only glyph rendered.
button.image = nil
@@ -398,4 +417,10 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
func popoverShouldDetach(_ popover: NSPopover) -> Bool {
false
}
+
+ func popoverDidClose(_ notification: Notification) {
+ // Catch up on any menubar title updates that were skipped while the
+ // popover was anchored.
+ refreshStatusButton()
+ }
}
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 2315353..6e3719f 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -41,7 +41,15 @@ struct MenuBarContent: View {
}
}
- if store.isLoading || (providerHasCostInAllPayload && !store.hasCachedData) {
+ // Overlay fires only on cold cache for the current key. This
+ // avoids the 1-frame `$0.00` flash on first-time period/provider
+ // switches (the body would otherwise render the empty payload
+ // for the runloop tick before the overlay slides in). With the
+ // cache no longer being wiped on every wake/manual-refresh,
+ // hasCachedData==false now means "we have never fetched this
+ // key before in this session", which is the right time to
+ // cover the popover.
+ if !store.hasCachedData {
BurnLoadingOverlay(periodLabel: store.selectedPeriod.rawValue)
.transition(.opacity)
}
@@ -79,6 +87,10 @@ struct MenuBarContent: View {
/// on this machine. Hidden only when nothing is detected, which means there's
/// nothing to filter by anyway.
private var showAgentTabs: Bool {
+ // Sticky: once any cached payload has reported providers, keep the tab strip
+ // visible. Without this, the strip disappears for one frame on a period
+ // switch when the new key's payload is still empty.
+ if store.hasAnyProvidersInCache { return true }
let payload = store.todayPayload ?? store.payload
return !payload.current.providers.isEmpty
}
@@ -407,6 +419,11 @@ struct FooterBar: View {
.fixedSize()
Button {
+ // showLoading: true is safe now that the overlay condition uses
+ // `!hasCachedData` instead of `isLoading`. The button icon swaps
+ // to the spinner glyph (driven by store.isLoading), giving the
+ // user visible feedback the click was registered, but the
+ // popover body keeps the existing data instead of blanking out.
Task { await store.refresh(includeOptimize: false, force: true, showLoading: true) }
} label: {
Image(systemName: store.isLoading ? "arrow.triangle.2.circlepath" : "arrow.clockwise")
From 6e704271c96824a366b46586e4bdf5b2e7367379 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Wed, 6 May 2026 10:56:29 -0700
Subject: [PATCH 053/115] chore: sync lockfile to package.json 0.9.6
---
package-lock.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index fc1cf6b..a4a6869 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "codeburn",
- "version": "0.9.5",
+ "version": "0.9.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "codeburn",
- "version": "0.9.5",
+ "version": "0.9.6",
"license": "MIT",
"dependencies": {
"chalk": "^5.4.1",
From 2817ebff472eb6eb4fb6340cfe81687db7a6c311 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Wed, 6 May 2026 10:56:45 -0700
Subject: [PATCH 054/115] chore: refresh litellm pricing snapshot
---
src/data/litellm-snapshot.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/data/litellm-snapshot.json b/src/data/litellm-snapshot.json
index 25482e9..774928a 100644
--- a/src/data/litellm-snapshot.json
+++ b/src/data/litellm-snapshot.json
@@ -1 +1 @@
-{"ai21.j2-mid-v1":[0.0000125,0.0000125,null,null],"ai21.j2-ultra-v1":[0.0000188,0.0000188,null,null],"ai21.jamba-1-5-large-v1:0":[0.000002,0.000008,null,null],"ai21.jamba-1-5-mini-v1:0":[2e-7,4e-7,null,null],"ai21.jamba-instruct-v1:0":[5e-7,7e-7,null,null],"us.writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"us.writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"apac.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"apac.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"eu.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"eu.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"us.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"us.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"amazon.nova-2-multimodal-embeddings-v1:0":[1.35e-7,0,null,null],"amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"amazon.rerank-v1:0":[0,0,null,null],"amazon.titan-embed-image-v1":[8e-7,0,null,null],"amazon.titan-embed-text-v1":[1e-7,0,null,null],"amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"us.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"eu.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-7-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"global.anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-mythos-preview":[0,0,null,null],"global.anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-v1":[0.000008,0.000024,null,null],"anthropic.claude-v2:1":[0.000008,0.000024,null,null],"apac.amazon.nova-lite-v1:0":[6.3e-8,2.52e-7,null,null],"apac.amazon.nova-micro-v1:0":[3.7e-8,1.48e-7,null,null],"apac.amazon.nova-pro-v1:0":[8.4e-7,0.00000336,null,null],"apac.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"apac.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"apac.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"au.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"babbage-002":[4e-7,4e-7,null,null],"chatdolphin":[5e-7,5e-7,null,null],"chatgpt-4o-latest":[0.000005,0.000015,null,null],"gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"claude-haiku-4-5-20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"claude-3-7-sonnet-20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-haiku-20240307":[2.5e-7,0.00000125,3e-7,3e-8],"claude-3-opus-20240229":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-opus-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-sonnet-20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1-20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-5-20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6-20260205":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7-20260416":[0.000005,0.000025,0.00000625,5e-7],"claude-sonnet-4-20250514":[0.000003,0.000015,0.00000375,3e-7],"codex-mini-latest":[0.0000015,0.000006,null,3.75e-7],"cohere.command-light-text-v14":[3e-7,6e-7,null,null],"cohere.command-r-plus-v1:0":[0.000003,0.000015,null,null],"cohere.command-r-v1:0":[5e-7,0.0000015,null,null],"cohere.command-text-v14":[0.0000015,0.000002,null,null],"cohere.embed-english-v3":[1e-7,0,null,null],"cohere.embed-multilingual-v3":[1e-7,0,null,null],"cohere.embed-v4:0":[1.2e-7,0,null,null],"cohere.rerank-v3-5:0":[0,0,null,null],"command":[0.000001,0.000002,null,null],"command-a-03-2025":[0.0000025,0.00001,null,null],"command-light":[3e-7,6e-7,null,null],"command-nightly":[0.000001,0.000002,null,null],"command-r":[1.5e-7,6e-7,null,null],"command-r-08-2024":[1.5e-7,6e-7,null,null],"command-r-plus":[0.0000025,0.00001,null,null],"command-r-plus-08-2024":[0.0000025,0.00001,null,null],"command-r7b-12-2024":[1.5e-7,3.75e-8,null,null],"computer-use-preview":[0.000003,0.000012,null,null],"deepseek-chat":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"davinci-002":[0.000002,0.000002,null,null],"deepseek.v3-v1:0":[5.8e-7,0.00000168,null,null],"deepseek.v3.2":[6.2e-7,0.00000185,null,null],"dolphin":[5e-7,5e-7,null,null],"deepseek-v3-2-251201":[0,0,null,null],"glm-4-7-251222":[0,0,null,null],"kimi-k2-thinking-251104":[0,0,null,null],"doubao-embedding":[0,0,null,null],"doubao-embedding-large":[0,0,null,null],"doubao-embedding-large-text-240915":[0,0,null,null],"doubao-embedding-large-text-250515":[0,0,null,null],"doubao-embedding-text-240715":[0,0,null,null],"embed-english-light-v2.0":[1e-7,0,null,null],"embed-english-light-v3.0":[1e-7,0,null,null],"embed-english-v2.0":[1e-7,0,null,null],"embed-english-v3.0":[1e-7,0,null,null],"embed-multilingual-v2.0":[1e-7,0,null,null],"embed-multilingual-v3.0":[1e-7,0,null,null],"embed-multilingual-light-v3.0":[0.0001,0,null,null],"eu.amazon.nova-lite-v1:0":[7.8e-8,3.12e-7,null,null],"eu.amazon.nova-micro-v1:0":[4.6e-8,1.84e-7,null,null],"eu.amazon.nova-pro-v1:0":[0.00000105,0.0000042,null,null],"eu.anthropic.claude-3-5-haiku-20241022-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.meta.llama3-2-1b-instruct-v1:0":[1.3e-7,1.3e-7,null,null],"eu.meta.llama3-2-3b-instruct-v1:0":[1.9e-7,1.9e-7,null,null],"eu.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"fireworks-ai-4.1b-to-16b":[2e-7,2e-7,null,null],"fireworks-ai-56b-to-176b":[0.0000012,0.0000012,null,null],"fireworks-ai-above-16b":[9e-7,9e-7,null,null],"fireworks-ai-default":[0,0,null,null],"fireworks-ai-embedding-150m-to-350m":[1.6e-8,0,null,null],"fireworks-ai-embedding-up-to-150m":[8e-9,0,null,null],"fireworks-ai-moe-up-to-56b":[5e-7,5e-7,null,null],"fireworks-ai-up-to-4b":[2e-7,2e-7,null,null],"ft:babbage-002":[0.0000016,0.0000016,null,null],"ft:davinci-002":[0.000012,0.000012,null,null],"ft:gpt-3.5-turbo":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0125":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0613":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-1106":[0.000003,0.000006,null,null],"ft:gpt-4-0613":[0.00003,0.00006,null,null],"ft:gpt-4o-2024-08-06":[0.00000375,0.000015,null,0.000001875],"ft:gpt-4o-2024-11-20":[0.00000375,0.000015,0.000001875,null],"ft:gpt-4o-mini-2024-07-18":[3e-7,0.0000012,null,1.5e-7],"ft:gpt-4.1-2025-04-14":[0.000003,0.000012,null,7.5e-7],"ft:gpt-4.1-mini-2025-04-14":[8e-7,0.0000032,null,2e-7],"ft:gpt-4.1-nano-2025-04-14":[2e-7,8e-7,null,5e-8],"ft:o4-mini-2025-04-16":[0.000004,0.000016,null,0.000001],"gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini-2.0-flash-001":[1.5e-7,6e-7,null,3.75e-8],"gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini-embedding-001":[1.5e-7,0,null,null],"gemini-embedding-2-preview":[2e-7,0,null,null],"gemini-embedding-2":[2e-7,0,null,null],"gemini-flash-experimental":[0,0,null,null],"gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"google.gemma-3-12b-it":[9e-8,2.9e-7,null,null],"google.gemma-3-27b-it":[2.3e-7,3.8e-7,null,null],"google.gemma-3-4b-it":[4e-8,8e-8,null,null],"global.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"global.amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"gpt-3.5-turbo":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-1106":[0.000001,0.000002,null,null],"gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-4":[0.00003,0.00006,null,null],"gpt-4-0125-preview":[0.00001,0.00003,null,null],"gpt-4-0314":[0.00003,0.00006,null,null],"gpt-4-0613":[0.00003,0.00006,null,null],"gpt-4-1106-preview":[0.00001,0.00003,null,null],"gpt-4-turbo":[0.00001,0.00003,null,null],"gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"gpt-4-turbo-preview":[0.00001,0.00003,null,null],"gpt-4.1":[0.000002,0.000008,null,5e-7],"gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"gpt-4o":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"gpt-4o-audio-preview":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2025-06-03":[0.0000025,0.00001,null,null],"gpt-audio":[0.0000025,0.00001,null,null],"gpt-audio-1.5":[0.0000025,0.00001,null,null],"gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"gpt-audio-mini":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-12-15":[6e-7,0.0000024,null,null],"gpt-4o-mini":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-2024-07-18":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-audio-preview":[1.5e-7,6e-7,null,null],"gpt-4o-mini-audio-preview-2024-12-17":[1.5e-7,6e-7,null,null],"gpt-4o-mini-realtime-preview":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-search-preview":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-search-preview-2025-03-11":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"gpt-4o-realtime-preview":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2025-06-03":[0.000005,0.00002,null,0.0000025],"gpt-4o-search-preview":[0.0000025,0.00001,null,0.00000125],"gpt-4o-search-preview-2025-03-11":[0.0000025,0.00001,null,0.00000125],"gpt-4o-transcribe":[0.0000025,0.00001,null,null],"gpt-image-1.5":[0.000005,0.00001,null,0.00000125],"gpt-image-1.5-2025-12-16":[0.000005,0.00001,null,0.00000125],"gpt-image-2":[0.000005,0.00001,null,0.00000125],"gpt-image-2-2026-04-21":[0.000005,0.00001,null,0.00000125],"gpt-5":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-pro":[0.000021,0.000168,null,null],"gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"gpt-5.5":[0.000005,0.00003,null,5e-7],"gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"gpt-5-pro":[0.000015,0.00012,null,null],"gpt-5-pro-2025-10-06":[0.000015,0.00012,null,null],"gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-nano":[5e-8,4e-7,null,5e-9],"gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"gpt-realtime":[0.000004,0.000016,null,4e-7],"gpt-realtime-1.5":[0.000004,0.000016,null,4e-7],"gpt-realtime-mini":[6e-7,0.0000024,null,null],"gpt-realtime-2025-08-28":[0.000004,0.000016,null,4e-7],"j2-light":[0.000003,0.000003,null,null],"j2-mid":[0.00001,0.00001,null,null],"j2-ultra":[0.000015,0.000015,null,null],"jamba-1.5":[2e-7,4e-7,null,null],"jamba-1.5-large":[0.000002,0.000008,null,null],"jamba-1.5-large@001":[0.000002,0.000008,null,null],"jamba-1.5-mini":[2e-7,4e-7,null,null],"jamba-1.5-mini@001":[2e-7,4e-7,null,null],"jamba-large-1.6":[0.000002,0.000008,null,null],"jamba-large-1.7":[0.000002,0.000008,null,null],"jamba-mini-1.6":[2e-7,4e-7,null,null],"jamba-mini-1.7":[2e-7,4e-7,null,null],"jina-reranker-v2-base-multilingual":[1.8e-8,1.8e-8,null,null],"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"jp.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"meta.llama2-13b-chat-v1":[7.5e-7,0.000001,null,null],"meta.llama2-70b-chat-v1":[0.00000195,0.00000256,null,null],"meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"minimax.minimax-m2":[3e-7,0.0000012,null,null],"minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"mistral.devstral-2-123b":[4e-7,0.000002,null,null],"mistral.magistral-small-2509":[5e-7,0.0000015,null,null],"mistral.ministral-3-14b-instruct":[2e-7,2e-7,null,null],"mistral.ministral-3-3b-instruct":[1e-7,1e-7,null,null],"mistral.ministral-3-8b-instruct":[1.5e-7,1.5e-7,null,null],"mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"mistral.mistral-large-2407-v1:0":[0.000003,0.000009,null,null],"mistral.mistral-large-3-675b-instruct":[5e-7,0.0000015,null,null],"mistral.mistral-small-2402-v1:0":[0.000001,0.000003,null,null],"mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"mistral.voxtral-mini-3b-2507":[4e-8,4e-8,null,null],"mistral.voxtral-small-24b-2507":[1e-7,3e-7,null,null],"moonshot.kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"multimodalembedding":[8e-7,0,null,null],"multimodalembedding@001":[8e-7,0,null,null],"nvidia.nemotron-nano-12b-v2":[2e-7,6e-7,null,null],"nvidia.nemotron-nano-9b-v2":[6e-8,2.3e-7,null,null],"nvidia.nemotron-nano-3-30b":[6e-8,2.4e-7,null,null],"nvidia.nemotron-super-3-120b":[1.5e-7,6.5e-7,null,null],"o1":[0.000015,0.00006,null,0.0000075],"o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"o1-pro":[0.00015,0.0006,null,null],"o1-pro-2025-03-19":[0.00015,0.0006,null,null],"o3":[0.000002,0.000008,null,5e-7],"o3-2025-04-16":[0.000002,0.000008,null,5e-7],"o3-deep-research":[0.00001,0.00004,null,0.0000025],"o3-deep-research-2025-06-26":[0.00001,0.00004,null,0.0000025],"o3-mini":[0.0000011,0.0000044,null,5.5e-7],"o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"o3-pro":[0.00002,0.00008,null,null],"o3-pro-2025-06-10":[0.00002,0.00008,null,null],"o4-mini":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-deep-research":[0.000002,0.000008,null,5e-7],"o4-mini-deep-research-2025-06-26":[0.000002,0.000008,null,5e-7],"omni-moderation-2024-09-26":[0,0,null,null],"omni-moderation-latest":[0,0,null,null],"openai.gpt-oss-120b-1:0":[1.5e-7,6e-7,null,null],"openai.gpt-oss-20b-1:0":[7e-8,3e-7,null,null],"openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-safeguard-20b":[7e-8,2e-7,null,null],"qwen.qwen3-coder-480b-a35b-v1:0":[2.2e-7,0.0000018,null,null],"qwen.qwen3-235b-a22b-2507-v1:0":[2.2e-7,8.8e-7,null,null],"qwen.qwen3-coder-30b-a3b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-32b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-next-80b-a3b":[1.5e-7,0.0000012,null,null],"qwen.qwen3-vl-235b-a22b":[5.3e-7,0.00000266,null,null],"qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"rerank-english-v2.0":[0,0,null,null],"rerank-english-v3.0":[0,0,null,null],"rerank-multilingual-v2.0":[0,0,null,null],"rerank-multilingual-v3.0":[0,0,null,null],"rerank-v3.5":[0,0,null,null],"text-embedding-004":[1e-7,0,null,null],"text-embedding-005":[1e-7,0,null,null],"text-embedding-3-large":[1.3e-7,0,null,null],"text-embedding-3-small":[2e-8,0,null,null],"text-embedding-ada-002":[1e-7,0,null,null],"text-embedding-ada-002-v2":[1e-7,0,null,null],"text-embedding-large-exp-03-07":[1e-7,0,null,null],"text-embedding-preview-0409":[6.25e-9,0,null,null],"text-moderation-007":[0,0,null,null],"text-moderation-latest":[0,0,null,null],"text-moderation-stable":[0,0,null,null],"text-multilingual-embedding-002":[1e-7,0,null,null],"text-unicorn":[0.00001,0.000028,null,null],"text-unicorn@001":[0.00001,0.000028,null,null],"together-ai-21.1b-41b":[8e-7,8e-7,null,null],"together-ai-4.1b-8b":[2e-7,2e-7,null,null],"together-ai-41.1b-80b":[9e-7,9e-7,null,null],"together-ai-8.1b-21b":[3e-7,3e-7,null,null],"together-ai-81.1b-110b":[0.0000018,0.0000018,null,null],"together-ai-embedding-151m-to-350m":[1.6e-8,0,null,null],"together-ai-embedding-up-to-150m":[8e-9,0,null,null],"together-ai-up-to-4b":[1e-7,1e-7,null,null],"us.amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"us.amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"us.amazon.nova-premier-v1:0":[0.0000025,0.0000125,null,null],"us.amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"us.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"us.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-opus-4-5-20251101-v1:0":[0.0000055,0.0000275,0.000006875,5.5e-7],"global.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"eu.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.deepseek.r1-v1:0":[0.00000135,0.0000054,null,null],"us.deepseek.v3.2":[6.2e-7,0.00000185,null,null],"eu.deepseek.v3.2":[7.4e-7,0.00000222,null,null],"us.meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"us.meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"us.meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"us.meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"us.meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"us.meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"us.meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"us.meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"us.meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"us.meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"us.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"zai.glm-4.7":[6e-7,0.0000022,null,null],"zai.glm-4.7-flash":[7e-8,4e-7,null,null],"zai.glm-5":[0.000001,0.0000032,null,null],"gpt-4o-mini-tts-2025-03-20":[0.0000025,0.00001,null,null],"gpt-4o-mini-tts-2025-12-15":[0.0000025,0.00001,null,null],"gpt-4o-mini-transcribe-2025-03-20":[0.00000125,0.000005,null,null],"gpt-4o-mini-transcribe-2025-12-15":[0.00000125,0.000005,null,null],"gpt-5-search-api":[0.00000125,0.00001,null,1.25e-7],"gpt-5-search-api-2025-10-14":[0.00000125,0.00001,null,1.25e-7],"gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"gpt-realtime-mini-2025-12-15":[6e-7,0.0000024,null,6e-8],"gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini-flash-latest":[3e-7,0.0000025,null,3e-8],"gemini-flash-lite-latest":[1e-7,4e-7,null,1e-8],"gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"gemini-exp-1206":[3e-7,0.0000025,null,3e-8],"anyscale/HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"anyscale/codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"anyscale/meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"anyscale/meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"anyscale/meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"azure/ada":[1e-7,0,null,null],"ada":[1e-7,0,null,null],"azure/codex-mini":[0.0000015,0.000006,null,3.75e-7],"codex-mini":[0.0000015,0.000006,null,3.75e-7],"azure/command-r-plus":[0.000003,0.000015,null,null],"azure_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"azure_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"azure_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"azure_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"azure/computer-use-preview":[0.000003,0.000012,null,null],"azure_ai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"gpt-oss-120b":[1.5e-7,6e-7,null,null],"azure_ai/model_router":[1.4e-7,0,null,null],"model_router":[1.4e-7,0,null,null],"azure/eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"azure/global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo":[5e-7,0.0000015,null,null],"gpt-35-turbo":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-1106":[0.000001,0.000002,null,null],"gpt-35-turbo-1106":[0.000001,0.000002,null,null],"azure/gpt-35-turbo-16k":[0.000003,0.000004,null,null],"gpt-35-turbo-16k":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-4":[0.00003,0.00006,null,null],"azure/gpt-4-0125-preview":[0.00001,0.00003,null,null],"azure/gpt-4-0613":[0.00003,0.00006,null,null],"azure/gpt-4-1106-preview":[0.00001,0.00003,null,null],"azure/gpt-4-32k":[0.00006,0.00012,null,null],"gpt-4-32k":[0.00006,0.00012,null,null],"azure/gpt-4-32k-0613":[0.00006,0.00012,null,null],"gpt-4-32k-0613":[0.00006,0.00012,null,null],"azure/gpt-4-turbo":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"azure/gpt-4.1":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"azure/gpt-4o":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"azure/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-11-20":[0.00000275,0.000011,null,0.00000125],"azure/gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"azure/gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"azure/gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"azure/gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"azure/gpt-realtime-2025-08-28":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"azure/gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"azure/gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"azure/gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-transcribe":[0.0000025,0.00001,null,null],"azure/gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"azure/gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-nano":[5e-8,4e-7,null,5e-9],"azure/gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"azure/gpt-5-pro":[0.000015,0.00012,null,null],"azure/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-pro":[0.000021,0.000168,null,null],"azure/gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"azure/gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"azure/gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"azure/gpt-image-2":[0.000005,0.00001,null,0.00000125],"azure/gpt-image-2-2026-04-21":[0.000005,0.00001,null,0.00000125],"azure/mistral-large-2402":[0.000008,0.000024,null,null],"mistral-large-2402":[0.000008,0.000024,null,null],"azure/mistral-large-latest":[0.000008,0.000024,null,null],"mistral-large-latest":[0.000008,0.000024,null,null],"azure/o1":[0.000015,0.00006,null,0.0000075],"azure/o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"azure/o1-mini":[0.00000121,0.00000484,null,6.05e-7],"o1-mini":[0.00000121,0.00000484,null,6.05e-7],"azure/o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"azure/o1-preview":[0.000015,0.00006,null,0.0000075],"o1-preview":[0.000015,0.00006,null,0.0000075],"azure/o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"azure/o3":[0.000002,0.000008,null,5e-7],"azure/o3-2025-04-16":[0.000002,0.000008,null,5e-7],"azure/o3-deep-research":[0.00001,0.00004,null,0.0000025],"azure/o3-mini":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-pro":[0.00002,0.00008,null,null],"azure/o3-pro-2025-06-10":[0.00002,0.00008,null,null],"azure/o4-mini":[0.0000011,0.0000044,null,2.75e-7],"azure/o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"azure/text-embedding-3-large":[1.3e-7,0,null,null],"azure/text-embedding-3-small":[2e-8,0,null,null],"azure/text-embedding-ada-002":[1e-7,0,null,null],"azure/us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"azure/us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"azure/us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"azure/us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"azure/us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"azure_ai/Cohere-embed-v3-english":[1e-7,0,null,null],"Cohere-embed-v3-english":[1e-7,0,null,null],"azure_ai/Cohere-embed-v3-multilingual":[1e-7,0,null,null],"Cohere-embed-v3-multilingual":[1e-7,0,null,null],"azure_ai/Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"azure_ai/Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"azure_ai/Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"azure_ai/Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"azure_ai/Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"azure_ai/Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"azure_ai/Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"azure_ai/Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"azure_ai/Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"azure_ai/Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-4":[1.25e-7,5e-7,null,null],"Phi-4":[1.25e-7,5e-7,null,null],"azure_ai/Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"azure_ai/Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-reasoning":[1.25e-7,5e-7,null,null],"Phi-4-reasoning":[1.25e-7,5e-7,null,null],"azure_ai/MAI-DS-R1":[0.00000135,0.0000054,null,null],"MAI-DS-R1":[0.00000135,0.0000054,null,null],"azure_ai/cohere-rerank-v3-english":[0,0,null,null],"cohere-rerank-v3-english":[0,0,null,null],"azure_ai/cohere-rerank-v3-multilingual":[0,0,null,null],"cohere-rerank-v3-multilingual":[0,0,null,null],"azure_ai/cohere-rerank-v3.5":[0,0,null,null],"cohere-rerank-v3.5":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-pro":[0,0,null,null],"cohere-rerank-v4.0-pro":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-fast":[0,0,null,null],"cohere-rerank-v4.0-fast":[0,0,null,null],"azure_ai/deepseek-v3.2":[5.8e-7,0.00000168,null,null],"deepseek-v3.2":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-r1":[0.00000135,0.0000054,null,null],"deepseek-r1":[0.00000135,0.0000054,null,null],"azure_ai/deepseek-v3":[0.00000114,0.00000456,null,null],"deepseek-v3":[0.00000114,0.00000456,null,null],"azure_ai/deepseek-v3-0324":[0.00000114,0.00000456,null,null],"deepseek-v3-0324":[0.00000114,0.00000456,null,null],"azure_ai/embed-v-4-0":[1.2e-7,0,null,null],"embed-v-4-0":[1.2e-7,0,null,null],"azure_ai/global/grok-3":[0.000003,0.000015,null,null],"global/grok-3":[0.000003,0.000015,null,null],"azure_ai/global/grok-3-mini":[2.5e-7,0.00000127,null,null],"global/grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-3":[0.000003,0.000015,null,null],"grok-3":[0.000003,0.000015,null,null],"azure_ai/grok-3-mini":[2.5e-7,0.00000127,null,null],"grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-4":[0.000003,0.000015,null,null],"grok-4":[0.000003,0.000015,null,null],"azure_ai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-code-fast-1":[2e-7,0.0000015,null,null],"grok-code-fast-1":[2e-7,0.0000015,null,null],"azure_ai/jais-30b-chat":[0.0032,0.00971,null,null],"jais-30b-chat":[0.0032,0.00971,null,null],"azure_ai/jamba-instruct":[5e-7,7e-7,null,null],"jamba-instruct":[5e-7,7e-7,null,null],"azure_ai/kimi-k2.5":[6e-7,0.000003,null,null],"kimi-k2.5":[6e-7,0.000003,null,null],"azure_ai/ministral-3b":[4e-8,4e-8,null,null],"ministral-3b":[4e-8,4e-8,null,null],"azure_ai/mistral-large":[0.000004,0.000012,null,null],"mistral-large":[0.000004,0.000012,null,null],"azure_ai/mistral-large-2407":[0.000002,0.000006,null,null],"mistral-large-2407":[0.000002,0.000006,null,null],"azure_ai/mistral-large-latest":[0.000002,0.000006,null,null],"azure_ai/mistral-large-3":[5e-7,0.0000015,null,null],"mistral-large-3":[5e-7,0.0000015,null,null],"azure_ai/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral-medium-2505":[4e-7,0.000002,null,null],"azure_ai/mistral-nemo":[1.5e-7,1.5e-7,null,null],"mistral-nemo":[1.5e-7,1.5e-7,null,null],"azure_ai/mistral-small":[0.000001,0.000003,null,null],"mistral-small":[0.000001,0.000003,null,null],"azure_ai/mistral-small-2503":[1e-7,3e-7,null,null],"mistral-small-2503":[1e-7,3e-7,null,null],"bedrock/ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"bedrock/ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/moonshotai.kimi-k2.5":[6e-7,0.00000303,null,null],"bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"bedrock/ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"bedrock/ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"bedrock/eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"bedrock/eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"bedrock/eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"bedrock/eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"bedrock/eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"bedrock/eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"bedrock/sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"cerebras/llama-3.3-70b":[8.5e-7,0.0000012,null,null],"llama-3.3-70b":[8.5e-7,0.0000012,null,null],"cerebras/llama3.1-70b":[6e-7,6e-7,null,null],"llama3.1-70b":[6e-7,6e-7,null,null],"cerebras/llama3.1-8b":[1e-7,1e-7,null,null],"llama3.1-8b":[1e-7,1e-7,null,null],"cerebras/gpt-oss-120b":[3.5e-7,7.5e-7,null,null],"cerebras/qwen-3-32b":[4e-7,8e-7,null,null],"qwen-3-32b":[4e-7,8e-7,null,null],"cerebras/zai-glm-4.6":[0.00000225,0.00000275,null,null],"zai-glm-4.6":[0.00000225,0.00000275,null,null],"cerebras/zai-glm-4.7":[0.00000225,0.00000275,null,null],"zai-glm-4.7":[0.00000225,0.00000275,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"cloudflare/@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"cloudflare/@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"codestral/codestral-2405":[0,0,null,null],"codestral-2405":[0,0,null,null],"codestral/codestral-latest":[0,0,null,null],"codestral-latest":[0,0,null,null],"cohere/embed-v4.0":[1.2e-7,0,null,null],"embed-v4.0":[1.2e-7,0,null,null],"dashscope/qwen-coder":[3e-7,0.0000015,null,null],"qwen-coder":[3e-7,0.0000015,null,null],"dashscope/qwen-max":[0.0000016,0.0000064,null,null],"qwen-max":[0.0000016,0.0000064,null,null],"dashscope/qwen-plus":[4e-7,0.0000012,null,null],"qwen-plus":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"dashscope/qwen-turbo":[5e-8,2e-7,null,null],"qwen-turbo":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-latest":[5e-8,2e-7,null,null],"qwen-turbo-latest":[5e-8,2e-7,null,null],"dashscope/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"dashscope/qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"dashscope/qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"dashscope/qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"dashscope/qwq-plus":[8e-7,0.0000024,null,null],"qwq-plus":[8e-7,0.0000024,null,null],"databricks/databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks/databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks/databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks/databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks/databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks/databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks/databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks/databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks/databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks/databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks/databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks/databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks/databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks/databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks/databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks/databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"deepinfra/Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"deepinfra/Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"deepinfra/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"deepinfra/Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"deepinfra/Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"deepinfra/Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"deepinfra/Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"deepinfra/Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"deepinfra/Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"deepinfra/Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"deepinfra/allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"deepinfra/anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"deepinfra/anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"deepinfra/anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"deepinfra/deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"deepinfra/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"deepinfra/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"deepinfra/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"google/gemma-3-12b-it":[5e-8,1e-7,null,null],"deepinfra/google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"deepinfra/google/gemma-3-4b-it":[4e-8,8e-8,null,null],"google/gemma-3-4b-it":[4e-8,8e-8,null,null],"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"deepinfra/meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"deepinfra/meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"deepinfra/meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3-8B-Instruct":[3e-8,6e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"deepinfra/microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"deepinfra/microsoft/phi-4":[7e-8,1.4e-7,null,null],"microsoft/phi-4":[7e-8,1.4e-7,null,null],"deepinfra/mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1":[4e-7,4e-7,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"deepinfra/openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"deepinfra/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"deepinfra/zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"deepseek/deepseek-chat":[2.8e-7,4.2e-7,0,2.8e-8],"deepseek/deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"deepseek/deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek/deepseek-v3":[2.7e-7,0.0000011,0,7e-8],"deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"fireworks_ai/WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"fireworks_ai/glm-4p7":[6e-7,0.0000022,null,3e-7],"glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/kimi-k2p5":[6e-7,0.000003,null,1e-7],"kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"fireworks_ai/nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-base":[8e-9,0,null,null],"thenlper/gte-base":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-large":[1.6e-8,0,null,null],"thenlper/gte-large":[1.6e-8,0,null,null],"friendliai/meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"friendliai/meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"gemini/gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"vertex_ai/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"vertex_ai/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"vertex_ai/gemini-embedding-2-preview":[1.5e-7,0,null,null],"vertex_ai/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-embedding-001":[1.5e-7,0,null,null],"gemini/gemini-embedding-2-preview":[2e-7,0,null,null],"gemini/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-1.5-flash":[7.5e-8,0,null,null],"gemini-1.5-flash":[7.5e-8,0,null,null],"gemini/gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-001":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini/gemini-3.1-flash-image-preview":[2.5e-7,0.0000015,null,null],"gemini/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini/gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-latest":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-lite-latest":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"gemini/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"gemini/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-exp-1114":[0,0,null,null],"gemini-exp-1114":[0,0,null,null],"gemini/gemini-exp-1206":[0,0,null,null],"gemini/gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini/gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini/gemma-3-27b-it":[0,0,null,null],"gemma-3-27b-it":[0,0,null,null],"gemini/learnlm-1.5-pro-experimental":[0,0,null,null],"learnlm-1.5-pro-experimental":[0,0,null,null],"gemini/lyria-3-clip-preview":[0,0,null,null],"lyria-3-clip-preview":[0,0,null,null],"gemini/lyria-3-pro-preview":[0,0,null,null],"lyria-3-pro-preview":[0,0,null,null],"gigachat/GigaChat-2-Lite":[0,0,null,null],"GigaChat-2-Lite":[0,0,null,null],"gigachat/GigaChat-2-Max":[0,0,null,null],"GigaChat-2-Max":[0,0,null,null],"gigachat/GigaChat-2-Pro":[0,0,null,null],"GigaChat-2-Pro":[0,0,null,null],"gigachat/Embeddings":[0,0,null,null],"Embeddings":[0,0,null,null],"gigachat/Embeddings-2":[0,0,null,null],"Embeddings-2":[0,0,null,null],"gigachat/EmbeddingsGigaR":[0,0,null,null],"EmbeddingsGigaR":[0,0,null,null],"gmi/anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"gmi/anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"gmi/anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"gmi/anthropic/claude-opus-4":[0.000015,0.000075,null,null],"anthropic/claude-opus-4":[0.000015,0.000075,null,null],"gmi/openai/gpt-5.2":[0.00000175,0.000014,null,null],"openai/gpt-5.2":[0.00000175,0.000014,null,null],"gmi/openai/gpt-5.1":[0.00000125,0.00001,null,null],"openai/gpt-5.1":[0.00000125,0.00001,null,null],"gmi/openai/gpt-5":[0.00000125,0.00001,null,null],"openai/gpt-5":[0.00000125,0.00001,null,null],"gmi/openai/gpt-4o":[0.0000025,0.00001,null,null],"openai/gpt-4o":[0.0000025,0.00001,null,null],"gmi/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3-0324":[2.8e-7,8.8e-7,null,null],"gmi/google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"gmi/google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"gmi/moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"gmi/MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"baseten/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"baseten/nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"baseten/zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"baseten/zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"baseten/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"baseten/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"baseten/moonshotai/Kimi-K2-Thinking":[6e-7,0.0000025,null,null],"baseten/moonshotai/Kimi-K2-Instruct-0905":[6e-7,0.0000025,null,null],"baseten/openai/gpt-oss-120b":[1e-7,5e-7,null,null],"baseten/deepseek-ai/DeepSeek-V3.1":[5e-7,0.0000015,null,null],"baseten/deepseek-ai/DeepSeek-V3-0324":[7.7e-7,7.7e-7,null,null],"gmi/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"gmi/zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"gradient_ai/anthropic-claude-3-opus":[0.000015,0.000075,null,null],"anthropic-claude-3-opus":[0.000015,0.000075,null,null],"gradient_ai/anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"gradient_ai/anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"gradient_ai/anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"gradient_ai/deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"gradient_ai/llama3-8b-instruct":[2e-7,2e-7,null,null],"llama3-8b-instruct":[2e-7,2e-7,null,null],"gradient_ai/llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"gradient_ai/mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"gradient_ai/openai-o3":[0.000002,0.000008,null,null],"openai-o3":[0.000002,0.000008,null,null],"gradient_ai/openai-o3-mini":[0.0000011,0.0000044,null,null],"openai-o3-mini":[0.0000011,0.0000044,null,null],"lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"lemonade/gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"lemonade/gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"lemonade/Gemma-3-4b-it-GGUF":[0,0,null,null],"Gemma-3-4b-it-GGUF":[0,0,null,null],"lemonade/Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"amazon-nova/nova-micro-v1":[3.5e-8,1.4e-7,null,null],"nova-micro-v1":[3.5e-8,1.4e-7,null,null],"amazon-nova/nova-lite-v1":[6e-8,2.4e-7,null,null],"nova-lite-v1":[6e-8,2.4e-7,null,null],"amazon-nova/nova-premier-v1":[0.0000025,0.0000125,null,null],"nova-premier-v1":[0.0000025,0.0000125,null,null],"amazon-nova/nova-pro-v1":[8e-7,0.0000032,null,null],"nova-pro-v1":[8e-7,0.0000032,null,null],"groq/llama-3.1-8b-instant":[5e-8,8e-8,null,null],"llama-3.1-8b-instant":[5e-8,8e-8,null,null],"groq/llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"groq/gemma-7b-it":[5e-8,8e-8,null,null],"gemma-7b-it":[5e-8,8e-8,null,null],"groq/meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"groq/meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"groq/meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"groq/moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"groq/openai/gpt-oss-120b":[1.5e-7,6e-7,null,7.5e-8],"groq/openai/gpt-oss-20b":[7.5e-8,3e-7,null,3.75e-8],"groq/openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"groq/qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/QwQ-32B":[2e-7,2e-7,null,null],"hyperbolic/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen3-235B-A22B":[0.000002,0.000002,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1":[4e-7,4e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1-0528":[2.5e-7,2.5e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3":[2e-7,2e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3-0324":[4e-7,4e-7,null,null],"hyperbolic/meta-llama/Llama-3.2-3B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Llama-3.3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/moonshotai/Kimi-K2-Instruct":[0.000002,0.000002,null,null],"lambda_ai/deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-0528":[2e-7,6e-7,null,null],"deepseek-r1-0528":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-671b":[8e-7,8e-7,null,null],"deepseek-r1-671b":[8e-7,8e-7,null,null],"lambda_ai/deepseek-v3-0324":[2e-7,6e-7,null,null],"lambda_ai/hermes3-405b":[8e-7,8e-7,null,null],"hermes3-405b":[8e-7,8e-7,null,null],"lambda_ai/hermes3-70b":[1.2e-7,3e-7,null,null],"hermes3-70b":[1.2e-7,3e-7,null,null],"lambda_ai/hermes3-8b":[2.5e-8,4e-8,null,null],"hermes3-8b":[2.5e-8,4e-8,null,null],"lambda_ai/lfm-40b":[1e-7,2e-7,null,null],"lfm-40b":[1e-7,2e-7,null,null],"lambda_ai/lfm-7b":[2.5e-8,4e-8,null,null],"lfm-7b":[2.5e-8,4e-8,null,null],"lambda_ai/llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"lambda_ai/llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"lambda_ai/llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"lambda_ai/llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"lambda_ai/llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"lambda_ai/qwen3-32b-fp8":[5e-8,1e-7,null,null],"qwen3-32b-fp8":[5e-8,1e-7,null,null],"minimax/MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"mistral/codestral-2405":[0.000001,0.000003,null,null],"mistral/codestral-2508":[3e-7,9e-7,null,null],"codestral-2508":[3e-7,9e-7,null,null],"mistral/codestral-latest":[0.000001,0.000003,null,null],"mistral/codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"mistral/devstral-medium-2507":[4e-7,0.000002,null,null],"devstral-medium-2507":[4e-7,0.000002,null,null],"mistral/devstral-small-2505":[1e-7,3e-7,null,null],"devstral-small-2505":[1e-7,3e-7,null,null],"mistral/devstral-small-2507":[1e-7,3e-7,null,null],"devstral-small-2507":[1e-7,3e-7,null,null],"mistral/devstral-small-latest":[1e-7,3e-7,null,null],"devstral-small-latest":[1e-7,3e-7,null,null],"mistral/labs-devstral-small-2512":[1e-7,3e-7,null,null],"labs-devstral-small-2512":[1e-7,3e-7,null,null],"mistral/devstral-latest":[4e-7,0.000002,null,null],"devstral-latest":[4e-7,0.000002,null,null],"mistral/devstral-medium-latest":[4e-7,0.000002,null,null],"devstral-medium-latest":[4e-7,0.000002,null,null],"mistral/devstral-2512":[4e-7,0.000002,null,null],"devstral-2512":[4e-7,0.000002,null,null],"mistral/magistral-medium-2506":[0.000002,0.000005,null,null],"magistral-medium-2506":[0.000002,0.000005,null,null],"mistral/magistral-medium-2509":[0.000002,0.000005,null,null],"magistral-medium-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-latest":[0.000002,0.000005,null,null],"magistral-medium-latest":[0.000002,0.000005,null,null],"mistral/magistral-small-2506":[5e-7,0.0000015,null,null],"magistral-small-2506":[5e-7,0.0000015,null,null],"mistral/magistral-small-latest":[5e-7,0.0000015,null,null],"magistral-small-latest":[5e-7,0.0000015,null,null],"mistral/magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"mistral/mistral-large-2402":[0.000004,0.000012,null,null],"mistral/mistral-large-2407":[0.000003,0.000009,null,null],"mistral/mistral-large-2411":[0.000002,0.000006,null,null],"mistral-large-2411":[0.000002,0.000006,null,null],"mistral/mistral-large-latest":[5e-7,0.0000015,null,null],"mistral/mistral-large-3":[5e-7,0.0000015,null,null],"mistral/mistral-large-2512":[5e-7,0.0000015,null,null],"mistral-large-2512":[5e-7,0.0000015,null,null],"mistral/mistral-medium":[0.0000027,0.0000081,null,null],"mistral-medium":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral/mistral-medium-latest":[4e-7,0.000002,null,null],"mistral-medium-latest":[4e-7,0.000002,null,null],"mistral/mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral/mistral-small":[1e-7,3e-7,null,null],"mistral/mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral/mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral/ministral-3-3b-2512":[1e-7,1e-7,null,null],"ministral-3-3b-2512":[1e-7,1e-7,null,null],"mistral/ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"mistral/ministral-3-14b-2512":[2e-7,2e-7,null,null],"ministral-3-14b-2512":[2e-7,2e-7,null,null],"mistral/mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral/open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-7b":[2.5e-7,2.5e-7,null,null],"open-mistral-7b":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-nemo":[3e-7,3e-7,null,null],"open-mistral-nemo":[3e-7,3e-7,null,null],"mistral/open-mistral-nemo-2407":[3e-7,3e-7,null,null],"open-mistral-nemo-2407":[3e-7,3e-7,null,null],"mistral/open-mixtral-8x22b":[0.000002,0.000006,null,null],"open-mixtral-8x22b":[0.000002,0.000006,null,null],"mistral/open-mixtral-8x7b":[7e-7,7e-7,null,null],"open-mixtral-8x7b":[7e-7,7e-7,null,null],"mistral/pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-large-2411":[0.000002,0.000006,null,null],"pixtral-large-2411":[0.000002,0.000006,null,null],"mistral/pixtral-large-latest":[0.000002,0.000006,null,null],"pixtral-large-latest":[0.000002,0.000006,null,null],"moonshot/kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"moonshot/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshot/kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"moonshot/kimi-latest":[0.000002,0.000005,null,1.5e-7],"kimi-latest":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"moonshot/kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"moonshot/kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"moonshot/moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-auto":[0.000002,0.000005,null,null],"moonshot-v1-auto":[0.000002,0.000005,null,null],"morph/morph-v3-fast":[8e-7,0.0000012,null,null],"morph-v3-fast":[8e-7,0.0000012,null,null],"morph/morph-v3-large":[9e-7,0.0000019,null,null],"morph-v3-large":[9e-7,0.0000019,null,null],"nscale/Qwen/QwQ-32B":[1.8e-7,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-32B-Instruct":[6e-8,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"nscale/Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[3.75e-7,3.75e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[1.5e-7,1.5e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"nscale/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct":[9e-8,2.9e-7,null,null],"nscale/mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"nebius/deepseek-ai/DeepSeek-R1":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-0528":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2.5e-7,7.5e-7,null,null],"nebius/deepseek-ai/DeepSeek-V3":[5e-7,0.0000015,null,null],"nebius/deepseek-ai/DeepSeek-V3-0324":[5e-7,0.0000015,null,null],"nebius/google/gemma-3-27b-it":[6e-8,2e-7,null,null],"nebius/meta-llama/Llama-3.3-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Llama-Guard-3-8B":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-8B-Instruct":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Meta-Llama-3.1-405B-Instruct":[0.000001,0.000003,null,null],"nebius/mistralai/Mistral-Nemo-Instruct-2407":[4e-8,1.2e-7,null,null],"nebius/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000003,null,null],"nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nebius/Qwen/Qwen3-235B-A22B":[2e-7,6e-7,null,null],"nebius/Qwen/Qwen3-32B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-30B-A3B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-14B":[8e-8,2.4e-7,null,null],"nebius/Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"nebius/Qwen/QwQ-32B":[1.5e-7,4.5e-7,null,null],"nebius/Qwen/Qwen2.5-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"nebius/Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"nebius/Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"nebius/BAAI/bge-en-icl":[1e-8,0,null,null],"BAAI/bge-en-icl":[1e-8,0,null,null],"nebius/BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"nebius/intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"oci/meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"oci/meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-3":[0.000003,0.000015,null,null],"xai.grok-3":[0.000003,0.000015,null,null],"oci/xai.grok-3-fast":[0.000005,0.000025,null,null],"xai.grok-3-fast":[0.000005,0.000025,null,null],"oci/xai.grok-3-mini":[3e-7,5e-7,null,null],"xai.grok-3-mini":[3e-7,5e-7,null,null],"oci/xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"oci/xai.grok-4":[0.000003,0.000015,null,null],"xai.grok-4":[0.000003,0.000015,null,null],"oci/cohere.command-latest":[0.00000156,0.00000156,null,null],"cohere.command-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"oci/cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"oci/cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"oci/meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-4-fast":[0.000005,0.000025,null,null],"xai.grok-4-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.1-fast":[0.000005,0.000025,null,null],"xai.grok-4.1-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.20":[0.000003,0.000015,null,null],"xai.grok-4.20":[0.000003,0.000015,null,null],"oci/xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"oci/xai.grok-code-fast-1":[0.000005,0.000025,null,null],"xai.grok-code-fast-1":[0.000005,0.000025,null,null],"oci/google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"oci/google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"oci/google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"oci/cohere.embed-english-v3.0":[1e-7,0,null,null],"cohere.embed-english-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-v4.0":[1.2e-7,0,null,null],"cohere.embed-v4.0":[1.2e-7,0,null,null],"ollama/codegeex4":[0,0,null,null],"codegeex4":[0,0,null,null],"ollama/codegemma":[0,0,null,null],"codegemma":[0,0,null,null],"ollama/codellama":[0,0,null,null],"codellama":[0,0,null,null],"ollama/deepseek-coder-v2-base":[0,0,null,null],"deepseek-coder-v2-base":[0,0,null,null],"ollama/deepseek-coder-v2-instruct":[0,0,null,null],"deepseek-coder-v2-instruct":[0,0,null,null],"ollama/deepseek-coder-v2-lite-base":[0,0,null,null],"deepseek-coder-v2-lite-base":[0,0,null,null],"ollama/deepseek-coder-v2-lite-instruct":[0,0,null,null],"deepseek-coder-v2-lite-instruct":[0,0,null,null],"ollama/deepseek-v3.1:671b-cloud":[0,0,null,null],"deepseek-v3.1:671b-cloud":[0,0,null,null],"ollama/gpt-oss:120b-cloud":[0,0,null,null],"gpt-oss:120b-cloud":[0,0,null,null],"ollama/gpt-oss:20b-cloud":[0,0,null,null],"gpt-oss:20b-cloud":[0,0,null,null],"ollama/internlm2_5-20b-chat":[0,0,null,null],"internlm2_5-20b-chat":[0,0,null,null],"ollama/llama2":[0,0,null,null],"llama2":[0,0,null,null],"ollama/llama2-uncensored":[0,0,null,null],"llama2-uncensored":[0,0,null,null],"ollama/llama2:13b":[0,0,null,null],"llama2:13b":[0,0,null,null],"ollama/llama2:70b":[0,0,null,null],"llama2:70b":[0,0,null,null],"ollama/llama2:7b":[0,0,null,null],"llama2:7b":[0,0,null,null],"ollama/llama3":[0,0,null,null],"llama3":[0,0,null,null],"ollama/llama3.1":[0,0,null,null],"llama3.1":[0,0,null,null],"ollama/llama3:70b":[0,0,null,null],"llama3:70b":[0,0,null,null],"ollama/llama3:8b":[0,0,null,null],"llama3:8b":[0,0,null,null],"ollama/mistral":[0,0,null,null],"mistral":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.1":[0,0,null,null],"mistral-7B-Instruct-v0.1":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.2":[0,0,null,null],"mistral-7B-Instruct-v0.2":[0,0,null,null],"ollama/mistral-large-instruct-2407":[0,0,null,null],"mistral-large-instruct-2407":[0,0,null,null],"ollama/mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"ollama/mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"ollama/orca-mini":[0,0,null,null],"orca-mini":[0,0,null,null],"ollama/qwen3-coder:480b-cloud":[0,0,null,null],"qwen3-coder:480b-cloud":[0,0,null,null],"ollama/vicuna":[0,0,null,null],"vicuna":[0,0,null,null],"openrouter/anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"openrouter/anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"openrouter/anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"openrouter/bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"openrouter/deepseek/deepseek-chat":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"openrouter/deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"openrouter/deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"openrouter/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"openrouter/deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"openrouter/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"openrouter/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"openrouter/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"openrouter/google/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/google/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"openrouter/google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"openrouter/google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/mancer/weaver":[0.000005625,0.000005625,null,null],"mancer/weaver":[0.000005625,0.000005625,null,null],"openrouter/meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"openrouter/minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"openrouter/mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"openrouter/mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"openrouter/mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"openrouter/mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"openrouter/mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"openrouter/mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"openrouter/mistralai/mistral-large":[0.000008,0.000024,null,null],"mistralai/mistral-large":[0.000008,0.000024,null,null],"openrouter/mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"openrouter/moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"openrouter/openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openrouter/openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openrouter/openai/gpt-4":[0.00003,0.00006,null,null],"openai/gpt-4":[0.00003,0.00006,null,null],"openrouter/openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openrouter/openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openrouter/openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openrouter/openai/gpt-4o":[0.0000025,0.00001,null,null],"openrouter/openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openrouter/openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openrouter/openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openrouter/openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openrouter/openai/gpt-oss-120b":[1.8e-7,8e-7,null,null],"openrouter/openai/gpt-oss-20b":[2e-8,1e-7,null,null],"openrouter/openai/o1":[0.000015,0.00006,null,0.0000075],"openai/o1":[0.000015,0.00006,null,0.0000075],"openrouter/openai/o3-mini":[0.0000011,0.0000044,null,null],"openai/o3-mini":[0.0000011,0.0000044,null,null],"openrouter/openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openrouter/qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"openrouter/qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"openrouter/qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"openrouter/qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"openrouter/qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"openrouter/qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"openrouter/qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"openrouter/qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"openrouter/switchpoint/router":[8.5e-7,0.0000034,null,null],"switchpoint/router":[8.5e-7,0.0000034,null,null],"openrouter/undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/x-ai/grok-4":[0.000003,0.000015,null,null],"x-ai/grok-4":[0.000003,0.000015,null,null],"openrouter/z-ai/glm-4.6":[4e-7,0.00000175,null,null],"z-ai/glm-4.6":[4e-7,0.00000175,null,null],"openrouter/z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"openrouter/xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"openrouter/z-ai/glm-4.7":[4e-7,0.0000015,0,0],"z-ai/glm-4.7":[4e-7,0.0000015,0,0],"openrouter/z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"openrouter/z-ai/glm-5":[8e-7,0.00000256,null,null],"z-ai/glm-5":[8e-7,0.00000256,null,null],"openrouter/minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"openrouter/minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"openrouter/openrouter/auto":[0,0,null,null],"openrouter/auto":[0,0,null,null],"openrouter/openrouter/free":[0,0,null,null],"openrouter/free":[0,0,null,null],"openrouter/openrouter/bodybuilder":[0,0,null,null],"openrouter/bodybuilder":[0,0,null,null],"ovhcloud/DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"ovhcloud/Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"ovhcloud/Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"ovhcloud/Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"ovhcloud/Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"ovhcloud/Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"ovhcloud/Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"ovhcloud/Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"ovhcloud/Qwen3-32B":[8e-8,2.3e-7,null,null],"Qwen3-32B":[8e-8,2.3e-7,null,null],"ovhcloud/gpt-oss-120b":[8e-8,4e-7,null,null],"ovhcloud/gpt-oss-20b":[4e-8,1.5e-7,null,null],"gpt-oss-20b":[4e-8,1.5e-7,null,null],"ovhcloud/llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"ovhcloud/mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"palm/chat-bison":[1.25e-7,1.25e-7,null,null],"chat-bison":[1.25e-7,1.25e-7,null,null],"palm/chat-bison-001":[1.25e-7,1.25e-7,null,null],"chat-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison":[1.25e-7,1.25e-7,null,null],"text-bison":[1.25e-7,1.25e-7,null,null],"palm/text-bison-001":[1.25e-7,1.25e-7,null,null],"text-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"perplexity/codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"perplexity/codellama-70b-instruct":[7e-7,0.0000028,null,null],"codellama-70b-instruct":[7e-7,0.0000028,null,null],"perplexity/llama-2-70b-chat":[7e-7,0.0000028,null,null],"llama-2-70b-chat":[7e-7,0.0000028,null,null],"perplexity/llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"perplexity/llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"perplexity/mistral-7b-instruct":[7e-8,2.8e-7,null,null],"mistral-7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/pplx-70b-chat":[7e-7,0.0000028,null,null],"pplx-70b-chat":[7e-7,0.0000028,null,null],"perplexity/pplx-70b-online":[0,0.0000028,null,null],"pplx-70b-online":[0,0.0000028,null,null],"perplexity/pplx-7b-chat":[7e-8,2.8e-7,null,null],"pplx-7b-chat":[7e-8,2.8e-7,null,null],"perplexity/pplx-7b-online":[0,2.8e-7,null,null],"pplx-7b-online":[0,2.8e-7,null,null],"perplexity/sonar":[0.000001,0.000001,null,null],"sonar":[0.000001,0.000001,null,null],"perplexity/sonar-deep-research":[0.000002,0.000008,null,null],"sonar-deep-research":[0.000002,0.000008,null,null],"perplexity/sonar-medium-chat":[6e-7,0.0000018,null,null],"sonar-medium-chat":[6e-7,0.0000018,null,null],"perplexity/sonar-medium-online":[0,0.0000018,null,null],"sonar-medium-online":[0,0.0000018,null,null],"perplexity/sonar-pro":[0.000003,0.000015,null,null],"sonar-pro":[0.000003,0.000015,null,null],"perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"sonar-reasoning":[0.000001,0.000005,null,null],"perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"sonar-reasoning-pro":[0.000002,0.000008,null,null],"perplexity/sonar-small-chat":[7e-8,2.8e-7,null,null],"sonar-small-chat":[7e-8,2.8e-7,null,null],"perplexity/sonar-small-online":[0,2.8e-7,null,null],"sonar-small-online":[0,2.8e-7,null,null],"publicai/swiss-ai/apertus-8b-instruct":[0,0,null,null],"swiss-ai/apertus-8b-instruct":[0,0,null,null],"publicai/swiss-ai/apertus-70b-instruct":[0,0,null,null],"swiss-ai/apertus-70b-instruct":[0,0,null,null],"publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"publicai/BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"publicai/BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Instruct":[0,0,null,null],"allenai/Olmo-3-7B-Instruct":[0,0,null,null],"perplexity/pplx-embed-v1-0.6b":[4e-9,0,null,null],"pplx-embed-v1-0.6b":[4e-9,0,null,null],"perplexity/pplx-embed-v1-4b":[3e-8,0,null,null],"pplx-embed-v1-4b":[3e-8,0,null,null],"publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Think":[0,0,null,null],"allenai/Olmo-3-7B-Think":[0,0,null,null],"publicai/allenai/Olmo-3-32B-Think":[0,0,null,null],"allenai/Olmo-3-32B-Think":[0,0,null,null],"replicate/meta/llama-2-13b":[1e-7,5e-7,null,null],"meta/llama-2-13b":[1e-7,5e-7,null,null],"replicate/meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"replicate/meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-7b":[5e-8,2.5e-7,null,null],"meta/llama-2-7b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-8b":[5e-8,2.5e-7,null,null],"meta/llama-3-8b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"replicate/mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"replicate/openai/gpt-5":[0.00000125,0.00001,null,null],"replicateopenai/gpt-oss-20b":[9e-8,3.6e-7,null,null],"replicate/anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"replicate/ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"replicate/openai/gpt-4o":[0.0000025,0.00001,null,null],"replicate/openai/o4-mini":[0.000001,0.000004,null,null],"openai/o4-mini":[0.000001,0.000004,null,null],"replicate/openai/o1-mini":[0.0000011,0.0000044,null,null],"openai/o1-mini":[0.0000011,0.0000044,null,null],"replicate/openai/o1":[0.000015,0.00006,null,null],"replicate/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"replicate/qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"replicate/anthropic/claude-4-sonnet":[0.000003,0.000015,null,null],"replicate/deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"replicate/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"replicate/anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"replicate/anthropic/claude-3.5-sonnet":[0.00000375,0.00001875,null,null],"replicate/google/gemini-3-pro":[0.000002,0.000012,null,null],"google/gemini-3-pro":[0.000002,0.000012,null,null],"replicate/anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"replicate/openai/gpt-4.1":[0.000002,0.000008,null,null],"replicate/openai/gpt-4.1-nano":[1e-7,4e-7,null,null],"replicate/openai/gpt-4.1-mini":[4e-7,0.0000016,null,null],"replicate/openai/gpt-5-nano":[5e-8,4e-7,null,null],"replicate/openai/gpt-5-mini":[2.5e-7,0.000002,null,null],"replicate/google/gemini-2.5-flash":[0.0000025,0.0000025,null,null],"replicate/openai/gpt-oss-120b":[1.8e-7,7.2e-7,null,null],"replicate/deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"replicate/xai/grok-4":[0.0000072,0.000036,null,null],"xai/grok-4":[0.0000072,0.000036,null,null],"replicate/deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b":[0,0,null,null],"meta-textgeneration-llama-2-13b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b-f":[0,0,null,null],"meta-textgeneration-llama-2-13b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b":[0,0,null,null],"meta-textgeneration-llama-2-70b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b":[0,0,null,null],"meta-textgeneration-llama-2-7b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b-f":[0,0,null,null],"meta-textgeneration-llama-2-7b-f":[0,0,null,null],"sambanova/DeepSeek-R1":[0.000005,0.000007,null,null],"DeepSeek-R1":[0.000005,0.000007,null,null],"sambanova/DeepSeek-R1-Distill-Llama-70B":[7e-7,0.0000014,null,null],"sambanova/DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"sambanova/Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"sambanova/Llama-4-Scout-17B-16E-Instruct":[4e-7,7e-7,null,null],"sambanova/Meta-Llama-3.1-405B-Instruct":[0.000005,0.00001,null,null],"sambanova/Meta-Llama-3.1-8B-Instruct":[1e-7,2e-7,null,null],"sambanova/Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"sambanova/Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"sambanova/Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"sambanova/Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"sambanova/QwQ-32B":[5e-7,0.000001,null,null],"QwQ-32B":[5e-7,0.000001,null,null],"sambanova/Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"sambanova/Qwen3-32B":[4e-7,8e-7,null,null],"sambanova/DeepSeek-V3.1":[0.000003,0.0000045,null,null],"DeepSeek-V3.1":[0.000003,0.0000045,null,null],"sambanova/gpt-oss-120b":[0.000003,0.0000045,null,null],"text-completion-codestral/codestral-2405":[0,0,null,null],"text-completion-codestral/codestral-latest":[0,0,null,null],"together_ai/baai/bge-base-en-v1.5":[8e-9,0,null,null],"baai/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507":[6.5e-7,0.000003,null,null],"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"together_ai/deepseek-ai/DeepSeek-R1":[0.000003,0.000007,null,null],"together_ai/deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"together_ai/deepseek-ai/DeepSeek-V3":[0.00000125,0.00000125,null,null],"together_ai/deepseek-ai/DeepSeek-V3.1":[6e-7,0.0000017,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[2.7e-7,8.5e-7,null,null],"together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct":[1.8e-7,5.9e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[1.8e-7,1.8e-7,null,null],"together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1":[6e-7,6e-7,null,null],"together_ai/moonshotai/Kimi-K2-Instruct":[0.000001,0.000003,null,null],"together_ai/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"together_ai/openai/gpt-oss-20b":[5e-8,2e-7,null,null],"together_ai/zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"together_ai/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"together_ai/zai-org/GLM-4.7":[4.5e-7,0.000002,null,null],"together_ai/moonshotai/Kimi-K2.5":[5e-7,0.0000028,null,null],"together_ai/moonshotai/Kimi-K2-Instruct-0905":[0.000001,0.000003,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"v0/v0-1.0-md":[0.000003,0.000015,null,null],"v0-1.0-md":[0.000003,0.000015,null,null],"v0/v0-1.5-lg":[0.000015,0.000075,null,null],"v0-1.5-lg":[0.000015,0.000075,null,null],"v0/v0-1.5-md":[0.000003,0.000015,null,null],"v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"vercel_ai_gateway/amazon/nova-lite":[6e-8,2.4e-7,null,null],"amazon/nova-lite":[6e-8,2.4e-7,null,null],"vercel_ai_gateway/amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"vercel_ai_gateway/amazon/nova-pro":[8e-7,0.0000032,null,null],"amazon/nova-pro":[8e-7,0.0000032,null,null],"vercel_ai_gateway/amazon/titan-embed-text-v2":[2e-8,0,null,null],"amazon/titan-embed-text-v2":[2e-8,0,null,null],"vercel_ai_gateway/anthropic/claude-3-haiku":[2.5e-7,0.00000125,3e-7,3e-8],"vercel_ai_gateway/anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-3.5-haiku":[8e-7,0.000004,0.000001,8e-8],"vercel_ai_gateway/anthropic/claude-3.5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3.7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-4-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-4-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"vercel_ai_gateway/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/cohere/command-a":[0.0000025,0.00001,null,null],"cohere/command-a":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/command-r":[1.5e-7,6e-7,null,null],"cohere/command-r":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/cohere/command-r-plus":[0.0000025,0.00001,null,null],"cohere/command-r-plus":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/embed-v4.0":[1.2e-7,0,null,null],"vercel_ai_gateway/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"vercel_ai_gateway/deepseek/deepseek-v3":[9e-7,9e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"vercel_ai_gateway/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"vercel_ai_gateway/google/gemini-2.5-pro":[0.0000025,0.00001,null,null],"vercel_ai_gateway/google/gemini-embedding-001":[1.5e-7,0,null,null],"google/gemini-embedding-001":[1.5e-7,0,null,null],"vercel_ai_gateway/google/gemma-2-9b":[2e-7,2e-7,null,null],"google/gemma-2-9b":[2e-7,2e-7,null,null],"vercel_ai_gateway/google/text-embedding-005":[2.5e-8,0,null,null],"google/text-embedding-005":[2.5e-8,0,null,null],"vercel_ai_gateway/google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"vercel_ai_gateway/inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"vercel_ai_gateway/meta/llama-3-70b":[5.9e-7,7.9e-7,null,null],"vercel_ai_gateway/meta/llama-3-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.1-8b":[5e-8,8e-8,null,null],"meta/llama-3.1-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-1b":[1e-7,1e-7,null,null],"meta/llama-3.2-1b":[1e-7,1e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-4-maverick":[2e-7,6e-7,null,null],"meta/llama-4-maverick":[2e-7,6e-7,null,null],"vercel_ai_gateway/meta/llama-4-scout":[1e-7,3e-7,null,null],"meta/llama-4-scout":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/codestral":[3e-7,9e-7,null,null],"mistral/codestral":[3e-7,9e-7,null,null],"vercel_ai_gateway/mistral/codestral-embed":[1.5e-7,0,null,null],"mistral/codestral-embed":[1.5e-7,0,null,null],"vercel_ai_gateway/mistral/devstral-small":[7e-8,2.8e-7,null,null],"mistral/devstral-small":[7e-8,2.8e-7,null,null],"vercel_ai_gateway/mistral/magistral-medium":[0.000002,0.000005,null,null],"mistral/magistral-medium":[0.000002,0.000005,null,null],"vercel_ai_gateway/mistral/magistral-small":[5e-7,0.0000015,null,null],"mistral/magistral-small":[5e-7,0.0000015,null,null],"vercel_ai_gateway/mistral/ministral-3b":[4e-8,4e-8,null,null],"mistral/ministral-3b":[4e-8,4e-8,null,null],"vercel_ai_gateway/mistral/ministral-8b":[1e-7,1e-7,null,null],"mistral/ministral-8b":[1e-7,1e-7,null,null],"vercel_ai_gateway/mistral/mistral-embed":[1e-7,0,null,null],"mistral/mistral-embed":[1e-7,0,null,null],"vercel_ai_gateway/mistral/mistral-large":[0.000002,0.000006,null,null],"mistral/mistral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"vercel_ai_gateway/mistral/mistral-small":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"vercel_ai_gateway/mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/mistral/pixtral-large":[0.000002,0.000006,null,null],"mistral/pixtral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"vercel_ai_gateway/morph/morph-v3-fast":[8e-7,0.0000012,null,null],"vercel_ai_gateway/morph/morph-v3-large":[9e-7,0.0000019,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"vercel_ai_gateway/openai/gpt-4-turbo":[0.00001,0.00003,null,null],"openai/gpt-4-turbo":[0.00001,0.00003,null,null],"vercel_ai_gateway/openai/gpt-4.1":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/gpt-4.1-mini":[4e-7,0.0000016,0,1e-7],"vercel_ai_gateway/openai/gpt-4.1-nano":[1e-7,4e-7,0,2.5e-8],"vercel_ai_gateway/openai/gpt-4o":[0.0000025,0.00001,0,0.00000125],"vercel_ai_gateway/openai/gpt-4o-mini":[1.5e-7,6e-7,0,7.5e-8],"vercel_ai_gateway/openai/o1":[0.000015,0.00006,0,0.0000075],"vercel_ai_gateway/openai/o3":[0.000002,0.000008,0,5e-7],"openai/o3":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/o3-mini":[0.0000011,0.0000044,0,5.5e-7],"vercel_ai_gateway/openai/o4-mini":[0.0000011,0.0000044,0,2.75e-7],"vercel_ai_gateway/openai/text-embedding-3-large":[1.3e-7,0,null,null],"openai/text-embedding-3-large":[1.3e-7,0,null,null],"vercel_ai_gateway/openai/text-embedding-3-small":[2e-8,0,null,null],"openai/text-embedding-3-small":[2e-8,0,null,null],"vercel_ai_gateway/openai/text-embedding-ada-002":[1e-7,0,null,null],"openai/text-embedding-ada-002":[1e-7,0,null,null],"vercel_ai_gateway/perplexity/sonar":[0.000001,0.000001,null,null],"vercel_ai_gateway/perplexity/sonar-pro":[0.000003,0.000015,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"vercel_ai_gateway/vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-2":[0.000002,0.00001,null,null],"xai/grok-2":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-3":[0.000003,0.000015,null,null],"xai/grok-3":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-3-fast":[0.000005,0.000025,null,null],"xai/grok-3-fast":[0.000005,0.000025,null,null],"vercel_ai_gateway/xai/grok-3-mini":[3e-7,5e-7,null,null],"xai/grok-3-mini":[3e-7,5e-7,null,null],"vercel_ai_gateway/xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"vercel_ai_gateway/xai/grok-4":[0.000003,0.000015,null,null],"vercel_ai_gateway/zai/glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5":[6e-7,0.0000022,null,null],"vercel_ai_gateway/zai/glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-air":[2e-7,0.0000011,null,null],"vercel_ai_gateway/zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"vertex_ai/claude-3-5-haiku":[0.000001,0.000005,null,null],"claude-3-5-haiku":[0.000001,0.000005,null,null],"vertex_ai/claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"vertex_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-3-5-sonnet":[0.000003,0.000015,null,null],"claude-3-5-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"vertex_ai/claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-3-haiku":[2.5e-7,0.00000125,null,null],"claude-3-haiku":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-opus":[0.000015,0.000075,null,null],"claude-3-opus":[0.000015,0.000075,null,null],"vertex_ai/claude-3-opus@20240229":[0.000015,0.000075,null,null],"claude-3-opus@20240229":[0.000015,0.000075,null,null],"vertex_ai/claude-3-sonnet":[0.000003,0.000015,null,null],"claude-3-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"vertex_ai/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/mistralai/codestral-2@001":[3e-7,9e-7,null,null],"mistralai/codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/codestral-2":[3e-7,9e-7,null,null],"codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2@001":[3e-7,9e-7,null,null],"codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/mistralai/codestral-2":[3e-7,9e-7,null,null],"mistralai/codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2501":[2e-7,6e-7,null,null],"codestral-2501":[2e-7,6e-7,null,null],"vertex_ai/codestral@2405":[2e-7,6e-7,null,null],"codestral@2405":[2e-7,6e-7,null,null],"vertex_ai/codestral@latest":[2e-7,6e-7,null,null],"codestral@latest":[2e-7,6e-7,null,null],"vertex_ai/deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"vertex_ai/deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"vertex_ai/deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"vertex_ai/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"vertex_ai/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"vertex_ai/gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"vertex_ai/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"vertex_ai/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"vertex_ai/jamba-1.5":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-large":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-large@001":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-mini":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-mini@001":[2e-7,4e-7,null,null],"vertex_ai/meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"vertex_ai/meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama3-405b-instruct-maas":[0,0,null,null],"meta/llama3-405b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-70b-instruct-maas":[0,0,null,null],"meta/llama3-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-8b-instruct-maas":[0,0,null,null],"meta/llama3-8b-instruct-maas":[0,0,null,null],"vertex_ai/minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"vertex_ai/moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"vertex_ai/zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"vertex_ai/zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"vertex_ai/mistral-medium-3":[4e-7,0.000002,null,null],"mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistral-large-2411":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2407":[0.000002,0.000006,null,null],"mistral-large@2407":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2411-001":[0.000002,0.000006,null,null],"mistral-large@2411-001":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@latest":[0.000002,0.000006,null,null],"mistral-large@latest":[0.000002,0.000006,null,null],"vertex_ai/mistral-nemo@2407":[0.000003,0.000003,null,null],"mistral-nemo@2407":[0.000003,0.000003,null,null],"vertex_ai/mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"vertex_ai/mistral-small-2503":[0.000001,0.000003,null,null],"vertex_ai/mistral-small-2503@001":[0.000001,0.000003,null,null],"mistral-small-2503@001":[0.000001,0.000003,null,null],"vertex_ai/deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"vertex_ai/openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"vertex_ai/openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"voyage/rerank-2":[5e-8,0,null,null],"rerank-2":[5e-8,0,null,null],"voyage/rerank-2-lite":[2e-8,0,null,null],"rerank-2-lite":[2e-8,0,null,null],"voyage/rerank-2.5":[5e-8,0,null,null],"rerank-2.5":[5e-8,0,null,null],"voyage/rerank-2.5-lite":[2e-8,0,null,null],"rerank-2.5-lite":[2e-8,0,null,null],"voyage/voyage-2":[1e-7,0,null,null],"voyage-2":[1e-7,0,null,null],"voyage/voyage-3":[6e-8,0,null,null],"voyage-3":[6e-8,0,null,null],"voyage/voyage-3-large":[1.8e-7,0,null,null],"voyage-3-large":[1.8e-7,0,null,null],"voyage/voyage-3-lite":[2e-8,0,null,null],"voyage-3-lite":[2e-8,0,null,null],"voyage/voyage-3.5":[6e-8,0,null,null],"voyage-3.5":[6e-8,0,null,null],"voyage/voyage-3.5-lite":[2e-8,0,null,null],"voyage-3.5-lite":[2e-8,0,null,null],"voyage/voyage-code-2":[1.2e-7,0,null,null],"voyage-code-2":[1.2e-7,0,null,null],"voyage/voyage-code-3":[1.8e-7,0,null,null],"voyage-code-3":[1.8e-7,0,null,null],"voyage/voyage-context-3":[1.8e-7,0,null,null],"voyage-context-3":[1.8e-7,0,null,null],"voyage/voyage-finance-2":[1.2e-7,0,null,null],"voyage-finance-2":[1.2e-7,0,null,null],"voyage/voyage-large-2":[1.2e-7,0,null,null],"voyage-large-2":[1.2e-7,0,null,null],"voyage/voyage-law-2":[1.2e-7,0,null,null],"voyage-law-2":[1.2e-7,0,null,null],"voyage/voyage-lite-01":[1e-7,0,null,null],"voyage-lite-01":[1e-7,0,null,null],"voyage/voyage-lite-02-instruct":[1e-7,0,null,null],"voyage-lite-02-instruct":[1e-7,0,null,null],"voyage/voyage-multimodal-3":[1.2e-7,0,null,null],"voyage-multimodal-3":[1.2e-7,0,null,null],"wandb/openai/gpt-oss-120b":[0.015,0.06,null,null],"wandb/openai/gpt-oss-20b":[0.005,0.02,null,null],"wandb/zai-org/GLM-4.5":[0.055,0.2,null,null],"wandb/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.01,0.01,null,null],"wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct":[0.1,0.15,null,null],"wandb/Qwen/Qwen3-235B-A22B-Thinking-2507":[0.01,0.01,null,null],"wandb/moonshotai/Kimi-K2-Instruct":[6e-7,0.0000025,null,null],"wandb/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,1e-7],"wandb/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"wandb/meta-llama/Llama-3.1-8B-Instruct":[0.022,0.022,null,null],"wandb/deepseek-ai/DeepSeek-V3.1":[0.055,0.165,null,null],"wandb/deepseek-ai/DeepSeek-R1-0528":[0.135,0.54,null,null],"wandb/deepseek-ai/DeepSeek-V3-0324":[0.114,0.275,null,null],"wandb/meta-llama/Llama-3.3-70B-Instruct":[0.071,0.071,null,null],"wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct":[0.017,0.066,null,null],"wandb/microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"watsonx/ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/mistralai/mistral-large":[0.000003,0.00001,null,null],"watsonx/bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"watsonx/core42/jais-13b-chat":[0.0005,0.002,null,null],"core42/jais-13b-chat":[0.0005,0.002,null,null],"watsonx/google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"watsonx/ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"watsonx/ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"watsonx/ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"watsonx/meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"watsonx/meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"watsonx/meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"watsonx/meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"watsonx/meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"watsonx/mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"watsonx/mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"watsonx/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"watsonx/sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"grok-2":[0.000002,0.00001,null,null],"xai/grok-2-1212":[0.000002,0.00001,null,null],"grok-2-1212":[0.000002,0.00001,null,null],"xai/grok-2-latest":[0.000002,0.00001,null,null],"grok-2-latest":[0.000002,0.00001,null,null],"grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision-1212":[0.000002,0.00001,null,null],"grok-2-vision-1212":[0.000002,0.00001,null,null],"xai/grok-2-vision-latest":[0.000002,0.00001,null,null],"grok-2-vision-latest":[0.000002,0.00001,null,null],"xai/grok-3-beta":[0.000003,0.000015,null,7.5e-7],"grok-3-beta":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"xai/grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"xai/grok-3-latest":[0.000003,0.000015,null,7.5e-7],"grok-3-latest":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-fast":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"xai/grok-4-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-0709":[0.000003,0.000015,null,null],"grok-4-0709":[0.000003,0.000015,null,null],"xai/grok-4-latest":[0.000003,0.000015,null,null],"grok-4-latest":[0.000003,0.000015,null,null],"xai/grok-4-1-fast":[2e-7,5e-7,null,5e-8],"grok-4-1-fast":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-beta":[0.000005,0.000015,null,null],"grok-beta":[0.000005,0.000015,null,null],"xai/grok-code-fast":[2e-7,0.0000015,null,2e-8],"grok-code-fast":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"xai/grok-vision-beta":[0.000005,0.000015,null,null],"grok-vision-beta":[0.000005,0.000015,null,null],"zai/glm-5":[0.000001,0.0000032,0,2e-7],"glm-5":[0.000001,0.0000032,0,2e-7],"zai/glm-5-code":[0.0000012,0.000005,0,3e-7],"glm-5-code":[0.0000012,0.000005,0,3e-7],"zai/glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.6":[6e-7,0.0000022,0,1.1e-7],"glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5v":[6e-7,0.0000018,null,null],"glm-4.5v":[6e-7,0.0000018,null,null],"zai/glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-airx":[0.0000011,0.0000045,null,null],"glm-4.5-airx":[0.0000011,0.0000045,null,null],"zai/glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"zai/glm-4.5-flash":[0,0,null,null],"glm-4.5-flash":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"fireworks_ai/accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"fireworks_ai/accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"fireworks_ai/accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/":[1e-7,0,null,null],"accounts/fireworks/models/":[1e-7,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3":[0,0,null,null],"accounts/fireworks/models/whisper-v3":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"novita/deepseek/deepseek-v3.2":[2.69e-7,4e-7,null,1.345e-7],"novita/minimax/minimax-m2.1":[3e-7,0.0000012,null,3e-8],"novita/zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"novita/xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"novita/zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"novita/moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"novita/minimax/minimax-m2":[3e-7,0.0000012,null,3e-8],"novita/paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"novita/deepseek/deepseek-v3.2-exp":[2.7e-7,4.1e-7,null,null],"novita/qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"novita/zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"novita/zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"novita/kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"novita/qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"novita/qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"novita/deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"novita/deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"novita/qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"novita/qwen/qwen3-max":[0.00000211,0.00000845,null,null],"qwen/qwen3-max":[0.00000211,0.00000845,null,null],"novita/skywork/r1v4-lite":[2e-7,6e-7,null,null],"skywork/r1v4-lite":[2e-7,6e-7,null,null],"novita/deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"novita/moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"novita/qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"novita/qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"novita/openai/gpt-oss-120b":[5e-8,2.5e-7,null,null],"novita/moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"novita/deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"novita/zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"novita/qwen/qwen3-235b-a22b-thinking-2507":[3e-7,0.000003,null,null],"novita/meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"novita/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"novita/zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"novita/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"novita/qwen/qwen3-235b-a22b-instruct-2507":[9e-8,5.8e-7,null,null],"novita/deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"novita/meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"novita/qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"novita/mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"novita/minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"novita/deepseek/deepseek-r1-0528":[7e-7,0.0000025,null,3.5e-7],"novita/deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"novita/meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"novita/microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"novita/deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"novita/deepseek/deepseek-r1-distill-llama-70b":[8e-7,8e-7,null,null],"novita/meta-llama/llama-3-70b-instruct":[5.1e-7,7.4e-7,null,null],"novita/qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"novita/meta-llama/llama-4-scout-17b-16e-instruct":[1.8e-7,5.9e-7,null,null],"novita/nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"novita/qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"novita/sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"novita/baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"novita/sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"novita/baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"novita/baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"novita/baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"novita/deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"novita/qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"novita/qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"novita/google/gemma-3-27b-it":[1.19e-7,2e-7,null,null],"novita/deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"novita/deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"novita/Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"novita/gryphe/mythomax-l2-13b":[9e-8,9e-8,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"novita/qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"novita/zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"novita/qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"novita/baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"novita/qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"novita/qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"novita/qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"novita/meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"novita/sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"novita/qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"novita/qwen/qwen3-embedding-8b":[7e-8,0,null,null],"qwen/qwen3-embedding-8b":[7e-8,0,null,null],"novita/baai/bge-m3":[1e-8,1e-8,null,null],"baai/bge-m3":[1e-8,1e-8,null,null],"novita/qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"novita/baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"llamagate/llama-3.1-8b":[3e-8,5e-8,null,null],"llama-3.1-8b":[3e-8,5e-8,null,null],"llamagate/llama-3.2-3b":[4e-8,8e-8,null,null],"llama-3.2-3b":[4e-8,8e-8,null,null],"llamagate/mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"llamagate/qwen3-8b":[4e-8,1.4e-7,null,null],"qwen3-8b":[4e-8,1.4e-7,null,null],"llamagate/dolphin3-8b":[8e-8,1.5e-7,null,null],"dolphin3-8b":[8e-8,1.5e-7,null,null],"llamagate/deepseek-r1-8b":[1e-7,2e-7,null,null],"deepseek-r1-8b":[1e-7,2e-7,null,null],"llamagate/deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"llamagate/openthinker-7b":[8e-8,1.5e-7,null,null],"openthinker-7b":[8e-8,1.5e-7,null,null],"llamagate/qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"llamagate/deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"llamagate/codellama-7b":[6e-8,1.2e-7,null,null],"codellama-7b":[6e-8,1.2e-7,null,null],"llamagate/qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"llamagate/llava-7b":[1e-7,2e-7,null,null],"llava-7b":[1e-7,2e-7,null,null],"llamagate/gemma3-4b":[3e-8,8e-8,null,null],"gemma3-4b":[3e-8,8e-8,null,null],"llamagate/nomic-embed-text":[2e-8,0,null,null],"nomic-embed-text":[2e-8,0,null,null],"llamagate/qwen3-embedding-8b":[2e-8,0,null,null],"qwen3-embedding-8b":[2e-8,0,null,null],"sarvam/sarvam-m":[0,0,0,0],"sarvam-m":[0,0,0,0],"gemini/gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini/gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini/gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini/gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"vertex_ai/claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"bedrock_mantle/openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,null],"bedrock/us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"MiniMax-M2.7":[3e-7,0.0000012,3.75e-7,6e-8],"MiniMax-M2.7-highspeed":[6e-7,0.0000024,3.75e-7,6e-8]}
\ No newline at end of file
+{"ai21.j2-mid-v1":[0.0000125,0.0000125,null,null],"ai21.j2-ultra-v1":[0.0000188,0.0000188,null,null],"ai21.jamba-1-5-large-v1:0":[0.000002,0.000008,null,null],"ai21.jamba-1-5-mini-v1:0":[2e-7,4e-7,null,null],"ai21.jamba-instruct-v1:0":[5e-7,7e-7,null,null],"us.writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"us.writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"writer.palmyra-x4-v1:0":[0.0000025,0.00001,null,null],"writer.palmyra-x5-v1:0":[6e-7,0.000006,null,null],"amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"apac.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"apac.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"eu.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"eu.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"us.amazon.nova-2-lite-v1:0":[3.3e-7,0.00000275,null,8.25e-8],"us.amazon.nova-2-pro-preview-20251202-v1:0":[0.0000021875,0.0000175,null,5.46875e-7],"amazon.nova-2-multimodal-embeddings-v1:0":[1.35e-7,0,null,null],"amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"amazon.rerank-v1:0":[0,0,null,null],"amazon.titan-embed-image-v1":[8e-7,0,null,null],"amazon.titan-embed-text-v1":[1e-7,0,null,null],"amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"us.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"eu.twelvelabs.marengo-embed-2-7-v1:0":[0.00007,0,null,null],"amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-7-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"global.anthropic.claude-opus-4-6-v1":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-6-v1":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"anthropic.claude-mythos-preview":[0,0,null,null],"global.anthropic.claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"eu.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"au.anthropic.claude-opus-4-7":[0.0000055,0.0000275,0.000006875,5.5e-7],"anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-sonnet-4-6":[0.0000033,0.0000165,0.000004125,3.3e-7],"anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"anthropic.claude-v1":[0.000008,0.000024,null,null],"anthropic.claude-v2:1":[0.000008,0.000024,null,null],"apac.amazon.nova-lite-v1:0":[6.3e-8,2.52e-7,null,null],"apac.amazon.nova-micro-v1:0":[3.7e-8,1.48e-7,null,null],"apac.amazon.nova-pro-v1:0":[8.4e-7,0.00000336,null,null],"apac.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"apac.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"apac.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"apac.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"au.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"babbage-002":[4e-7,4e-7,null,null],"chatdolphin":[5e-7,5e-7,null,null],"chatgpt-4o-latest":[0.000005,0.000015,null,null],"gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"claude-haiku-4-5-20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"claude-3-7-sonnet-20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-haiku-20240307":[2.5e-7,0.00000125,3e-7,3e-8],"claude-3-opus-20240229":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-opus-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-4-sonnet-20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1-20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-5-20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6-20260205":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7-20260416":[0.000005,0.000025,0.00000625,5e-7],"claude-sonnet-4-20250514":[0.000003,0.000015,0.00000375,3e-7],"codex-mini-latest":[0.0000015,0.000006,null,3.75e-7],"cohere.command-light-text-v14":[3e-7,6e-7,null,null],"cohere.command-r-plus-v1:0":[0.000003,0.000015,null,null],"cohere.command-r-v1:0":[5e-7,0.0000015,null,null],"cohere.command-text-v14":[0.0000015,0.000002,null,null],"cohere.embed-english-v3":[1e-7,0,null,null],"cohere.embed-multilingual-v3":[1e-7,0,null,null],"cohere.embed-v4:0":[1.2e-7,0,null,null],"cohere.rerank-v3-5:0":[0,0,null,null],"command":[0.000001,0.000002,null,null],"command-a-03-2025":[0.0000025,0.00001,null,null],"command-light":[3e-7,6e-7,null,null],"command-nightly":[0.000001,0.000002,null,null],"command-r":[1.5e-7,6e-7,null,null],"command-r-08-2024":[1.5e-7,6e-7,null,null],"command-r-plus":[0.0000025,0.00001,null,null],"command-r-plus-08-2024":[0.0000025,0.00001,null,null],"command-r7b-12-2024":[1.5e-7,3.75e-8,null,null],"computer-use-preview":[0.000003,0.000012,null,null],"deepseek-chat":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"davinci-002":[0.000002,0.000002,null,null],"deepseek.v3-v1:0":[5.8e-7,0.00000168,null,null],"deepseek.v3.2":[6.2e-7,0.00000185,null,null],"dolphin":[5e-7,5e-7,null,null],"deepseek-v3-2-251201":[0,0,null,null],"glm-4-7-251222":[0,0,null,null],"kimi-k2-thinking-251104":[0,0,null,null],"doubao-embedding":[0,0,null,null],"doubao-embedding-large":[0,0,null,null],"doubao-embedding-large-text-240915":[0,0,null,null],"doubao-embedding-large-text-250515":[0,0,null,null],"doubao-embedding-text-240715":[0,0,null,null],"embed-english-light-v2.0":[1e-7,0,null,null],"embed-english-light-v3.0":[1e-7,0,null,null],"embed-english-v2.0":[1e-7,0,null,null],"embed-english-v3.0":[1e-7,0,null,null],"embed-multilingual-v2.0":[1e-7,0,null,null],"embed-multilingual-v3.0":[1e-7,0,null,null],"embed-multilingual-light-v3.0":[0.0001,0,null,null],"eu.amazon.nova-lite-v1:0":[7.8e-8,3.12e-7,null,null],"eu.amazon.nova-micro-v1:0":[4.6e-8,1.84e-7,null,null],"eu.amazon.nova-pro-v1:0":[0.00000105,0.0000042,null,null],"eu.anthropic.claude-3-5-haiku-20241022-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"eu.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"eu.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"eu.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"eu.meta.llama3-2-1b-instruct-v1:0":[1.3e-7,1.3e-7,null,null],"eu.meta.llama3-2-3b-instruct-v1:0":[1.9e-7,1.9e-7,null,null],"eu.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"fireworks-ai-4.1b-to-16b":[2e-7,2e-7,null,null],"fireworks-ai-56b-to-176b":[0.0000012,0.0000012,null,null],"fireworks-ai-above-16b":[9e-7,9e-7,null,null],"fireworks-ai-default":[0,0,null,null],"fireworks-ai-embedding-150m-to-350m":[1.6e-8,0,null,null],"fireworks-ai-embedding-up-to-150m":[8e-9,0,null,null],"fireworks-ai-moe-up-to-56b":[5e-7,5e-7,null,null],"fireworks-ai-up-to-4b":[2e-7,2e-7,null,null],"ft:babbage-002":[0.0000016,0.0000016,null,null],"ft:davinci-002":[0.000012,0.000012,null,null],"ft:gpt-3.5-turbo":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0125":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-0613":[0.000003,0.000006,null,null],"ft:gpt-3.5-turbo-1106":[0.000003,0.000006,null,null],"ft:gpt-4-0613":[0.00003,0.00006,null,null],"ft:gpt-4o-2024-08-06":[0.00000375,0.000015,null,0.000001875],"ft:gpt-4o-2024-11-20":[0.00000375,0.000015,0.000001875,null],"ft:gpt-4o-mini-2024-07-18":[3e-7,0.0000012,null,1.5e-7],"ft:gpt-4.1-2025-04-14":[0.000003,0.000012,null,7.5e-7],"ft:gpt-4.1-mini-2025-04-14":[8e-7,0.0000032,null,2e-7],"ft:gpt-4.1-nano-2025-04-14":[2e-7,8e-7,null,5e-8],"ft:o4-mini-2025-04-16":[0.000004,0.000016,null,0.000001],"gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini-2.0-flash-001":[1.5e-7,6e-7,null,3.75e-8],"gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini-embedding-001":[1.5e-7,0,null,null],"gemini-embedding-2-preview":[2e-7,0,null,null],"gemini-embedding-2":[2e-7,0,null,null],"gemini-flash-experimental":[0,0,null,null],"gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"google.gemma-3-12b-it":[9e-8,2.9e-7,null,null],"google.gemma-3-27b-it":[2.3e-7,3.8e-7,null,null],"google.gemma-3-4b-it":[4e-8,8e-8,null,null],"global.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"global.anthropic.claude-haiku-4-5-20251001-v1:0":[0.000001,0.000005,0.00000125,1e-7],"global.amazon.nova-2-lite-v1:0":[3e-7,0.0000025,null,7.5e-8],"gpt-3.5-turbo":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"gpt-3.5-turbo-1106":[0.000001,0.000002,null,null],"gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-4":[0.00003,0.00006,null,null],"gpt-4-0125-preview":[0.00001,0.00003,null,null],"gpt-4-0314":[0.00003,0.00006,null,null],"gpt-4-0613":[0.00003,0.00006,null,null],"gpt-4-1106-preview":[0.00001,0.00003,null,null],"gpt-4-turbo":[0.00001,0.00003,null,null],"gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"gpt-4-turbo-preview":[0.00001,0.00003,null,null],"gpt-4.1":[0.000002,0.000008,null,5e-7],"gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"gpt-4o":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"gpt-4o-audio-preview":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"gpt-4o-audio-preview-2025-06-03":[0.0000025,0.00001,null,null],"gpt-audio":[0.0000025,0.00001,null,null],"gpt-audio-1.5":[0.0000025,0.00001,null,null],"gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"gpt-audio-mini":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"gpt-audio-mini-2025-12-15":[6e-7,0.0000024,null,null],"gpt-4o-mini":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-2024-07-18":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-audio-preview":[1.5e-7,6e-7,null,null],"gpt-4o-mini-audio-preview-2024-12-17":[1.5e-7,6e-7,null,null],"gpt-4o-mini-realtime-preview":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"gpt-4o-mini-search-preview":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-search-preview-2025-03-11":[1.5e-7,6e-7,null,7.5e-8],"gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"gpt-4o-realtime-preview":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2025-06-03":[0.000005,0.00002,null,0.0000025],"gpt-4o-search-preview":[0.0000025,0.00001,null,0.00000125],"gpt-4o-search-preview-2025-03-11":[0.0000025,0.00001,null,0.00000125],"gpt-4o-transcribe":[0.0000025,0.00001,null,null],"gpt-image-1.5":[0.000005,0.00001,null,0.00000125],"gpt-image-1.5-2025-12-16":[0.000005,0.00001,null,0.00000125],"gpt-image-2":[0.000005,0.00001,null,0.00000125],"gpt-image-2-2026-04-21":[0.000005,0.00001,null,0.00000125],"gpt-5":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat-latest":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-pro":[0.000021,0.000168,null,null],"gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"gpt-5.5":[0.000005,0.00003,null,5e-7],"gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"gpt-5-pro":[0.000015,0.00012,null,null],"gpt-5-pro-2025-10-06":[0.000015,0.00012,null,null],"gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"gpt-5-nano":[5e-8,4e-7,null,5e-9],"gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"gpt-realtime":[0.000004,0.000016,null,4e-7],"gpt-realtime-1.5":[0.000004,0.000016,null,4e-7],"gpt-realtime-mini":[6e-7,0.0000024,null,null],"gpt-realtime-2025-08-28":[0.000004,0.000016,null,4e-7],"j2-light":[0.000003,0.000003,null,null],"j2-mid":[0.00001,0.00001,null,null],"j2-ultra":[0.000015,0.000015,null,null],"jamba-1.5":[2e-7,4e-7,null,null],"jamba-1.5-large":[0.000002,0.000008,null,null],"jamba-1.5-large@001":[0.000002,0.000008,null,null],"jamba-1.5-mini":[2e-7,4e-7,null,null],"jamba-1.5-mini@001":[2e-7,4e-7,null,null],"jamba-large-1.6":[0.000002,0.000008,null,null],"jamba-large-1.7":[0.000002,0.000008,null,null],"jamba-mini-1.6":[2e-7,4e-7,null,null],"jamba-mini-1.7":[2e-7,4e-7,null,null],"jina-reranker-v2-base-multilingual":[1.8e-8,1.8e-8,null,null],"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"jp.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"meta.llama2-13b-chat-v1":[7.5e-7,0.000001,null,null],"meta.llama2-70b-chat-v1":[0.00000195,0.00000256,null,null],"meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"minimax.minimax-m2":[3e-7,0.0000012,null,null],"minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"mistral.devstral-2-123b":[4e-7,0.000002,null,null],"mistral.magistral-small-2509":[5e-7,0.0000015,null,null],"mistral.ministral-3-14b-instruct":[2e-7,2e-7,null,null],"mistral.ministral-3-3b-instruct":[1e-7,1e-7,null,null],"mistral.ministral-3-8b-instruct":[1.5e-7,1.5e-7,null,null],"mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"mistral.mistral-large-2407-v1:0":[0.000003,0.000009,null,null],"mistral.mistral-large-3-675b-instruct":[5e-7,0.0000015,null,null],"mistral.mistral-small-2402-v1:0":[0.000001,0.000003,null,null],"mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"mistral.voxtral-mini-3b-2507":[4e-8,4e-8,null,null],"mistral.voxtral-small-24b-2507":[1e-7,3e-7,null,null],"moonshot.kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"multimodalembedding":[8e-7,0,null,null],"multimodalembedding@001":[8e-7,0,null,null],"nvidia.nemotron-nano-12b-v2":[2e-7,6e-7,null,null],"nvidia.nemotron-nano-9b-v2":[6e-8,2.3e-7,null,null],"nvidia.nemotron-nano-3-30b":[6e-8,2.4e-7,null,null],"nvidia.nemotron-super-3-120b":[1.5e-7,6.5e-7,null,null],"o1":[0.000015,0.00006,null,0.0000075],"o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"o1-pro":[0.00015,0.0006,null,null],"o1-pro-2025-03-19":[0.00015,0.0006,null,null],"o3":[0.000002,0.000008,null,5e-7],"o3-2025-04-16":[0.000002,0.000008,null,5e-7],"o3-deep-research":[0.00001,0.00004,null,0.0000025],"o3-deep-research-2025-06-26":[0.00001,0.00004,null,0.0000025],"o3-mini":[0.0000011,0.0000044,null,5.5e-7],"o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"o3-pro":[0.00002,0.00008,null,null],"o3-pro-2025-06-10":[0.00002,0.00008,null,null],"o4-mini":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"o4-mini-deep-research":[0.000002,0.000008,null,5e-7],"o4-mini-deep-research-2025-06-26":[0.000002,0.000008,null,5e-7],"omni-moderation-2024-09-26":[0,0,null,null],"omni-moderation-latest":[0,0,null,null],"openai.gpt-oss-120b-1:0":[1.5e-7,6e-7,null,null],"openai.gpt-oss-20b-1:0":[7e-8,3e-7,null,null],"openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-safeguard-20b":[7e-8,2e-7,null,null],"qwen.qwen3-coder-480b-a35b-v1:0":[2.2e-7,0.0000018,null,null],"qwen.qwen3-235b-a22b-2507-v1:0":[2.2e-7,8.8e-7,null,null],"qwen.qwen3-coder-30b-a3b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-32b-v1:0":[1.5e-7,6e-7,null,null],"qwen.qwen3-next-80b-a3b":[1.5e-7,0.0000012,null,null],"qwen.qwen3-vl-235b-a22b":[5.3e-7,0.00000266,null,null],"qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"rerank-english-v2.0":[0,0,null,null],"rerank-english-v3.0":[0,0,null,null],"rerank-multilingual-v2.0":[0,0,null,null],"rerank-multilingual-v3.0":[0,0,null,null],"rerank-v3.5":[0,0,null,null],"text-embedding-004":[1e-7,0,null,null],"text-embedding-005":[1e-7,0,null,null],"text-embedding-3-large":[1.3e-7,0,null,null],"text-embedding-3-small":[2e-8,0,null,null],"text-embedding-ada-002":[1e-7,0,null,null],"text-embedding-ada-002-v2":[1e-7,0,null,null],"text-embedding-large-exp-03-07":[1e-7,0,null,null],"text-embedding-preview-0409":[6.25e-9,0,null,null],"text-moderation-007":[0,0,null,null],"text-moderation-latest":[0,0,null,null],"text-moderation-stable":[0,0,null,null],"text-multilingual-embedding-002":[1e-7,0,null,null],"text-unicorn":[0.00001,0.000028,null,null],"text-unicorn@001":[0.00001,0.000028,null,null],"together-ai-21.1b-41b":[8e-7,8e-7,null,null],"together-ai-4.1b-8b":[2e-7,2e-7,null,null],"together-ai-41.1b-80b":[9e-7,9e-7,null,null],"together-ai-8.1b-21b":[3e-7,3e-7,null,null],"together-ai-81.1b-110b":[0.0000018,0.0000018,null,null],"together-ai-embedding-151m-to-350m":[1.6e-8,0,null,null],"together-ai-embedding-up-to-150m":[8e-9,0,null,null],"together-ai-up-to-4b":[1e-7,1e-7,null,null],"us.amazon.nova-lite-v1:0":[6e-8,2.4e-7,null,null],"us.amazon.nova-micro-v1:0":[3.5e-8,1.4e-7,null,null],"us.amazon.nova-premier-v1:0":[0.0000025,0.0000125,null,null],"us.amazon.nova-pro-v1:0":[8e-7,0.0000032,null,null],"us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"us.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-5-sonnet-20241022-v2:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-7-sonnet-20250219-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-3-haiku-20240307-v1:0":[2.5e-7,0.00000125,3.125e-7,2.5e-8],"us.anthropic.claude-3-opus-20240229-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-3-sonnet-20240229-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.anthropic.claude-opus-4-1-20250805-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"au.anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000011,0.0000055,0.000001375,1.1e-7],"us.anthropic.claude-opus-4-20250514-v1:0":[0.000015,0.000075,0.00001875,0.0000015],"us.anthropic.claude-opus-4-5-20251101-v1:0":[0.0000055,0.0000275,0.000006875,5.5e-7],"global.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"eu.anthropic.claude-opus-4-5-20251101-v1:0":[0.000005,0.000025,0.00000625,5e-7],"us.anthropic.claude-sonnet-4-20250514-v1:0":[0.000003,0.000015,0.00000375,3e-7],"us.deepseek.r1-v1:0":[0.00000135,0.0000054,null,null],"us.deepseek.v3.2":[6.2e-7,0.00000185,null,null],"eu.deepseek.v3.2":[7.4e-7,0.00000222,null,null],"us.meta.llama3-1-405b-instruct-v1:0":[0.00000532,0.000016,null,null],"us.meta.llama3-1-70b-instruct-v1:0":[9.9e-7,9.9e-7,null,null],"us.meta.llama3-1-8b-instruct-v1:0":[2.2e-7,2.2e-7,null,null],"us.meta.llama3-2-11b-instruct-v1:0":[3.5e-7,3.5e-7,null,null],"us.meta.llama3-2-1b-instruct-v1:0":[1e-7,1e-7,null,null],"us.meta.llama3-2-3b-instruct-v1:0":[1.5e-7,1.5e-7,null,null],"us.meta.llama3-2-90b-instruct-v1:0":[0.000002,0.000002,null,null],"us.meta.llama3-3-70b-instruct-v1:0":[7.2e-7,7.2e-7,null,null],"us.meta.llama4-maverick-17b-instruct-v1:0":[2.4e-7,9.7e-7,null,null],"us.meta.llama4-scout-17b-instruct-v1:0":[1.7e-7,6.6e-7,null,null],"us.mistral.pixtral-large-2502-v1:0":[0.000002,0.000006,null,null],"zai.glm-4.7":[6e-7,0.0000022,null,null],"zai.glm-5":[0.000001,0.0000032,null,null],"zai.glm-4.7-flash":[7e-8,4e-7,null,null],"gpt-4o-mini-tts-2025-03-20":[0.0000025,0.00001,null,null],"gpt-4o-mini-tts-2025-12-15":[0.0000025,0.00001,null,null],"gpt-4o-mini-transcribe-2025-03-20":[0.00000125,0.000005,null,null],"gpt-4o-mini-transcribe-2025-12-15":[0.00000125,0.000005,null,null],"gpt-5-search-api":[0.00000125,0.00001,null,1.25e-7],"gpt-5-search-api-2025-10-14":[0.00000125,0.00001,null,1.25e-7],"gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"gpt-realtime-mini-2025-12-15":[6e-7,0.0000024,null,6e-8],"gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini-flash-latest":[3e-7,0.0000025,null,3e-8],"gemini-flash-lite-latest":[1e-7,4e-7,null,1e-8],"gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"gemini-exp-1206":[3e-7,0.0000025,null,3e-8],"anyscale/HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"HuggingFaceH4/zephyr-7b-beta":[1.5e-7,1.5e-7,null,null],"anyscale/codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-34b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"codellama/CodeLlama-70b-Instruct-hf":[0.000001,0.000001,null,null],"anyscale/google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"google/gemma-7b-it":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"meta-llama/Llama-2-13b-chat-hf":[2.5e-7,2.5e-7,null,null],"anyscale/meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"meta-llama/Llama-2-70b-chat-hf":[0.000001,0.000001,null,null],"anyscale/meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"meta-llama/Llama-2-7b-chat-hf":[1.5e-7,1.5e-7,null,null],"anyscale/meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"meta-llama/Meta-Llama-3-70B-Instruct":[0.000001,0.000001,null,null],"anyscale/meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/Meta-Llama-3-8B-Instruct":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mistral-7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"mistralai/Mixtral-8x22B-Instruct-v0.1":[9e-7,9e-7,null,null],"anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"mistralai/Mixtral-8x7B-Instruct-v0.1":[1.5e-7,1.5e-7,null,null],"azure/ada":[1e-7,0,null,null],"ada":[1e-7,0,null,null],"azure/codex-mini":[0.0000015,0.000006,null,3.75e-7],"codex-mini":[0.0000015,0.000006,null,3.75e-7],"azure/command-r-plus":[0.000003,0.000015,null,null],"azure_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"azure_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"azure_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"azure_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"azure_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"azure/computer-use-preview":[0.000003,0.000012,null,null],"azure_ai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"gpt-oss-120b":[1.5e-7,6e-7,null,null],"azure_ai/model_router":[1.4e-7,0,null,null],"model_router":[1.4e-7,0,null,null],"azure/eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"eu/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"eu/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"eu/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"eu/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"eu/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"eu/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"eu/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"eu/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"eu/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"eu/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"eu/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"eu/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"eu/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"eu/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global-standard/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"global-standard/gpt-4o-mini":[1.5e-7,6e-7,null,null],"azure/global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"global/gpt-4o-2024-11-20":[0.0000025,0.00001,null,0.00000125],"azure/global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"global/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"global/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-3.5-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo":[5e-7,0.0000015,null,null],"gpt-35-turbo":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"gpt-35-turbo-0125":[5e-7,0.0000015,null,null],"azure/gpt-35-turbo-1106":[0.000001,0.000002,null,null],"gpt-35-turbo-1106":[0.000001,0.000002,null,null],"azure/gpt-35-turbo-16k":[0.000003,0.000004,null,null],"gpt-35-turbo-16k":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"gpt-35-turbo-16k-0613":[0.000003,0.000004,null,null],"azure/gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct":[0.0000015,0.000002,null,null],"azure/gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"gpt-35-turbo-instruct-0914":[0.0000015,0.000002,null,null],"azure/gpt-4":[0.00003,0.00006,null,null],"azure/gpt-4-0125-preview":[0.00001,0.00003,null,null],"azure/gpt-4-0613":[0.00003,0.00006,null,null],"azure/gpt-4-1106-preview":[0.00001,0.00003,null,null],"azure/gpt-4-32k":[0.00006,0.00012,null,null],"gpt-4-32k":[0.00006,0.00012,null,null],"azure/gpt-4-32k-0613":[0.00006,0.00012,null,null],"gpt-4-32k-0613":[0.00006,0.00012,null,null],"azure/gpt-4-turbo":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-2024-04-09":[0.00001,0.00003,null,null],"azure/gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"gpt-4-turbo-vision-preview":[0.00001,0.00003,null,null],"azure/gpt-4.1":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-2025-04-14":[0.000002,0.000008,null,5e-7],"azure/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-mini-2025-04-14":[4e-7,0.0000016,null,1e-7],"azure/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.1-nano-2025-04-14":[1e-7,4e-7,null,2.5e-8],"azure/gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"gpt-4.5-preview":[0.000075,0.00015,null,0.0000375],"azure/gpt-4o":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"azure/gpt-4o-2024-08-06":[0.0000025,0.00001,null,0.00000125],"azure/gpt-4o-2024-11-20":[0.00000275,0.000011,null,0.00000125],"azure/gpt-audio-2025-08-28":[0.0000025,0.00001,null,null],"azure/gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"gpt-audio-1.5-2026-02-23":[0.0000025,0.00001,null,null],"azure/gpt-audio-mini-2025-10-06":[6e-7,0.0000024,null,null],"azure/gpt-4o-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,7.5e-8],"azure/gpt-4o-mini-audio-preview-2024-12-17":[0.0000025,0.00001,null,null],"azure/gpt-4o-mini-realtime-preview-2024-12-17":[6e-7,0.0000024,null,3e-7],"azure/gpt-realtime-2025-08-28":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"gpt-realtime-1.5-2026-02-23":[0.000004,0.000016,null,0.000004],"azure/gpt-realtime-mini-2025-10-06":[6e-7,0.0000024,null,6e-8],"azure/gpt-4o-mini-transcribe":[0.00000125,0.000005,null,null],"azure/gpt-4o-mini-tts":[0.0000025,0.00001,null,null],"azure/gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"gpt-4o-realtime-preview-2024-10-01":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-realtime-preview-2024-12-17":[0.000005,0.00002,null,0.0000025],"azure/gpt-4o-transcribe":[0.0000025,0.00001,null,null],"azure/gpt-4o-transcribe-diarize":[0.0000025,0.00001,null,null],"azure/gpt-5.1-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-codex-2025-11-13":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"gpt-5.1-codex-mini-2025-11-13":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-2025-08-07":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-chat-latest":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-mini-2025-08-07":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5-nano":[5e-8,4e-7,null,5e-9],"azure/gpt-5-nano-2025-08-07":[5e-8,4e-7,null,5e-9],"azure/gpt-5-pro":[0.000015,0.00012,null,null],"azure/gpt-5.1":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"gpt-5.1-chat":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"azure/gpt-5.1-codex-mini":[2.5e-7,0.000002,null,2.5e-8],"azure/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"gpt-5.2-chat-2025-12-11":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"gpt-5.3-chat":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.3-codex":[0.00000175,0.000014,null,1.75e-7],"azure/gpt-5.2-pro":[0.000021,0.000168,null,null],"azure/gpt-5.2-pro-2025-12-11":[0.000021,0.000168,null,null],"azure/gpt-5.4":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-2026-03-05":[0.0000025,0.000015,null,2.5e-7],"azure/gpt-5.4-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-pro-2026-03-05":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-2026-04-23":[0.000005,0.00003,null,5e-7],"azure/gpt-5.5-pro":[0.00003,0.00018,null,0.000003],"azure/gpt-5.5-pro-2026-04-23":[0.00003,0.00018,null,0.000003],"azure/gpt-5.4-mini":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-mini-2026-03-17":[7.5e-7,0.0000045,null,7.5e-8],"azure/gpt-5.4-nano":[2e-7,0.00000125,null,2e-8],"azure/gpt-5.4-nano-2026-03-17":[2e-7,0.00000125,null,2e-8],"azure/gpt-image-2":[0.000005,0.00001,null,0.00000125],"azure/gpt-image-2-2026-04-21":[0.000005,0.00001,null,0.00000125],"azure/mistral-large-2402":[0.000008,0.000024,null,null],"mistral-large-2402":[0.000008,0.000024,null,null],"azure/mistral-large-latest":[0.000008,0.000024,null,null],"mistral-large-latest":[0.000008,0.000024,null,null],"azure/o1":[0.000015,0.00006,null,0.0000075],"azure/o1-2024-12-17":[0.000015,0.00006,null,0.0000075],"azure/o1-mini":[0.00000121,0.00000484,null,6.05e-7],"o1-mini":[0.00000121,0.00000484,null,6.05e-7],"azure/o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"o1-mini-2024-09-12":[0.0000011,0.0000044,null,5.5e-7],"azure/o1-preview":[0.000015,0.00006,null,0.0000075],"o1-preview":[0.000015,0.00006,null,0.0000075],"azure/o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"o1-preview-2024-09-12":[0.000015,0.00006,null,0.0000075],"azure/o3":[0.000002,0.000008,null,5e-7],"azure/o3-2025-04-16":[0.000002,0.000008,null,5e-7],"azure/o3-deep-research":[0.00001,0.00004,null,0.0000025],"azure/o3-mini":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-mini-2025-01-31":[0.0000011,0.0000044,null,5.5e-7],"azure/o3-pro":[0.00002,0.00008,null,null],"azure/o3-pro-2025-06-10":[0.00002,0.00008,null,null],"azure/o4-mini":[0.0000011,0.0000044,null,2.75e-7],"azure/o4-mini-2025-04-16":[0.0000011,0.0000044,null,2.75e-7],"azure/text-embedding-3-large":[1.3e-7,0,null,null],"azure/text-embedding-3-small":[2e-8,0,null,null],"azure/text-embedding-ada-002":[1e-7,0,null,null],"azure/us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"us/gpt-4.1-2025-04-14":[0.0000022,0.0000088,null,5.5e-7],"azure/us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"us/gpt-4.1-mini-2025-04-14":[4.4e-7,0.00000176,null,1.1e-7],"azure/us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"us/gpt-4.1-nano-2025-04-14":[1.1e-7,4.4e-7,null,2.5e-8],"azure/us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"us/gpt-4o-2024-08-06":[0.00000275,0.000011,null,0.000001375],"azure/us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"us/gpt-4o-2024-11-20":[0.00000275,0.000011,0.00000138,null],"azure/us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"us/gpt-4o-mini-2024-07-18":[1.65e-7,6.6e-7,null,8.3e-8],"azure/us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"us/gpt-4o-mini-realtime-preview-2024-12-17":[6.6e-7,0.00000264,null,3.3e-7],"azure/us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-10-01":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"us/gpt-4o-realtime-preview-2024-12-17":[0.0000055,0.000022,null,0.00000275],"azure/us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"us/gpt-5-2025-08-07":[0.000001375,0.000011,null,1.375e-7],"azure/us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"us/gpt-5-mini-2025-08-07":[2.75e-7,0.0000022,null,2.75e-8],"azure/us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"us/gpt-5-nano-2025-08-07":[5.5e-8,4.4e-7,null,5.5e-9],"azure/us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-chat":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"us/gpt-5.1-codex":[0.00000138,0.000011,null,1.4e-7],"azure/us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"us/gpt-5.1-codex-mini":[2.75e-7,0.0000022,null,2.8e-8],"azure/us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"us/o1-2024-12-17":[0.0000165,0.000066,null,0.00000825],"azure/us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"us/o1-mini-2024-09-12":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"us/o1-preview-2024-09-12":[0.0000165,0.000066,null,0.00000825],"azure/us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"us/o3-2025-04-16":[0.0000022,0.0000088,null,5.5e-7],"azure/us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"us/o3-mini-2025-01-31":[0.00000121,0.00000484,null,6.05e-7],"azure/us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"us/o4-mini-2025-04-16":[0.00000121,0.00000484,null,3.1e-7],"azure_ai/Cohere-embed-v3-english":[1e-7,0,null,null],"Cohere-embed-v3-english":[1e-7,0,null,null],"azure_ai/Cohere-embed-v3-multilingual":[1e-7,0,null,null],"Cohere-embed-v3-multilingual":[1e-7,0,null,null],"azure_ai/Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"Llama-3.2-11B-Vision-Instruct":[3.7e-7,3.7e-7,null,null],"azure_ai/Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"Llama-3.2-90B-Vision-Instruct":[0.00000204,0.00000204,null,null],"azure_ai/Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"Llama-3.3-70B-Instruct":[7.1e-7,7.1e-7,null,null],"azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"Llama-4-Maverick-17B-128E-Instruct-FP8":[0.00000141,3.5e-7,null,null],"azure_ai/Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"Llama-4-Scout-17B-16E-Instruct":[2e-7,7.8e-7,null,null],"azure_ai/Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"Meta-Llama-3-70B-Instruct":[0.0000011,3.7e-7,null,null],"azure_ai/Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"Meta-Llama-3.1-405B-Instruct":[0.00000533,0.000016,null,null],"azure_ai/Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"Meta-Llama-3.1-70B-Instruct":[0.00000268,0.00000354,null,null],"azure_ai/Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"Meta-Llama-3.1-8B-Instruct":[3e-7,6.1e-7,null,null],"azure_ai/Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-128k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"Phi-3-medium-4k-instruct":[1.7e-7,6.8e-7,null,null],"azure_ai/Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-128k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3-mini-4k-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-128k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"Phi-3-small-8k-instruct":[1.5e-7,6e-7,null,null],"azure_ai/Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"Phi-3.5-MoE-instruct":[1.6e-7,6.4e-7,null,null],"azure_ai/Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-mini-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"Phi-3.5-vision-instruct":[1.3e-7,5.2e-7,null,null],"azure_ai/Phi-4":[1.25e-7,5e-7,null,null],"Phi-4":[1.25e-7,5e-7,null,null],"azure_ai/Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"Phi-4-mini-instruct":[7.5e-8,3e-7,null,null],"azure_ai/Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"Phi-4-multimodal-instruct":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"Phi-4-mini-reasoning":[8e-8,3.2e-7,null,null],"azure_ai/Phi-4-reasoning":[1.25e-7,5e-7,null,null],"Phi-4-reasoning":[1.25e-7,5e-7,null,null],"azure_ai/MAI-DS-R1":[0.00000135,0.0000054,null,null],"MAI-DS-R1":[0.00000135,0.0000054,null,null],"azure_ai/cohere-rerank-v3-english":[0,0,null,null],"cohere-rerank-v3-english":[0,0,null,null],"azure_ai/cohere-rerank-v3-multilingual":[0,0,null,null],"cohere-rerank-v3-multilingual":[0,0,null,null],"azure_ai/cohere-rerank-v3.5":[0,0,null,null],"cohere-rerank-v3.5":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-pro":[0,0,null,null],"cohere-rerank-v4.0-pro":[0,0,null,null],"azure_ai/cohere-rerank-v4.0-fast":[0,0,null,null],"cohere-rerank-v4.0-fast":[0,0,null,null],"azure_ai/deepseek-v3.2":[5.8e-7,0.00000168,null,null],"deepseek-v3.2":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"deepseek-v3.2-speciale":[5.8e-7,0.00000168,null,null],"azure_ai/deepseek-r1":[0.00000135,0.0000054,null,null],"deepseek-r1":[0.00000135,0.0000054,null,null],"azure_ai/deepseek-v3":[0.00000114,0.00000456,null,null],"deepseek-v3":[0.00000114,0.00000456,null,null],"azure_ai/deepseek-v3-0324":[0.00000114,0.00000456,null,null],"deepseek-v3-0324":[0.00000114,0.00000456,null,null],"azure_ai/embed-v-4-0":[1.2e-7,0,null,null],"embed-v-4-0":[1.2e-7,0,null,null],"azure_ai/global/grok-3":[0.000003,0.000015,null,null],"global/grok-3":[0.000003,0.000015,null,null],"azure_ai/global/grok-3-mini":[2.5e-7,0.00000127,null,null],"global/grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-3":[0.000003,0.000015,null,null],"grok-3":[0.000003,0.000015,null,null],"azure_ai/grok-3-mini":[2.5e-7,0.00000127,null,null],"grok-3-mini":[2.5e-7,0.00000127,null,null],"azure_ai/grok-4":[0.000003,0.000015,null,null],"grok-4":[0.000003,0.000015,null,null],"azure_ai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"grok-4-1-fast-reasoning":[2e-7,5e-7,null,null],"azure_ai/grok-code-fast-1":[2e-7,0.0000015,null,null],"grok-code-fast-1":[2e-7,0.0000015,null,null],"azure_ai/jais-30b-chat":[0.0032,0.00971,null,null],"jais-30b-chat":[0.0032,0.00971,null,null],"azure_ai/jamba-instruct":[5e-7,7e-7,null,null],"jamba-instruct":[5e-7,7e-7,null,null],"azure_ai/kimi-k2.5":[6e-7,0.000003,null,null],"kimi-k2.5":[6e-7,0.000003,null,null],"azure_ai/ministral-3b":[4e-8,4e-8,null,null],"ministral-3b":[4e-8,4e-8,null,null],"azure_ai/mistral-large":[0.000004,0.000012,null,null],"mistral-large":[0.000004,0.000012,null,null],"azure_ai/mistral-large-2407":[0.000002,0.000006,null,null],"mistral-large-2407":[0.000002,0.000006,null,null],"azure_ai/mistral-large-latest":[0.000002,0.000006,null,null],"azure_ai/mistral-large-3":[5e-7,0.0000015,null,null],"mistral-large-3":[5e-7,0.0000015,null,null],"azure_ai/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral-medium-2505":[4e-7,0.000002,null,null],"azure_ai/mistral-nemo":[1.5e-7,1.5e-7,null,null],"mistral-nemo":[1.5e-7,1.5e-7,null,null],"azure_ai/mistral-small":[0.000001,0.000003,null,null],"mistral-small":[0.000001,0.000003,null,null],"azure_ai/mistral-small-2503":[1e-7,3e-7,null,null],"mistral-small-2503":[1e-7,3e-7,null,null],"bedrock/ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"ap-northeast-1/anthropic.claude-instant-v1":[0.00000223,0.00000755,null,null],"bedrock/ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"ap-northeast-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-northeast-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-northeast-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"ap-northeast-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-northeast-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-northeast-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/moonshotai.kimi-k2.5":[6e-7,0.00000303,null,null],"bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"ap-south-1/meta.llama3-70b-instruct-v1:0":[0.00000318,0.0000042,null,null],"bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"ap-south-1/meta.llama3-8b-instruct-v1:0":[3.6e-7,7.2e-7,null,null],"bedrock/ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-south-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"ap-south-1/moonshotai.kimi-k2-thinking":[7.1e-7,0.00000294,null,null],"bedrock/ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-south-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"ap-southeast-2/minimax.minimax-m2.5":[3.09e-7,0.000001236,null,null],"bedrock/ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"ap-southeast-3/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"ap-southeast-3/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"ap-southeast-3/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"ap-southeast-3/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"ca-central-1/meta.llama3-70b-instruct-v1:0":[0.00000305,0.00000403,null,null],"bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"ca-central-1/meta.llama3-8b-instruct-v1:0":[3.5e-7,6.9e-7,null,null],"bedrock/eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"eu-north-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-north-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"eu-north-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"eu-central-1/anthropic.claude-instant-v1":[0.00000248,0.00000838,null,null],"bedrock/eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"eu-central-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-central-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-central-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"eu-west-1/meta.llama3-70b-instruct-v1:0":[0.00000286,0.00000378,null,null],"bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"eu-west-1/meta.llama3-8b-instruct-v1:0":[3.2e-7,6.5e-7,null,null],"bedrock/eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-west-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-west-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"eu-west-2/meta.llama3-70b-instruct-v1:0":[0.00000345,0.00000455,null,null],"bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"eu-west-2/meta.llama3-8b-instruct-v1:0":[3.9e-7,7.8e-7,null,null],"bedrock/eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.1":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"eu-west-2/minimax.minimax-m2.5":[4.7e-7,0.00000186,null,null],"bedrock/eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"eu-west-2/qwen.qwen3-coder-next":[7.8e-7,0.00000186,null,null],"bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"eu-west-3/mistral.mistral-7b-instruct-v0:2":[2e-7,2.6e-7,null,null],"bedrock/eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"eu-west-3/mistral.mistral-large-2402-v1:0":[0.0000104,0.0000312,null,null],"bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"eu-west-3/mistral.mixtral-8x7b-instruct-v0:1":[5.9e-7,9.1e-7,null,null],"bedrock/eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"eu-south-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"eu-south-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"invoke/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.000003,0.000015,0.00000375,3e-7],"bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"sa-east-1/meta.llama3-70b-instruct-v1:0":[0.00000445,0.00000588,null,null],"bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"sa-east-1/meta.llama3-8b-instruct-v1:0":[5e-7,0.00000101,null,null],"bedrock/sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"sa-east-1/deepseek.v3.2":[7.4e-7,0.00000222,null,null],"bedrock/sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.1":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"sa-east-1/minimax.minimax-m2.5":[3.6e-7,0.00000144,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"sa-east-1/moonshotai.kimi-k2-thinking":[7.3e-7,0.00000303,null,null],"bedrock/sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"sa-east-1/moonshotai.kimi-k2.5":[7.2e-7,0.0000036,null,null],"bedrock/sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"sa-east-1/qwen.qwen3-coder-next":[6e-7,0.00000144,null,null],"bedrock/us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-east-1/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-east-1/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-east-1/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-east-1/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-east-1/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-1/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-1/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-1/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-1/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-1/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-east-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-east-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-east-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-east-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-east-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-east-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-east-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-east-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-east-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-east-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-east-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-east-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-east-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"us-gov-west-1/amazon.nova-pro-v1:0":[9.6e-7,0.00000384,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v1":[1e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"us-gov-west-1/amazon.titan-embed-text-v2:0":[2e-7,0,null,null],"bedrock/us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"us-gov-west-1/amazon.titan-text-express-v1":[0.0000013,0.0000017,null,null],"bedrock/us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"us-gov-west-1/amazon.titan-text-lite-v1":[3e-7,4e-7,null,null],"bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"us-gov-west-1/amazon.titan-text-premier-v1:0":[5e-7,0.0000015,null,null],"bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0":[0.0000036,0.000018,0.0000045,3.6e-7],"bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0":[3e-7,0.0000015,3.75e-7,3e-8],"bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"us-gov-west-1/claude-sonnet-4-5-20250929-v1:0":[0.0000033,0.0000165,0.000004125,3.3e-7],"bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-gov-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"us-gov-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,0.00000265,null,null],"bedrock/us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"us-west-1/meta.llama3-70b-instruct-v1:0":[0.00000265,0.0000035,null,null],"bedrock/us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"us-west-1/meta.llama3-8b-instruct-v1:0":[3e-7,6e-7,null,null],"bedrock/us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"us-west-2/anthropic.claude-instant-v1":[8e-7,0.0000024,null,null],"bedrock/us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v1":[0.000008,0.000024,null,null],"bedrock/us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"us-west-2/anthropic.claude-v2:1":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"us-west-2/mistral.mistral-7b-instruct-v0:2":[1.5e-7,2e-7,null,null],"bedrock/us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"us-west-2/mistral.mistral-large-2402-v1:0":[0.000008,0.000024,null,null],"bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"us-west-2/mistral.mixtral-8x7b-instruct-v0:1":[4.5e-7,7e-7,null,null],"bedrock/us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"us-west-2/deepseek.v3.2":[6.2e-7,0.00000185,null,null],"bedrock/us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.1":[3e-7,0.0000012,null,null],"bedrock/us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"us-west-2/minimax.minimax-m2.5":[3e-7,0.0000012,null,null],"bedrock/us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"us-west-2/moonshotai.kimi-k2-thinking":[6e-7,0.0000025,null,null],"bedrock/us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"us-west-2/moonshotai.kimi-k2.5":[6e-7,0.000003,null,null],"bedrock/us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"us-west-2/qwen.qwen3-coder-next":[5e-7,0.0000012,null,null],"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0":[8e-7,0.000004,0.000001,8e-8],"cerebras/llama-3.3-70b":[8.5e-7,0.0000012,null,null],"llama-3.3-70b":[8.5e-7,0.0000012,null,null],"cerebras/llama3.1-70b":[6e-7,6e-7,null,null],"llama3.1-70b":[6e-7,6e-7,null,null],"cerebras/llama3.1-8b":[1e-7,1e-7,null,null],"llama3.1-8b":[1e-7,1e-7,null,null],"cerebras/gpt-oss-120b":[3.5e-7,7.5e-7,null,null],"cerebras/qwen-3-32b":[4e-7,8e-7,null,null],"qwen-3-32b":[4e-7,8e-7,null,null],"cerebras/zai-glm-4.6":[0.00000225,0.00000275,null,null],"zai-glm-4.6":[0.00000225,0.00000275,null,null],"cerebras/zai-glm-4.7":[0.00000225,0.00000275,null,null],"zai-glm-4.7":[0.00000225,0.00000275,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-fp16":[0.000001923,0.000001923,null,null],"cloudflare/@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"@cf/meta/llama-2-7b-chat-int8":[0.000001923,0.000001923,null,null],"cloudflare/@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"@cf/mistral/mistral-7b-instruct-v0.1":[0.000001923,0.000001923,null,null],"cloudflare/@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"@hf/thebloke/codellama-7b-instruct-awq":[0.000001923,0.000001923,null,null],"codestral/codestral-2405":[0,0,null,null],"codestral-2405":[0,0,null,null],"codestral/codestral-latest":[0,0,null,null],"codestral-latest":[0,0,null,null],"cohere/embed-v4.0":[1.2e-7,0,null,null],"embed-v4.0":[1.2e-7,0,null,null],"dashscope/qwen-coder":[3e-7,0.0000015,null,null],"qwen-coder":[3e-7,0.0000015,null,null],"dashscope/qwen-max":[0.0000016,0.0000064,null,null],"qwen-max":[0.0000016,0.0000064,null,null],"dashscope/qwen-plus":[4e-7,0.0000012,null,null],"qwen-plus":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"qwen-plus-2025-01-25":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"qwen-plus-2025-04-28":[4e-7,0.0000012,null,null],"dashscope/qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"qwen-plus-2025-07-14":[4e-7,0.0000012,null,null],"dashscope/qwen-turbo":[5e-8,2e-7,null,null],"qwen-turbo":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"qwen-turbo-2024-11-01":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"qwen-turbo-2025-04-28":[5e-8,2e-7,null,null],"dashscope/qwen-turbo-latest":[5e-8,2e-7,null,null],"qwen-turbo-latest":[5e-8,2e-7,null,null],"dashscope/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000012,null,null],"dashscope/qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"qwen3-vl-235b-a22b-instruct":[4e-7,0.0000016,null,null],"dashscope/qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"qwen3-vl-235b-a22b-thinking":[4e-7,0.000004,null,null],"dashscope/qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"qwen3-vl-32b-instruct":[1.6e-7,6.4e-7,null,null],"dashscope/qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"qwen3-vl-32b-thinking":[1.6e-7,0.00000287,null,null],"dashscope/qwq-plus":[8e-7,0.0000024,null,null],"qwq-plus":[8e-7,0.0000024,null,null],"databricks/databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks-bge-large-en":[1.0003e-7,0,null,null],"databricks/databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-3-7-sonnet":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks-claude-haiku-4-5":[0.00000100002,0.00000500003,null,null],"databricks/databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks-claude-opus-4-1":[0.000015000020000000002,0.00007500003000000001,null,null],"databricks/databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks-claude-opus-4-5":[0.00000500003,0.000025000010000000002,null,null],"databricks/databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-1":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks-claude-sonnet-4-5":[0.0000029999900000000002,0.000015000020000000002,null,null],"databricks/databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks-gemini-2-5-flash":[3.0001999999999996e-7,0.00000249998,null,null],"databricks/databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks-gemini-2-5-pro":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks-gemma-3-12b":[1.5000999999999998e-7,5.0001e-7,null,null],"databricks/databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks-gpt-5-1":[0.00000124999,0.000009999990000000002,null,null],"databricks/databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks-gpt-5-mini":[2.4997000000000006e-7,0.0000019999700000000004,null,null],"databricks/databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks-gpt-5-nano":[4.998e-8,3.9998000000000007e-7,null,null],"databricks/databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks-gpt-oss-120b":[1.5000999999999998e-7,5.9997e-7,null,null],"databricks/databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks-gpt-oss-20b":[7e-8,3.0001999999999996e-7,null,null],"databricks/databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks-gte-large-en":[1.2999000000000001e-7,0,null,null],"databricks/databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-2-70b-chat":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-llama-4-maverick":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks-meta-llama-3-1-405b-instruct":[0.00000500003,0.000015000020000000002,null,null],"databricks/databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks-meta-llama-3-1-8b-instruct":[1.5000999999999998e-7,4.5003000000000007e-7,null,null],"databricks/databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks-meta-llama-3-3-70b-instruct":[5.0001e-7,0.0000015000300000000002,null,null],"databricks/databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks-meta-llama-3-70b-instruct":[0.00000100002,0.0000029999900000000002,null,null],"databricks/databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks-mixtral-8x7b-instruct":[5.0001e-7,0.00000100002,null,null],"databricks/databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks-mpt-30b-instruct":[0.00000100002,0.00000100002,null,null],"databricks/databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"databricks-mpt-7b-instruct":[5.0001e-7,0,null,null],"deepinfra/Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"Gryphe/MythoMax-L2-13b":[8e-8,9e-8,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000001,null,null],"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"NousResearch/Hermes-3-Llama-3.1-70B":[3e-7,3e-7,null,null],"deepinfra/Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"Qwen/QwQ-32B":[1.5e-7,4e-7,null,null],"deepinfra/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3.9e-7,null,null],"deepinfra/Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"Qwen/Qwen2.5-7B-Instruct":[4e-8,1e-7,null,null],"deepinfra/Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"Qwen/Qwen2.5-VL-32B-Instruct":[2e-7,6e-7,null,null],"deepinfra/Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"Qwen/Qwen3-14B":[6e-8,2.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"Qwen/Qwen3-235B-A22B":[1.8e-7,5.4e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507":[9e-8,6e-7,null,null],"deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"Qwen/Qwen3-235B-A22B-Thinking-2507":[3e-7,0.0000029,null,null],"deepinfra/Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"Qwen/Qwen3-30B-A3B":[8e-8,2.9e-7,null,null],"deepinfra/Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"Qwen/Qwen3-32B":[1e-7,2.8e-7,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct":[4e-7,0.0000016,null,null],"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":[2.9e-7,0.0000012,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Instruct":[1.4e-7,0.0000014,null,null],"deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"Qwen/Qwen3-Next-80B-A3B-Thinking":[1.4e-7,0.0000014,null,null],"deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"Sao10K/L3-8B-Lunaris-v1-Turbo":[4e-8,5e-8,null,null],"deepinfra/Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.1-70B-Euryale-v2.2":[6.5e-7,7.5e-7,null,null],"deepinfra/Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"Sao10K/L3.3-70B-Euryale-v2.3":[6.5e-7,7.5e-7,null,null],"deepinfra/allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"allenai/olmOCR-7B-0725-FP8":[2.7e-7,0.0000015,null,null],"deepinfra/anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"anthropic/claude-3-7-sonnet-latest":[0.0000033,0.0000165,null,3.3e-7],"deepinfra/anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"anthropic/claude-4-opus":[0.0000165,0.0000825,null,null],"deepinfra/anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"anthropic/claude-4-sonnet":[0.0000033,0.0000165,null,null],"deepinfra/deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepseek-ai/DeepSeek-R1":[7e-7,0.0000024,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepseek-ai/DeepSeek-R1-0528":[5e-7,0.00000215,null,4e-7],"deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-0528-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2e-7,6e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[2.7e-7,2.7e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepseek-ai/DeepSeek-R1-Turbo":[0.000001,0.000003,null,null],"deepinfra/deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepseek-ai/DeepSeek-V3":[3.8e-7,8.9e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepseek-ai/DeepSeek-V3-0324":[2.5e-7,8.8e-7,null,null],"deepinfra/deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepseek-ai/DeepSeek-V3.1-Terminus":[2.7e-7,0.000001,null,2.16e-7],"deepinfra/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"deepinfra/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"deepinfra/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"deepinfra/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"google/gemma-3-12b-it":[5e-8,1e-7,null,null],"deepinfra/google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"google/gemma-3-27b-it":[9e-8,1.6e-7,null,null],"deepinfra/google/gemma-3-4b-it":[4e-8,8e-8,null,null],"google/gemma-3-4b-it":[4e-8,8e-8,null,null],"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"meta-llama/Llama-3.2-11B-Vision-Instruct":[4.9e-8,4.9e-8,null,null],"deepinfra/meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"meta-llama/Llama-3.2-3B-Instruct":[2e-8,2e-8,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct":[2.3e-7,4e-7,null,null],"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo":[1.3e-7,3.9e-7,null,null],"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[1.5e-7,6e-7,null,null],"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"meta-llama/Llama-4-Scout-17B-16E-Instruct":[8e-8,3e-7,null,null],"deepinfra/meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"meta-llama/Llama-Guard-3-8B":[5.5e-8,5.5e-8,null,null],"deepinfra/meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"meta-llama/Llama-Guard-4-12B":[1.8e-7,1.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3-8B-Instruct":[3e-8,6e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct":[4e-7,4e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[1e-7,2.8e-7,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct":[3e-8,5e-8,null,null],"deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[2e-8,3e-8,null,null],"deepinfra/microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"microsoft/WizardLM-2-8x22B":[4.8e-7,4.8e-7,null,null],"deepinfra/microsoft/phi-4":[7e-8,1.4e-7,null,null],"microsoft/phi-4":[7e-8,1.4e-7,null,null],"deepinfra/mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"mistralai/Mistral-Nemo-Instruct-2407":[2e-8,4e-8,null,null],"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"mistralai/Mistral-Small-24B-Instruct-2501":[5e-8,8e-8,null,null],"deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"mistralai/Mistral-Small-3.2-24B-Instruct-2506":[7.5e-8,2e-7,null,null],"deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1":[4e-7,4e-7,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"moonshotai/Kimi-K2-Instruct":[5e-7,0.000002,null,null],"deepinfra/moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"moonshotai/Kimi-K2-Instruct-0905":[5e-7,0.000002,null,4e-7],"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"nvidia/Llama-3.1-Nemotron-70B-Instruct":[6e-7,6e-7,null,null],"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":[1e-7,4e-7,null,null],"deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"nvidia/NVIDIA-Nemotron-Nano-9B-v2":[4e-8,1.6e-7,null,null],"deepinfra/openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"openai/gpt-oss-120b":[5e-8,4.5e-7,null,null],"deepinfra/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"deepinfra/zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"zai-org/GLM-4.5":[4e-7,0.0000016,null,null],"deepseek/deepseek-chat":[2.8e-7,4.2e-7,0,2.8e-8],"deepseek/deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek-coder":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"deepseek/deepseek-reasoner":[2.8e-7,4.2e-7,null,2.8e-8],"deepseek/deepseek-v3":[2.7e-7,0.0000011,0,7e-8],"deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"fireworks_ai/WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"WhereIsAI/UAE-Large-V1":[1.6e-8,0,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-coder-v2-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"accounts/fireworks/models/deepseek-r1-0528":[0.000003,0.000008,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/deepseek-r1-basic":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-v3-0324":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p1-terminus":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"accounts/fireworks/models/deepseek-v3p2":[5.6e-7,0.00000168,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/firefunction-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p5":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/glm-4p5-air":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"accounts/fireworks/models/glm-4p6":[5.5e-7,0.00000219,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"accounts/fireworks/models/glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/gpt-oss-120b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"accounts/fireworks/models/gpt-oss-20b":[5e-8,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-instruct-0905":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"accounts/fireworks/models/kimi-k2-thinking":[6e-7,0.0000025,null,null],"fireworks_ai/accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"accounts/fireworks/models/kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct":[0.000003,0.000003,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-8b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3p2-11b-vision-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p2-90b-vision-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/llama4-maverick-instruct-basic":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/llama4-scout-instruct-basic":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"accounts/fireworks/models/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct-hf":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"accounts/fireworks/models/yi-large":[0.000003,0.000003,null,null],"fireworks_ai/glm-4p7":[6e-7,0.0000022,null,3e-7],"glm-4p7":[6e-7,0.0000022,null,3e-7],"fireworks_ai/kimi-k2p5":[6e-7,0.000003,null,1e-7],"kimi-k2p5":[6e-7,0.000003,null,1e-7],"fireworks_ai/minimax-m2p1":[3e-7,0.0000012,null,3e-8],"minimax-m2p1":[3e-7,0.0000012,null,3e-8],"fireworks_ai/nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1":[8e-9,0,null,null],"fireworks_ai/nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"nomic-ai/nomic-embed-text-v1.5":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-base":[8e-9,0,null,null],"thenlper/gte-base":[8e-9,0,null,null],"fireworks_ai/thenlper/gte-large":[1.6e-8,0,null,null],"thenlper/gte-large":[1.6e-8,0,null,null],"friendliai/meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"meta-llama-3.1-70b-instruct":[6e-7,6e-7,null,null],"friendliai/meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"meta-llama-3.1-8b-instruct":[1e-7,1e-7,null,null],"gemini/gemini-live-2.5-flash-preview-native-audio-09-2025":[3e-7,0.000002,null,7.5e-8],"vertex_ai/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"vertex_ai/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"vertex_ai/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-robotics-er-1.5-preview":[3e-7,0.0000025,null,0],"vertex_ai/gemini-embedding-2-preview":[1.5e-7,0,null,null],"vertex_ai/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-embedding-001":[1.5e-7,0,null,null],"gemini/gemini-embedding-2-preview":[2e-7,0,null,null],"gemini/gemini-embedding-2":[2e-7,0,null,null],"gemini/gemini-1.5-flash":[7.5e-8,0,null,null],"gemini-1.5-flash":[7.5e-8,0,null,null],"gemini/gemini-2.0-flash":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-001":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash":[3e-7,0.0000025,null,3e-8],"gemini/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"gemini/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"gemini/gemini-3.1-flash-image-preview":[2.5e-7,0.0000015,null,null],"gemini/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"gemini/gemini-2.5-flash-lite":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-lite-preview-09-2025":[1e-7,4e-7,null,1e-8],"gemini/gemini-2.5-flash-preview-09-2025":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-latest":[3e-7,0.0000025,null,7.5e-8],"gemini/gemini-flash-lite-latest":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-lite-preview-06-17":[1e-7,4e-7,null,2.5e-8],"gemini/gemini-2.5-flash-preview-tts":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-pro":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-2.5-computer-use-preview-10-2025":[0.00000125,0.00001,null,null],"gemini/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"gemini/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"gemini/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"gemini/gemini-3.1-pro-preview-customtools":[0.000002,0.000012,null,2e-7],"gemini/gemini-2.5-pro-preview-tts":[0.00000125,0.00001,null,1.25e-7],"gemini/gemini-exp-1114":[0,0,null,null],"gemini-exp-1114":[0,0,null,null],"gemini/gemini-exp-1206":[0,0,null,null],"gemini/gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-27b-it":[3.5e-7,0.00000105,null,null],"gemini/gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini-gemma-2-9b-it":[3.5e-7,0.00000105,null,null],"gemini/gemma-3-27b-it":[0,0,null,null],"gemma-3-27b-it":[0,0,null,null],"gemini/learnlm-1.5-pro-experimental":[0,0,null,null],"learnlm-1.5-pro-experimental":[0,0,null,null],"gemini/lyria-3-clip-preview":[0,0,null,null],"lyria-3-clip-preview":[0,0,null,null],"gemini/lyria-3-pro-preview":[0,0,null,null],"lyria-3-pro-preview":[0,0,null,null],"gigachat/GigaChat-2-Lite":[0,0,null,null],"GigaChat-2-Lite":[0,0,null,null],"gigachat/GigaChat-2-Max":[0,0,null,null],"GigaChat-2-Max":[0,0,null,null],"gigachat/GigaChat-2-Pro":[0,0,null,null],"GigaChat-2-Pro":[0,0,null,null],"gigachat/Embeddings":[0,0,null,null],"Embeddings":[0,0,null,null],"gigachat/Embeddings-2":[0,0,null,null],"Embeddings-2":[0,0,null,null],"gigachat/EmbeddingsGigaR":[0,0,null,null],"EmbeddingsGigaR":[0,0,null,null],"gmi/anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"anthropic/claude-opus-4.5":[0.000005,0.000025,null,null],"gmi/anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4.5":[0.000003,0.000015,null,null],"gmi/anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"anthropic/claude-sonnet-4":[0.000003,0.000015,null,null],"gmi/anthropic/claude-opus-4":[0.000015,0.000075,null,null],"anthropic/claude-opus-4":[0.000015,0.000075,null,null],"gmi/openai/gpt-5.2":[0.00000175,0.000014,null,null],"openai/gpt-5.2":[0.00000175,0.000014,null,null],"gmi/openai/gpt-5.1":[0.00000125,0.00001,null,null],"openai/gpt-5.1":[0.00000125,0.00001,null,null],"gmi/openai/gpt-5":[0.00000125,0.00001,null,null],"openai/gpt-5":[0.00000125,0.00001,null,null],"gmi/openai/gpt-4o":[0.0000025,0.00001,null,null],"openai/gpt-4o":[0.0000025,0.00001,null,null],"gmi/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"deepseek-ai/DeepSeek-V3.2":[2.8e-7,4e-7,null,null],"gmi/deepseek-ai/DeepSeek-V3-0324":[2.8e-7,8.8e-7,null,null],"gmi/google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"google/gemini-3-pro-preview":[0.000002,0.000012,null,null],"gmi/google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"google/gemini-3-flash-preview":[5e-7,0.000003,null,null],"gmi/moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"moonshotai/Kimi-K2-Thinking":[8e-7,0.0000012,null,null],"gmi/MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.1":[3e-7,0.0000012,null,null],"baseten/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"baseten/nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"nvidia/Nemotron-120B-A12B":[3e-7,7.5e-7,null,null],"baseten/zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"zai-org/GLM-5":[9.5e-7,0.00000315,null,null],"baseten/zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"zai-org/GLM-4.7":[6e-7,0.0000022,null,null],"baseten/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"baseten/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"moonshotai/Kimi-K2.5":[6e-7,0.000003,null,null],"baseten/moonshotai/Kimi-K2-Thinking":[6e-7,0.0000025,null,null],"baseten/moonshotai/Kimi-K2-Instruct-0905":[6e-7,0.0000025,null,null],"baseten/openai/gpt-oss-120b":[1e-7,5e-7,null,null],"baseten/deepseek-ai/DeepSeek-V3.1":[5e-7,0.0000015,null,null],"baseten/deepseek-ai/DeepSeek-V3-0324":[7.7e-7,7.7e-7,null,null],"gmi/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":[3e-7,0.0000014,null,null],"gmi/zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"zai-org/GLM-4.7-FP8":[4e-7,0.000002,null,null],"gradient_ai/anthropic-claude-3-opus":[0.000015,0.000075,null,null],"anthropic-claude-3-opus":[0.000015,0.000075,null,null],"gradient_ai/anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"anthropic-claude-3.5-haiku":[8e-7,0.000004,null,null],"gradient_ai/anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.5-sonnet":[0.000003,0.000015,null,null],"gradient_ai/anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic-claude-3.7-sonnet":[0.000003,0.000015,null,null],"gradient_ai/deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"deepseek-r1-distill-llama-70b":[9.9e-7,9.9e-7,null,null],"gradient_ai/llama3-8b-instruct":[2e-7,2e-7,null,null],"llama3-8b-instruct":[2e-7,2e-7,null,null],"gradient_ai/llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"llama3.3-70b-instruct":[6.5e-7,6.5e-7,null,null],"gradient_ai/mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"mistral-nemo-instruct-2407":[3e-7,3e-7,null,null],"gradient_ai/openai-o3":[0.000002,0.000008,null,null],"openai-o3":[0.000002,0.000008,null,null],"gradient_ai/openai-o3-mini":[0.0000011,0.0000044,null,null],"openai-o3-mini":[0.0000011,0.0000044,null,null],"lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"Qwen3-Coder-30B-A3B-Instruct-GGUF":[0,0,null,null],"lemonade/gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"gpt-oss-20b-mxfp4-GGUF":[0,0,null,null],"lemonade/gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"gpt-oss-120b-mxfp-GGUF":[0,0,null,null],"lemonade/Gemma-3-4b-it-GGUF":[0,0,null,null],"Gemma-3-4b-it-GGUF":[0,0,null,null],"lemonade/Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"Qwen3-4B-Instruct-2507-GGUF":[0,0,null,null],"amazon-nova/nova-micro-v1":[3.5e-8,1.4e-7,null,null],"nova-micro-v1":[3.5e-8,1.4e-7,null,null],"amazon-nova/nova-lite-v1":[6e-8,2.4e-7,null,null],"nova-lite-v1":[6e-8,2.4e-7,null,null],"amazon-nova/nova-premier-v1":[0.0000025,0.0000125,null,null],"nova-premier-v1":[0.0000025,0.0000125,null,null],"amazon-nova/nova-pro-v1":[8e-7,0.0000032,null,null],"nova-pro-v1":[8e-7,0.0000032,null,null],"groq/llama-3.1-8b-instant":[5e-8,8e-8,null,null],"llama-3.1-8b-instant":[5e-8,8e-8,null,null],"groq/llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"llama-3.3-70b-versatile":[5.9e-7,7.9e-7,null,null],"groq/gemma-7b-it":[5e-8,8e-8,null,null],"gemma-7b-it":[5e-8,8e-8,null,null],"groq/meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"meta-llama/llama-guard-4-12b":[2e-7,2e-7,null,null],"groq/meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct":[2e-7,6e-7,null,null],"groq/meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"meta-llama/llama-4-scout-17b-16e-instruct":[1.1e-7,3.4e-7,null,null],"groq/moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"moonshotai/kimi-k2-instruct-0905":[0.000001,0.000003,null,5e-7],"groq/openai/gpt-oss-120b":[1.5e-7,6e-7,null,7.5e-8],"groq/openai/gpt-oss-20b":[7.5e-8,3e-7,null,3.75e-8],"groq/openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"openai/gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,3.7e-8],"groq/qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"qwen/qwen3-32b":[2.9e-7,5.9e-7,null,null],"hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/QwQ-32B":[2e-7,2e-7,null,null],"hyperbolic/Qwen/Qwen2.5-72B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"Qwen/Qwen2.5-Coder-32B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/Qwen/Qwen3-235B-A22B":[0.000002,0.000002,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1":[4e-7,4e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-R1-0528":[2.5e-7,2.5e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3":[2e-7,2e-7,null,null],"hyperbolic/deepseek-ai/DeepSeek-V3-0324":[4e-7,4e-7,null,null],"hyperbolic/meta-llama/Llama-3.2-3B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Llama-3.3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct":[1.2e-7,3e-7,null,null],"hyperbolic/moonshotai/Kimi-K2-Instruct":[0.000002,0.000002,null,null],"crusoe/deepseek-ai/DeepSeek-R1-0528":[0.000003,0.000007,null,null],"crusoe/deepseek-ai/DeepSeek-V3-0324":[0.0000015,0.0000015,null,null],"crusoe/google/gemma-3-12b-it":[1e-7,1e-7,null,null],"crusoe/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"crusoe/moonshotai/Kimi-K2-Thinking":[0.0000025,0.0000025,null,null],"crusoe/openai/gpt-oss-120b":[8e-7,8e-7,null,null],"crusoe/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.000003,0.000003,null,null],"lambda_ai/deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"deepseek-llama3.3-70b":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-0528":[2e-7,6e-7,null,null],"deepseek-r1-0528":[2e-7,6e-7,null,null],"lambda_ai/deepseek-r1-671b":[8e-7,8e-7,null,null],"deepseek-r1-671b":[8e-7,8e-7,null,null],"lambda_ai/deepseek-v3-0324":[2e-7,6e-7,null,null],"lambda_ai/hermes3-405b":[8e-7,8e-7,null,null],"hermes3-405b":[8e-7,8e-7,null,null],"lambda_ai/hermes3-70b":[1.2e-7,3e-7,null,null],"hermes3-70b":[1.2e-7,3e-7,null,null],"lambda_ai/hermes3-8b":[2.5e-8,4e-8,null,null],"hermes3-8b":[2.5e-8,4e-8,null,null],"lambda_ai/lfm-40b":[1e-7,2e-7,null,null],"lfm-40b":[1e-7,2e-7,null,null],"lambda_ai/lfm-7b":[2.5e-8,4e-8,null,null],"lfm-7b":[2.5e-8,4e-8,null,null],"lambda_ai/llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"llama-4-maverick-17b-128e-instruct-fp8":[5e-8,1e-7,null,null],"lambda_ai/llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"llama-4-scout-17b-16e-instruct":[5e-8,1e-7,null,null],"lambda_ai/llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"llama3.1-405b-instruct-fp8":[8e-7,8e-7,null,null],"lambda_ai/llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"llama3.1-8b-instruct":[2.5e-8,4e-8,null,null],"lambda_ai/llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.1-nemotron-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-11b-vision-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"llama3.2-3b-instruct":[1.5e-8,2.5e-8,null,null],"lambda_ai/llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"llama3.3-70b-instruct-fp8":[1.2e-7,3e-7,null,null],"lambda_ai/qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"qwen25-coder-32b-instruct":[5e-8,1e-7,null,null],"lambda_ai/qwen3-32b-fp8":[5e-8,1e-7,null,null],"qwen3-32b-fp8":[5e-8,1e-7,null,null],"minimax/MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.1":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.1-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2.5":[3e-7,0.0000012,3.75e-7,3e-8],"minimax/MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"MiniMax-M2.5-lightning":[3e-7,0.0000024,3.75e-7,3e-8],"minimax/MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"MiniMax-M2":[3e-7,0.0000012,3.75e-7,3e-8],"mistral/codestral-2405":[0.000001,0.000003,null,null],"mistral/codestral-2508":[3e-7,9e-7,null,null],"codestral-2508":[3e-7,9e-7,null,null],"mistral/codestral-latest":[0.000001,0.000003,null,null],"mistral/codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"codestral-mamba-latest":[2.5e-7,2.5e-7,null,null],"mistral/devstral-medium-2507":[4e-7,0.000002,null,null],"devstral-medium-2507":[4e-7,0.000002,null,null],"mistral/devstral-small-2505":[1e-7,3e-7,null,null],"devstral-small-2505":[1e-7,3e-7,null,null],"mistral/devstral-small-2507":[1e-7,3e-7,null,null],"devstral-small-2507":[1e-7,3e-7,null,null],"mistral/devstral-small-latest":[1e-7,3e-7,null,null],"devstral-small-latest":[1e-7,3e-7,null,null],"mistral/labs-devstral-small-2512":[1e-7,3e-7,null,null],"labs-devstral-small-2512":[1e-7,3e-7,null,null],"mistral/devstral-latest":[4e-7,0.000002,null,null],"devstral-latest":[4e-7,0.000002,null,null],"mistral/devstral-medium-latest":[4e-7,0.000002,null,null],"devstral-medium-latest":[4e-7,0.000002,null,null],"mistral/devstral-2512":[4e-7,0.000002,null,null],"devstral-2512":[4e-7,0.000002,null,null],"mistral/magistral-medium-2506":[0.000002,0.000005,null,null],"magistral-medium-2506":[0.000002,0.000005,null,null],"mistral/magistral-medium-2509":[0.000002,0.000005,null,null],"magistral-medium-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"magistral-medium-1-2-2509":[0.000002,0.000005,null,null],"mistral/magistral-medium-latest":[0.000002,0.000005,null,null],"magistral-medium-latest":[0.000002,0.000005,null,null],"mistral/magistral-small-2506":[5e-7,0.0000015,null,null],"magistral-small-2506":[5e-7,0.0000015,null,null],"mistral/magistral-small-latest":[5e-7,0.0000015,null,null],"magistral-small-latest":[5e-7,0.0000015,null,null],"mistral/magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"magistral-small-1-2-2509":[5e-7,0.0000015,null,null],"mistral/mistral-large-2402":[0.000004,0.000012,null,null],"mistral/mistral-large-2407":[0.000003,0.000009,null,null],"mistral/mistral-large-2411":[0.000002,0.000006,null,null],"mistral-large-2411":[0.000002,0.000006,null,null],"mistral/mistral-large-latest":[5e-7,0.0000015,null,null],"mistral/mistral-large-3":[5e-7,0.0000015,null,null],"mistral/mistral-large-2512":[5e-7,0.0000015,null,null],"mistral-large-2512":[5e-7,0.0000015,null,null],"mistral/mistral-medium":[0.0000027,0.0000081,null,null],"mistral-medium":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral-medium-2312":[0.0000027,0.0000081,null,null],"mistral/mistral-medium-2505":[4e-7,0.000002,null,null],"mistral/mistral-medium-latest":[4e-7,0.000002,null,null],"mistral-medium-latest":[4e-7,0.000002,null,null],"mistral/mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral-medium-3-1-2508":[4e-7,0.000002,null,null],"mistral/mistral-small":[1e-7,3e-7,null,null],"mistral/mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral-small-latest":[6e-8,1.8e-7,null,null],"mistral/mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral-small-3-2-2506":[6e-8,1.8e-7,null,null],"mistral/ministral-3-3b-2512":[1e-7,1e-7,null,null],"ministral-3-3b-2512":[1e-7,1e-7,null,null],"mistral/ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"ministral-3-8b-2512":[1.5e-7,1.5e-7,null,null],"mistral/ministral-3-14b-2512":[2e-7,2e-7,null,null],"ministral-3-14b-2512":[2e-7,2e-7,null,null],"mistral/mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral-tiny":[2.5e-7,2.5e-7,null,null],"mistral/open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"open-codestral-mamba":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-7b":[2.5e-7,2.5e-7,null,null],"open-mistral-7b":[2.5e-7,2.5e-7,null,null],"mistral/open-mistral-nemo":[3e-7,3e-7,null,null],"open-mistral-nemo":[3e-7,3e-7,null,null],"mistral/open-mistral-nemo-2407":[3e-7,3e-7,null,null],"open-mistral-nemo-2407":[3e-7,3e-7,null,null],"mistral/open-mixtral-8x22b":[0.000002,0.000006,null,null],"open-mixtral-8x22b":[0.000002,0.000006,null,null],"mistral/open-mixtral-8x7b":[7e-7,7e-7,null,null],"open-mixtral-8x7b":[7e-7,7e-7,null,null],"mistral/pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"pixtral-12b-2409":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-large-2411":[0.000002,0.000006,null,null],"pixtral-large-2411":[0.000002,0.000006,null,null],"mistral/pixtral-large-latest":[0.000002,0.000006,null,null],"pixtral-large-latest":[0.000002,0.000006,null,null],"moonshot/kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0711-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-0905-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-turbo-preview":[0.00000115,0.000008,null,1.5e-7],"moonshot/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshot/kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"kimi-k2.6":[9.5e-7,0.000004,null,1.6e-7],"moonshot/kimi-latest":[0.000002,0.000005,null,1.5e-7],"kimi-latest":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"kimi-latest-128k":[0.000002,0.000005,null,1.5e-7],"moonshot/kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"kimi-latest-32k":[0.000001,0.000003,null,1.5e-7],"moonshot/kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"kimi-latest-8k":[2e-7,0.000002,null,1.5e-7],"moonshot/kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"kimi-thinking-preview":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"kimi-k2-thinking":[6e-7,0.0000025,null,1.5e-7],"moonshot/kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"kimi-k2-thinking-turbo":[0.00000115,0.000008,null,1.5e-7],"moonshot/moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot-v1-128k":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot-v1-128k-0430":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot-v1-128k-vision-preview":[0.000002,0.000005,null,null],"moonshot/moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot-v1-32k":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot-v1-32k-0430":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot-v1-32k-vision-preview":[0.000001,0.000003,null,null],"moonshot/moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot-v1-8k":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot-v1-8k-0430":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot-v1-8k-vision-preview":[2e-7,0.000002,null,null],"moonshot/moonshot-v1-auto":[0.000002,0.000005,null,null],"moonshot-v1-auto":[0.000002,0.000005,null,null],"morph/morph-v3-fast":[8e-7,0.0000012,null,null],"morph-v3-fast":[8e-7,0.0000012,null,null],"morph/morph-v3-large":[9e-7,0.0000019,null,null],"morph-v3-large":[9e-7,0.0000019,null,null],"nscale/Qwen/QwQ-32B":[1.8e-7,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-32B-Instruct":[6e-8,2e-7,null,null],"nscale/Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-3B-Instruct":[1e-8,3e-8,null,null],"nscale/Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B-Instruct":[1e-8,3e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[3.75e-7,3.75e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Llama-8B":[2.5e-8,2.5e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":[9e-8,9e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":[7e-8,7e-8,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B":[1.5e-7,1.5e-7,null,null],"nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"meta-llama/Llama-3.1-8B-Instruct":[3e-8,3e-8,null,null],"nscale/meta-llama/Llama-3.3-70B-Instruct":[2e-7,2e-7,null,null],"nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct":[9e-8,2.9e-7,null,null],"nscale/mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"mistralai/mixtral-8x22b-instruct-v0.1":[6e-7,6e-7,null,null],"nebius/deepseek-ai/DeepSeek-R1":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-0528":[8e-7,0.0000024,null,null],"nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B":[2.5e-7,7.5e-7,null,null],"nebius/deepseek-ai/DeepSeek-V3":[5e-7,0.0000015,null,null],"nebius/deepseek-ai/DeepSeek-V3-0324":[5e-7,0.0000015,null,null],"nebius/google/gemma-3-27b-it":[6e-8,2e-7,null,null],"nebius/meta-llama/Llama-3.3-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Llama-Guard-3-8B":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-8B-Instruct":[2e-8,6e-8,null,null],"nebius/meta-llama/Meta-Llama-3.1-70B-Instruct":[1.3e-7,4e-7,null,null],"nebius/meta-llama/Meta-Llama-3.1-405B-Instruct":[0.000001,0.000003,null,null],"nebius/mistralai/Mistral-Nemo-Instruct-2407":[4e-8,1.2e-7,null,null],"nebius/NousResearch/Hermes-3-Llama-3.1-405B":[0.000001,0.000003,null,null],"nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1":[6e-7,0.0000018,null,null],"nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nvidia/Llama-3.3-Nemotron-Super-49B-v1":[1e-7,4e-7,null,null],"nebius/Qwen/Qwen3-235B-A22B":[2e-7,6e-7,null,null],"nebius/Qwen/Qwen3-32B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-30B-A3B":[1e-7,3e-7,null,null],"nebius/Qwen/Qwen3-14B":[8e-8,2.4e-7,null,null],"nebius/Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"Qwen/Qwen3-4B":[8e-8,2.4e-7,null,null],"nebius/Qwen/QwQ-32B":[1.5e-7,4.5e-7,null,null],"nebius/Qwen/Qwen2.5-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"Qwen/Qwen2.5-32B-Instruct":[6e-8,2e-7,null,null],"nebius/Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"Qwen/Qwen2.5-Coder-7B":[1e-8,3e-8,null,null],"nebius/Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2.5-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"Qwen/Qwen2-VL-72B-Instruct":[1.3e-7,4e-7,null,null],"nebius/Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"Qwen/Qwen2-VL-7B-Instruct":[2e-8,6e-8,null,null],"nebius/BAAI/bge-en-icl":[1e-8,0,null,null],"BAAI/bge-en-icl":[1e-8,0,null,null],"nebius/BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"BAAI/bge-multilingual-gemma2":[1e-8,0,null,null],"nebius/intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"intfloat/e5-mistral-7b-instruct":[1e-8,0,null,null],"oci/meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"meta.llama-3.1-405b-instruct":[0.00001068,0.00001068,null,null],"oci/meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-90b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"meta.llama-4-maverick-17b-128e-instruct-fp8":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-4-scout-17b-16e-instruct":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-3":[0.000003,0.000015,null,null],"xai.grok-3":[0.000003,0.000015,null,null],"oci/xai.grok-3-fast":[0.000005,0.000025,null,null],"xai.grok-3-fast":[0.000005,0.000025,null,null],"oci/xai.grok-3-mini":[3e-7,5e-7,null,null],"xai.grok-3-mini":[3e-7,5e-7,null,null],"oci/xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"xai.grok-3-mini-fast":[6e-7,0.000004,null,null],"oci/xai.grok-4":[0.000003,0.000015,null,null],"xai.grok-4":[0.000003,0.000015,null,null],"oci/cohere.command-latest":[0.00000156,0.00000156,null,null],"cohere.command-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-03-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"cohere.command-plus-latest":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-reasoning-08-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"cohere.command-a-vision-07-2025":[0.00000156,0.00000156,null,null],"oci/cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"cohere.command-a-translate-08-2025":[9e-8,9e-8,null,null],"oci/cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"cohere.command-r-08-2024":[1.5e-7,1.5e-7,null,null],"oci/cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"cohere.command-r-plus-08-2024":[0.00000156,0.00000156,null,null],"oci/meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"meta.llama-3.2-11b-vision-instruct":[0.000002,0.000002,null,null],"oci/meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"meta.llama-3.1-70b-instruct":[7.2e-7,7.2e-7,null,null],"oci/meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"meta.llama-3.3-70b-instruct-fp8-dynamic":[7.2e-7,7.2e-7,null,null],"oci/xai.grok-4-fast":[0.000005,0.000025,null,null],"xai.grok-4-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.1-fast":[0.000005,0.000025,null,null],"xai.grok-4.1-fast":[0.000005,0.000025,null,null],"oci/xai.grok-4.20":[0.000003,0.000015,null,null],"xai.grok-4.20":[0.000003,0.000015,null,null],"oci/xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"xai.grok-4.20-multi-agent":[0.000003,0.000015,null,null],"oci/xai.grok-code-fast-1":[0.000005,0.000025,null,null],"xai.grok-code-fast-1":[0.000005,0.000025,null,null],"oci/google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"google.gemini-2.5-pro":[0.00000125,0.00001,null,null],"oci/google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"google.gemini-2.5-flash":[1.5e-7,6e-7,null,null],"oci/google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"google.gemini-2.5-flash-lite":[7.5e-8,3e-7,null,null],"oci/cohere.embed-english-v3.0":[1e-7,0,null,null],"cohere.embed-english-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-english-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"cohere.embed-multilingual-light-image-v3.0":[1e-7,0,null,null],"oci/cohere.embed-v4.0":[1.2e-7,0,null,null],"cohere.embed-v4.0":[1.2e-7,0,null,null],"ollama/codegeex4":[0,0,null,null],"codegeex4":[0,0,null,null],"ollama/codegemma":[0,0,null,null],"codegemma":[0,0,null,null],"ollama/codellama":[0,0,null,null],"codellama":[0,0,null,null],"ollama/deepseek-coder-v2-base":[0,0,null,null],"deepseek-coder-v2-base":[0,0,null,null],"ollama/deepseek-coder-v2-instruct":[0,0,null,null],"deepseek-coder-v2-instruct":[0,0,null,null],"ollama/deepseek-coder-v2-lite-base":[0,0,null,null],"deepseek-coder-v2-lite-base":[0,0,null,null],"ollama/deepseek-coder-v2-lite-instruct":[0,0,null,null],"deepseek-coder-v2-lite-instruct":[0,0,null,null],"ollama/deepseek-v3.1:671b-cloud":[0,0,null,null],"deepseek-v3.1:671b-cloud":[0,0,null,null],"ollama/gpt-oss:120b-cloud":[0,0,null,null],"gpt-oss:120b-cloud":[0,0,null,null],"ollama/gpt-oss:20b-cloud":[0,0,null,null],"gpt-oss:20b-cloud":[0,0,null,null],"ollama/internlm2_5-20b-chat":[0,0,null,null],"internlm2_5-20b-chat":[0,0,null,null],"ollama/llama2":[0,0,null,null],"llama2":[0,0,null,null],"ollama/llama2-uncensored":[0,0,null,null],"llama2-uncensored":[0,0,null,null],"ollama/llama2:13b":[0,0,null,null],"llama2:13b":[0,0,null,null],"ollama/llama2:70b":[0,0,null,null],"llama2:70b":[0,0,null,null],"ollama/llama2:7b":[0,0,null,null],"llama2:7b":[0,0,null,null],"ollama/llama3":[0,0,null,null],"llama3":[0,0,null,null],"ollama/llama3.1":[0,0,null,null],"llama3.1":[0,0,null,null],"ollama/llama3:70b":[0,0,null,null],"llama3:70b":[0,0,null,null],"ollama/llama3:8b":[0,0,null,null],"llama3:8b":[0,0,null,null],"ollama/mistral":[0,0,null,null],"mistral":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.1":[0,0,null,null],"mistral-7B-Instruct-v0.1":[0,0,null,null],"ollama/mistral-7B-Instruct-v0.2":[0,0,null,null],"mistral-7B-Instruct-v0.2":[0,0,null,null],"ollama/mistral-large-instruct-2407":[0,0,null,null],"mistral-large-instruct-2407":[0,0,null,null],"ollama/mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"mixtral-8x22B-Instruct-v0.1":[0,0,null,null],"ollama/mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"mixtral-8x7B-Instruct-v0.1":[0,0,null,null],"ollama/orca-mini":[0,0,null,null],"orca-mini":[0,0,null,null],"ollama/qwen3-coder:480b-cloud":[0,0,null,null],"qwen3-coder:480b-cloud":[0,0,null,null],"ollama/vicuna":[0,0,null,null],"vicuna":[0,0,null,null],"openrouter/anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"anthropic/claude-3-haiku":[2.5e-7,0.00000125,null,null],"openrouter/anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.5-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"openrouter/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"openrouter/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-sonnet-4.6":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"openrouter/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"openrouter/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"openrouter/anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"anthropic/claude-opus-4.7":[0.000005,0.000025,0.00000625,5e-7],"openrouter/bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"bytedance/ui-tars-1.5-7b":[1e-7,2e-7,null,null],"openrouter/deepseek/deepseek-chat":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"deepseek/deepseek-chat-v3-0324":[1.4e-7,2.8e-7,null,null],"openrouter/deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"deepseek/deepseek-chat-v3.1":[2e-7,8e-7,null,null],"openrouter/deepseek/deepseek-v3.2":[2.8e-7,4e-7,null,null],"openrouter/deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"deepseek/deepseek-v3.2-exp":[2e-7,4e-7,null,null],"openrouter/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"openrouter/deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"deepseek/deepseek-r1-0528":[5e-7,0.00000215,null,null],"openrouter/google/gemini-2.0-flash-001":[1e-7,4e-7,null,null],"openrouter/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"openrouter/google/gemini-2.5-pro":[0.00000125,0.00001,null,null],"openrouter/google/gemini-3-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/google/gemini-3-flash-preview":[5e-7,0.000003,null,5e-8],"openrouter/google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"google/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"openrouter/google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"google/gemini-3.1-pro-preview":[0.000002,0.000012,null,2e-7],"openrouter/gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"gryphe/mythomax-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/mancer/weaver":[0.000005625,0.000005625,null,null],"mancer/weaver":[0.000005625,0.000005625,null,null],"openrouter/meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"meta-llama/llama-3-70b-instruct":[5.9e-7,7.9e-7,null,null],"openrouter/minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"minimax/minimax-m2":[2.55e-7,0.00000102,null,null],"openrouter/mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"mistralai/devstral-2512":[1.5e-7,6e-7,null,null],"openrouter/mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"mistralai/ministral-3b-2512":[1e-7,1e-7,null,null],"openrouter/mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"mistralai/ministral-8b-2512":[1.5e-7,1.5e-7,null,null],"openrouter/mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"mistralai/ministral-14b-2512":[2e-7,2e-7,null,null],"openrouter/mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"mistralai/mistral-large-2512":[5e-7,0.0000015,null,null],"openrouter/mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"mistralai/mistral-7b-instruct":[1.3e-7,1.3e-7,null,null],"openrouter/mistralai/mistral-large":[0.000008,0.000024,null,null],"mistralai/mistral-large":[0.000008,0.000024,null,null],"openrouter/mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.1-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"mistralai/mistral-small-3.2-24b-instruct":[1e-7,3e-7,null,null],"openrouter/mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"mistralai/mixtral-8x22b-instruct":[6.5e-7,6.5e-7,null,null],"openrouter/moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"moonshotai/kimi-k2.5":[6e-7,0.000003,null,1e-7],"openrouter/openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo":[0.0000015,0.000002,null,null],"openrouter/openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openai/gpt-3.5-turbo-16k":[0.000003,0.000004,null,null],"openrouter/openai/gpt-4":[0.00003,0.00006,null,null],"openai/gpt-4":[0.00003,0.00006,null,null],"openrouter/openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openai/gpt-4.1":[0.000002,0.000008,null,5e-7],"openrouter/openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openai/gpt-4.1-mini":[4e-7,0.0000016,null,1e-7],"openrouter/openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openai/gpt-4.1-nano":[1e-7,4e-7,null,2.5e-8],"openrouter/openai/gpt-4o":[0.0000025,0.00001,null,null],"openrouter/openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openai/gpt-4o-2024-05-13":[0.000005,0.000015,null,null],"openrouter/openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-chat":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5-codex":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-codex":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openai/gpt-5-mini":[2.5e-7,0.000002,null,2.5e-8],"openrouter/openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openai/gpt-5-nano":[5e-8,4e-7,null,5e-9],"openrouter/openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openai/gpt-5.1-codex-max":[0.00000125,0.00001,null,1.25e-7],"openrouter/openai/gpt-5.2":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openai/gpt-5.2-chat":[0.00000175,0.000014,null,1.75e-7],"openrouter/openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openai/gpt-5.2-pro":[0.000021,0.000168,null,null],"openrouter/openai/gpt-oss-120b":[1.8e-7,8e-7,null,null],"openrouter/openai/gpt-oss-20b":[2e-8,1e-7,null,null],"openrouter/openai/o1":[0.000015,0.00006,null,0.0000075],"openai/o1":[0.000015,0.00006,null,0.0000075],"openrouter/openai/o3-mini":[0.0000011,0.0000044,null,null],"openai/o3-mini":[0.0000011,0.0000044,null,null],"openrouter/openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openai/o3-mini-high":[0.0000011,0.0000044,null,null],"openrouter/qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"qwen/qwen-2.5-coder-32b-instruct":[1.8e-7,1.8e-7,null,null],"openrouter/qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"qwen/qwen-vl-plus":[2.1e-7,6.3e-7,null,null],"openrouter/qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"qwen/qwen3-coder":[2.2e-7,9.5e-7,null,null],"openrouter/qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"qwen/qwen3-coder-plus":[0.000001,0.000005,null,null],"openrouter/qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"qwen/qwen3-235b-a22b-2507":[7.1e-8,1e-7,null,null],"openrouter/qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"qwen/qwen3-235b-a22b-thinking-2507":[1.1e-7,6e-7,null,null],"openrouter/qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"qwen/qwen3.5-35b-a3b":[2.5e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"qwen/qwen3.5-27b":[3e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"qwen/qwen3.5-122b-a10b":[4e-7,0.000002,null,null],"openrouter/qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"qwen/qwen3.5-flash-02-23":[1e-7,4e-7,null,null],"openrouter/qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"qwen/qwen3.5-plus-02-15":[4e-7,0.0000024,null,null],"openrouter/qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"qwen/qwen3.5-397b-a17b":[6e-7,0.0000036,null,null],"openrouter/switchpoint/router":[8.5e-7,0.0000034,null,null],"switchpoint/router":[8.5e-7,0.0000034,null,null],"openrouter/undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"undi95/remm-slerp-l2-13b":[0.000001875,0.000001875,null,null],"openrouter/x-ai/grok-4":[0.000003,0.000015,null,null],"x-ai/grok-4":[0.000003,0.000015,null,null],"openrouter/z-ai/glm-4.6":[4e-7,0.00000175,null,null],"z-ai/glm-4.6":[4e-7,0.00000175,null,null],"openrouter/z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"z-ai/glm-4.6:exacto":[4.5e-7,0.0000019,null,null],"openrouter/xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"xiaomi/mimo-v2-flash":[9e-8,2.9e-7,0,0],"openrouter/z-ai/glm-4.7":[4e-7,0.0000015,0,0],"z-ai/glm-4.7":[4e-7,0.0000015,0,0],"openrouter/z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"z-ai/glm-4.7-flash":[7e-8,4e-7,0,0],"openrouter/z-ai/glm-5":[8e-7,0.00000256,null,null],"z-ai/glm-5":[8e-7,0.00000256,null,null],"openrouter/minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"minimax/minimax-m2.1":[2.7e-7,0.0000012,0,0],"openrouter/minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"minimax/minimax-m2.5":[3e-7,0.0000011,null,1.5e-7],"openrouter/openrouter/auto":[0,0,null,null],"openrouter/auto":[0,0,null,null],"openrouter/openrouter/free":[0,0,null,null],"openrouter/free":[0,0,null,null],"openrouter/openrouter/bodybuilder":[0,0,null,null],"openrouter/bodybuilder":[0,0,null,null],"ovhcloud/DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"DeepSeek-R1-Distill-Llama-70B":[6.7e-7,6.7e-7,null,null],"ovhcloud/Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"Llama-3.1-8B-Instruct":[1e-7,1e-7,null,null],"ovhcloud/Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_1-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"Meta-Llama-3_3-70B-Instruct":[6.7e-7,6.7e-7,null,null],"ovhcloud/Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"Mistral-7B-Instruct-v0.3":[1e-7,1e-7,null,null],"ovhcloud/Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"Mistral-Nemo-Instruct-2407":[1.3e-7,1.3e-7,null,null],"ovhcloud/Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"Mistral-Small-3.2-24B-Instruct-2506":[9e-8,2.8e-7,null,null],"ovhcloud/Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"Mixtral-8x7B-Instruct-v0.1":[6.3e-7,6.3e-7,null,null],"ovhcloud/Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"Qwen2.5-Coder-32B-Instruct":[8.7e-7,8.7e-7,null,null],"ovhcloud/Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"Qwen2.5-VL-72B-Instruct":[9.1e-7,9.1e-7,null,null],"ovhcloud/Qwen3-32B":[8e-8,2.3e-7,null,null],"Qwen3-32B":[8e-8,2.3e-7,null,null],"ovhcloud/gpt-oss-120b":[8e-8,4e-7,null,null],"ovhcloud/gpt-oss-20b":[4e-8,1.5e-7,null,null],"gpt-oss-20b":[4e-8,1.5e-7,null,null],"ovhcloud/llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"llava-v1.6-mistral-7b-hf":[2.9e-7,2.9e-7,null,null],"ovhcloud/mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"mamba-codestral-7B-v0.1":[1.9e-7,1.9e-7,null,null],"palm/chat-bison":[1.25e-7,1.25e-7,null,null],"chat-bison":[1.25e-7,1.25e-7,null,null],"palm/chat-bison-001":[1.25e-7,1.25e-7,null,null],"chat-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison":[1.25e-7,1.25e-7,null,null],"text-bison":[1.25e-7,1.25e-7,null,null],"palm/text-bison-001":[1.25e-7,1.25e-7,null,null],"text-bison-001":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-off":[1.25e-7,1.25e-7,null,null],"palm/text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"text-bison-safety-recitation-off":[1.25e-7,1.25e-7,null,null],"perplexity/codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"codellama-34b-instruct":[3.5e-7,0.0000014,null,null],"perplexity/codellama-70b-instruct":[7e-7,0.0000028,null,null],"codellama-70b-instruct":[7e-7,0.0000028,null,null],"perplexity/llama-2-70b-chat":[7e-7,0.0000028,null,null],"llama-2-70b-chat":[7e-7,0.0000028,null,null],"perplexity/llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"llama-3.1-70b-instruct":[0.000001,0.000001,null,null],"perplexity/llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"llama-3.1-8b-instruct":[2e-7,2e-7,null,null],"perplexity/mistral-7b-instruct":[7e-8,2.8e-7,null,null],"mistral-7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"mixtral-8x7b-instruct":[7e-8,2.8e-7,null,null],"perplexity/pplx-70b-chat":[7e-7,0.0000028,null,null],"pplx-70b-chat":[7e-7,0.0000028,null,null],"perplexity/pplx-70b-online":[0,0.0000028,null,null],"pplx-70b-online":[0,0.0000028,null,null],"perplexity/pplx-7b-chat":[7e-8,2.8e-7,null,null],"pplx-7b-chat":[7e-8,2.8e-7,null,null],"perplexity/pplx-7b-online":[0,2.8e-7,null,null],"pplx-7b-online":[0,2.8e-7,null,null],"perplexity/sonar":[0.000001,0.000001,null,null],"sonar":[0.000001,0.000001,null,null],"perplexity/sonar-deep-research":[0.000002,0.000008,null,null],"sonar-deep-research":[0.000002,0.000008,null,null],"perplexity/sonar-medium-chat":[6e-7,0.0000018,null,null],"sonar-medium-chat":[6e-7,0.0000018,null,null],"perplexity/sonar-medium-online":[0,0.0000018,null,null],"sonar-medium-online":[0,0.0000018,null,null],"perplexity/sonar-pro":[0.000003,0.000015,null,null],"sonar-pro":[0.000003,0.000015,null,null],"perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"sonar-reasoning":[0.000001,0.000005,null,null],"perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"sonar-reasoning-pro":[0.000002,0.000008,null,null],"perplexity/sonar-small-chat":[7e-8,2.8e-7,null,null],"sonar-small-chat":[7e-8,2.8e-7,null,null],"perplexity/sonar-small-online":[0,2.8e-7,null,null],"sonar-small-online":[0,2.8e-7,null,null],"publicai/swiss-ai/apertus-8b-instruct":[0,0,null,null],"swiss-ai/apertus-8b-instruct":[0,0,null,null],"publicai/swiss-ai/apertus-70b-instruct":[0,0,null,null],"swiss-ai/apertus-70b-instruct":[0,0,null,null],"publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"aisingapore/Gemma-SEA-LION-v4-27B-IT":[0,0,null,null],"publicai/BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"BSC-LT/salamandra-7b-instruct-tools-16k":[0,0,null,null],"publicai/BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"BSC-LT/ALIA-40b-instruct_Q8_0":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Instruct":[0,0,null,null],"allenai/Olmo-3-7B-Instruct":[0,0,null,null],"perplexity/pplx-embed-v1-0.6b":[4e-9,0,null,null],"pplx-embed-v1-0.6b":[4e-9,0,null,null],"perplexity/pplx-embed-v1-4b":[3e-8,0,null,null],"pplx-embed-v1-4b":[3e-8,0,null,null],"publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"aisingapore/Qwen-SEA-LION-v4-32B-IT":[0,0,null,null],"publicai/allenai/Olmo-3-7B-Think":[0,0,null,null],"allenai/Olmo-3-7B-Think":[0,0,null,null],"publicai/allenai/Olmo-3-32B-Think":[0,0,null,null],"allenai/Olmo-3-32B-Think":[0,0,null,null],"replicate/meta/llama-2-13b":[1e-7,5e-7,null,null],"meta/llama-2-13b":[1e-7,5e-7,null,null],"replicate/meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"meta/llama-2-13b-chat":[1e-7,5e-7,null,null],"replicate/meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"meta/llama-2-70b-chat":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-2-7b":[5e-8,2.5e-7,null,null],"meta/llama-2-7b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"meta/llama-2-7b-chat":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"meta/llama-3-70b-instruct":[6.5e-7,0.00000275,null,null],"replicate/meta/llama-3-8b":[5e-8,2.5e-7,null,null],"meta/llama-3-8b":[5e-8,2.5e-7,null,null],"replicate/meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"meta/llama-3-8b-instruct":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-instruct-v0.2":[5e-8,2.5e-7,null,null],"replicate/mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"mistralai/mistral-7b-v0.1":[5e-8,2.5e-7,null,null],"replicate/mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"mistralai/mixtral-8x7b-instruct-v0.1":[3e-7,0.000001,null,null],"replicate/openai/gpt-5":[0.00000125,0.00001,null,null],"replicateopenai/gpt-oss-20b":[9e-8,3.6e-7,null,null],"replicate/anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-4.5-haiku":[0.000001,0.000005,null,null],"replicate/ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"ibm-granite/granite-3.3-8b-instruct":[3e-8,2.5e-7,null,null],"replicate/openai/gpt-4o":[0.0000025,0.00001,null,null],"replicate/openai/o4-mini":[0.000001,0.000004,null,null],"openai/o4-mini":[0.000001,0.000004,null,null],"replicate/openai/o1-mini":[0.0000011,0.0000044,null,null],"openai/o1-mini":[0.0000011,0.0000044,null,null],"replicate/openai/o1":[0.000015,0.00006,null,null],"replicate/openai/gpt-4o-mini":[1.5e-7,6e-7,null,null],"replicate/qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"qwen/qwen3-235b-a22b-instruct-2507":[2.64e-7,0.00000106,null,null],"replicate/anthropic/claude-4-sonnet":[0.000003,0.000015,null,null],"replicate/deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"deepseek-ai/deepseek-v3":[0.00000145,0.00000145,null,null],"replicate/anthropic/claude-3.7-sonnet":[0.000003,0.000015,null,null],"replicate/anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"anthropic/claude-3.5-haiku":[0.000001,0.000005,null,null],"replicate/anthropic/claude-3.5-sonnet":[0.00000375,0.00001875,null,null],"replicate/google/gemini-3-pro":[0.000002,0.000012,null,null],"google/gemini-3-pro":[0.000002,0.000012,null,null],"replicate/anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"anthropic/claude-4.5-sonnet":[0.000003,0.000015,null,null],"replicate/openai/gpt-4.1":[0.000002,0.000008,null,null],"replicate/openai/gpt-4.1-nano":[1e-7,4e-7,null,null],"replicate/openai/gpt-4.1-mini":[4e-7,0.0000016,null,null],"replicate/openai/gpt-5-nano":[5e-8,4e-7,null,null],"replicate/openai/gpt-5-mini":[2.5e-7,0.000002,null,null],"replicate/google/gemini-2.5-flash":[0.0000025,0.0000025,null,null],"replicate/openai/gpt-oss-120b":[1.8e-7,7.2e-7,null,null],"replicate/deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"deepseek-ai/deepseek-v3.1":[6.72e-7,0.000002016,null,null],"replicate/xai/grok-4":[0.0000072,0.000036,null,null],"xai/grok-4":[0.0000072,0.000036,null,null],"replicate/deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"deepseek-ai/deepseek-r1":[0.00000375,0.00001,null,null],"nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia/nv-rerankqa-mistral-4b-v3":[0,0,null,null],"nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia/llama-3_2-nv-rerankqa-1b-v2":[0,0,null,null],"nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b":[0,0,null,null],"meta-textgeneration-llama-2-13b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-13b-f":[0,0,null,null],"meta-textgeneration-llama-2-13b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b":[0,0,null,null],"meta-textgeneration-llama-2-70b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"meta-textgeneration-llama-2-70b-b-f":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b":[0,0,null,null],"meta-textgeneration-llama-2-7b":[0,0,null,null],"sagemaker/meta-textgeneration-llama-2-7b-f":[0,0,null,null],"meta-textgeneration-llama-2-7b-f":[0,0,null,null],"sambanova/DeepSeek-R1":[0.000005,0.000007,null,null],"DeepSeek-R1":[0.000005,0.000007,null,null],"sambanova/DeepSeek-R1-Distill-Llama-70B":[7e-7,0.0000014,null,null],"sambanova/DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"DeepSeek-V3-0324":[0.000003,0.0000045,null,null],"sambanova/Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"Llama-4-Maverick-17B-128E-Instruct":[6.3e-7,0.0000018,null,null],"sambanova/Llama-4-Scout-17B-16E-Instruct":[4e-7,7e-7,null,null],"sambanova/Meta-Llama-3.1-405B-Instruct":[0.000005,0.00001,null,null],"sambanova/Meta-Llama-3.1-8B-Instruct":[1e-7,2e-7,null,null],"sambanova/Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"Meta-Llama-3.2-1B-Instruct":[4e-8,8e-8,null,null],"sambanova/Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"Meta-Llama-3.2-3B-Instruct":[8e-8,1.6e-7,null,null],"sambanova/Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"Meta-Llama-3.3-70B-Instruct":[6e-7,0.0000012,null,null],"sambanova/Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"Meta-Llama-Guard-3-8B":[3e-7,3e-7,null,null],"sambanova/QwQ-32B":[5e-7,0.000001,null,null],"QwQ-32B":[5e-7,0.000001,null,null],"sambanova/Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"Qwen2-Audio-7B-Instruct":[5e-7,0.0001,null,null],"sambanova/Qwen3-32B":[4e-7,8e-7,null,null],"sambanova/DeepSeek-V3.1":[0.000003,0.0000045,null,null],"DeepSeek-V3.1":[0.000003,0.0000045,null,null],"sambanova/gpt-oss-120b":[0.000003,0.0000045,null,null],"text-completion-codestral/codestral-2405":[0,0,null,null],"text-completion-codestral/codestral-latest":[0,0,null,null],"together_ai/baai/bge-base-en-v1.5":[8e-9,0,null,null],"baai/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"BAAI/bge-base-en-v1.5":[8e-9,0,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":[2e-7,0.000006,null,null],"together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507":[6.5e-7,0.000003,null,null],"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"Qwen/Qwen3-235B-A22B-fp8-tput":[2e-7,6e-7,null,null],"together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":[0.000002,0.000002,null,null],"together_ai/deepseek-ai/DeepSeek-R1":[0.000003,0.000007,null,null],"together_ai/deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"deepseek-ai/DeepSeek-R1-0528-tput":[5.5e-7,0.00000219,null,null],"together_ai/deepseek-ai/DeepSeek-V3":[0.00000125,0.00000125,null,null],"together_ai/deepseek-ai/DeepSeek-V3.1":[6e-7,0.0000017,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free":[0,0,null,null],"together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":[2.7e-7,8.5e-7,null,null],"together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct":[1.8e-7,5.9e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":[0.0000035,0.0000035,null,null],"together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":[8.8e-7,8.8e-7,null,null],"together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":[1.8e-7,1.8e-7,null,null],"together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1":[6e-7,6e-7,null,null],"together_ai/moonshotai/Kimi-K2-Instruct":[0.000001,0.000003,null,null],"together_ai/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"together_ai/openai/gpt-oss-20b":[5e-8,2e-7,null,null],"together_ai/zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"zai-org/GLM-4.5-Air-FP8":[2e-7,0.0000011,null,null],"together_ai/zai-org/GLM-4.6":[6e-7,0.0000022,null,null],"together_ai/zai-org/GLM-4.7":[4.5e-7,0.000002,null,null],"together_ai/moonshotai/Kimi-K2.5":[5e-7,0.0000028,null,null],"together_ai/moonshotai/Kimi-K2-Instruct-0905":[0.000001,0.000003,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking":[1.5e-7,0.0000015,null,null],"together_ai/Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"Qwen/Qwen3.5-397B-A17B":[6e-7,0.0000036,null,null],"v0/v0-1.0-md":[0.000003,0.000015,null,null],"v0-1.0-md":[0.000003,0.000015,null,null],"v0/v0-1.5-lg":[0.000015,0.000075,null,null],"v0-1.5-lg":[0.000015,0.000075,null,null],"v0/v0-1.5-md":[0.000003,0.000015,null,null],"v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"alibaba/qwen-3-14b":[8e-8,2.4e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"alibaba/qwen-3-235b":[2e-7,6e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"alibaba/qwen-3-30b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"alibaba/qwen-3-32b":[1e-7,3e-7,null,null],"vercel_ai_gateway/alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"alibaba/qwen3-coder":[4e-7,0.0000016,null,null],"vercel_ai_gateway/amazon/nova-lite":[6e-8,2.4e-7,null,null],"amazon/nova-lite":[6e-8,2.4e-7,null,null],"vercel_ai_gateway/amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"amazon/nova-micro":[3.5e-8,1.4e-7,null,null],"vercel_ai_gateway/amazon/nova-pro":[8e-7,0.0000032,null,null],"amazon/nova-pro":[8e-7,0.0000032,null,null],"vercel_ai_gateway/amazon/titan-embed-text-v2":[2e-8,0,null,null],"amazon/titan-embed-text-v2":[2e-8,0,null,null],"vercel_ai_gateway/anthropic/claude-3-haiku":[2.5e-7,0.00000125,3e-7,3e-8],"vercel_ai_gateway/anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"anthropic/claude-3-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-3.5-haiku":[8e-7,0.000004,0.000001,8e-8],"vercel_ai_gateway/anthropic/claude-3.5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3.7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-4-opus":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-4-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-5-sonnet-20241022":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"anthropic/claude-3-7-sonnet":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-haiku-4.5":[0.000001,0.000005,0.00000125,1e-7],"vercel_ai_gateway/anthropic/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.1":[0.000015,0.000075,0.00001875,0.0000015],"vercel_ai_gateway/anthropic/claude-opus-4.5":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-opus-4.6":[0.000005,0.000025,0.00000625,5e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/anthropic/claude-sonnet-4.5":[0.000003,0.000015,0.00000375,3e-7],"vercel_ai_gateway/cohere/command-a":[0.0000025,0.00001,null,null],"cohere/command-a":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/command-r":[1.5e-7,6e-7,null,null],"cohere/command-r":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/cohere/command-r-plus":[0.0000025,0.00001,null,null],"cohere/command-r-plus":[0.0000025,0.00001,null,null],"vercel_ai_gateway/cohere/embed-v4.0":[1.2e-7,0,null,null],"vercel_ai_gateway/deepseek/deepseek-r1":[5.5e-7,0.00000219,null,null],"vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"deepseek/deepseek-r1-distill-llama-70b":[7.5e-7,9.9e-7,null,null],"vercel_ai_gateway/deepseek/deepseek-v3":[9e-7,9e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"google/gemini-2.0-flash":[1.5e-7,6e-7,null,null],"vercel_ai_gateway/google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"google/gemini-2.0-flash-lite":[7.5e-8,3e-7,null,null],"vercel_ai_gateway/google/gemini-2.5-flash":[3e-7,0.0000025,null,null],"vercel_ai_gateway/google/gemini-2.5-pro":[0.0000025,0.00001,null,null],"vercel_ai_gateway/google/gemini-embedding-001":[1.5e-7,0,null,null],"google/gemini-embedding-001":[1.5e-7,0,null,null],"vercel_ai_gateway/google/gemma-2-9b":[2e-7,2e-7,null,null],"google/gemma-2-9b":[2e-7,2e-7,null,null],"vercel_ai_gateway/google/text-embedding-005":[2.5e-8,0,null,null],"google/text-embedding-005":[2.5e-8,0,null,null],"vercel_ai_gateway/google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"google/text-multilingual-embedding-002":[2.5e-8,0,null,null],"vercel_ai_gateway/inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"inception/mercury-coder-small":[2.5e-7,0.000001,null,null],"vercel_ai_gateway/meta/llama-3-70b":[5.9e-7,7.9e-7,null,null],"vercel_ai_gateway/meta/llama-3-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.1-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.1-8b":[5e-8,8e-8,null,null],"meta/llama-3.1-8b":[5e-8,8e-8,null,null],"vercel_ai_gateway/meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"meta/llama-3.2-11b":[1.6e-7,1.6e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-1b":[1e-7,1e-7,null,null],"meta/llama-3.2-1b":[1e-7,1e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"meta/llama-3.2-3b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.2-90b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"meta/llama-3.3-70b":[7.2e-7,7.2e-7,null,null],"vercel_ai_gateway/meta/llama-4-maverick":[2e-7,6e-7,null,null],"meta/llama-4-maverick":[2e-7,6e-7,null,null],"vercel_ai_gateway/meta/llama-4-scout":[1e-7,3e-7,null,null],"meta/llama-4-scout":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/codestral":[3e-7,9e-7,null,null],"mistral/codestral":[3e-7,9e-7,null,null],"vercel_ai_gateway/mistral/codestral-embed":[1.5e-7,0,null,null],"mistral/codestral-embed":[1.5e-7,0,null,null],"vercel_ai_gateway/mistral/devstral-small":[7e-8,2.8e-7,null,null],"mistral/devstral-small":[7e-8,2.8e-7,null,null],"vercel_ai_gateway/mistral/magistral-medium":[0.000002,0.000005,null,null],"mistral/magistral-medium":[0.000002,0.000005,null,null],"vercel_ai_gateway/mistral/magistral-small":[5e-7,0.0000015,null,null],"mistral/magistral-small":[5e-7,0.0000015,null,null],"vercel_ai_gateway/mistral/ministral-3b":[4e-8,4e-8,null,null],"mistral/ministral-3b":[4e-8,4e-8,null,null],"vercel_ai_gateway/mistral/ministral-8b":[1e-7,1e-7,null,null],"mistral/ministral-8b":[1e-7,1e-7,null,null],"vercel_ai_gateway/mistral/mistral-embed":[1e-7,0,null,null],"mistral/mistral-embed":[1e-7,0,null,null],"vercel_ai_gateway/mistral/mistral-large":[0.000002,0.000006,null,null],"mistral/mistral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"mistral/mistral-saba-24b":[7.9e-7,7.9e-7,null,null],"vercel_ai_gateway/mistral/mistral-small":[1e-7,3e-7,null,null],"vercel_ai_gateway/mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"mistral/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"vercel_ai_gateway/mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"mistral/pixtral-12b":[1.5e-7,1.5e-7,null,null],"vercel_ai_gateway/mistral/pixtral-large":[0.000002,0.000006,null,null],"mistral/pixtral-large":[0.000002,0.000006,null,null],"vercel_ai_gateway/moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"moonshotai/kimi-k2":[5.5e-7,0.0000022,null,null],"vercel_ai_gateway/morph/morph-v3-fast":[8e-7,0.0000012,null,null],"vercel_ai_gateway/morph/morph-v3-large":[9e-7,0.0000019,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo":[5e-7,0.0000015,null,null],"vercel_ai_gateway/openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"openai/gpt-3.5-turbo-instruct":[0.0000015,0.000002,null,null],"vercel_ai_gateway/openai/gpt-4-turbo":[0.00001,0.00003,null,null],"openai/gpt-4-turbo":[0.00001,0.00003,null,null],"vercel_ai_gateway/openai/gpt-4.1":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/gpt-4.1-mini":[4e-7,0.0000016,0,1e-7],"vercel_ai_gateway/openai/gpt-4.1-nano":[1e-7,4e-7,0,2.5e-8],"vercel_ai_gateway/openai/gpt-4o":[0.0000025,0.00001,0,0.00000125],"vercel_ai_gateway/openai/gpt-4o-mini":[1.5e-7,6e-7,0,7.5e-8],"vercel_ai_gateway/openai/o1":[0.000015,0.00006,0,0.0000075],"vercel_ai_gateway/openai/o3":[0.000002,0.000008,0,5e-7],"openai/o3":[0.000002,0.000008,0,5e-7],"vercel_ai_gateway/openai/o3-mini":[0.0000011,0.0000044,0,5.5e-7],"vercel_ai_gateway/openai/o4-mini":[0.0000011,0.0000044,0,2.75e-7],"vercel_ai_gateway/openai/text-embedding-3-large":[1.3e-7,0,null,null],"openai/text-embedding-3-large":[1.3e-7,0,null,null],"vercel_ai_gateway/openai/text-embedding-3-small":[2e-8,0,null,null],"openai/text-embedding-3-small":[2e-8,0,null,null],"vercel_ai_gateway/openai/text-embedding-ada-002":[1e-7,0,null,null],"openai/text-embedding-ada-002":[1e-7,0,null,null],"vercel_ai_gateway/perplexity/sonar":[0.000001,0.000001,null,null],"vercel_ai_gateway/perplexity/sonar-pro":[0.000003,0.000015,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning":[0.000001,0.000005,null,null],"vercel_ai_gateway/perplexity/sonar-reasoning-pro":[0.000002,0.000008,null,null],"vercel_ai_gateway/vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel/v0-1.0-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel/v0-1.5-md":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-2":[0.000002,0.00001,null,null],"xai/grok-2":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision":[0.000002,0.00001,null,null],"vercel_ai_gateway/xai/grok-3":[0.000003,0.000015,null,null],"xai/grok-3":[0.000003,0.000015,null,null],"vercel_ai_gateway/xai/grok-3-fast":[0.000005,0.000025,null,null],"xai/grok-3-fast":[0.000005,0.000025,null,null],"vercel_ai_gateway/xai/grok-3-mini":[3e-7,5e-7,null,null],"xai/grok-3-mini":[3e-7,5e-7,null,null],"vercel_ai_gateway/xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"xai/grok-3-mini-fast":[6e-7,0.000004,null,null],"vercel_ai_gateway/xai/grok-4":[0.000003,0.000015,null,null],"vercel_ai_gateway/zai/glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5":[6e-7,0.0000022,null,null],"vercel_ai_gateway/zai/glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-air":[2e-7,0.0000011,null,null],"vercel_ai_gateway/zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"zai/glm-4.6":[4.5e-7,0.0000018,null,1.1e-7],"vertex_ai/claude-3-5-haiku":[0.000001,0.000005,null,null],"claude-3-5-haiku":[0.000001,0.000005,null,null],"vertex_ai/claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"claude-3-5-haiku@20241022":[0.000001,0.000005,null,null],"vertex_ai/claude-haiku-4-5":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"claude-haiku-4-5@20251001":[0.000001,0.000005,0.00000125,1e-7],"vertex_ai/claude-3-5-sonnet":[0.000003,0.000015,null,null],"claude-3-5-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"claude-3-5-sonnet@20240620":[0.000003,0.000015,null,null],"vertex_ai/claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"claude-3-7-sonnet@20250219":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-3-haiku":[2.5e-7,0.00000125,null,null],"claude-3-haiku":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"claude-3-haiku@20240307":[2.5e-7,0.00000125,null,null],"vertex_ai/claude-3-opus":[0.000015,0.000075,null,null],"claude-3-opus":[0.000015,0.000075,null,null],"vertex_ai/claude-3-opus@20240229":[0.000015,0.000075,null,null],"claude-3-opus@20240229":[0.000015,0.000075,null,null],"vertex_ai/claude-3-sonnet":[0.000003,0.000015,null,null],"claude-3-sonnet":[0.000003,0.000015,null,null],"vertex_ai/claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"claude-3-sonnet@20240229":[0.000003,0.000015,null,null],"vertex_ai/claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4-1@20250805":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-opus-4-5":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-5@20251101":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-6@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"claude-opus-4-7@default":[0.000005,0.000025,0.00000625,5e-7],"vertex_ai/claude-sonnet-4-5":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-6":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-5@20250929":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"claude-opus-4@20250514":[0.000015,0.000075,0.00001875,0.0000015],"vertex_ai/claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4@20250514":[0.000003,0.000015,0.00000375,3e-7],"vertex_ai/mistralai/codestral-2@001":[3e-7,9e-7,null,null],"mistralai/codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/codestral-2":[3e-7,9e-7,null,null],"codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2@001":[3e-7,9e-7,null,null],"codestral-2@001":[3e-7,9e-7,null,null],"vertex_ai/mistralai/codestral-2":[3e-7,9e-7,null,null],"mistralai/codestral-2":[3e-7,9e-7,null,null],"vertex_ai/codestral-2501":[2e-7,6e-7,null,null],"codestral-2501":[2e-7,6e-7,null,null],"vertex_ai/codestral@2405":[2e-7,6e-7,null,null],"codestral@2405":[2e-7,6e-7,null,null],"vertex_ai/codestral@latest":[2e-7,6e-7,null,null],"codestral@latest":[2e-7,6e-7,null,null],"vertex_ai/deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-v3.1-maas":[0.00000135,0.0000054,null,null],"vertex_ai/deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"deepseek-ai/deepseek-v3.2-maas":[5.6e-7,0.00000168,null,null],"vertex_ai/deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"deepseek-ai/deepseek-r1-0528-maas":[0.00000135,0.0000054,null,null],"vertex_ai/gemini-2.5-flash-image":[3e-7,0.0000025,null,3e-8],"vertex_ai/gemini-3-pro-image-preview":[0.000002,0.000012,null,null],"vertex_ai/gemini-3.1-flash-image-preview":[5e-7,0.000003,null,null],"vertex_ai/gemini-3.1-flash-lite-preview":[2.5e-7,0.0000015,null,2.5e-8],"vertex_ai/deep-research-pro-preview-12-2025":[0.000002,0.000012,null,null],"vertex_ai/jamba-1.5":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-large":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-large@001":[0.000002,0.000008,null,null],"vertex_ai/jamba-1.5-mini":[2e-7,4e-7,null,null],"vertex_ai/jamba-1.5-mini@001":[2e-7,4e-7,null,null],"vertex_ai/meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"meta/llama-3.1-405b-instruct-maas":[0.000005,0.000016,null,null],"vertex_ai/meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"meta/llama-3.1-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"meta/llama-3.1-8b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"meta/llama-3.2-90b-vision-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-128e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"meta/llama-4-maverick-17b-16e-instruct-maas":[3.5e-7,0.00000115,null,null],"vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-128e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"meta/llama-4-scout-17b-16e-instruct-maas":[2.5e-7,7e-7,null,null],"vertex_ai/meta/llama3-405b-instruct-maas":[0,0,null,null],"meta/llama3-405b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-70b-instruct-maas":[0,0,null,null],"meta/llama3-70b-instruct-maas":[0,0,null,null],"vertex_ai/meta/llama3-8b-instruct-maas":[0,0,null,null],"meta/llama3-8b-instruct-maas":[0,0,null,null],"vertex_ai/minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"minimaxai/minimax-m2-maas":[3e-7,0.0000012,null,null],"vertex_ai/moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking-maas":[6e-7,0.0000025,null,null],"vertex_ai/zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"zai-org/glm-4.7-maas":[6e-7,0.0000022,null,null],"vertex_ai/zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"zai-org/glm-5-maas":[0.000001,0.0000032,null,1e-7],"vertex_ai/mistral-medium-3":[4e-7,0.000002,null,null],"mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3":[4e-7,0.000002,null,null],"vertex_ai/mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"mistralai/mistral-medium-3@001":[4e-7,0.000002,null,null],"vertex_ai/mistral-large-2411":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2407":[0.000002,0.000006,null,null],"mistral-large@2407":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@2411-001":[0.000002,0.000006,null,null],"mistral-large@2411-001":[0.000002,0.000006,null,null],"vertex_ai/mistral-large@latest":[0.000002,0.000006,null,null],"mistral-large@latest":[0.000002,0.000006,null,null],"vertex_ai/mistral-nemo@2407":[0.000003,0.000003,null,null],"mistral-nemo@2407":[0.000003,0.000003,null,null],"vertex_ai/mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"mistral-nemo@latest":[1.5e-7,1.5e-7,null,null],"vertex_ai/mistral-small-2503":[0.000001,0.000003,null,null],"vertex_ai/mistral-small-2503@001":[0.000001,0.000003,null,null],"mistral-small-2503@001":[0.000001,0.000003,null,null],"vertex_ai/deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"deepseek-ai/deepseek-ocr-maas":[3e-7,0.0000012,null,null],"vertex_ai/openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"openai/gpt-oss-120b-maas":[1.5e-7,6e-7,null,null],"vertex_ai/openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"openai/gpt-oss-20b-maas":[7.5e-8,3e-7,null,null],"vertex_ai/xai/grok-4.1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4.1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"vertex_ai/xai/grok-4.1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4.1-fast-reasoning":[2e-7,5e-7,null,5e-8],"vertex_ai/xai/grok-4.20-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-non-reasoning":[0.000002,0.000006,null,2e-7],"vertex_ai/xai/grok-4.20-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-reasoning":[0.000002,0.000006,null,2e-7],"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"qwen/qwen3-235b-a22b-instruct-2507-maas":[2.5e-7,0.000001,null,null],"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"qwen/qwen3-coder-480b-a35b-instruct-maas":[0.000001,0.000004,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-instruct-maas":[1.5e-7,0.0000012,null,null],"vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"qwen/qwen3-next-80b-a3b-thinking-maas":[1.5e-7,0.0000012,null,null],"voyage/rerank-2":[5e-8,0,null,null],"rerank-2":[5e-8,0,null,null],"voyage/rerank-2-lite":[2e-8,0,null,null],"rerank-2-lite":[2e-8,0,null,null],"voyage/rerank-2.5":[5e-8,0,null,null],"rerank-2.5":[5e-8,0,null,null],"voyage/rerank-2.5-lite":[2e-8,0,null,null],"rerank-2.5-lite":[2e-8,0,null,null],"voyage/voyage-2":[1e-7,0,null,null],"voyage-2":[1e-7,0,null,null],"voyage/voyage-3":[6e-8,0,null,null],"voyage-3":[6e-8,0,null,null],"voyage/voyage-3-large":[1.8e-7,0,null,null],"voyage-3-large":[1.8e-7,0,null,null],"voyage/voyage-3-lite":[2e-8,0,null,null],"voyage-3-lite":[2e-8,0,null,null],"voyage/voyage-3.5":[6e-8,0,null,null],"voyage-3.5":[6e-8,0,null,null],"voyage/voyage-3.5-lite":[2e-8,0,null,null],"voyage-3.5-lite":[2e-8,0,null,null],"voyage/voyage-code-2":[1.2e-7,0,null,null],"voyage-code-2":[1.2e-7,0,null,null],"voyage/voyage-code-3":[1.8e-7,0,null,null],"voyage-code-3":[1.8e-7,0,null,null],"voyage/voyage-context-3":[1.8e-7,0,null,null],"voyage-context-3":[1.8e-7,0,null,null],"voyage/voyage-finance-2":[1.2e-7,0,null,null],"voyage-finance-2":[1.2e-7,0,null,null],"voyage/voyage-large-2":[1.2e-7,0,null,null],"voyage-large-2":[1.2e-7,0,null,null],"voyage/voyage-law-2":[1.2e-7,0,null,null],"voyage-law-2":[1.2e-7,0,null,null],"voyage/voyage-lite-01":[1e-7,0,null,null],"voyage-lite-01":[1e-7,0,null,null],"voyage/voyage-lite-02-instruct":[1e-7,0,null,null],"voyage-lite-02-instruct":[1e-7,0,null,null],"voyage/voyage-multimodal-3":[1.2e-7,0,null,null],"voyage-multimodal-3":[1.2e-7,0,null,null],"wandb/openai/gpt-oss-120b":[0.015,0.06,null,null],"wandb/openai/gpt-oss-20b":[0.005,0.02,null,null],"wandb/zai-org/GLM-4.5":[0.055,0.2,null,null],"wandb/Qwen/Qwen3-235B-A22B-Instruct-2507":[0.01,0.01,null,null],"wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct":[0.1,0.15,null,null],"wandb/Qwen/Qwen3-235B-A22B-Thinking-2507":[0.01,0.01,null,null],"wandb/moonshotai/Kimi-K2-Instruct":[6e-7,0.0000025,null,null],"wandb/moonshotai/Kimi-K2.5":[6e-7,0.000003,null,1e-7],"wandb/MiniMaxAI/MiniMax-M2.5":[3e-7,0.0000012,null,null],"wandb/meta-llama/Llama-3.1-8B-Instruct":[0.022,0.022,null,null],"wandb/deepseek-ai/DeepSeek-V3.1":[0.055,0.165,null,null],"wandb/deepseek-ai/DeepSeek-R1-0528":[0.135,0.54,null,null],"wandb/deepseek-ai/DeepSeek-V3-0324":[0.114,0.275,null,null],"wandb/meta-llama/Llama-3.3-70B-Instruct":[0.071,0.071,null,null],"wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct":[0.017,0.066,null,null],"wandb/microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"microsoft/Phi-4-mini-instruct":[0.008,0.035,null,null],"watsonx/ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/mistralai/mistral-large":[0.000003,0.00001,null,null],"watsonx/bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"bigscience/mt0-xxl-13b":[0.0005,0.002,null,null],"watsonx/core42/jais-13b-chat":[0.0005,0.002,null,null],"core42/jais-13b-chat":[0.0005,0.002,null,null],"watsonx/google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"google/flan-t5-xl-3b":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-chat-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"ibm/granite-13b-instruct-v2":[6e-7,6e-7,null,null],"watsonx/ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"ibm/granite-3-3-8b-instruct":[2e-7,2e-7,null,null],"watsonx/ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"ibm/granite-4-h-small":[6e-8,2.5e-7,null,null],"watsonx/ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-guardian-3-2-2b":[1e-7,1e-7,null,null],"watsonx/ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"ibm/granite-guardian-3-3-8b":[2e-7,2e-7,null,null],"watsonx/ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1024-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-1536-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"ibm/granite-ttm-512-96-r2":[3.8e-7,3.8e-7,null,null],"watsonx/ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"ibm/granite-vision-3-2-2b":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-3-2-11b-vision-instruct":[3.5e-7,3.5e-7,null,null],"watsonx/meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"meta-llama/llama-3-2-1b-instruct":[1e-7,1e-7,null,null],"watsonx/meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"meta-llama/llama-3-2-3b-instruct":[1.5e-7,1.5e-7,null,null],"watsonx/meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"meta-llama/llama-3-2-90b-vision-instruct":[0.000002,0.000002,null,null],"watsonx/meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"meta-llama/llama-3-3-70b-instruct":[7.1e-7,7.1e-7,null,null],"watsonx/meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"meta-llama/llama-4-maverick-17b":[3.5e-7,0.0000014,null,null],"watsonx/meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"meta-llama/llama-guard-3-11b-vision":[3.5e-7,3.5e-7,null,null],"watsonx/mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"mistralai/mistral-medium-2505":[0.000003,0.00001,null,null],"watsonx/mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"mistralai/mistral-small-3-1-24b-instruct-2503":[1e-7,3e-7,null,null],"watsonx/mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"mistralai/pixtral-12b-2409":[3.5e-7,3.5e-7,null,null],"watsonx/openai/gpt-oss-120b":[1.5e-7,6e-7,null,null],"watsonx/sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"sdaia/allam-1-13b-instruct":[0.0000018,0.0000018,null,null],"grok-2":[0.000002,0.00001,null,null],"xai/grok-2-1212":[0.000002,0.00001,null,null],"grok-2-1212":[0.000002,0.00001,null,null],"xai/grok-2-latest":[0.000002,0.00001,null,null],"grok-2-latest":[0.000002,0.00001,null,null],"grok-2-vision":[0.000002,0.00001,null,null],"xai/grok-2-vision-1212":[0.000002,0.00001,null,null],"grok-2-vision-1212":[0.000002,0.00001,null,null],"xai/grok-2-vision-latest":[0.000002,0.00001,null,null],"grok-2-vision-latest":[0.000002,0.00001,null,null],"xai/grok-3-beta":[0.000003,0.000015,null,7.5e-7],"grok-3-beta":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"grok-3-fast-beta":[0.000005,0.000025,null,0.00000125],"xai/grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"grok-3-fast-latest":[0.000005,0.000025,null,0.00000125],"xai/grok-3-latest":[0.000003,0.000015,null,7.5e-7],"grok-3-latest":[0.000003,0.000015,null,7.5e-7],"xai/grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-beta":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-fast":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-beta":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"grok-3-mini-fast-latest":[6e-7,0.000004,null,1.5e-7],"xai/grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"grok-3-mini-latest":[3e-7,5e-7,null,7.5e-8],"xai/grok-4-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-0709":[0.000003,0.000015,null,null],"grok-4-0709":[0.000003,0.000015,null,null],"xai/grok-4-latest":[0.000003,0.000015,null,null],"grok-4-latest":[0.000003,0.000015,null,null],"xai/grok-4-1-fast":[2e-7,5e-7,null,5e-8],"grok-4-1-fast":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning":[2e-7,5e-7,null,5e-8],"xai/grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"grok-4-1-fast-non-reasoning-latest":[2e-7,5e-7,null,5e-8],"xai/grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"grok-4.20-multi-agent-beta-0309":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-0309-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"grok-4.20-beta-0309-non-reasoning":[0.000002,0.000006,null,2e-7],"xai/grok-beta":[0.000005,0.000015,null,null],"grok-beta":[0.000005,0.000015,null,null],"xai/grok-code-fast":[2e-7,0.0000015,null,2e-8],"grok-code-fast":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1":[2e-7,0.0000015,null,2e-8],"xai/grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"grok-code-fast-1-0825":[2e-7,0.0000015,null,2e-8],"xai/grok-vision-beta":[0.000005,0.000015,null,null],"grok-vision-beta":[0.000005,0.000015,null,null],"zai/glm-5":[0.000001,0.0000032,0,2e-7],"glm-5":[0.000001,0.0000032,0,2e-7],"zai/glm-5-code":[0.0000012,0.000005,0,3e-7],"glm-5-code":[0.0000012,0.000005,0,3e-7],"zai/glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.7":[6e-7,0.0000022,0,1.1e-7],"glm-4.6":[6e-7,0.0000022,0,1.1e-7],"glm-4.5":[6e-7,0.0000022,null,null],"zai/glm-4.5v":[6e-7,0.0000018,null,null],"glm-4.5v":[6e-7,0.0000018,null,null],"zai/glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-x":[0.0000022,0.0000089,null,null],"glm-4.5-air":[2e-7,0.0000011,null,null],"zai/glm-4.5-airx":[0.0000011,0.0000045,null,null],"glm-4.5-airx":[0.0000011,0.0000045,null,null],"zai/glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"glm-4-32b-0414-128k":[1e-7,1e-7,null,null],"zai/glm-4.5-flash":[0,0,null,null],"glm-4.5-flash":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct":[4.5e-7,0.0000018,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"accounts/fireworks/models/flux-kontext-pro":[4e-8,4e-8,null,null],"fireworks_ai/accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/SSD-1B":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/chronos-hermes-13b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-13b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-34b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"accounts/fireworks/models/code-llama-70b-python":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-llama-7b-python":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/code-qwen-1p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"accounts/fireworks/models/codegemma-2b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/codegemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/cogito-671b-v2-p1":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/cogito-v1-preview-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"accounts/fireworks/models/flux-kontext-max":[8e-8,8e-8,null,null],"fireworks_ai/accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/dbrx-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-coder-1b-base":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-coder-33b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-base-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-base":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-coder-v2-lite-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-prover-v2":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-llama-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/deepseek-r1-distill-qwen-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"accounts/fireworks/models/deepseek-v2-lite-chat":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/deepseek-v2p5":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"accounts/fireworks/models/devstral-small-2505":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/dolphin-2-9-2-qwen2-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/dolphin-2p6-mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-21b-a3b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"accounts/fireworks/models/ernie-4p5-300b-a47b-pt":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"accounts/fireworks/models/fare-20b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"accounts/fireworks/models/firefunction-v1":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/firellava-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"accounts/fireworks/models/firesearch-ocr-v6":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-large":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"accounts/fireworks/models/fireworks-asr-v2":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-dev":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"accounts/fireworks/models/flux-1-dev-controlnet-union":[1e-9,1e-9,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"accounts/fireworks/models/flux-1-dev-fp8":[5e-10,5e-10,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"accounts/fireworks/models/flux-1-schnell":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"accounts/fireworks/models/flux-1-schnell-fp8":[3.5e-10,3.5e-10,null,null],"fireworks_ai/accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"accounts/fireworks/models/gemma-2b-it":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"accounts/fireworks/models/gemma-3-27b-it":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma-7b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"accounts/fireworks/models/gemma2-9b-it":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/glm-4p5v":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/gpt-oss-safeguard-120b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"accounts/fireworks/models/gpt-oss-safeguard-20b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/hermes-2-pro-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-38b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"accounts/fireworks/models/internvl3-78b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/internvl3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/japanese-stable-diffusion-xl":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-coder":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"accounts/fireworks/models/kat-dev-72b-exp":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-2-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-guard-3-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-guard-3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-13b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v2-70b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v2-70b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v2-7b-chat":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3-70b-instruct-hf":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"accounts/fireworks/models/llama-v3-8b-instruct-hf":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-405b-instruct-long":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p1-70b-instruct-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-1b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/llama-v3p2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/llama-v3p3-70b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/llamaguard-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/llava-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"accounts/fireworks/models/minimax-m1-80k":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"accounts/fireworks/models/minimax-m2":[3e-7,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-14b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"accounts/fireworks/models/ministral-3-3b-instruct-2512":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"accounts/fireworks/models/ministral-3-8b-instruct-2512":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-4k":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-instruct-v3":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-7b-v0p2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mistral-large-3-fp8":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-base-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"accounts/fireworks/models/mistral-nemo-instruct-2407":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"accounts/fireworks/models/mistral-small-24b-instruct-2501":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"accounts/fireworks/models/mixtral-8x22b-instruct":[0.0000012,0.0000012,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"accounts/fireworks/models/mixtral-8x7b-instruct-hf":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/mythomax-l2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"accounts/fireworks/models/nemotron-nano-v2-12b-vl":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-capybara-7b-v1p9":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-2-yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-13b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-70b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/nous-hermes-llama2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-12b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"accounts/fireworks/models/nvidia-nemotron-nano-9b-v2":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openchat-3p5-0106-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openhermes-2p5-mistral-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/openorca-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/phi-3-mini-128k-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/phi-3-vision-128k-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-python-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v1":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"accounts/fireworks/models/phind-code-llama-34b-v2":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/playground-v2-5-1024px-aesthetic":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"accounts/fireworks/models/pythia-12b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen-qwq-32b-preview":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen-v2p5-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen1p5-72b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2-vl-2b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-0p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-14b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-1p5b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-3b-instruct":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-coder-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-math-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-3b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-72b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen2p5-vl-7b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-0p6b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-14b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-instruct-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-235b-a22b-thinking-2507":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-instruct-2507":[5e-7,5e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-30b-a3b-thinking-2507":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-4b-instruct-2507":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-8b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-coder-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-coder-480b-instruct-bf16":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-embedding-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/":[1e-7,0,null,null],"accounts/fireworks/models/":[1e-7,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-next-80b-a3b-thinking":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-0p6b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-4b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"accounts/fireworks/models/qwen3-reranker-8b":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-instruct":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"accounts/fireworks/models/qwen3-vl-235b-a22b-thinking":[2.2e-7,8.8e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking":[1.5e-7,6e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwen3-vl-32b-instruct":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"accounts/fireworks/models/qwen3-vl-8b-instruct":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"accounts/fireworks/models/qwq-32b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"accounts/fireworks/models/rolm-ocr":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0":[1.3e-10,1.3e-10,null,null],"fireworks_ai/accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/stablecode-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-16b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-15b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"accounts/fireworks/models/starcoder2-3b":[1e-7,1e-7,null,null],"fireworks_ai/accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/starcoder2-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"accounts/fireworks/models/toppy-m-7b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3":[0,0,null,null],"accounts/fireworks/models/whisper-v3":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"accounts/fireworks/models/whisper-v3-turbo":[0,0,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-200k-capybara":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"accounts/fireworks/models/yi-34b-chat":[9e-7,9e-7,null,null],"fireworks_ai/accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"accounts/fireworks/models/yi-6b":[2e-7,2e-7,null,null],"fireworks_ai/accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"accounts/fireworks/models/zephyr-7b-beta":[2e-7,2e-7,null,null],"novita/deepseek/deepseek-v3.2":[2.69e-7,4e-7,null,1.345e-7],"novita/minimax/minimax-m2.1":[3e-7,0.0000012,null,3e-8],"novita/zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.7":[6e-7,0.0000022,null,1.1e-7],"novita/xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"xiaomimimo/mimo-v2-flash":[1e-7,3e-7,null,2e-8],"novita/zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"zai-org/autoglm-phone-9b-multilingual":[3.5e-8,1.38e-7,null,null],"novita/moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-thinking":[6e-7,0.0000025,null,null],"novita/minimax/minimax-m2":[3e-7,0.0000012,null,3e-8],"novita/paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"paddlepaddle/paddleocr-vl":[2e-8,2e-8,null,null],"novita/deepseek/deepseek-v3.2-exp":[2.7e-7,4.1e-7,null,null],"novita/qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"qwen/qwen3-vl-235b-a22b-thinking":[9.8e-7,0.00000395,null,null],"novita/zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"zai-org/glm-4.6v":[3e-7,9e-7,null,5.5e-8],"novita/zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.6":[5.5e-7,0.0000022,null,1.1e-7],"novita/kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"kwaipilot/kat-coder-pro":[3e-7,0.0000012,null,6e-8],"novita/qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-instruct":[1.5e-7,0.0000015,null,null],"novita/qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"qwen/qwen3-next-80b-a3b-thinking":[1.5e-7,0.0000015,null,null],"novita/deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"deepseek/deepseek-ocr":[3e-8,3e-8,null,null],"novita/deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1-terminus":[2.7e-7,0.000001,null,1.35e-7],"novita/qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"qwen/qwen3-vl-235b-a22b-instruct":[3e-7,0.0000015,null,null],"novita/qwen/qwen3-max":[0.00000211,0.00000845,null,null],"qwen/qwen3-max":[0.00000211,0.00000845,null,null],"novita/skywork/r1v4-lite":[2e-7,6e-7,null,null],"skywork/r1v4-lite":[2e-7,6e-7,null,null],"novita/deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"deepseek/deepseek-v3.1":[2.7e-7,0.000001,null,1.35e-7],"novita/moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"moonshotai/kimi-k2-0905":[6e-7,0.0000025,null,null],"novita/qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"qwen/qwen3-coder-480b-a35b-instruct":[3e-7,0.0000013,null,null],"novita/qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"qwen/qwen3-coder-30b-a3b-instruct":[7e-8,2.7e-7,null,null],"novita/openai/gpt-oss-120b":[5e-8,2.5e-7,null,null],"novita/moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"moonshotai/kimi-k2-instruct":[5.7e-7,0.0000023,null,null],"novita/deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"deepseek/deepseek-v3-0324":[2.7e-7,0.00000112,null,1.35e-7],"novita/zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"zai-org/glm-4.5":[6e-7,0.0000022,null,1.1e-7],"novita/qwen/qwen3-235b-a22b-thinking-2507":[3e-7,0.000003,null,null],"novita/meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"meta-llama/llama-3.1-8b-instruct":[2e-8,5e-8,null,null],"novita/google/gemma-3-12b-it":[5e-8,1e-7,null,null],"novita/zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"zai-org/glm-4.5v":[6e-7,0.0000018,null,1.1e-7],"novita/openai/gpt-oss-20b":[4e-8,1.5e-7,null,null],"novita/qwen/qwen3-235b-a22b-instruct-2507":[9e-8,5.8e-7,null,null],"novita/deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"deepseek/deepseek-r1-distill-qwen-14b":[1.5e-7,1.5e-7,null,null],"novita/meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"meta-llama/llama-3.3-70b-instruct":[1.35e-7,4e-7,null,null],"novita/qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"qwen/qwen-2.5-72b-instruct":[3.8e-7,4e-7,null,null],"novita/mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"mistralai/mistral-nemo":[4e-8,1.7e-7,null,null],"novita/minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"minimaxai/minimax-m1-80k":[5.5e-7,0.0000022,null,null],"novita/deepseek/deepseek-r1-0528":[7e-7,0.0000025,null,3.5e-7],"novita/deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"deepseek/deepseek-r1-distill-qwen-32b":[3e-7,3e-7,null,null],"novita/meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"meta-llama/llama-3-8b-instruct":[4e-8,4e-8,null,null],"novita/microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"microsoft/wizardlm-2-8x22b":[6.2e-7,6.2e-7,null,null],"novita/deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"deepseek/deepseek-r1-0528-qwen3-8b":[6e-8,9e-8,null,null],"novita/deepseek/deepseek-r1-distill-llama-70b":[8e-7,8e-7,null,null],"novita/meta-llama/llama-3-70b-instruct":[5.1e-7,7.4e-7,null,null],"novita/qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"qwen/qwen3-235b-a22b-fp8":[2e-7,8e-7,null,null],"novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":[2.7e-7,8.5e-7,null,null],"novita/meta-llama/llama-4-scout-17b-16e-instruct":[1.8e-7,5.9e-7,null,null],"novita/nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"nousresearch/hermes-2-pro-llama-3-8b":[1.4e-7,1.4e-7,null,null],"novita/qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"qwen/qwen2.5-vl-72b-instruct":[8e-7,8e-7,null,null],"novita/sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"sao10k/l3-70b-euryale-v2.1":[0.00000148,0.00000148,null,null],"novita/baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b-thinking":[7e-8,2.8e-7,null,null],"novita/sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"sao10k/l3-8b-lunaris":[5e-8,5e-8,null,null],"novita/baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"baichuan/baichuan-m2-32b":[7e-8,7e-8,null,null],"novita/baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"baidu/ernie-4.5-vl-424b-a47b":[4.2e-7,0.00000125,null,null],"novita/baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"baidu/ernie-4.5-300b-a47b-paddle":[2.8e-7,0.0000011,null,null],"novita/deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"deepseek/deepseek-prover-v2-671b":[7e-7,0.0000025,null,null],"novita/qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"qwen/qwen3-32b-fp8":[1e-7,4.5e-7,null,null],"novita/qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"qwen/qwen3-30b-a3b-fp8":[9e-8,4.5e-7,null,null],"novita/google/gemma-3-27b-it":[1.19e-7,2e-7,null,null],"novita/deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"deepseek/deepseek-v3-turbo":[4e-7,0.0000013,null,null],"novita/deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"deepseek/deepseek-r1-turbo":[7e-7,0.0000025,null,null],"novita/Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"Sao10K/L3-8B-Stheno-v3.2":[5e-8,5e-8,null,null],"novita/gryphe/mythomax-l2-13b":[9e-8,9e-8,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b-thinking":[3.9e-7,3.9e-7,null,null],"novita/qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"qwen/qwen3-vl-8b-instruct":[8e-8,5e-7,null,null],"novita/zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"zai-org/glm-4.5-air":[1.3e-7,8.5e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"qwen/qwen3-vl-30b-a3b-instruct":[2e-7,7e-7,null,null],"novita/qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"qwen/qwen3-vl-30b-a3b-thinking":[2e-7,0.000001,null,null],"novita/qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-thinking":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"qwen/qwen3-omni-30b-a3b-instruct":[2.5e-7,9.7e-7,null,null],"novita/qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"qwen/qwen-mt-plus":[2.5e-7,7.5e-7,null,null],"novita/baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"baidu/ernie-4.5-vl-28b-a3b":[1.4e-7,5.6e-7,null,null],"novita/baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"baidu/ernie-4.5-21B-a3b":[7e-8,2.8e-7,null,null],"novita/qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"qwen/qwen3-8b-fp8":[3.5e-8,1.38e-7,null,null],"novita/qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"qwen/qwen3-4b-fp8":[3e-8,3e-8,null,null],"novita/qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"qwen/qwen2.5-7b-instruct":[7e-8,7e-8,null,null],"novita/meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"meta-llama/llama-3.2-3b-instruct":[3e-8,5e-8,null,null],"novita/sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"sao10k/l31-70b-euryale-v2.2":[0.00000148,0.00000148,null,null],"novita/qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"qwen/qwen3-embedding-0.6b":[7e-8,0,null,null],"novita/qwen/qwen3-embedding-8b":[7e-8,0,null,null],"qwen/qwen3-embedding-8b":[7e-8,0,null,null],"novita/baai/bge-m3":[1e-8,1e-8,null,null],"baai/bge-m3":[1e-8,1e-8,null,null],"novita/qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"qwen/qwen3-reranker-8b":[5e-8,5e-8,null,null],"novita/baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"baai/bge-reranker-v2-m3":[1e-8,1e-8,null,null],"llamagate/llama-3.1-8b":[3e-8,5e-8,null,null],"llama-3.1-8b":[3e-8,5e-8,null,null],"llamagate/llama-3.2-3b":[4e-8,8e-8,null,null],"llama-3.2-3b":[4e-8,8e-8,null,null],"llamagate/mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"mistral-7b-v0.3":[1e-7,1.5e-7,null,null],"llamagate/qwen3-8b":[4e-8,1.4e-7,null,null],"qwen3-8b":[4e-8,1.4e-7,null,null],"llamagate/dolphin3-8b":[8e-8,1.5e-7,null,null],"dolphin3-8b":[8e-8,1.5e-7,null,null],"llamagate/deepseek-r1-8b":[1e-7,2e-7,null,null],"deepseek-r1-8b":[1e-7,2e-7,null,null],"llamagate/deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"deepseek-r1-7b-qwen":[8e-8,1.5e-7,null,null],"llamagate/openthinker-7b":[8e-8,1.5e-7,null,null],"openthinker-7b":[8e-8,1.5e-7,null,null],"llamagate/qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"qwen2.5-coder-7b":[6e-8,1.2e-7,null,null],"llamagate/deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"deepseek-coder-6.7b":[6e-8,1.2e-7,null,null],"llamagate/codellama-7b":[6e-8,1.2e-7,null,null],"codellama-7b":[6e-8,1.2e-7,null,null],"llamagate/qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"qwen3-vl-8b":[1.5e-7,5.5e-7,null,null],"llamagate/llava-7b":[1e-7,2e-7,null,null],"llava-7b":[1e-7,2e-7,null,null],"llamagate/gemma3-4b":[3e-8,8e-8,null,null],"gemma3-4b":[3e-8,8e-8,null,null],"llamagate/nomic-embed-text":[2e-8,0,null,null],"nomic-embed-text":[2e-8,0,null,null],"llamagate/qwen3-embedding-8b":[2e-8,0,null,null],"qwen3-embedding-8b":[2e-8,0,null,null],"sarvam/sarvam-m":[0,0,0,0],"sarvam-m":[0,0,0,0],"gemini/gemini-2.0-flash-exp-image-generation":[0,0,null,null],"gemini/gemini-2.0-flash-lite-001":[7.5e-8,3e-7,null,1.875e-8],"gemini/gemini-2.5-flash-native-audio-latest":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-09-2025":[3e-7,0.0000025,null,null],"gemini/gemini-2.5-flash-native-audio-preview-12-2025":[3e-7,0.0000025,null,null],"gemini/gemini-3.1-flash-live-preview":[7.5e-7,0.0000045,null,null],"gemini/gemini-pro-latest":[0.00000125,0.00001,null,1.25e-7],"vertex_ai/claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"claude-sonnet-4-6@default":[0.000003,0.000015,0.00000375,3e-7],"bedrock_mantle/openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"openai.gpt-oss-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"openai.gpt-oss-20b":[7.5e-8,3e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-120b":[1.5e-7,6e-7,null,null],"bedrock_mantle/openai.gpt-oss-safeguard-20b":[7.5e-8,3e-7,null,null],"bedrock/us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"us-east-1/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"us-west-2/zai.glm-5":[0.000001,0.0000032,null,null],"bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0":[0.0000012,0.000006,0.0000015,1.2e-7],"MiniMax-M2.7":[3e-7,0.0000012,3.75e-7,6e-8],"MiniMax-M2.7-highspeed":[6e-7,0.0000024,3.75e-7,6e-8]}
\ No newline at end of file
From afd0ee70112af49ae443757e13ce1684186fa8ee Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Wed, 6 May 2026 19:50:40 -0700
Subject: [PATCH 055/115] Validator hardenings on the bug-hunt batch (#254)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Five correctness fixes from multi-agent bug hunt
A multi-agent audit of the codeburn correctness surface found five
real bugs each producing visibly wrong numbers or risking data loss.
All five fixes were validated by parallel review agents and exercised
end-to-end against real session data on this machine.
- src/cli.ts: --refresh was using bare parseInt as the
commander callback. Commander invokes the callback as
parseInt(value, previous), so previous becomes the radix:
--refresh 30 was being parsed as parseInt('30', 30) = 90, and
--refresh 60 became NaN. Replaced with parseInteger (already
defined at line 48 with radix locked to 10) at all three sites.
- src/providers/cursor.ts: parseAgentKv was timestamping every
agentKv call as new Date().toISOString() because the Cursor
SQLite schema has no per-message timestamp. Result: every
Cursor agent call regardless of when it happened landed in
today's date bucket. Now uses statSync(dbPath).mtimeMs as a
bounded ceiling so calls land at the actual last-write time of
the Cursor database, not today. Verified locally: a 1904-call
Cursor history with March 22 mtime now correctly bucket into
all-time only and shows 0 calls for today/week/30days.
- src/providers/codex.ts: prev token counters were only updated
inside the cumulative-fallback branch, so a session emitting N
events with last_token_usage followed by one cumulative-only
event computed the next delta against prev=0 and double-counted
the entire cumulative window. Cost could be inflated 10-100x
for any mixed-format Codex session. Now prev advances to the
current cumulative state regardless of which branch ran.
- src/providers/gemini.ts: totalOutput accumulated output+thoughts
while totalThoughts was tracked separately. The result was
outputTokens = output+thoughts AND reasoningTokens = thoughts;
any consumer summing the two double-counted thoughts. Now
totalOutput holds just output, reasoningTokens holds thoughts,
and the cost calc folds thoughts into the output count to keep
pricing correct (Google bills thoughts at the output rate;
calculateCost has no reasoning parameter).
- src/export.ts: exportJson had no safety check before writeFile,
so codeburn export -f json -o ~/important.json would silently
clobber the user's file. CSV path had a marker-file guard; JSON
did not. Now refuses to overwrite a file unless its first 4KB
contain the codeburn schema marker. Uses a streaming partial
read so a large existing file does not OOM Node's ~512MB
string limit. Refuses directories outright.
Skipped intentionally: cursor-auto/copilot-auto/cline-auto/
qwen-auto are aliased to claude-sonnet-4-5. The audit flagged
this as wrong pricing for non-Anthropic auto-routed turns, but
Cursor's "auto" mode does not expose the actual model and any
alternative estimate is equally arbitrary. README already
documents this as a Sonnet-based estimate.
vitest run: 38 files, 529 tests pass.
* Five more correctness fixes from the bug-hunt round
This commit closes out the remaining critical-tier findings from the
multi-agent audit, with one item documented as a known limitation.
- src/providers/cursor.ts: bubble dedup key included mutable
inputTokens/outputTokens. Cursor mutates token counts on the row in
place when streaming completes, so re-parsing the same DB produced
a fresh dedup key per bubble and silently double-counted. Switched
to the SQLite row key (`bubbleId:`) which is stable per
bubble. Adjusted BubbleRow type and BUBBLE_QUERY_BASE to expose
`key as bubble_key`.
- src/providers/pi.ts: usage fields were destructured non-optionally,
but real Pi/OMP session files sometimes omit individual fields.
`calculateCost(model, undefined, ...)` returned NaN, and that NaN
propagated into every aggregate cost total. Coerce each field to
0 with `?? 0`.
- src/models.ts: getShortModelName and the getModelCosts startsWith
fallback both walked the dictionary in insertion order. A model id
like `gpt-5-mini` could resolve to the entry for `gpt-5` (matched
by startsWith first) and silently get GPT-5's display name and
pricing tier. Iterate longest keys first so more-specific prefixes
win. Tightened the cost fallback's match condition from
`startsWith(key) || startsWith(key + '-')` to require either an
exact match or a `key + '-'` continuation, removing accidental
matches like `gpt-50` against `gpt-5`.
- src/models.ts: calculateCost returned 0 silently for any model
missing from the pricing snapshot. New Anthropic / OpenAI models
shipped between snapshot refreshes look free until the user
notices. Now warns once per unknown model name per process to
stderr. Skips the warning for the `` placeholder so
the noise floor stays low.
- src/yield.ts: revert detection was broken on the canonical case.
Two problems: (1) `subject.toLowerCase().includes('revert')`
matched any commit whose subject mentioned the word ("Add revert
button" was misclassified). (2) The window logic only counted
reverts within the original session's 1-hour boundary, but real
`git revert` commits land in later sessions, so original sessions
always looked productive. Now: getRevertedShas runs once with
`--grep=^This reverts commit` and parses bodies to build a Set of
SHAs that were the target of a revert anywhere in history.
CommitInfo.wasReverted is set when this commit's SHA appears in
that set. categorizeSession then flags a session as reverted when
its in-main commits were later reverted, regardless of when the
revert itself happened.
- src/providers/droid.ts: SKIPPED with comment. Droid records token
usage only at session level. The current behavior splits evenly
across emitted assistant calls and prices all of them at
settings.model (the latest model). For sessions where the user
switched models mid-stream, costs are approximate. Added an
inline comment documenting this; a real fix requires per-message
model data that isn't in the Droid JSONL schema.
Verified end-to-end on this machine:
- vitest run: 38 files, 529 tests pass
- `codeburn report --format json` produces valid JSON
- `codeburn yield -p week` runs without crashing, finds 0 reverts
in the user's recent git history (plausible — fix changed the
detection from "subject contains revert" to "this commit's SHA
appears in a later 'This reverts commit ...' body")
- Stderr now warns for unknown model ids: `openai/gpt-5.3`,
`qwen3.6:35b-a3b-bf16`, `big-pickle`. These previously priced
silently at $0.
* Four high-severity fixes from the bug-hunt round
- src/currency.ts: getExchangeRate wrapped fetchRate and cacheRate in
one try/catch. If fetchRate succeeded but cacheRate threw (disk
full, ENOSPC, no permissions on the cache dir), the catch block
swallowed the error and returned 1. Every cost rendered after that
point became USD-equivalent silently. Now the fetch and the cache
write live in separate paths: a successful fetch returns the rate
even if the persist fails, and the cache-write error is dropped to
a fire-and-forget so transient disk problems do not corrupt the
user's currency display.
- src/cursor-cache.ts: writeFile was non-atomic. Two concurrent
codeburn invocations writing to cursor-results.json could
interleave bytes mid-write, leaving a truncated file that
parsed-error on next read and forced a full SQLite re-scan every
run. Switched to the temp-file + rename pattern with a randomized
temp name so each writer gets its own staging file and the rename
is atomic on POSIX. Crash mid-write also leaves only a leftover
temp file, which gets unlinked in the catch path; the destination
is never half-written.
- mac/.../CodeBurnApp.swift refresh loop on sleep: the loop's
Task.sleep keeps a wakeup pending across system sleep, so on wake
the natural tick fires the same instant the wake observers do.
Combined with didWakeNotification, screensDidWakeNotification, and
the launchd com.codeburn.refresh distributed notification, that
produced 2-3 concurrent CLI spawns within ms of every wake. Now:
willSleepNotification cancels the loop task; didWakeNotification
restarts it. The loop also reads lastRefreshTime and skips its
natural tick if a wake/manual/distributed-notification refresh ran
within the last 5 seconds, coalescing the two sources of refresh
into one CLI spawn per wake event.
- mac/.../CodeBurnApp.swift observeStore: the read closure had an
implicit strong self capture (it accessed store.* without a
capture annotation), pinning self for the lifetime of any
unfired observation. Added [weak self] and a guard to make the
capture explicit. withObservationTracking is one-shot per call,
so there is at most one active subscription at a time; the
earlier audit's claim of an unbounded leak overstated the issue,
but tightening the capture pattern is still cleaner.
Verified:
- vitest run: 38 files, 529 tests pass
- swift build -c release --arch arm64 --arch x86_64: clean, no
diagnostics, no MainActor warnings
- mac/Scripts/package-app.sh dev produces a valid universal bundle
- Menubar launches and runs without crash
* Eleven medium-severity fixes from the bug-hunt round
- src/format.ts formatTokens: guard against Infinity, NaN, and
negative input. Previously a corrupt aggregate could leak into
the UI as the literal strings "NaN" or "Infinity". Negatives now
render as "0" rather than "-500" with no scaling.
- src/cli-date.ts parseDateRangeFlags: the missing-from default
was new Date(0), which opened a 55-year scan from 1970 epoch
whenever the user passed only --to. Default now anchors at 6
months back from now, matching the dashboard's all-time period.
Test updated to assert the new bounded window.
- src/cli-date.ts toPeriod: previously fell back silently to "week"
for any unknown input, so a typo like `-p mounth` produced a
quiet 7-day report while the user thought they were viewing the
month. Now exits with a clear stderr error and exit code 1.
Test updated to assert the loud-failure behavior.
- src/optimize.ts urgencyScore: rebalanced weights so a high-impact
finding with zero observed tokens cannot outrank a medium-impact
finding with millions of tokens. Old 0.7/0.3 split made high+0
(0.70) beat medium+1B (0.65). New 0.5/0.5 split makes medium+1B
(0.75) beat high+0 (0.50). Token normalization lifted to 5M so
the ramp covers a realistic spend range.
- src/models.ts calculateCost: clamp negative or non-finite token
inputs to 0 before pricing. A corrupt JSONL emitting a negative
count would otherwise produce a negative cost that silently
subtracted from real spend in aggregates.
- src/currency.ts convertCost: stop rounding during aggregation.
For zero-fraction currencies (JPY, KRW, CLP) this clamped every
per-session cost to a whole unit before sum, so a project of
1000 sessions averaging ¥0.4 each aggregated to ¥0 instead of
¥400. formatCost still rounds at the display boundary.
- src/config.ts saveConfig: the temp file path was a fixed
`${configPath}.tmp` suffix. Two simultaneous saveConfig calls
(overlapping menubar and CLI runs) raced on the same staging
file and could leave one writer reading partial bytes from the
other. Randomized the temp suffix per call.
- src/providers/antigravity.ts flushCache: the early return on
`!cacheDirty` short-circuited eviction when liveCascadeIds was
supplied but no cascade had been added or updated this run. As
a result, deleted .pb files persisted in the cache forever once
the user stopped writing to it. Eviction now runs whenever
liveCascadeIds is provided, marks the cache dirty if anything
was removed, and only then short-circuits if there is nothing
to write.
- src/daily-cache.ts addNewDays: cap retention at 2 years. The
days array previously merged forever, growing the cache file by
hundreds of bytes per day until JSON parse on every CLI
invocation became measurable. The 6-month UI period plus the
365-day BACKFILL_DAYS bootstrap both fit comfortably inside the
cap, with headroom for a future longer window.
- src/dashboard.tsx useInput: period number keys (1-5) and arrow
keys triggered a reload while the compare view was mounted. The
parent's data state changed underneath the user with no visual
affordance back to the dashboard. Now those keys are gated on
view !== 'compare', and `b` / Esc inside compare returns to the
dashboard.
- mac/.../HeatmapSection.swift formatters: prettyDate, buildTrend
Bars, computeTrendStats, computeForecast, and computeAllStats
each allocated a fresh DateFormatter (and Calendar) on every
call. SwiftUI re-evaluates these views many times per second
during hover scrubbing on the trend chart, so the allocations
were a measurable hot spot. Lifted the yyyy-MM-dd / "EEE MMM d"
/ "MMM d" formatters and the gregorian Calendar to fileprivate
cached singletons.
Two findings from the same bucket were not addressed here:
- UpdateChecker SHA-256 / codesign verification is already
performed by src/menubar-installer.ts (verifyChecksum at line
85). The Swift side just kicks off `codeburn menubar --force`
which runs that path. The audit's claim of missing verification
was a misread.
- NSDistributedNotificationCenter sender validation: the
`com.codeburn.refresh` listener accepts from any sender, but
forceRefresh has a 5-second rate-limit gate so the abuse
ceiling is one CLI spawn per 5 seconds. Mitigations (Mach IPC,
per-launch shared secret) are disproportionate to the impact.
vitest run: 38 files, 529 tests pass.
swift build -c release: clean, no warnings.
* Validator hardenings on the bug-hunt batch
Hoist the per-call sort in getModelCosts and getShortModelName to module
scope so model lookups on the hot path stop reallocating sorted key arrays.
Sanitize the unknown-model stderr warning by stripping C0/C1 controls
and capping length, so a hostile or corrupt JSONL cannot inject terminal
escape sequences via the model field.
Skip the daily-cache prune when newestDate fails to parse. The previous
code produced a NaN cutoff and silently dropped every cached day on the
next merge.
Adds tests locking down the stable resolution of common model names
(gpt-5-mini vs gpt-5, claude-haiku-4-5 vs claude-3-5-haiku, etc.) and
the prune NaN guard.
---
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 61 +++++--
.../Views/HeatmapSection.swift | 86 +++++----
src/cli-date.ts | 24 ++-
src/cli.ts | 6 +-
src/config.ts | 7 +-
src/currency.ts | 22 ++-
src/cursor-cache.ts | 41 +++--
src/daily-cache.ts | 20 ++-
src/dashboard.tsx | 6 +
src/export.ts | 29 ++-
src/format.ts | 6 +-
src/models.ts | 167 ++++++++++++------
src/optimize.ts | 12 +-
src/providers/antigravity.ts | 19 +-
src/providers/codex.ts | 21 ++-
src/providers/cursor.ts | 29 ++-
src/providers/droid.ts | 7 +-
src/providers/gemini.ts | 7 +-
src/providers/pi.ts | 9 +-
src/yield.ts | 45 ++++-
tests/cli-date.test.ts | 18 +-
tests/daily-cache.test.ts | 28 +++
tests/date-range-filter.test.ts | 12 +-
tests/models-hoist.test.ts | 120 +++++++++++++
24 files changed, 621 insertions(+), 181 deletions(-)
create mode 100644 tests/models-hoist.test.ts
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index 4e9d07b..65811e4 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -31,6 +31,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
/// Held for the lifetime of the app to opt out of App Nap and Automatic Termination.
private var backgroundActivity: NSObjectProtocol?
private var pendingRefreshWork: DispatchWorkItem?
+ private var refreshLoopTask: Task?
func applicationWillFinishLaunching(_ notification: Notification) {
// Set accessory policy before the app's focus chain forms. On macOS Tahoe
@@ -60,12 +61,34 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
}
private func setupWakeObservers() {
+ // Pause the refresh loop while the machine is asleep. Without this,
+ // Task.sleep keeps a wakeup pending across the suspension and the
+ // loop tick fires the same instant the wake notifications do,
+ // producing 2-3 concurrent CLI spawns within ms of every wake.
+ NSWorkspace.shared.notificationCenter.addObserver(
+ forName: NSWorkspace.willSleepNotification,
+ object: nil,
+ queue: .main
+ ) { [weak self] _ in
+ Task { @MainActor in
+ self?.refreshLoopTask?.cancel()
+ self?.refreshLoopTask = nil
+ }
+ }
+
+ // didWakeNotification + screensDidWakeNotification can both fire on
+ // the same wake. forceRefresh has a 5-second rate-limit gate so the
+ // duplicate is squashed there. Restart the refresh loop too, since
+ // we cancelled it on willSleep.
NSWorkspace.shared.notificationCenter.addObserver(
forName: NSWorkspace.didWakeNotification,
object: nil,
queue: .main
) { [weak self] _ in
- Task { @MainActor in self?.forceRefresh() }
+ Task { @MainActor in
+ self?.forceRefresh()
+ if self?.refreshLoopTask == nil { self?.startRefreshLoop() }
+ }
}
NSWorkspace.shared.notificationCenter.addObserver(
@@ -211,26 +234,42 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
}
private func startRefreshLoop() {
- Task { [weak self] in
+ refreshLoopTask?.cancel()
+ refreshLoopTask = Task { [weak self] in
while !Task.isCancelled {
guard let self else { return }
- if self.store.selectedPeriod != .today || self.store.selectedProvider != .all {
- await self.store.refreshQuietly(period: .today)
+ // Skip the loop's tick if a wake / manual / distributed-
+ // notification refresh just ran. Without this gate, every
+ // wake produced two refreshes (forceRefresh from the wake
+ // observer plus the loop's natural tick).
+ let sinceLast = Date().timeIntervalSince(self.lastRefreshTime)
+ if sinceLast >= 5 {
+ if self.store.selectedPeriod != .today || self.store.selectedProvider != .all {
+ await self.store.refreshQuietly(period: .today)
+ }
+ await self.store.refresh(includeOptimize: false, force: true)
+ self.lastRefreshTime = Date()
+ self.refreshStatusButton()
}
- await self.store.refresh(includeOptimize: false, force: true)
- self.refreshStatusButton()
try? await Task.sleep(nanoseconds: refreshIntervalNanos)
}
}
}
private func observeStore() {
- withObservationTracking {
- _ = store.payload
- _ = store.todayPayload
- // Track currency too so the menubar title catches up immediately on
+ // Read closure uses [weak self] so the implicit self capture from
+ // accessing store.* doesn't pin self for the lifetime of an
+ // unfired observation. withObservationTracking is one-shot per
+ // call: once any read property changes, onChange fires and the
+ // registration is consumed, then we re-arm. There is at most one
+ // active subscription at a time.
+ withObservationTracking { [weak self] in
+ guard let self else { return }
+ _ = self.store.payload
+ _ = self.store.todayPayload
+ // Track currency so the menubar title catches up immediately on
// currency switch instead of waiting for the next 30s payload tick.
- _ = store.currency
+ _ = self.store.currency
} onChange: { [weak self] in
DispatchQueue.main.async {
guard let self else { return }
diff --git a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
index ec27b48..2e2dc3a 100644
--- a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
@@ -5,6 +5,36 @@ private let trendBarWidth: CGFloat = 13
private let trendBarGap: CGFloat = 4
private let trendChartHeight: CGFloat = 90
+// Cached formatters and a calendar to avoid allocating fresh ones on every
+// SwiftUI body re-eval. Hover scrubbing on the trend bars triggers many
+// re-evals per second; a fresh DateFormatter / Calendar each time was a
+// measurable hot spot.
+private let yyyymmdd: DateFormatter = {
+ let f = DateFormatter()
+ f.dateFormat = "yyyy-MM-dd"
+ f.timeZone = .current
+ return f
+}()
+
+private let prettyDayFormat: DateFormatter = {
+ let f = DateFormatter()
+ f.dateFormat = "EEE MMM d"
+ return f
+}()
+
+private let mmmDayFormat: DateFormatter = {
+ let f = DateFormatter()
+ f.dateFormat = "MMM d"
+ f.timeZone = .current
+ return f
+}()
+
+private let gregorianCalendar: Calendar = {
+ var c = Calendar(identifier: .gregorian)
+ c.timeZone = .current
+ return c
+}()
+
/// Three switchable insight visualizations: Calendar (this month), Forecast (burn rate),
/// Pulse (efficiency KPIs). Pills at top toggle between them.
struct HeatmapSection: View {
@@ -342,13 +372,8 @@ private struct BarTooltipCard: View {
}
private func prettyDate(_ ymd: String) -> String {
- let parser = DateFormatter()
- parser.dateFormat = "yyyy-MM-dd"
- parser.timeZone = .current
- guard let date = parser.date(from: ymd) else { return ymd }
- let display = DateFormatter()
- display.dateFormat = "EEE MMM d"
- return display.string(from: date)
+ guard let date = yyyymmdd.date(from: ymd) else { return ymd }
+ return prettyDayFormat.string(from: date)
}
private struct MiniStat: View {
@@ -391,14 +416,8 @@ private struct TrendStats {
}
private func buildTrendBars(from days: [DailyHistoryEntry]) -> [TrendBar] {
- var calendar = Calendar(identifier: .gregorian)
- calendar.timeZone = .current
- let formatter: DateFormatter = {
- let f = DateFormatter()
- f.dateFormat = "yyyy-MM-dd"
- f.timeZone = .current
- return f
- }()
+ let calendar = gregorianCalendar
+ let formatter = yyyymmdd
let entryByDate = Dictionary(days.map { ($0.date, $0) }, uniquingKeysWith: { _, new in new })
let today = calendar.startOfDay(for: Date())
let todayKey = formatter.string(from: today)
@@ -426,14 +445,8 @@ private func computeTrendStats(bars: [TrendBar], allDays: [DailyHistoryEntry]) -
let avg = bars.isEmpty ? 0 : total / Double(bars.count)
let peak = bars.filter { $0.cost > 0 }.max(by: { $0.cost < $1.cost })
- var calendar = Calendar(identifier: .gregorian)
- calendar.timeZone = .current
- let formatter: DateFormatter = {
- let f = DateFormatter()
- f.dateFormat = "yyyy-MM-dd"
- f.timeZone = .current
- return f
- }()
+ let calendar = gregorianCalendar
+ let formatter = yyyymmdd
let today = calendar.startOfDay(for: Date())
let priorWindowStart = calendar.date(byAdding: .day, value: -(2 * trendDays - 1), to: today)
let thisWindowStart = calendar.date(byAdding: .day, value: -(trendDays - 1), to: today)
@@ -546,14 +559,8 @@ private struct ForecastStats {
}
private func computeForecast(days: [DailyHistoryEntry]) -> ForecastStats {
- var calendar = Calendar(identifier: .gregorian)
- calendar.timeZone = .current
- let formatter: DateFormatter = {
- let f = DateFormatter()
- f.dateFormat = "yyyy-MM-dd"
- f.timeZone = .current
- return f
- }()
+ let calendar = gregorianCalendar
+ let formatter = yyyymmdd
let now = Date()
let comps = calendar.dateComponents([.year, .month, .day], from: now)
guard
@@ -797,20 +804,9 @@ private struct AllStats {
let history = payload.history.daily
let favoriteModel = payload.current.topModels.first?.name ?? "—"
- var calendar = Calendar(identifier: .gregorian)
- calendar.timeZone = .current
- let formatter: DateFormatter = {
- let f = DateFormatter()
- f.dateFormat = "yyyy-MM-dd"
- f.timeZone = .current
- return f
- }()
- let displayFormatter: DateFormatter = {
- let f = DateFormatter()
- f.dateFormat = "MMM d"
- f.timeZone = .current
- return f
- }()
+ let calendar = gregorianCalendar
+ let formatter = yyyymmdd
+ let displayFormatter = mmmDayFormat
let now = Date()
let today = calendar.startOfDay(for: now)
diff --git a/src/cli-date.ts b/src/cli-date.ts
index 2adfe97..f62b401 100644
--- a/src/cli-date.ts
+++ b/src/cli-date.ts
@@ -29,12 +29,17 @@ export const PERIOD_LABELS: Record = {
all: '6 Months',
}
+const VALID_PERIODS: ReadonlyArray = ['today', 'week', '30days', 'month', 'all']
+
export function toPeriod(s: string): Period {
- if (s === 'today') return 'today'
- if (s === 'month') return 'month'
- if (s === '30days') return '30days'
- if (s === 'all') return 'all'
- return 'week'
+ if ((VALID_PERIODS as readonly string[]).includes(s)) return s as Period
+ // Fail loudly instead of silently coercing to 'week'. Previously a typo
+ // like `-p mounth` produced a quiet 7-day report and the user thought
+ // they were viewing the month.
+ process.stderr.write(
+ `codeburn: unknown period "${s}". Valid values: ${VALID_PERIODS.join(', ')}.\n`
+ )
+ process.exit(1)
}
function parseLocalDate(s: string): Date {
@@ -49,7 +54,14 @@ export function parseDateRangeFlags(from: string | undefined, to: string | undef
if (from === undefined && to === undefined) return null
const now = new Date()
- const start = from !== undefined ? parseLocalDate(from) : new Date(0)
+ // When --from is omitted, default to 6 months back (the same window the
+ // dashboard's "all" period uses) instead of epoch. Previously a bare
+ // `--to 2026-01-01` opened a 55-year scan from 1970 which is rarely what
+ // the user meant and is expensive on machines with many session files.
+ const ALL_TIME_FALLBACK_MS = 6 * 31 * 24 * 60 * 60 * 1000
+ const start = from !== undefined
+ ? parseLocalDate(from)
+ : new Date(now.getTime() - ALL_TIME_FALLBACK_MS)
const endDate = to !== undefined ? parseLocalDate(to) : new Date(now.getFullYear(), now.getMonth(), now.getDate())
const end = new Date(
diff --git a/src/cli.ts b/src/cli.ts
index 396e811..470614d 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -271,7 +271,7 @@ program
.option('--format ', 'Output format: tui, json', 'tui')
.option('--project ', 'Show only projects matching name (repeatable)', collect, [])
.option('--exclude ', 'Exclude projects matching name (repeatable)', collect, [])
- .option('--refresh ', 'Auto-refresh interval in seconds (0 to disable)', parseInt, 30)
+ .option('--refresh ', 'Auto-refresh interval in seconds (0 to disable)', parseInteger, 30)
.action(async (opts) => {
let customRange: DateRange | null = null
try {
@@ -515,7 +515,7 @@ program
.option('--format ', 'Output format: tui, json', 'tui')
.option('--project ', 'Show only projects matching name (repeatable)', collect, [])
.option('--exclude ', 'Exclude projects matching name (repeatable)', collect, [])
- .option('--refresh ', 'Auto-refresh interval in seconds (0 to disable)', parseInt, 30)
+ .option('--refresh ', 'Auto-refresh interval in seconds (0 to disable)', parseInteger, 30)
.action(async (opts) => {
if (opts.format === 'json') {
await runJsonReport('today', opts.provider, opts.project, opts.exclude)
@@ -532,7 +532,7 @@ program
.option('--format ', 'Output format: tui, json', 'tui')
.option('--project ', 'Show only projects matching name (repeatable)', collect, [])
.option('--exclude ', 'Exclude projects matching name (repeatable)', collect, [])
- .option('--refresh ', 'Auto-refresh interval in seconds (0 to disable)', parseInt, 30)
+ .option('--refresh ', 'Auto-refresh interval in seconds (0 to disable)', parseInteger, 30)
.action(async (opts) => {
if (opts.format === 'json') {
await runJsonReport('month', opts.provider, opts.project, opts.exclude)
diff --git a/src/config.ts b/src/config.ts
index 47a2b50..12fec8f 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -1,6 +1,7 @@
import { readFile, writeFile, mkdir, rename } from 'fs/promises'
import { join } from 'path'
import { homedir } from 'os'
+import { randomBytes } from 'crypto'
export type PlanId = 'claude-pro' | 'claude-max' | 'claude-max-5x' | 'cursor-pro' | 'custom' | 'none'
export type PlanProvider = 'claude' | 'codex' | 'cursor' | 'all'
@@ -42,7 +43,11 @@ export async function readConfig(): Promise {
export async function saveConfig(config: CodeburnConfig): Promise {
await mkdir(getConfigDir(), { recursive: true })
const configPath = getConfigPath()
- const tmpPath = `${configPath}.tmp`
+ // Randomize the temp path so two simultaneous saveConfig calls (from
+ // overlapping menubar + CLI runs, for example) do not race on the same
+ // staging file. The previous fixed `.tmp` suffix could leave one
+ // process reading partial bytes the other was mid-writing.
+ const tmpPath = `${configPath}.${randomBytes(8).toString('hex')}.tmp`
await writeFile(tmpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8')
await rename(tmpPath, configPath)
}
diff --git a/src/currency.ts b/src/currency.ts
index 9901698..bc2e792 100644
--- a/src/currency.ts
+++ b/src/currency.ts
@@ -98,13 +98,19 @@ async function getExchangeRate(code: string): Promise {
const cached = await loadCachedRate(code)
if (cached) return cached
+ let rate: number
try {
- const rate = await fetchRate(code)
- await cacheRate(code, rate)
- return rate
+ rate = await fetchRate(code)
} catch {
return 1
}
+ // Persist the rate, but never let a cache-write failure (disk full, no
+ // permissions, etc.) cause us to return the USD-equivalent fallback.
+ // The original code wrapped fetch + cacheRate in one try/catch, so a
+ // disk-full at write time would discard a perfectly good rate and silently
+ // make every cost render as if the user had selected USD.
+ cacheRate(code, rate).catch(() => {})
+ return rate
}
export async function loadCurrency(): Promise {
@@ -137,9 +143,13 @@ export function getCostColumnHeader(): string {
}
export function convertCost(costUSD: number): number {
- const digits = getFractionDigits(active.code)
- const factor = 10 ** digits
- return Math.round(costUSD * active.rate * factor) / factor
+ // Return the unrounded converted cost. Rounding here meant zero-fraction
+ // currencies (JPY, KRW, CLP) clamped every per-session cost to the nearest
+ // whole unit before aggregation; a project with 1000 sessions averaging
+ // ¥0.4 each would aggregate to ¥0 instead of ¥400 because each row was
+ // rounded independently. formatCost (and the export rowsToCsv path) round
+ // at the display boundary instead.
+ return costUSD * active.rate
}
export function formatCost(costUSD: number): string {
diff --git a/src/cursor-cache.ts b/src/cursor-cache.ts
index 62cc394..cbdf9c5 100644
--- a/src/cursor-cache.ts
+++ b/src/cursor-cache.ts
@@ -1,6 +1,7 @@
-import { readFile, writeFile, mkdir, stat } from 'fs/promises'
+import { readFile, writeFile, mkdir, rename, stat, unlink } from 'fs/promises'
import { join } from 'path'
import { homedir } from 'os'
+import { randomBytes } from 'crypto'
import type { ParsedProviderCall } from './providers/types.js'
@@ -50,18 +51,30 @@ export async function readCachedResults(dbPath: string): Promise {
- try {
- const fp = await getDbFingerprint(dbPath)
- if (!fp) return
+ const fp = await getDbFingerprint(dbPath)
+ if (!fp) return
- const dir = getCacheDir()
- await mkdir(dir, { recursive: true })
- const cache: ResultCache = {
- version: CURSOR_CACHE_VERSION,
- dbMtimeMs: fp.mtimeMs,
- dbSizeBytes: fp.size,
- calls,
- }
- await writeFile(getCachePath(), JSON.stringify(cache), 'utf-8')
- } catch {}
+ const dir = getCacheDir()
+ await mkdir(dir, { recursive: true }).catch(() => {})
+ const cache: ResultCache = {
+ version: CURSOR_CACHE_VERSION,
+ dbMtimeMs: fp.mtimeMs,
+ dbSizeBytes: fp.size,
+ calls,
+ }
+
+ // Atomic write: stage to a randomized temp file in the same directory,
+ // then rename onto the final path. rename() is atomic on POSIX, so a
+ // crash mid-write never leaves a half-written cache, and concurrent
+ // CLI invocations using their own random temp names cannot interleave
+ // bytes in the destination file (they only race on the final rename,
+ // last-writer-wins, both with valid content).
+ const target = getCachePath()
+ const tempPath = `${target}.${randomBytes(8).toString('hex')}.tmp`
+ try {
+ await writeFile(tempPath, JSON.stringify(cache), 'utf-8')
+ await rename(tempPath, target)
+ } catch {
+ await unlink(tempPath).catch(() => {})
+ }
}
diff --git a/src/daily-cache.ts b/src/daily-cache.ts
index 096e2c6..3455662 100644
--- a/src/daily-cache.ts
+++ b/src/daily-cache.ts
@@ -133,10 +133,24 @@ export function addNewDays(cache: DailyCache, incoming: DailyEntry[], newestDate
byDate.set(day.date, day)
}
const merged = Array.from(byDate.values()).sort((a, b) => a.date.localeCompare(b.date))
+ // Prune entries older than the BACKFILL window so the cache file does not
+ // grow unbounded over years of daily use. The "all time" / 6-month period
+ // and the BACKFILL_DAYS bootstrap both fit comfortably inside this cap.
+ // Anchor the cap on the newestDate boundary so a stale or stuck clock
+ // can't accidentally evict everything. Skip the prune entirely if
+ // newestDate is malformed — an invalid Date would produce a NaN cutoff
+ // and `d.date >= "Invalid Date"` would silently drop every entry.
+ const cutoffDate = new Date(`${newestDate}T00:00:00Z`)
+ let pruned = merged
+ if (!isNaN(cutoffDate.getTime())) {
+ cutoffDate.setUTCDate(cutoffDate.getUTCDate() - DAILY_CACHE_RETENTION_DAYS)
+ const cutoff = toDateString(cutoffDate)
+ pruned = merged.filter(d => d.date >= cutoff)
+ }
const nextLast = cache.lastComputedDate && cache.lastComputedDate > newestDate
? cache.lastComputedDate
: newestDate
- return { version: DAILY_CACHE_VERSION, lastComputedDate: nextLast, days: merged }
+ return { version: DAILY_CACHE_VERSION, lastComputedDate: nextLast, days: pruned }
}
export function getDaysInRange(cache: DailyCache, start: string, end: string): DailyEntry[] {
@@ -153,6 +167,10 @@ export function withDailyCacheLock(fn: () => Promise): Promise {
export const MS_PER_DAY = 24 * 60 * 60 * 1000
export const BACKFILL_DAYS = 365
+// Keep 2 years of history so the longest UI-exposed period (6 months
+// today, with headroom for future longer windows) always reads from
+// cache while old entries get pruned.
+export const DAILY_CACHE_RETENTION_DAYS = 730
export function toDateString(date: Date): string {
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index f9efe6a..f1e53ba 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -760,12 +760,18 @@ function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider,
if (input === 'o' && findingCount > 0 && view === 'dashboard' && optimizeAvailable) { setView('optimize'); return }
if ((input === 'b' || key.escape) && view === 'optimize') { setView('dashboard'); return }
if (input === 'c' && compareAvailable && view === 'dashboard') { setView('compare'); return }
+ if ((input === 'b' || key.escape) && view === 'compare') { setView('dashboard'); return }
if (input === 'p' && multipleProviders && view !== 'compare') {
const opts = ['all', ...detectedProviders]; const next = opts[(opts.indexOf(activeProvider) + 1) % opts.length]
setActiveProvider(next); setView('dashboard')
if (debounceRef.current) clearTimeout(debounceRef.current)
reloadData(period, next); return
}
+ // Period switches reload the underlying data. Disable them while the
+ // compare view is mounted; the compare view re-aggregates from
+ // `projects` and would visibly change underneath the user without any
+ // affordance back to the dashboard. Press `b` or Esc to return first.
+ if (view === 'compare') return
const idx = PERIODS.indexOf(period)
if (key.leftArrow) switchPeriod(PERIODS[(idx - 1 + PERIODS.length) % PERIODS.length]!)
else if (key.rightArrow || key.tab) switchPeriod(PERIODS[(idx + 1) % PERIODS.length]!)
diff --git a/src/export.ts b/src/export.ts
index d51406e..b7533fd 100644
--- a/src/export.ts
+++ b/src/export.ts
@@ -1,4 +1,4 @@
-import { writeFile, mkdir, readdir, stat, rm } from 'fs/promises'
+import { writeFile, mkdir, readdir, open, stat, rm } from 'fs/promises'
import { dirname, join, resolve } from 'path'
import { CATEGORY_LABELS, type ProjectSummary, type TaskCategory } from './types.js'
@@ -357,6 +357,33 @@ export async function exportJson(periods: PeriodExport[], outputPath: string): P
}
const target = resolve(outputPath.toLowerCase().endsWith('.json') ? outputPath : `${outputPath}.json`)
+ // Refuse to overwrite an existing file that wasn't produced by codeburn
+ // export. CSV path has the same guard via the .codeburn-export marker; JSON
+ // was missing it, so a stray `-o ~/important.json` would silently clobber.
+ const existing = await stat(target).catch(() => null)
+ if (existing?.isFile()) {
+ // Read just the first 4KB to look for the schema marker. The schema key
+ // is the first field in the JSON object so a partial read is enough;
+ // loading the whole file (potentially gigabytes) into memory could OOM
+ // on Node's ~512MB string limit.
+ const fh = await open(target, 'r')
+ try {
+ const buf = Buffer.alloc(4096)
+ const { bytesRead } = await fh.read(buf, 0, buf.length, 0)
+ const head = buf.toString('utf-8', 0, bytesRead)
+ if (!head.includes('"schema": "codeburn.export.v')) {
+ throw new Error(
+ `Refusing to overwrite ${target}: file does not look like a codeburn export. ` +
+ `Delete it manually or pick a different -o path.`
+ )
+ }
+ } finally {
+ await fh.close()
+ }
+ }
+ if (existing?.isDirectory()) {
+ throw new Error(`Refusing to overwrite directory at ${target}. Pass a file path instead.`)
+ }
await mkdir(dirname(target), { recursive: true })
await writeFile(target, JSON.stringify(data, null, 2), 'utf-8')
return target
diff --git a/src/format.ts b/src/format.ts
index ee44619..826c04c 100644
--- a/src/format.ts
+++ b/src/format.ts
@@ -8,9 +8,13 @@ import { formatCost } from './currency.js'
export { formatCost }
export function formatTokens(n: number): string {
+ // Guard against Infinity / NaN / negatives that would otherwise leak into
+ // the UI as "Infinity" or "NaN" strings when an upstream calculation glitches.
+ if (!Number.isFinite(n)) return '?'
+ if (n < 0) return '0'
if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`
if (n >= 1_000) return `${(n / 1_000).toFixed(1)}K`
- return n.toString()
+ return Math.round(n).toString()
}
/// Returns YYYY-MM-DD for the given date in the process-local timezone. Cheaper than shelling
diff --git a/src/models.ts b/src/models.ts
index f338c14..626bf60 100644
--- a/src/models.ts
+++ b/src/models.ts
@@ -48,6 +48,14 @@ function loadSnapshot(): Map {
}
let pricingCache: Map = loadSnapshot()
+let sortedPricingKeys: string[] | null = null
+
+function getSortedPricingKeys(): string[] {
+ if (sortedPricingKeys === null) {
+ sortedPricingKeys = Array.from(pricingCache.keys()).sort((a, b) => b.length - a.length)
+ }
+ return sortedPricingKeys
+}
function getCacheDir(): string {
return join(homedir(), '.cache', 'codeburn')
@@ -110,11 +118,13 @@ export async function loadPricing(): Promise {
const cached = await loadCachedPricing()
if (cached) {
pricingCache = cached
+ sortedPricingKeys = null
return
}
try {
pricingCache = await fetchAndCachePricing()
+ sortedPricingKeys = null
} catch {
// snapshot already loaded at init; nothing more to do
}
@@ -192,13 +202,23 @@ export function getModelCosts(model: string): ModelCosts | null {
const canonical = resolveAlias(getCanonicalName(model))
if (pricingCache.has(canonical)) return pricingCache.get(canonical)!
- for (const [key, costs] of pricingCache) {
- if (canonical.startsWith(key + '-') || canonical.startsWith(key)) return costs
+ // Iterate keys longest-first so a model id like `gpt-5-mini` matches the
+ // `gpt-5-mini` entry rather than collapsing to the shorter `gpt-5` entry
+ // due to dictionary insertion order.
+ for (const key of getSortedPricingKeys()) {
+ if (canonical.startsWith(key + '-') || canonical === key) {
+ return pricingCache.get(key)!
+ }
}
return null
}
+// Warn at most once per unknown model name per process. Without this, a model
+// missing from the pricing snapshot would silently price at $0 for every
+// session that used it, hiding real spend until the user noticed.
+const warnedUnknownModels = new Set()
+
export function calculateCost(
model: string,
inputTokens: number,
@@ -209,16 +229,39 @@ export function calculateCost(
speed: 'standard' | 'fast' = 'standard',
): number {
const costs = getModelCosts(model)
- if (!costs) return 0
+ if (!costs) {
+ // Skip the synthetic placeholder and the auto-router pseudo-models that
+ // intentionally have no direct pricing entry; calculateCost callers
+ // resolve those through aliasing first, so an unknown here is genuinely
+ // an unmapped real model.
+ if (model && model !== '' && !warnedUnknownModels.has(model)) {
+ warnedUnknownModels.add(model)
+ // Strip control characters and cap length: model names come from JSONL
+ // payloads written by external tools, so a hostile or corrupt file
+ // could embed terminal escape sequences here.
+ const safeName = model.replace(/[\x00-\x1F\x7F-\x9F]/g, '?').slice(0, 200)
+ process.stderr.write(
+ `codeburn: no pricing data for model "${safeName}" — costs for this model will show $0. ` +
+ `Update with: npx codeburn@latest, or report at https://github.com/getagentseal/codeburn/issues.\n`
+ )
+ }
+ return 0
+ }
const multiplier = speed === 'fast' ? costs.fastMultiplier : 1
+ // Clamp negative inputs to 0. A corrupt JSONL that emits a negative token
+ // count would otherwise produce a negative cost that silently subtracts
+ // from real spend in aggregate totals. NaN is also handled here; the
+ // arithmetic below short-circuits to 0 when any operand is non-finite.
+ const safe = (n: number) => (Number.isFinite(n) && n > 0 ? n : 0)
+
return multiplier * (
- inputTokens * costs.inputCostPerToken +
- outputTokens * costs.outputCostPerToken +
- cacheCreationTokens * costs.cacheWriteCostPerToken +
- cacheReadTokens * costs.cacheReadCostPerToken +
- webSearchRequests * costs.webSearchCostPerRequest
+ safe(inputTokens) * costs.inputCostPerToken +
+ safe(outputTokens) * costs.outputCostPerToken +
+ safe(cacheCreationTokens) * costs.cacheWriteCostPerToken +
+ safe(cacheReadTokens) * costs.cacheReadCostPerToken +
+ safe(webSearchRequests) * costs.webSearchCostPerRequest
)
}
@@ -234,59 +277,67 @@ const autoModelNames: Record = {
'qwen-auto': 'Qwen (auto)',
}
+const SHORT_NAMES: Record = {
+ 'claude-opus-4-7': 'Opus 4.7',
+ 'claude-opus-4-6': 'Opus 4.6',
+ 'claude-opus-4-5': 'Opus 4.5',
+ 'claude-opus-4-1': 'Opus 4.1',
+ 'claude-opus-4': 'Opus 4',
+ 'claude-sonnet-4-6': 'Sonnet 4.6',
+ 'claude-sonnet-4-5': 'Sonnet 4.5',
+ 'claude-sonnet-4': 'Sonnet 4',
+ 'claude-3-7-sonnet': 'Sonnet 3.7',
+ 'claude-3-5-sonnet': 'Sonnet 3.5',
+ 'claude-haiku-4-5': 'Haiku 4.5',
+ 'claude-3-5-haiku': 'Haiku 3.5',
+ 'gpt-4o-mini': 'GPT-4o Mini',
+ 'gpt-4o': 'GPT-4o',
+ 'gpt-4.1-nano': 'GPT-4.1 Nano',
+ 'gpt-4.1-mini': 'GPT-4.1 Mini',
+ 'gpt-4.1': 'GPT-4.1',
+ 'codex-auto-review': 'Codex Auto Review',
+ 'gpt-5.5-pro': 'GPT-5.5 Pro',
+ 'gpt-5.5': 'GPT-5.5',
+ 'gpt-5.4-pro': 'GPT-5.4 Pro',
+ 'gpt-5.4-nano': 'GPT-5.4 Nano',
+ 'gpt-5.4-mini': 'GPT-5.4 Mini',
+ 'gpt-5.4': 'GPT-5.4',
+ 'gpt-5.3-codex': 'GPT-5.3 Codex',
+ 'gpt-5.3': 'GPT-5.3',
+ 'gpt-5.2-pro': 'GPT-5.2 Pro',
+ 'gpt-5.2-low': 'GPT-5.2 Low',
+ 'gpt-5.2': 'GPT-5.2',
+ 'gpt-5.1-codex-mini': 'GPT-5.1 Codex Mini',
+ 'gpt-5.1-codex': 'GPT-5.1 Codex',
+ 'gpt-5.1': 'GPT-5.1',
+ 'gpt-5-pro': 'GPT-5 Pro',
+ 'gpt-5-nano': 'GPT-5 Nano',
+ 'gpt-5-mini': 'GPT-5 Mini',
+ 'gpt-5': 'GPT-5',
+ 'gemini-3.1-pro-preview': 'Gemini 3.1 Pro',
+ 'gemini-3-flash-preview': 'Gemini 3 Flash',
+ 'gemini-2.5-pro': 'Gemini 2.5 Pro',
+ 'gemini-2.5-flash': 'Gemini 2.5 Flash',
+ 'deepseek-coder-max': 'DeepSeek Coder Max',
+ 'deepseek-coder': 'DeepSeek Coder',
+ 'deepseek-r1': 'DeepSeek R1',
+ 'o4-mini': 'o4-mini',
+ 'o3': 'o3',
+ 'MiniMax-M2.7-highspeed': 'MiniMax M2.7 Highspeed',
+ 'MiniMax-M2.7': 'MiniMax M2.7',
+}
+
+// Sorted longest-first so more-specific prefixes match before shorter ones.
+// Without this, `gpt-5-mini` could resolve to "GPT-5" (the entry for `gpt-5`)
+// if it happened to be iterated before `gpt-5-mini`, hiding a distinct model
+// behind the wrong display name and pricing tier.
+const SORTED_SHORT_NAMES: [string, string][] = Object.entries(SHORT_NAMES)
+ .sort((a, b) => b[0].length - a[0].length)
+
export function getShortModelName(model: string): string {
if (autoModelNames[model]) return autoModelNames[model]
const canonical = resolveAlias(getCanonicalName(model))
- const shortNames: Record = {
- 'claude-opus-4-7': 'Opus 4.7',
- 'claude-opus-4-6': 'Opus 4.6',
- 'claude-opus-4-5': 'Opus 4.5',
- 'claude-opus-4-1': 'Opus 4.1',
- 'claude-opus-4': 'Opus 4',
- 'claude-sonnet-4-6': 'Sonnet 4.6',
- 'claude-sonnet-4-5': 'Sonnet 4.5',
- 'claude-sonnet-4': 'Sonnet 4',
- 'claude-3-7-sonnet': 'Sonnet 3.7',
- 'claude-3-5-sonnet': 'Sonnet 3.5',
- 'claude-haiku-4-5': 'Haiku 4.5',
- 'claude-3-5-haiku': 'Haiku 3.5',
- 'gpt-4o-mini': 'GPT-4o Mini',
- 'gpt-4o': 'GPT-4o',
- 'gpt-4.1-nano': 'GPT-4.1 Nano',
- 'gpt-4.1-mini': 'GPT-4.1 Mini',
- 'gpt-4.1': 'GPT-4.1',
- 'codex-auto-review': 'Codex Auto Review',
- 'gpt-5.5-pro': 'GPT-5.5 Pro',
- 'gpt-5.5': 'GPT-5.5',
- 'gpt-5.4-pro': 'GPT-5.4 Pro',
- 'gpt-5.4-nano': 'GPT-5.4 Nano',
- 'gpt-5.4-mini': 'GPT-5.4 Mini',
- 'gpt-5.4': 'GPT-5.4',
- 'gpt-5.3-codex': 'GPT-5.3 Codex',
- 'gpt-5.3': 'GPT-5.3',
- 'gpt-5.2-pro': 'GPT-5.2 Pro',
- 'gpt-5.2-low': 'GPT-5.2 Low',
- 'gpt-5.2': 'GPT-5.2',
- 'gpt-5.1-codex-mini': 'GPT-5.1 Codex Mini',
- 'gpt-5.1-codex': 'GPT-5.1 Codex',
- 'gpt-5.1': 'GPT-5.1',
- 'gpt-5-pro': 'GPT-5 Pro',
- 'gpt-5-nano': 'GPT-5 Nano',
- 'gpt-5-mini': 'GPT-5 Mini',
- 'gpt-5': 'GPT-5',
- 'gemini-3.1-pro-preview': 'Gemini 3.1 Pro',
- 'gemini-3-flash-preview': 'Gemini 3 Flash',
- 'gemini-2.5-pro': 'Gemini 2.5 Pro',
- 'gemini-2.5-flash': 'Gemini 2.5 Flash',
- 'deepseek-coder-max': 'DeepSeek Coder Max',
- 'deepseek-coder': 'DeepSeek Coder',
- 'deepseek-r1': 'DeepSeek R1',
- 'o4-mini': 'o4-mini',
- 'o3': 'o3',
- 'MiniMax-M2.7-highspeed': 'MiniMax M2.7 Highspeed',
- 'MiniMax-M2.7': 'MiniMax M2.7',
- }
- for (const [key, name] of Object.entries(shortNames)) {
+ for (const [key, name] of SORTED_SHORT_NAMES) {
if (canonical.startsWith(key)) return name
}
return canonical
diff --git a/src/optimize.ts b/src/optimize.ts
index 7974c3f..4bb1bab 100644
--- a/src/optimize.ts
+++ b/src/optimize.ts
@@ -111,9 +111,15 @@ const GRADE_A_MIN = 90
const GRADE_B_MIN = 75
const GRADE_C_MIN = 55
const GRADE_D_MIN = 30
-const URGENCY_IMPACT_WEIGHT = 0.7
-const URGENCY_TOKEN_WEIGHT = 0.3
-const URGENCY_TOKEN_NORMALIZE = 500_000
+// Rebalanced so a high-impact finding with zero observed tokens (e.g.
+// detectGhostAgents firing on five files but tokensSaved=400) cannot
+// outrank a medium-impact finding with many millions of tokens.
+// Old: 0.7/0.3 → high+0 = 0.70, medium+1B = 0.65 (high+0 won).
+// New: 0.5/0.5 → high+0 = 0.50, medium+1B = 0.75 (medium+1B wins).
+// Token normalize lifted to 5M so the rank scales over a realistic range.
+const URGENCY_IMPACT_WEIGHT = 0.5
+const URGENCY_TOKEN_WEIGHT = 0.5
+const URGENCY_TOKEN_NORMALIZE = 5_000_000
// ============================================================================
// File system constants
diff --git a/src/providers/antigravity.ts b/src/providers/antigravity.ts
index f048313..3f9667e 100644
--- a/src/providers/antigravity.ts
+++ b/src/providers/antigravity.ts
@@ -87,13 +87,22 @@ async function loadCache(): Promise {
}
async function flushCache(liveCascadeIds?: Set): Promise {
- if (!memCache || !cacheDirty) return
- try {
- if (liveCascadeIds) {
- for (const id of Object.keys(memCache.cascades)) {
- if (!liveCascadeIds.has(id)) delete memCache.cascades[id]
+ if (!memCache) return
+ // If the caller supplied liveCascadeIds, we must run the eviction step
+ // even when no cascade was added or updated this run; otherwise deleted
+ // .pb files would persist in the cache forever once it stops getting
+ // dirty writes. Mark the cache dirty when an eviction happens so the
+ // file write below proceeds.
+ if (liveCascadeIds) {
+ for (const id of Object.keys(memCache.cascades)) {
+ if (!liveCascadeIds.has(id)) {
+ delete memCache.cascades[id]
+ cacheDirty = true
}
}
+ }
+ if (!cacheDirty) return
+ try {
const dir = getCacheDir()
await mkdir(dir, { recursive: true })
diff --git a/src/providers/codex.ts b/src/providers/codex.ts
index 83d81eb..13e4482 100644
--- a/src/providers/codex.ts
+++ b/src/providers/codex.ts
@@ -338,14 +338,19 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
reasoningTokens = (total.reasoning_output_tokens ?? 0) - prevReasoning
}
- if (!last) {
- const total = info.total_token_usage
- if (total) {
- prevInput = total.input_tokens ?? 0
- prevCached = total.cached_input_tokens ?? 0
- prevOutput = total.output_tokens ?? 0
- prevReasoning = total.reasoning_output_tokens ?? 0
- }
+ // Always advance the prev counters to track the cumulative state.
+ // Previously prev was only updated on the fallback branch, so a
+ // session with mixed last_token_usage / no-last events would
+ // compute the next fallback delta against a stale prev=0 baseline,
+ // double-counting the entire cumulative window. The prev value
+ // must mirror what cumulative reports regardless of whether this
+ // event used `last` or fell back to deltas.
+ const total = info.total_token_usage
+ if (total) {
+ prevInput = total.input_tokens ?? 0
+ prevCached = total.cached_input_tokens ?? 0
+ prevOutput = total.output_tokens ?? 0
+ prevReasoning = total.reasoning_output_tokens ?? 0
}
const totalTokens = inputTokens + cachedInputTokens + outputTokens + reasoningTokens
diff --git a/src/providers/cursor.ts b/src/providers/cursor.ts
index e9619b8..a96abf9 100644
--- a/src/providers/cursor.ts
+++ b/src/providers/cursor.ts
@@ -1,4 +1,4 @@
-import { existsSync } from 'fs'
+import { existsSync, statSync } from 'fs'
import { join } from 'path'
import { homedir } from 'os'
@@ -27,6 +27,7 @@ const modelDisplayNames: Record = {
}
type BubbleRow = {
+ bubble_key: string
input_tokens: number | null
output_tokens: number | null
model: string | null
@@ -100,6 +101,7 @@ function modelForDisplay(raw: string | null): string {
const BUBBLE_QUERY_BASE = `
SELECT
+ key as bubble_key,
json_extract(value, '$.tokenCount.inputTokens') as input_tokens,
json_extract(value, '$.tokenCount.outputTokens') as output_tokens,
json_extract(value, '$.modelInfo.modelName') as model,
@@ -204,7 +206,12 @@ function parseBubbles(db: SqliteDatabase, seenKeys: Set): { calls: Parse
const createdAt = row.created_at ?? ''
const conversationId = row.conversation_id ?? 'unknown'
- const dedupKey = `cursor:${conversationId}:${createdAt}:${inputTokens}:${outputTokens}`
+ // Use the SQLite row key (bubbleId:) as the dedup key.
+ // Cursor mutates token counts on the row in place when streaming
+ // completes — including tokens in the dedup key (the previous
+ // implementation) caused the same bubble to be counted twice once
+ // its tokens stabilized.
+ const dedupKey = `cursor:bubble:${row.bubble_key}`
if (seenKeys.has(dedupKey)) continue
seenKeys.add(dedupKey)
@@ -273,9 +280,21 @@ function extractTextLength(content: AgentKvContent[]): number {
return total
}
-function parseAgentKv(db: SqliteDatabase, seenKeys: Set): { calls: ParsedProviderCall[] } {
+function parseAgentKv(db: SqliteDatabase, seenKeys: Set, dbPath: string): { calls: ParsedProviderCall[] } {
const results: ParsedProviderCall[] = []
+ // Cursor's agentKv schema does not record per-message timestamps. Use the
+ // SQLite file's mtime as a bounded "last write" timestamp for all calls;
+ // it's at least honest (no future time, no always-now). Users running
+ // codeburn against an idle Cursor install will see agentKv calls land at
+ // the actual last activity time rather than today's date.
+ let agentKvTimestamp: string
+ try {
+ agentKvTimestamp = new Date(statSync(dbPath).mtimeMs).toISOString()
+ } catch {
+ agentKvTimestamp = new Date().toISOString()
+ }
+
let rows: AgentKvRow[]
try {
rows = db.query(AGENTKV_QUERY)
@@ -362,7 +381,7 @@ function parseAgentKv(db: SqliteDatabase, seenKeys: Set): { calls: Parse
costUSD,
tools: [],
bashCommands: [],
- timestamp: new Date().toISOString(),
+ timestamp: agentKvTimestamp,
speed: 'standard',
deduplicationKey: dedupKey,
userMessage: session.userText,
@@ -406,7 +425,7 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
}
const { calls: bubbleCalls } = parseBubbles(db, seenKeys)
- const { calls: agentKvCalls } = parseAgentKv(db, seenKeys)
+ const { calls: agentKvCalls } = parseAgentKv(db, seenKeys, source.path)
const calls = [...bubbleCalls, ...agentKvCalls]
await writeCachedResults(source.path, calls)
diff --git a/src/providers/droid.ts b/src/providers/droid.ts
index d744040..2b351a5 100644
--- a/src/providers/droid.ts
+++ b/src/providers/droid.ts
@@ -206,7 +206,12 @@ function createParser(
if (assistantCalls.length === 0) return
- // Distribute session-level token usage across calls
+ // KNOWN LIMITATION: Droid records token usage only at session level
+ // (settings.tokenUsage), not per-message. We split evenly across the
+ // emitted assistant calls and price all of them at settings.model
+ // (the latest model the session used). For sessions where the user
+ // switched models mid-stream, costs are approximate — we have no
+ // ground-truth breakdown to attribute tokens per model.
const totalTokens = settings.tokenUsage
if (!totalTokens) return
diff --git a/src/providers/gemini.ts b/src/providers/gemini.ts
index d00f0dc..87517d8 100644
--- a/src/providers/gemini.ts
+++ b/src/providers/gemini.ts
@@ -84,7 +84,7 @@ function parseSession(data: GeminiSession, seenKeys: Set): ParsedProvide
for (const msg of geminiMessages) {
const t = msg.tokens!
totalInput += t.input ?? 0
- totalOutput += (t.output ?? 0) + (t.thoughts ?? 0)
+ totalOutput += t.output ?? 0
totalCached += t.cached ?? 0
totalThoughts += t.thoughts ?? 0
if (msg.model && !model) model = msg.model
@@ -119,7 +119,10 @@ function parseSession(data: GeminiSession, seenKeys: Set): ParsedProvide
const tsDate = new Date(data.startTime)
if (isNaN(tsDate.getTime()) || tsDate.getTime() < 1_000_000_000_000) return results
- const costUSD = calculateCost(model, freshInput, totalOutput, 0, totalCached, 0)
+ // Gemini bills thoughts at the output token rate; calculateCost does not
+ // accept a reasoning parameter, so fold thoughts into the output count for
+ // pricing while keeping outputTokens / reasoningTokens reported separately.
+ const costUSD = calculateCost(model, freshInput, totalOutput + totalThoughts, 0, totalCached, 0)
results.push({
provider: 'gemini',
diff --git a/src/providers/pi.ts b/src/providers/pi.ts
index 8b75a31..7b4a94b 100644
--- a/src/providers/pi.ts
+++ b/src/providers/pi.ts
@@ -149,7 +149,14 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars
if (msg.role !== 'assistant' || !msg.usage) continue
- const { input, output, cacheRead, cacheWrite } = msg.usage
+ // Coerce undefined/null token fields to 0. Pi/OMP session files
+ // sometimes omit individual usage fields; the destructure used to
+ // pass undefined into calculateCost which then returned NaN, and
+ // that NaN propagated into every aggregate cost total.
+ const input = msg.usage.input ?? 0
+ const output = msg.usage.output ?? 0
+ const cacheRead = msg.usage.cacheRead ?? 0
+ const cacheWrite = msg.usage.cacheWrite ?? 0
if (input === 0 && output === 0) continue
const model = msg.model ?? 'gpt-5'
diff --git a/src/yield.ts b/src/yield.ts
index 1dda256..c26a18f 100644
--- a/src/yield.ts
+++ b/src/yield.ts
@@ -50,8 +50,35 @@ function getMainBranch(cwd: string): string {
type CommitInfo = {
sha: string
timestamp: Date
- isRevert: boolean
inMain: boolean
+ /** Set when a LATER commit's body says "This reverts commit " — i.e. the work in this commit was reverted out of main. */
+ wasReverted: boolean
+}
+
+/**
+ * Find SHAs that were the target of a `git revert` ANYWHERE in the repo's
+ * history (not just the time window). The standard `git revert` body
+ * format is "This reverts commit ." which we grep out.
+ *
+ * The previous implementation flagged a commit as `isRevert` based on the
+ * substring "revert" appearing in its OWN subject. Two bugs there:
+ * 1. Subjects like "Add revert button" matched.
+ * 2. The session that PERFORMED the revert was tagged "reverted", not the
+ * session whose work was being reverted — so the original session always
+ * looked productive even after its work was thrown away.
+ */
+function getRevertedShas(cwd: string): Set {
+ const bodies = runGit(
+ ['log', '--all', '--grep=^This reverts commit', '--format=%B%x1e'],
+ cwd,
+ ) ?? ''
+ const set = new Set()
+ const re = /This reverts commit ([0-9a-f]{7,40})/g
+ let m: RegExpExecArray | null
+ while ((m = re.exec(bodies)) !== null) {
+ set.add(m[1].toLowerCase())
+ }
+ return set
}
function getCommitsInRange(cwd: string, since: Date, until: Date, mainBranch: string): CommitInfo[] {
@@ -68,14 +95,21 @@ function getCommitsInRange(cwd: string, since: Date, until: Date, mainBranch: st
const mainCommits = new Set(
(runGit(['log', mainBranch, '--format=%H'], cwd) ?? '').split('\n').filter(Boolean)
)
+ const revertedShas = getRevertedShas(cwd)
return log.split('\n').filter(Boolean).map(line => {
- const [sha, timestamp, subject] = line.split('|')
+ const [sha] = line.split('|')
+ const timestamp = line.split('|')[1] ?? ''
return {
sha,
timestamp: new Date(timestamp),
- isRevert: subject.toLowerCase().includes('revert'),
inMain: mainCommits.has(sha),
+ // wasReverted: matches when ANY later commit's body says
+ // "This reverts commit ". Compare against the full SHA AND its
+ // 7-char short prefix to be safe; git revert sometimes records the
+ // short form.
+ wasReverted: revertedShas.has(sha.toLowerCase()) ||
+ revertedShas.has(sha.toLowerCase().slice(0, 7)),
}
})
}
@@ -101,7 +135,10 @@ function categorizeSession(
}
const inMainCount = relevantCommits.filter(c => c.inMain).length
- const revertedCount = relevantCommits.filter(c => c.isRevert && c.inMain).length
+ // A session is "reverted" when at least half of its in-main commits were
+ // later reverted out (revert detected via "This reverts commit "
+ // anywhere later in history, not in the same time window).
+ const revertedCount = relevantCommits.filter(c => c.inMain && c.wasReverted).length
if (revertedCount > 0 && revertedCount >= inMainCount / 2) {
return { category: 'reverted', commitCount: relevantCommits.length }
diff --git a/tests/cli-date.test.ts b/tests/cli-date.test.ts
index e30096d..45578b7 100644
--- a/tests/cli-date.test.ts
+++ b/tests/cli-date.test.ts
@@ -114,8 +114,20 @@ describe('toPeriod', () => {
}
})
- it('falls back to "week" for unknown input', () => {
- expect(toPeriod('garbage')).toBe('week')
- expect(toPeriod('')).toBe('week')
+ it('exits with an error on unknown input instead of silently falling back', () => {
+ // Previously toPeriod silently fell back to 'week' for any unrecognized
+ // value, which let typos like `-p mounth` produce a quiet 7-day report
+ // while the user thought they were viewing the month. The new behavior
+ // is to fail loudly via process.exit(1) after writing to stderr.
+ const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit') }) as unknown as ReturnType
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true)
+ try {
+ expect(() => toPeriod('garbage')).toThrow('exit')
+ expect(exitSpy).toHaveBeenCalledWith(1)
+ expect(stderrSpy).toHaveBeenCalled()
+ } finally {
+ exitSpy.mockRestore()
+ stderrSpy.mockRestore()
+ }
})
})
diff --git a/tests/daily-cache.test.ts b/tests/daily-cache.test.ts
index 3582e8a..199d7a4 100644
--- a/tests/daily-cache.test.ts
+++ b/tests/daily-cache.test.ts
@@ -163,6 +163,34 @@ describe('addNewDays', () => {
const updated = addNewDays(base, [emptyDay('2026-04-05', 3)], '2026-04-05')
expect(updated.lastComputedDate).toBe('2026-04-10')
})
+
+ it('skips prune when newestDate is malformed (does not silently drop all days)', () => {
+ // Regression guard: a corrupt newestDate string used to produce a NaN
+ // cutoff, which made `d.date >= "Invalid Date"` always false and
+ // wiped every cached day on the next merge. The guard now leaves
+ // the entries untouched so the next valid run can prune normally.
+ const base: DailyCache = {
+ version: DAILY_CACHE_VERSION,
+ lastComputedDate: '2026-04-10',
+ days: [emptyDay('2026-04-08', 1), emptyDay('2026-04-09', 2), emptyDay('2026-04-10', 3)],
+ }
+ const updated = addNewDays(base, [], 'not-a-date')
+ expect(updated.days.map(d => d.date)).toEqual(['2026-04-08', '2026-04-09', '2026-04-10'])
+ })
+
+ it('still prunes when newestDate is valid', () => {
+ const old = '2020-01-01'
+ const recent = '2026-04-10'
+ const base: DailyCache = {
+ version: DAILY_CACHE_VERSION,
+ lastComputedDate: recent,
+ days: [emptyDay(old, 1), emptyDay(recent, 2)],
+ }
+ const updated = addNewDays(base, [], recent)
+ // 730-day retention from 2026-04-10 → cutoff ~2024-04-11; 2020-01-01 must be gone.
+ expect(updated.days.find(d => d.date === old)).toBeUndefined()
+ expect(updated.days.find(d => d.date === recent)).toBeDefined()
+ })
})
describe('getDaysInRange', () => {
diff --git a/tests/date-range-filter.test.ts b/tests/date-range-filter.test.ts
index 76a3118..b2b6fba 100644
--- a/tests/date-range-filter.test.ts
+++ b/tests/date-range-filter.test.ts
@@ -26,10 +26,18 @@ describe('parseDateRangeFlags', () => {
expect(range!.end.getHours()).toBe(23)
})
- it('accepts --to alone (start = epoch)', () => {
+ it('accepts --to alone with a 6-month default start', () => {
+ // Previously the missing --from defaulted to epoch (1970), opening a
+ // 55-year scan window that was almost never what the user meant. The
+ // default is now 6 months back from now, matching the dashboard's
+ // "6 Months" period boundary.
const range = parseDateRangeFlags(undefined, '2026-04-10')
expect(range).not.toBeNull()
- expect(range!.start.getTime()).toBe(new Date(0).getTime())
+ expect(range!.start.getTime()).toBeGreaterThan(new Date(0).getTime())
+ const sixMonthsMs = 6 * 31 * 24 * 60 * 60 * 1000
+ const ageMs = Date.now() - range!.start.getTime()
+ expect(ageMs).toBeLessThanOrEqual(sixMonthsMs + 1000)
+ expect(ageMs).toBeGreaterThanOrEqual(sixMonthsMs - 1000)
expect(range!.end.getDate()).toBe(10)
})
diff --git a/tests/models-hoist.test.ts b/tests/models-hoist.test.ts
new file mode 100644
index 0000000..13af3e5
--- /dev/null
+++ b/tests/models-hoist.test.ts
@@ -0,0 +1,120 @@
+import { describe, it, expect } from 'vitest'
+import { calculateCost, getModelCosts, getShortModelName } from '../src/models.js'
+
+// Lock down the post-hoist refactor: every model name a real user has
+// emitted in the last year should resolve to the same display name and
+// the same costs as before. If this list grows or shrinks, the refactor
+// is fine — it's the per-name resolution that must stay stable.
+const KNOWN_NAMES = [
+ 'claude-opus-4-7',
+ 'claude-opus-4-6',
+ 'claude-opus-4-5',
+ 'claude-sonnet-4-6',
+ 'claude-sonnet-4-5',
+ 'claude-haiku-4-5',
+ 'claude-3-5-sonnet',
+ 'claude-3-5-haiku',
+ 'claude-opus-4-7-20250101',
+ 'claude-sonnet-4-6-20250929',
+ 'anthropic/claude-opus-4-7',
+ 'anthropic--claude-4.6-opus',
+ 'anthropic--claude-4.6-sonnet',
+ 'claude-4.6-sonnet',
+ 'gpt-5',
+ 'gpt-5-mini',
+ 'gpt-5-nano',
+ 'gpt-5-pro',
+ 'gpt-5.1',
+ 'gpt-5.1-codex',
+ 'gpt-5.1-codex-mini',
+ 'gpt-5.2',
+ 'gpt-5.2-low',
+ 'gpt-5.3-codex',
+ 'gpt-5.4',
+ 'gpt-5.4-mini',
+ 'gpt-4o',
+ 'gpt-4o-mini',
+ 'gpt-4.1',
+ 'gpt-4.1-mini',
+ 'gpt-4.1-nano',
+ 'gemini-2.5-pro',
+ 'gemini-2.5-flash',
+ 'gemini-3.1-pro-preview',
+ 'gemini-3-flash-preview',
+ 'gemini-3.1-pro',
+ 'gemini-3-flash',
+ 'cursor-auto',
+ 'cursor-agent-auto',
+ 'copilot-auto',
+ 'copilot-openai-auto',
+ 'kiro-auto',
+ 'cline-auto',
+ 'qwen-auto',
+ 'o3',
+ 'o4-mini',
+ 'deepseek-coder',
+ 'deepseek-coder-max',
+ 'deepseek-r1',
+ 'MiniMax-M2.7',
+ 'MiniMax-M2.7-highspeed',
+]
+
+describe('post-hoist resolution stability', () => {
+ it('every known model resolves to a non-empty short name', () => {
+ for (const name of KNOWN_NAMES) {
+ const short = getShortModelName(name)
+ expect(short, `short name for ${name}`).toBeTruthy()
+ expect(typeof short, `short name for ${name}`).toBe('string')
+ }
+ })
+
+ it('gpt-5-mini does NOT collide with gpt-5 (longest-prefix wins)', () => {
+ expect(getShortModelName('gpt-5-mini')).toBe('GPT-5 Mini')
+ expect(getShortModelName('gpt-5')).toBe('GPT-5')
+ expect(getShortModelName('gpt-5-nano')).toBe('GPT-5 Nano')
+ expect(getShortModelName('gpt-5-pro')).toBe('GPT-5 Pro')
+ })
+
+ it('gpt-5.1-codex-mini does NOT collapse to gpt-5.1-codex or gpt-5', () => {
+ expect(getShortModelName('gpt-5.1-codex-mini')).toBe('GPT-5.1 Codex Mini')
+ expect(getShortModelName('gpt-5.1-codex')).toBe('GPT-5.1 Codex')
+ expect(getShortModelName('gpt-5.1')).toBe('GPT-5.1')
+ })
+
+ it('claude-haiku-4-5 does NOT collapse to claude-haiku-4 or claude-3-5-haiku', () => {
+ expect(getShortModelName('claude-haiku-4-5')).toBe('Haiku 4.5')
+ expect(getShortModelName('claude-3-5-haiku')).toBe('Haiku 3.5')
+ })
+
+ it('getModelCosts returns positive token costs for every known name', () => {
+ for (const name of KNOWN_NAMES) {
+ const c = getModelCosts(name)
+ expect(c, `costs for ${name}`).not.toBeNull()
+ expect(c!.inputCostPerToken).toBeGreaterThan(0)
+ expect(c!.outputCostPerToken).toBeGreaterThan(0)
+ }
+ })
+
+ it('calculateCost is stable for a typical Sonnet 4.6 turn', () => {
+ // 1k input, 2k output, 50k cache read — common Claude Code shape.
+ const cost = calculateCost('claude-sonnet-4-6', 1000, 2000, 0, 50_000, 0)
+ expect(cost).toBeGreaterThan(0)
+ expect(Number.isFinite(cost)).toBe(true)
+ })
+
+ it('calculateCost clamps NaN/negative inputs to 0', () => {
+ const c1 = calculateCost('claude-sonnet-4-6', NaN, 1000, 0, 0, 0)
+ const c2 = calculateCost('claude-sonnet-4-6', 0, 1000, 0, 0, 0)
+ expect(c1).toBe(c2)
+ const c3 = calculateCost('claude-sonnet-4-6', -1000, 1000, 0, 0, 0)
+ expect(c3).toBe(c2)
+ })
+
+ it('repeated calls return the same cost (memoized sort cache is consistent)', () => {
+ const a = getModelCosts('gpt-5-mini')
+ const b = getModelCosts('gpt-5-mini')
+ const c = getModelCosts('gpt-5-mini')
+ expect(a).toEqual(b)
+ expect(b).toEqual(c)
+ })
+})
From efac2bfa15e2ebd61814eddb13be717c04d8b87e Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Wed, 6 May 2026 19:57:17 -0700
Subject: [PATCH 056/115] Live quota bar inside AgentTab + Claude OAuth refresh
gate (#255)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Gate Claude OAuth refresh attempts on terminal failures
Anthropic returns invalid_grant (HTTP 400) when the user's refresh token has
been revoked or rotated, typically after they re-ran claude login on another
device. The previous code rethrew the raw error every refresh cycle, leaving
the Plan UI stuck on a Swift error string and pummeling Anthropic's token
endpoint forever.
The new SubscriptionRefreshGate captures a fingerprint of
~/.claude/.credentials.json on terminal failure and stops trying until that
fingerprint changes (the user re-logs-in). Transient 5xx/network failures
get exponential backoff capped at 6 hours.
Two new SubscriptionError cases let the UI distinguish "user must reconnect"
from "Anthropic is flaky right now" and show a clean reconnect CTA instead
of raw HTTP guts.
* Inline live-quota progress bar inside each AgentTab chip
When a provider exposes a live quota source, the AgentTab chip grows by ~3pt
to host a thin weekly-utilization bar directly under the label. Hovering the
chip reveals a popover with all four Anthropic windows (5-hour, weekly, weekly
Opus, weekly Sonnet) plus reset countdowns. Click still switches the tab as
before.
Today only Claude has a quota source (the existing /api/oauth/usage path);
other providers' chips render unchanged. The QuotaSummary abstraction lets
us bolt on Cursor/Copilot/Codex meters in follow-up commits.
Subscription is now refreshed eagerly on the periodic loop so the bar lights
up without forcing the user to open a deep view first. The previous
SubscriptionRefreshGate keeps a dead refresh token from spamming Anthropic.
Adds two new SubscriptionLoadState cases (terminalFailure, transientFailure)
so the deep Plan view shows a "reconnect" message instead of a raw Swift
error string when the user's claude login expired.
* Replace SubscriptionClient with credential-store + service architecture
The previous SubscriptionClient never persisted refreshed access tokens, so
every 30s tick read the expired token from Keychain, refreshed it (1 call),
fetched usage with the new token (2nd call), and threw the new token away —
3 API calls per cycle, which burned through Anthropic's per-account rate
budget and produced the 429s and `invalid_grant` loops users were seeing.
The replacement mirrors CodexBar's proven pattern:
- ClaudeCredentialStore owns the credential lifecycle. Bootstrap is strictly
user-initiated (Connect button in the Plan tab); the menubar does not touch
Claude's keychain at startup. After bootstrap, refreshed tokens — including
rotated refresh tokens — are persisted to a local cache file under
~/Library/Application Support/CodeBurn (mode 0600). Using a file instead of
our own keychain item means rebuild signature changes don't trigger a
startup keychain prompt; the only prompt the user ever sees is the one for
Claude Code-credentials on Connect.
- ClaudeUsageFetcher (folded into the service) is a pure /api/oauth/usage
call with one allowed 401-recovery roundtrip. 429s record an explicit
backoff window honouring Retry-After.
- ClaudeSubscriptionService orchestrates bootstrap / refresh / disconnect,
applies the 429 backoff, and surfaces terminal vs transient failures so
the UI can show the right CTA.
- Reading Claude's keychain now tries the entry keyed by NSUserName() first
and falls back to the unscoped query, so users who re-ran /login and ended
up with two Claude Code-credentials items pick up the fresh one. This was
the actual cause of "I logged in but the menubar still shows stale data".
User-facing additions:
- A proper Settings window (right-click → Settings…) with General / Claude /
About tabs. Provider quota cadence is configurable (Manual / 1m / 2m / 5m /
15m). New providers plug in as additional tabs.
- Plan tab: notBootstrapped → "Connect Claude subscription" CTA;
terminalFailure → "Reconnect Claude" with the correct /login instruction
for Claude Code 2.1; transientFailure preserves the last loaded view with
a retrying badge.
- AgentTab quota bar slot is always reserved so chip height doesn't jitter
when the user connects for the first time. Hover popover has 250ms enter
/ 150ms exit debounce so swiping across chips doesn't pop a popover for
every chip touched.
- Disconnect requires confirmation, clears capacityEstimates and the
subscription snapshot store so a reconnect under a different account
doesn't surface "Based on last cycle" projections from the old account.
Validator findings applied: cadence anchor only updates on successful
refresh (not every attempt), refresh-token rotation persists in memory
before keychain write so a write failure doesn't lock the user out, server
error bodies are sanitized (token redaction + 240-char cap) before they
reach the UI or NSLog, and Refresh Now refreshes both the menubar payload
and quota.
* Add Codex live quota + multi-provider warning, with validator fixes
CodexCredentialStore reads ~/.codex/auth.json (ChatGPT-mode only) on
user-initiated Connect, caches under Application Support like Claude.
CodexSubscriptionService hits chatgpt.com/backend-api/wham/usage with
the bearer token + ChatGPT-Account-Id header, parses primary/secondary
windows, additional per-model rate limits (e.g. GPT-5.3-Codex-Spark),
and credits balance with a Double-or-String fallback.
Plan-tier enum captures the full ChatGPT plan list including prolite,
free_workspace, education, quorum, k12, plus an unknown(String) case
that preserves the raw plan name when OpenAI ships a tier we haven't
mapped yet.
Multi-provider warning system:
- Menubar flame tints from neutral to yellow (70%) → orange (90%) →
red (100%) based on the worst-affected connected provider's worst
window. Uses NSImage.SymbolConfiguration palette colors.
- Popover header gains a warning row when any provider is at 70%+.
"Claude 79% of quota used", "Claude 79% · Codex 92%", or
"Claude over limit (105%)" when severity hits .danger.
- Hover popover gains a plan-name badge in the top-right corner so
users know which subscription is feeding the bar.
- Codex chip surfaces the credits balance and any non-zero per-model
additional rate limits as footer rows.
Validator fixes applied in the same commit:
- Provider-specific reconnect / disconnected copy in QuotaDetailPopover
(was hardcoded to Claude).
- Generation-token guard on refreshSubscriptionReportingSuccess and
refreshCodexReportingSuccess so a Disconnect during an in-flight
fetch can't resume after the await and re-populate the cleared state.
- Codex codexQuotaSummary promotes secondary to primary when only one
window is returned, so free / guest tiers don't render an empty bar.
- Memory-cache TTL is now actually consulted in currentRecord (the
isFresh check was dead code, leaving cached records valid forever).
- sanitizeForUI now redacts OpenAI sk-* keys, JWT tokens, and Bearer
headers in addition to Claude sk-ant-*.
- Removed diagnostic NSLog that wrote raw chatgpt.com response bodies
to the unified log.
- Codex Connect / Reconnect copy in Settings explains the auth.json
prerequisite and the API-key vs ChatGPT-mode distinction.
- Disconnect dialogs now state explicitly that the auth.json /
credentials keychain entry is left untouched.
- Plan badge in the popover gets line-limit + truncation + max-width
so a long unknown plan name can't overflow the row.
- Renamed shadowing `let max` to `let worst` in aggregateQuotaStatus.
* Add Codex Plan tab + size plan badge to content
The Plan tab is now visible when the Codex chip is selected, mirroring
the Claude tab's deep view. CodexPlanInsight renders the user's plan
tier ("Pro Lite", "Plus", etc.), the primary and secondary rate-limit
windows with reset countdowns, and any non-zero per-model additional
limits (e.g. GPT-5.3-Codex-Spark) so power users see them.
The "On pace at reset" projection that Claude's Plan view shows is not
included here — that math feeds from local Claude per-message spend
extrapolated against API quota windows, and our local Codex spend is
not a 1:1 signal for the ChatGPT-subscription rate windows reported by
wham/usage. Wiring a Codex extrapolator is a follow-up.
Drop the maxWidth=90 frame on the plan badge in the hover popover. It
was stretching short labels like "Pro Lite" to fill the full 90pt slot;
fixedSize makes the badge hug the text. Plan names are bounded short
strings, so truncation is a non-issue in practice.
---
mac/Sources/CodeBurnMenubar/AppStore.swift | 369 +++++++++++++++-
mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 176 +++++++-
.../Data/ClaudeCredentialStore.swift | 398 ++++++++++++++++++
.../Data/ClaudeSubscriptionService.swift | 234 ++++++++++
.../Data/CodexCredentialStore.swift | 291 +++++++++++++
.../Data/CodexSubscriptionService.swift | 214 ++++++++++
.../CodeBurnMenubar/Data/CodexUsage.swift | 98 +++++
.../CodeBurnMenubar/Data/QuotaSummary.swift | 75 ++++
.../Data/SubscriptionClient.swift | 268 ------------
.../Data/SubscriptionRefreshCadence.swift | 42 ++
.../Data/SubscriptionSnapshotStore.swift | 7 +
.../CodeBurnMenubar/Views/AgentTabStrip.swift | 272 +++++++++++-
.../Views/HeatmapSection.swift | 250 +++++++++--
.../Views/MenuBarContent.swift | 94 ++++-
.../CodeBurnMenubar/Views/SettingsView.swift | 367 ++++++++++++++++
15 files changed, 2795 insertions(+), 360 deletions(-)
create mode 100644 mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Data/CodexUsage.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Data/QuotaSummary.swift
delete mode 100644 mac/Sources/CodeBurnMenubar/Data/SubscriptionClient.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Data/SubscriptionRefreshCadence.swift
create mode 100644 mac/Sources/CodeBurnMenubar/Views/SettingsView.swift
diff --git a/mac/Sources/CodeBurnMenubar/AppStore.swift b/mac/Sources/CodeBurnMenubar/AppStore.swift
index 00b4283..2d91fc8 100644
--- a/mac/Sources/CodeBurnMenubar/AppStore.swift
+++ b/mac/Sources/CodeBurnMenubar/AppStore.swift
@@ -30,9 +30,19 @@ final class AppStore {
var lastError: String?
var subscription: SubscriptionUsage?
var subscriptionError: String?
- var subscriptionLoadState: SubscriptionLoadState = .idle
+ var subscriptionLoadState: SubscriptionLoadState = ClaudeCredentialStore.isBootstrapCompleted ? .loading : .notBootstrapped
var capacityEstimates: [String: CapacityEstimate] = [:]
+ var codexUsage: CodexUsage?
+ var codexError: String?
+ var codexLoadState: SubscriptionLoadState = CodexCredentialStore.isBootstrapCompleted ? .loading : .notBootstrapped
+
+ /// Generation tokens for the in-flight refresh tasks. Incremented on every
+ /// disconnect / reset so a fetch that started before the disconnect cannot
+ /// resume after the await and re-populate the freshly-cleared state.
+ private var claudeRefreshGen: Int = 0
+ private var codexRefreshGen: Int = 0
+
private var cache: [PayloadCacheKey: CachedPayload] = [:]
private var cacheDate: String = ""
private var switchTask: Task?
@@ -189,28 +199,346 @@ final class AppStore {
}
}
- /// Fetch Claude subscription usage. Sets subscription = nil on missing creds (API users / unauthenticated).
- /// Triggered lazily when the user opens the Plan pill, so the Keychain prompt only fires on intent.
- func refreshSubscription() async {
- subscriptionLoadState = .loading
+ /// User-initiated. Reads Claude's source (this is what triggers the macOS keychain
+ /// prompt for `Claude Code-credentials`). Once successful, subsequent background
+ /// refreshes go through our own keychain item without prompting.
+ func bootstrapSubscription() async {
+ subscriptionLoadState = .bootstrapping
do {
- let usage = try await SubscriptionClient.fetch()
+ let usage = try await ClaudeSubscriptionService.bootstrap()
subscription = usage
subscriptionError = nil
subscriptionLoadState = .loaded
await captureSnapshots(for: usage)
- } catch SubscriptionError.noCredentials {
- subscription = nil
- subscriptionError = nil
- subscriptionLoadState = .noCredentials
+ } catch let err as ClaudeSubscriptionService.FetchError {
+ applyFetchError(err)
} catch {
- subscription = nil
subscriptionError = String(describing: error)
subscriptionLoadState = .failed
- NSLog("CodeBurn: subscription fetch failed: \(error)")
}
}
+ /// Background refresh. No-op if the user has not yet connected. Never triggers
+ /// a keychain prompt — uses our own keychain item exclusively.
+ func refreshSubscription() async {
+ _ = await refreshSubscriptionReportingSuccess()
+ }
+
+ /// Same as `refreshSubscription` but returns whether the fetch produced a
+ /// `.loaded` state, so the caller can anchor cadence timing on real success
+ /// rather than every attempt.
+ @discardableResult
+ func refreshSubscriptionReportingSuccess() async -> Bool {
+ guard ClaudeCredentialStore.isBootstrapCompleted else {
+ if subscriptionLoadState != .notBootstrapped {
+ subscriptionLoadState = .notBootstrapped
+ }
+ return false
+ }
+ let gen = claudeRefreshGen
+ if subscription == nil { subscriptionLoadState = .loading }
+ do {
+ guard let usage = try await ClaudeSubscriptionService.refreshIfBootstrapped() else {
+ return false
+ }
+ // Disconnect-during-fetch guard: if the user clicked Disconnect
+ // while we were awaiting Anthropic, the generation token will
+ // have advanced and we must drop this result instead of writing
+ // it back over the freshly-cleared state.
+ guard gen == claudeRefreshGen else { return false }
+ subscription = usage
+ subscriptionError = nil
+ subscriptionLoadState = .loaded
+ await captureSnapshots(for: usage)
+ return true
+ } catch let err as ClaudeSubscriptionService.FetchError {
+ guard gen == claudeRefreshGen else { return false }
+ applyFetchError(err)
+ return false
+ } catch {
+ guard gen == claudeRefreshGen else { return false }
+ subscriptionError = sanitizeForUI(String(describing: error))
+ subscriptionLoadState = .failed
+ return false
+ }
+ }
+
+ /// User-initiated disconnect — clears our keychain item and bootstrap flag,
+ /// plus all derived state so a reconnect (potentially under a different
+ /// account or tier) starts clean. capacityEstimates and the snapshot store
+ /// would otherwise contaminate "Based on last cycle" projections.
+ func disconnectSubscription() {
+ ClaudeSubscriptionService.disconnect()
+ // Bump the generation token so any in-flight refreshSubscription that
+ // resumes after this point detects the disconnect and discards its
+ // result instead of re-populating the cleared state.
+ claudeRefreshGen &+= 1
+ subscription = nil
+ subscriptionError = nil
+ subscriptionLoadState = .notBootstrapped
+ capacityEstimates = [:]
+ Task.detached { await SubscriptionSnapshotStore.clearAll() }
+ // Notify the AppDelegate to clear its cadence-loop anchor so the next
+ // reconnect doesn't measure against a pre-disconnect timestamp.
+ NotificationCenter.default.post(name: .codeBurnSubscriptionDisconnected, object: nil)
+ }
+
+ // MARK: - Codex
+
+ func bootstrapCodex() async {
+ codexLoadState = .bootstrapping
+ do {
+ let usage = try await CodexSubscriptionService.bootstrap()
+ codexUsage = usage
+ codexError = nil
+ codexLoadState = .loaded
+ } catch let err as CodexSubscriptionService.FetchError {
+ applyCodexFetchError(err)
+ } catch {
+ codexError = sanitizeForUI(String(describing: error))
+ codexLoadState = .failed
+ }
+ }
+
+ func refreshCodex() async {
+ _ = await refreshCodexReportingSuccess()
+ }
+
+ @discardableResult
+ func refreshCodexReportingSuccess() async -> Bool {
+ guard CodexCredentialStore.isBootstrapCompleted else {
+ if codexLoadState != .notBootstrapped { codexLoadState = .notBootstrapped }
+ return false
+ }
+ let gen = codexRefreshGen
+ if codexUsage == nil { codexLoadState = .loading }
+ do {
+ guard let usage = try await CodexSubscriptionService.refreshIfBootstrapped() else {
+ return false
+ }
+ guard gen == codexRefreshGen else { return false }
+ codexUsage = usage
+ codexError = nil
+ codexLoadState = .loaded
+ return true
+ } catch let err as CodexSubscriptionService.FetchError {
+ guard gen == codexRefreshGen else { return false }
+ applyCodexFetchError(err)
+ return false
+ } catch {
+ guard gen == codexRefreshGen else { return false }
+ codexError = sanitizeForUI(String(describing: error))
+ codexLoadState = .failed
+ return false
+ }
+ }
+
+ func disconnectCodex() {
+ CodexSubscriptionService.disconnect()
+ codexRefreshGen &+= 1
+ codexUsage = nil
+ codexError = nil
+ codexLoadState = .notBootstrapped
+ NotificationCenter.default.post(name: .codeBurnSubscriptionDisconnected, object: nil)
+ }
+
+ private func applyCodexFetchError(_ err: CodexSubscriptionService.FetchError) {
+ let sanitized = sanitizeForUI(err.errorDescription)
+ codexError = sanitized
+ if err.isTerminal {
+ codexLoadState = .terminalFailure(reason: sanitized)
+ } else if let retryAt = err.rateLimitRetryAt {
+ codexLoadState = .transientFailure(retryAt: retryAt)
+ } else if case .notBootstrapped = err {
+ codexLoadState = .notBootstrapped
+ } else if case let .bootstrapFailed(storeErr) = err, case .bootstrapNoSource = storeErr {
+ codexLoadState = .noCredentials
+ } else {
+ codexLoadState = .failed
+ }
+ }
+
+ private func applyFetchError(_ err: ClaudeSubscriptionService.FetchError) {
+ let sanitized = sanitizeForUI(err.errorDescription)
+ subscriptionError = sanitized
+ if err.isTerminal {
+ subscriptionLoadState = .terminalFailure(reason: sanitized)
+ } else if let retryAt = err.rateLimitRetryAt {
+ subscriptionLoadState = .transientFailure(retryAt: retryAt)
+ } else if case .notBootstrapped = err {
+ subscriptionLoadState = .notBootstrapped
+ } else if case let .bootstrapFailed(storeErr) = err, case .bootstrapNoSource = storeErr {
+ subscriptionLoadState = .noCredentials
+ } else {
+ subscriptionLoadState = .failed
+ }
+ }
+
+ /// Strip control characters and any token-shaped substrings from server-error
+ /// strings before they land in NSLog or the UI. Anthropic / OpenAI error
+ /// envelopes don't typically echo tokens, but we also surface this in
+ /// unified-log paths readable by other local users via `log stream`.
+ private func sanitizeForUI(_ s: String?) -> String? {
+ guard let s, !s.isEmpty else { return nil }
+ var cleaned = s.replacingOccurrences(of: "\u{0000}", with: "")
+ // Token-shaped redaction. Apply to all known auth-token formats so
+ // an error body that quotes the request/response token is masked.
+ let patterns: [(pattern: String, replacement: String)] = [
+ (#"sk-ant-[A-Za-z0-9_-]+"#, "sk-ant-***"),
+ (#"sk-[A-Za-z0-9_-]{16,}"#, "sk-***"),
+ (#"eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+"#, "eyJ***"),
+ (#"(?i)Bearer\s+\S+"#, "Bearer ***"),
+ ]
+ for entry in patterns {
+ cleaned = cleaned.replacingOccurrences(of: entry.pattern, with: entry.replacement, options: .regularExpression)
+ }
+ // Cap length so a runaway server body cannot fill stderr.
+ if cleaned.count > 240 { cleaned = String(cleaned.prefix(240)) + "…" }
+ return cleaned
+ }
+
+ /// Snapshot of live quota state for a given provider. Returns nil when the user
+ /// has not connected yet — the bar slot stays empty so we never trigger a
+ /// keychain prompt at startup. Once bootstrapped, the bar persists across all
+ /// subsequent states (loading / stale / transient failure / terminal failure)
+ /// so it doesn't flicker on every refresh tick.
+ /// Aggregate quota status across all connected providers, used by the menu
+ /// bar flame icon (color) and the popover warning row. Severity = worst
+ /// observed across any provider's worst window. Warning providers are
+ /// every connected provider at >= 70% utilization.
+ struct AggregateQuotaStatus {
+ let severity: QuotaSummary.Severity
+ let warnings: [(name: String, percent: Double)] // sorted desc by percent
+ }
+
+ var aggregateQuotaStatus: AggregateQuotaStatus {
+ var providers: [(name: String, percent: Double)] = []
+ if case .loaded = subscriptionLoadState, let usage = subscription {
+ let worst = [
+ usage.fiveHourPercent,
+ usage.sevenDayPercent,
+ usage.sevenDayOpusPercent,
+ usage.sevenDaySonnetPercent,
+ ].compactMap { $0 }.max() ?? 0
+ if worst > 0 { providers.append(("Claude", worst)) }
+ }
+ if case .loaded = codexLoadState, let usage = codexUsage {
+ let worst = max(usage.primary?.usedPercent ?? 0, usage.secondary?.usedPercent ?? 0)
+ if worst > 0 { providers.append(("Codex", worst)) }
+ }
+ let worst = providers.map(\.percent).max() ?? 0
+ let severity = QuotaSummary.severity(for: worst / 100)
+ let sorted = providers.sorted { $0.percent > $1.percent }
+ let warnings = sorted.filter { $0.percent >= 70 }
+ return AggregateQuotaStatus(severity: severity, warnings: warnings)
+ }
+
+ func quotaSummary(for filter: ProviderFilter) -> QuotaSummary? {
+ switch filter {
+ case .claude: return claudeQuotaSummary(filter: filter)
+ case .codex: return codexQuotaSummary(filter: filter)
+ default: return nil
+ }
+ }
+
+ private func claudeQuotaSummary(filter: ProviderFilter) -> QuotaSummary? {
+ if case .notBootstrapped = subscriptionLoadState { return nil }
+ if case .bootstrapping = subscriptionLoadState { return nil }
+ if case .noCredentials = subscriptionLoadState { return nil }
+
+ let connection: QuotaSummary.Connection = {
+ switch subscriptionLoadState {
+ case .notBootstrapped, .bootstrapping, .noCredentials: return .disconnected
+ case .loading: return subscription == nil ? .loading : .stale
+ case .loaded: return .connected
+ case .failed: return subscription == nil ? .loading : .stale
+ case let .terminalFailure(reason): return .terminalFailure(reason: reason)
+ case .transientFailure: return .transientFailure
+ }
+ }()
+
+ var primary: QuotaSummary.Window?
+ var details: [QuotaSummary.Window] = []
+ if let usage = subscription {
+ if let pct = usage.fiveHourPercent {
+ details.append(.init(label: "5-hour", percent: pct / 100, resetsAt: usage.fiveHourResetsAt))
+ }
+ if let pct = usage.sevenDayPercent {
+ let weekly = QuotaSummary.Window(label: "Weekly", percent: pct / 100, resetsAt: usage.sevenDayResetsAt)
+ primary = weekly
+ details.append(weekly)
+ }
+ if let pct = usage.sevenDayOpusPercent {
+ details.append(.init(label: "Weekly · Opus", percent: pct / 100, resetsAt: usage.sevenDayOpusResetsAt))
+ }
+ if let pct = usage.sevenDaySonnetPercent {
+ details.append(.init(label: "Weekly · Sonnet", percent: pct / 100, resetsAt: usage.sevenDaySonnetResetsAt))
+ }
+ }
+ let plan = subscription?.tier.displayName
+ return QuotaSummary(providerFilter: filter, connection: connection, primary: primary, details: details, planLabel: plan, footerLines: [])
+ }
+
+ private func codexQuotaSummary(filter: ProviderFilter) -> QuotaSummary? {
+ if case .notBootstrapped = codexLoadState { return nil }
+ if case .bootstrapping = codexLoadState { return nil }
+ if case .noCredentials = codexLoadState { return nil }
+
+ let connection: QuotaSummary.Connection = {
+ switch codexLoadState {
+ case .notBootstrapped, .bootstrapping, .noCredentials: return .disconnected
+ case .loading: return codexUsage == nil ? .loading : .stale
+ case .loaded: return .connected
+ case .failed: return codexUsage == nil ? .loading : .stale
+ case let .terminalFailure(reason): return .terminalFailure(reason: reason)
+ case .transientFailure: return .transientFailure
+ }
+ }()
+
+ var primary: QuotaSummary.Window?
+ var details: [QuotaSummary.Window] = []
+ if let usage = codexUsage {
+ if let w = usage.primary {
+ let row = QuotaSummary.Window(label: w.windowLabel, percent: w.usedPercent / 100, resetsAt: w.resetsAt)
+ primary = row
+ details.append(row)
+ }
+ if let w = usage.secondary {
+ let row = QuotaSummary.Window(label: w.windowLabel, percent: w.usedPercent / 100, resetsAt: w.resetsAt)
+ // Some Codex plans (free / guest tiers) only return a secondary
+ // window. Promote it to primary so the chip bar always has a
+ // data source instead of rendering as an empty track.
+ if primary == nil { primary = row }
+ details.append(row)
+ }
+ // Surface per-model additional rate limits (e.g. "GPT-5.3-Codex-Spark")
+ // only when the user has actually hit them. Skipping zero rows keeps
+ // the popover compact for the common case where the user only uses
+ // the main Codex window.
+ for extra in usage.additionalLimits {
+ if let p = extra.primary, p.usedPercent > 0 {
+ details.append(.init(label: "\(extra.name) · \(p.windowLabel)", percent: p.usedPercent / 100, resetsAt: p.resetsAt))
+ }
+ if let s = extra.secondary, s.usedPercent > 0 {
+ details.append(.init(label: "\(extra.name) · \(s.windowLabel)", percent: s.usedPercent / 100, resetsAt: s.resetsAt))
+ }
+ }
+ }
+ let plan = codexUsage?.plan.displayName
+ var footerLines: [String] = []
+ if let balance = codexUsage?.creditsBalance, balance > 0 {
+ // Format as plain dollars; ChatGPT settles in USD regardless of
+ // the user's display-currency preference.
+ let formatter = NumberFormatter()
+ formatter.numberStyle = .currency
+ formatter.currencyCode = "USD"
+ formatter.maximumFractionDigits = 2
+ let formatted = formatter.string(from: NSNumber(value: balance)) ?? "$\(balance)"
+ footerLines.append("Credits remaining · \(formatted)")
+ }
+ return QuotaSummary(providerFilter: filter, connection: connection, primary: primary, details: details, planLabel: plan, footerLines: footerLines)
+ }
+
/// Persist one snapshot per window so we can answer "what did the prior cycle end at?"
/// when the current window has just reset and projection from current data isn't meaningful.
/// Also computes the effective_tokens consumed inside each 7-day window from local history,
@@ -347,12 +675,19 @@ enum ProviderFilter: String, CaseIterable, Identifiable {
}
}
+extension Notification.Name {
+ static let codeBurnSubscriptionDisconnected = Notification.Name("com.codeburn.subscriptionDisconnected")
+}
+
enum SubscriptionLoadState: Sendable, Equatable {
- case idle // never tried, awaiting user intent
- case loading // fetch in progress
- case loaded // success; subscription is populated
- case noCredentials // tried; user has no Claude OAuth (API user / not logged in)
- case failed // tried; error occurred
+ case notBootstrapped // no Keychain access yet — waiting for user to click Connect
+ case bootstrapping // user clicked Connect; reading Claude's keychain (PROMPTS)
+ case loading // background fetch in progress (subscription may already be populated)
+ case loaded // success; subscription is populated
+ case noCredentials // bootstrap tried; user has no Claude credentials at all
+ case failed // generic non-recoverable failure
+ case terminalFailure(reason: String?) // refresh-token invalid; user must reconnect
+ case transientFailure(retryAt: Date?) // 429 / network blip; backing off automatically
}
enum InsightMode: String, CaseIterable, Identifiable {
diff --git a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
index 65811e4..b4d596e 100644
--- a/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
+++ b/mac/Sources/CodeBurnMenubar/CodeBurnApp.swift
@@ -15,9 +15,12 @@ struct CodeBurnApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var delegate
var body: some Scene {
- // SwiftUI App needs at least one scene. Settings is invisible by default.
+ // The Settings scene gives us a real macOS Settings window with the
+ // standard ⌘, shortcut and the menubar "Settings…" item. Provider tabs
+ // (Claude today, Codex/Cursor/etc. in follow-ups) live inside SettingsView.
Settings {
- EmptyView()
+ SettingsView()
+ .environment(delegate.store)
}
}
}
@@ -26,7 +29,7 @@ struct CodeBurnApp: App {
final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
private var statusItem: NSStatusItem!
private var popover: NSPopover!
- private let store = AppStore()
+ fileprivate let store = AppStore()
let updateChecker = UpdateChecker()
/// Held for the lifetime of the app to opt out of App Nap and Automatic Termination.
private var backgroundActivity: NSObjectProtocol?
@@ -40,6 +43,18 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
NSApp.setActivationPolicy(.accessory)
}
+ private func observeSubscriptionDisconnect() {
+ NotificationCenter.default.addObserver(
+ forName: .codeBurnSubscriptionDisconnected,
+ object: nil,
+ queue: .main
+ ) { [weak self] _ in
+ Task { @MainActor [weak self] in
+ self?.resetSubscriptionCadenceAnchor()
+ }
+ }
+ }
+
func applicationDidFinishLaunching(_ notification: Notification) {
ProcessInfo.processInfo.automaticTerminationSupportEnabled = false
ProcessInfo.processInfo.disableSuddenTermination()
@@ -57,6 +72,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
setupDistributedNotificationListener()
installLaunchAgentIfNeeded()
registerLoginItemIfNeeded()
+ observeSubscriptionDisconnect()
Task { await updateChecker.checkIfNeeded() }
}
@@ -233,9 +249,19 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
}
}
+ fileprivate var lastSubscriptionRefreshAt: Date?
+
private func startRefreshLoop() {
refreshLoopTask?.cancel()
refreshLoopTask = Task { [weak self] in
+ // Provider refreshes only run when the user has explicitly connected.
+ // Each refresh is a no-op until its corresponding bootstrap flag is set.
+ if let self {
+ async let claude = self.store.refreshSubscriptionReportingSuccess()
+ async let codex = self.store.refreshCodexReportingSuccess()
+ if await claude { self.lastSubscriptionRefreshAt = Date() }
+ if await codex { self.lastCodexRefreshAt = Date() }
+ }
while !Task.isCancelled {
guard let self else { return }
// Skip the loop's tick if a wake / manual / distributed-
@@ -251,11 +277,57 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
self.lastRefreshTime = Date()
self.refreshStatusButton()
}
+ // Cadence-driven live-quota refresh, anchored on LAST SUCCESS
+ // (not last attempt) so an intermittent failure doesn't reset
+ // the timer. Each provider has its own anchor so a Codex 429
+ // doesn't delay a due Claude refresh.
+ let cadence = SubscriptionRefreshCadence.current
+ if cadence != .manual {
+ let claudeElapsed = Date().timeIntervalSince(self.lastSubscriptionRefreshAt ?? .distantPast)
+ if claudeElapsed >= TimeInterval(cadence.rawValue) {
+ let succeeded = await self.store.refreshSubscriptionReportingSuccess()
+ if succeeded { self.lastSubscriptionRefreshAt = Date() }
+ }
+ let codexElapsed = Date().timeIntervalSince(self.lastCodexRefreshAt ?? .distantPast)
+ if codexElapsed >= TimeInterval(cadence.rawValue) {
+ let succeeded = await self.store.refreshCodexReportingSuccess()
+ if succeeded { self.lastCodexRefreshAt = Date() }
+ }
+ }
try? await Task.sleep(nanoseconds: refreshIntervalNanos)
}
}
}
+ fileprivate var lastCodexRefreshAt: Date?
+
+ @MainActor
+ func refreshSubscriptionNow() {
+ Task { [weak self] in
+ guard let self else { return }
+ // "Refresh Now" should refresh the menubar payload AND every
+ // connected provider's live quota — the user's intent is "make
+ // this match reality right now."
+ async let payload: Void = self.store.refresh(includeOptimize: false, force: true, showLoading: true)
+ async let claude: Bool = self.store.refreshSubscriptionReportingSuccess()
+ async let codex: Bool = self.store.refreshCodexReportingSuccess()
+ _ = await payload
+ if await claude { self.lastSubscriptionRefreshAt = Date() }
+ if await codex { self.lastCodexRefreshAt = Date() }
+ }
+ }
+
+ /// Reset the cadence anchor so the next loop tick re-evaluates from "now"
+ /// rather than measuring against a timestamp from the previous connection.
+ /// Triggered on disconnect of any provider — the cost of clearing both
+ /// anchors is one extra refresh tick on the unaffected provider, far less
+ /// disruptive than waiting a full cadence after a reconnect.
+ @MainActor
+ func resetSubscriptionCadenceAnchor() {
+ lastSubscriptionRefreshAt = nil
+ lastCodexRefreshAt = nil
+ }
+
private func observeStore() {
// Read closure uses [weak self] so the implicit self capture from
// accessing store.* doesn't pin self for the lifetime of an
@@ -270,6 +342,12 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
// Track currency so the menubar title catches up immediately on
// currency switch instead of waiting for the next 30s payload tick.
_ = self.store.currency
+ // Track the live-quota state too so the flame icon re-tints on
+ // every subscription / codex usage update, not just every 30s.
+ _ = self.store.subscription
+ _ = self.store.subscriptionLoadState
+ _ = self.store.codexUsage
+ _ = self.store.codexLoadState
} onChange: { [weak self] in
DispatchQueue.main.async {
guard let self else { return }
@@ -319,6 +397,15 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
/// stubborn gap between icon and text on some macOS releases (the icon hugs the left edge
/// of the status item, the title starts at its own baseline), so we inline both so they
/// flow as one typographic unit with a single, controllable gap.
+ private static func flameTint(for severity: QuotaSummary.Severity) -> NSColor? {
+ switch severity {
+ case .normal: return nil // template, auto-adapt
+ case .warning: return NSColor.systemYellow // 70-90%
+ case .critical: return NSColor.systemOrange // 90-100%
+ case .danger: return NSColor.systemRed // 100%+
+ }
+ }
+
private func refreshStatusButton() {
guard let button = statusItem.button else { return }
// Skip while the popover is anchored to this button. Rewriting the
@@ -334,10 +421,22 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
button.imagePosition = .noImage
let font = NSFont.monospacedDigitSystemFont(ofSize: menubarTitleFontSize, weight: .medium)
- let flameConfig = NSImage.SymbolConfiguration(pointSize: menubarTitleFontSize, weight: .medium)
+ let baseConfig = NSImage.SymbolConfiguration(pointSize: menubarTitleFontSize, weight: .medium)
+ // Tint the flame based on the worst-affected connected provider's quota.
+ // Normal (<70%) keeps the template (auto white-on-dark / black-on-light);
+ // warning/critical/danger override with a fixed palette color so the
+ // user gets a glanceable signal even when the menu bar is busy.
+ let aggregate = store.aggregateQuotaStatus
+ let tint = Self.flameTint(for: aggregate.severity)
+ let flameConfig: NSImage.SymbolConfiguration
+ if let tint {
+ flameConfig = baseConfig.applying(.init(paletteColors: [tint]))
+ } else {
+ flameConfig = baseConfig
+ }
let flame = NSImage(systemSymbolName: "flame.fill", accessibilityDescription: "CodeBurn")?
.withSymbolConfiguration(flameConfig)
- flame?.isTemplate = true
+ flame?.isTemplate = (tint == nil)
let attachment = NSTextAttachment()
attachment.image = flame
@@ -393,14 +492,40 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
if popover.isShown {
popover.performClose(sender)
} else {
- NSApp.activate(ignoringOtherApps: true)
+ // Do NOT call NSApp.activate(ignoringOtherApps:) here. On macOS
+ // Tahoe an accessory app activating while a popover anchors to
+ // its NSStatusItem can race with the system menu bar's auto-hide
+ // logic and leave the user's apple-menu hidden until the popover
+ // closes. The popover's window takes keyboard focus on its own
+ // via makeKeyAndOrderFront, which is enough for keystrokes to
+ // reach the SwiftUI content.
popover.show(relativeTo: button.bounds, of: button, preferredEdge: .minY)
- popover.contentViewController?.view.window?.makeKey()
+ if let window = popover.contentViewController?.view.window {
+ // Pin the popover's window above the status-bar layer but tag
+ // it as auxiliary so macOS Tahoe does not treat it as an
+ // app-level focus event — that's what was hiding the system
+ // menu bar (Terminal's apple-logo / Shell / Edit / View row)
+ // every time the popover opened.
+ window.level = .statusBar
+ window.collectionBehavior.insert(.fullScreenAuxiliary)
+ window.collectionBehavior.insert(.canJoinAllSpaces)
+ window.makeKeyAndOrderFront(nil)
+ }
}
}
private func showContextMenu(from button: NSStatusBarButton) {
let menu = NSMenu()
+
+ let settingsItem = NSMenuItem(title: "Settings…", action: #selector(openSettings), keyEquivalent: ",")
+ settingsItem.target = self
+ menu.addItem(settingsItem)
+
+ let refreshNow = NSMenuItem(title: "Refresh Now", action: #selector(refreshNowAction), keyEquivalent: "r")
+ refreshNow.target = self
+ menu.addItem(refreshNow)
+
+ menu.addItem(.separator())
let updateItem = NSMenuItem(title: "Check for Updates", action: #selector(checkForUpdates), keyEquivalent: "")
updateItem.target = self
menu.addItem(updateItem)
@@ -408,11 +533,48 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
let quitItem = NSMenuItem(title: "Quit CodeBurn", action: #selector(quitApp), keyEquivalent: "q")
quitItem.target = self
menu.addItem(quitItem)
+
statusItem.menu = menu
button.performClick(nil)
statusItem.menu = nil
}
+ private var settingsWindowController: NSWindowController?
+
+ @objc private func openSettings() {
+ // Accessory-policy apps (no Dock icon, no main menu) don't get the
+ // SwiftUI Settings scene wired into the responder chain reliably, so
+ // the standard `showSettingsWindow:` selector silently no-ops. We host
+ // the SwiftUI view in our own NSWindowController instead.
+ if let controller = settingsWindowController {
+ NSApp.activate(ignoringOtherApps: true)
+ controller.window?.makeKeyAndOrderFront(nil)
+ return
+ }
+
+ let hosting = NSHostingController(
+ rootView: SettingsView().environment(store)
+ )
+ let window = NSWindow(
+ contentRect: NSRect(x: 0, y: 0, width: 520, height: 380),
+ styleMask: [.titled, .closable, .miniaturizable],
+ backing: .buffered,
+ defer: false
+ )
+ window.title = "CodeBurn Settings"
+ window.contentViewController = hosting
+ window.center()
+ window.isReleasedWhenClosed = false
+ let controller = NSWindowController(window: window)
+ settingsWindowController = controller
+ NSApp.activate(ignoringOtherApps: true)
+ controller.showWindow(nil)
+ }
+
+ @objc private func refreshNowAction() {
+ refreshSubscriptionNow()
+ }
+
private func codeburnAlertIcon() -> NSImage? {
let config = NSImage.SymbolConfiguration(pointSize: 32, weight: .medium)
guard let symbol = NSImage(systemSymbolName: "flame.fill", accessibilityDescription: "CodeBurn")?
diff --git a/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift b/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift
new file mode 100644
index 0000000..544eb5b
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift
@@ -0,0 +1,398 @@
+import Foundation
+import Security
+
+/// Owns the lifecycle of Claude OAuth credentials end-to-end. Replaces
+/// SubscriptionClient + SubscriptionRefreshGate with a model that mirrors
+/// CodexBar's proven pattern:
+///
+/// 1. **Bootstrap is user-initiated.** The first read of Claude's keychain
+/// entry — which triggers a macOS keychain prompt — only happens when
+/// the user clicks "Connect" in the Plan tab. The menubar does not
+/// touch Claude's keychain on launch.
+///
+/// 2. **We persist refreshed tokens.** When Anthropic returns a new access
+/// token (or a rotated refresh token) we write it back to our own keychain
+/// item. The next fetch uses it directly — one API call per cycle, not
+/// three. This was the root cause of "connect once, never updates": the
+/// previous code refreshed on every tick because the new token was
+/// thrown away.
+///
+/// 3. **Our own keychain item, not Claude's.** We bootstrap from Claude's
+/// entry once, then maintain `com.codeburn.menubar.claude.oauth.v1` in
+/// the user's keychain. Subsequent reads do not prompt because we own
+/// that item's ACL.
+///
+/// 4. **In-memory cache (5 min)** so back-to-back reads in the same refresh
+/// cycle don't even hit the keychain.
+enum ClaudeCredentialStore {
+ private static let bootstrapCompletedKey = "codeburn.claude.bootstrapCompleted"
+ private static let inMemoryTTL: TimeInterval = 5 * 60
+ private static let proactiveRefreshMargin: TimeInterval = 5 * 60
+
+ private static let oauthClientID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e"
+ private static let refreshURL = URL(string: "https://platform.claude.com/v1/oauth/token")!
+
+ private static let claudeKeychainService = "Claude Code-credentials"
+ private static let credentialsRelativePath = ".claude/.credentials.json"
+ private static let maxCredentialBytes = 64 * 1024
+
+ /// Local cache file. Stored under Application Support with 0600 permissions
+ /// so only the current user can read it. We deliberately do NOT use the
+ /// macOS Keychain for our own cache: keychain ACLs are bound to the binary
+ /// code signature, so reading our own item triggers a prompt every time the
+ /// binary changes (debug rebuilds, app updates with re-signing). Putting the
+ /// cache in a plain file means the only Keychain prompt our user ever sees
+ /// is the initial Connect read of Claude Code's own keychain entry.
+ /// Threat model: same as ~/.claude/.credentials.json (also plaintext).
+ private static let cacheFilename = "claude-credentials.v1.json"
+
+ private static let lock = NSLock()
+ private nonisolated(unsafe) static var memoryCache: CachedRecord?
+
+ struct CachedRecord {
+ let record: CredentialRecord
+ let cachedAt: Date
+
+ var isFresh: Bool { Date().timeIntervalSince(cachedAt) < ClaudeCredentialStore.inMemoryTTL }
+ }
+
+ struct CredentialRecord: Codable, Equatable {
+ let accessToken: String
+ let refreshToken: String?
+ let expiresAt: Date?
+ let rateLimitTier: String?
+ }
+
+ enum StoreError: Error, LocalizedError {
+ case bootstrapNoSource // neither file nor Claude keychain has credentials
+ case bootstrapDecodeFailed
+ case keychainWriteFailed(OSStatus)
+ case keychainReadFailed(OSStatus)
+ case refreshHTTPError(Int, String?)
+ case refreshNetworkError(Error)
+ case refreshDecodeFailed
+ case noRefreshToken
+
+ var errorDescription: String? {
+ switch self {
+ case .bootstrapNoSource:
+ return "No Claude credentials found. Sign in with `claude` first."
+ case .bootstrapDecodeFailed:
+ return "Claude credentials are malformed."
+ case let .keychainWriteFailed(status):
+ return "Could not write to keychain (status \(status))."
+ case let .keychainReadFailed(status):
+ return "Could not read from keychain (status \(status))."
+ case let .refreshHTTPError(code, body):
+ return "Token refresh failed (HTTP \(code))\(body.map { ": \($0)" } ?? "")"
+ case let .refreshNetworkError(err):
+ return "Token refresh network error: \(err.localizedDescription)"
+ case .refreshDecodeFailed:
+ return "Token refresh response was malformed."
+ case .noRefreshToken:
+ return "No refresh token available; reconnect required."
+ }
+ }
+
+ /// True when the failure means the user must re-authenticate (re-run
+ /// `claude` or click Reconnect). Used by the UI to distinguish between
+ /// "try again later" and "you must act".
+ var isTerminal: Bool {
+ if case let .refreshHTTPError(code, body) = self, code >= 400, code < 500 {
+ let lower = body?.lowercased() ?? ""
+ if lower.contains("invalid_grant") || lower.contains("invalid_client") || lower.contains("invalid_token") {
+ return true
+ }
+ return true // 4xx other than rate-limiting is terminal too
+ }
+ if case .noRefreshToken = self { return true }
+ return false
+ }
+ }
+
+ // MARK: - Bootstrap state
+
+ /// True once the user has explicitly connected (clicked Connect in the Plan
+ /// tab AND we successfully read their credentials). Persists across launches.
+ static var isBootstrapCompleted: Bool {
+ get { UserDefaults.standard.bool(forKey: bootstrapCompletedKey) }
+ set { UserDefaults.standard.set(newValue, forKey: bootstrapCompletedKey) }
+ }
+
+ /// Reset bootstrap state. Used when the user explicitly wants to disconnect
+ /// or when the refresh token has been revoked terminally.
+ static func resetBootstrap() {
+ lock.withLock { memoryCache = nil }
+ deleteOurCache()
+ isBootstrapCompleted = false
+ }
+
+ // MARK: - Public API
+
+ /// User-initiated entry point. Reads from Claude's source (PROMPTS for the
+ /// keychain on first use), writes to our own keychain item, marks bootstrap
+ /// as completed.
+ @discardableResult
+ static func bootstrap() throws -> CredentialRecord {
+ let record = try readClaudeSource()
+ try writeOurCache(record: record)
+ isBootstrapCompleted = true
+ cacheInMemory(record)
+ return record
+ }
+
+ /// Silent read for background refresh cycles. Reads only from our cache /
+ /// keychain item — never prompts. Returns nil if not bootstrapped.
+ static func currentRecord() throws -> CredentialRecord? {
+ guard isBootstrapCompleted else { return nil }
+ // Honour the in-memory TTL: a stale cached record can mask a token
+ // that another process (e.g. claude /login again) has just rotated
+ // on disk. Re-read the file when the cache passes the TTL.
+ if let cached = lock.withLock({ memoryCache }), cached.isFresh {
+ return cached.record
+ }
+ if let stored = try readOurCache() {
+ cacheInMemory(stored)
+ return stored
+ }
+ // Bootstrap flag is set but our cache file is missing — most likely
+ // a fresh install resetting state, or the user manually deleted the
+ // file. Force re-bootstrap on next user action.
+ isBootstrapCompleted = false
+ return nil
+ }
+
+ /// Returns a token guaranteed to be either fresh or just-refreshed. If the
+ /// current token expires within `proactiveRefreshMargin`, refreshes ahead
+ /// of time and persists the new token.
+ static func freshAccessToken() async throws -> String? {
+ guard let record = try currentRecord() else { return nil }
+ if let expiresAt = record.expiresAt, expiresAt.timeIntervalSinceNow < proactiveRefreshMargin {
+ let updated = try await refreshAndPersist(record: record)
+ return updated.accessToken
+ }
+ return record.accessToken
+ }
+
+ /// Called after an explicit 401. Refreshes, persists, returns the new token.
+ static func refreshAfter401() async throws -> String {
+ guard let record = try currentRecord() else { throw StoreError.noRefreshToken }
+ let updated = try await refreshAndPersist(record: record)
+ return updated.accessToken
+ }
+
+ static func subscriptionTier() throws -> String? {
+ try currentRecord()?.rateLimitTier
+ }
+
+ // MARK: - Bootstrap source
+
+ private static func readClaudeSource() throws -> CredentialRecord {
+ if let fromFile = try? readClaudeFile() { return fromFile }
+ if let fromKeychain = try readClaudeKeychain() { return fromKeychain }
+ throw StoreError.bootstrapNoSource
+ }
+
+ private static func readClaudeFile() throws -> CredentialRecord? {
+ let url = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(credentialsRelativePath)
+ guard FileManager.default.fileExists(atPath: url.path) else { return nil }
+ let data = try SafeFile.read(from: url.path, maxBytes: maxCredentialBytes)
+ return try parseClaudeBlob(data: sanitizeClaudeBlob(data))
+ }
+
+ /// Reads Claude's keychain credentials. The CLI has historically written
+ /// entries under different account names — older versions used "agentseal"
+ /// (a hardcoded company-style identifier) while Claude Code 2.1.x writes
+ /// under `$USER` (NSUserName()). After a user re-runs `/login`, both
+ /// entries can coexist and `SecItemCopyMatching` with kSecMatchLimitOne
+ /// often returns the older stale one. We try the user-keyed entry first
+ /// (the modern format), then fall back to the unscoped query for older
+ /// installations.
+ private static func readClaudeKeychain() throws -> CredentialRecord? {
+ if let record = try readClaudeKeychain(account: NSUserName()) {
+ return record
+ }
+ return try readClaudeKeychain(account: nil)
+ }
+
+ private static func readClaudeKeychain(account: String?) throws -> CredentialRecord? {
+ var query: [String: Any] = [
+ kSecClass as String: kSecClassGenericPassword,
+ kSecAttrService as String: claudeKeychainService,
+ kSecMatchLimit as String: kSecMatchLimitOne,
+ kSecReturnData as String: true,
+ ]
+ if let account { query[kSecAttrAccount as String] = account }
+ var result: CFTypeRef?
+ let status = SecItemCopyMatching(query as CFDictionary, &result)
+ if status == errSecItemNotFound { return nil }
+ guard status == errSecSuccess, let data = result as? Data else {
+ throw StoreError.keychainReadFailed(status)
+ }
+ return try parseClaudeBlob(data: sanitizeClaudeBlob(data))
+ }
+
+ /// Claude Code's keychain writer line-wraps long values (newline + leading
+ /// spaces) mid-token, producing JSON with literal control chars inside string
+ /// values. Strip those plus pretty-print indentation between fields so the
+ /// JSON parser succeeds.
+ private static func sanitizeClaudeBlob(_ data: Data) -> Data {
+ guard var s = String(data: data, encoding: .utf8) else { return data }
+ s = s.replacingOccurrences(of: "\r", with: "")
+ if let regex = try? NSRegularExpression(pattern: "\\n[ \\t]*", options: []) {
+ let range = NSRange(s.startIndex.. CredentialRecord {
+ struct Root: Decodable { let claudeAiOauth: OAuth? }
+ struct OAuth: Decodable {
+ let accessToken: String?
+ let refreshToken: String?
+ let expiresAt: Double?
+ let rateLimitTier: String?
+ }
+ do {
+ let root = try JSONDecoder().decode(Root.self, from: data)
+ guard let oauth = root.claudeAiOauth,
+ let token = oauth.accessToken?.trimmingCharacters(in: .whitespacesAndNewlines),
+ !token.isEmpty
+ else { throw StoreError.bootstrapDecodeFailed }
+ return CredentialRecord(
+ accessToken: token,
+ refreshToken: oauth.refreshToken,
+ expiresAt: oauth.expiresAt.map { Date(timeIntervalSince1970: $0 / 1000.0) },
+ rateLimitTier: oauth.rateLimitTier
+ )
+ } catch {
+ throw StoreError.bootstrapDecodeFailed
+ }
+ }
+
+ // MARK: - Local cache file (no keychain involvement)
+
+ private static func cacheFileURL() -> URL {
+ let support = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first
+ ?? FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("Library/Application Support")
+ return support
+ .appendingPathComponent("CodeBurn", isDirectory: true)
+ .appendingPathComponent(cacheFilename)
+ }
+
+ private static func readOurCache() throws -> CredentialRecord? {
+ let url = cacheFileURL()
+ guard FileManager.default.fileExists(atPath: url.path) else { return nil }
+ let data = try Data(contentsOf: url)
+ return try? JSONDecoder().decode(CredentialRecord.self, from: data)
+ }
+
+ private static func writeOurCache(record: CredentialRecord) throws {
+ let url = cacheFileURL()
+ let dir = url.deletingLastPathComponent()
+ try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true, attributes: nil)
+ let data = try JSONEncoder().encode(record)
+ // Atomic temp-rename so a crash mid-write cannot leave a half-file.
+ let tmp = url.appendingPathExtension("tmp-\(UUID().uuidString.prefix(8))")
+ try data.write(to: tmp)
+ // 0600 — owner read/write only. Mirrors ~/.claude/.credentials.json's
+ // permission posture; nothing extra to protect since this is just a
+ // cached copy of credentials the user already has on disk in cleartext.
+ try? FileManager.default.setAttributes([.posixPermissions: NSNumber(value: Int16(0o600))], ofItemAtPath: tmp.path)
+ if FileManager.default.fileExists(atPath: url.path) {
+ _ = try FileManager.default.replaceItemAt(url, withItemAt: tmp)
+ } else {
+ try FileManager.default.moveItem(at: tmp, to: url)
+ }
+ }
+
+ private static func deleteOurCache() {
+ try? FileManager.default.removeItem(at: cacheFileURL())
+ }
+
+ private static func cacheInMemory(_ record: CredentialRecord) {
+ lock.withLock { memoryCache = CachedRecord(record: record, cachedAt: Date()) }
+ }
+
+ // MARK: - Refresh
+
+ private static func refreshAndPersist(record: CredentialRecord) async throws -> CredentialRecord {
+ guard let refreshToken = record.refreshToken, !refreshToken.isEmpty else {
+ throw StoreError.noRefreshToken
+ }
+
+ var request = URLRequest(url: refreshURL)
+ request.httpMethod = "POST"
+ request.timeoutInterval = 30
+ request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
+ request.setValue("application/json", forHTTPHeaderField: "Accept")
+ var components = URLComponents()
+ components.queryItems = [
+ URLQueryItem(name: "grant_type", value: "refresh_token"),
+ URLQueryItem(name: "refresh_token", value: refreshToken),
+ URLQueryItem(name: "client_id", value: oauthClientID),
+ ]
+ request.httpBody = (components.percentEncodedQuery ?? "").data(using: .utf8)
+
+ let data: Data
+ let response: URLResponse
+ do {
+ (data, response) = try await URLSession.shared.data(for: request)
+ } catch {
+ throw StoreError.refreshNetworkError(error)
+ }
+ guard let http = response as? HTTPURLResponse else {
+ throw StoreError.refreshHTTPError(-1, nil)
+ }
+ guard http.statusCode == 200 else {
+ let body = String(data: data, encoding: .utf8)
+ throw StoreError.refreshHTTPError(http.statusCode, body)
+ }
+
+ struct RefreshResponse: Decodable {
+ let accessToken: String
+ let refreshToken: String?
+ let expiresIn: Int?
+ enum CodingKeys: String, CodingKey {
+ case accessToken = "access_token"
+ case refreshToken = "refresh_token"
+ case expiresIn = "expires_in"
+ }
+ }
+ guard let decoded = try? JSONDecoder().decode(RefreshResponse.self, from: data) else {
+ throw StoreError.refreshDecodeFailed
+ }
+
+ // Anthropic may rotate the refresh token. If it did, the OLD one is
+ // already invalid server-side — discarding the new one would lock
+ // the user out permanently. So we cache the new record in memory
+ // BEFORE attempting the keychain write, and if the write fails we
+ // still return the new record (memory cache will serve subsequent
+ // calls inside the 5-min TTL while we keep retrying the persist).
+ let updated = CredentialRecord(
+ accessToken: decoded.accessToken,
+ refreshToken: decoded.refreshToken ?? record.refreshToken,
+ expiresAt: decoded.expiresIn.map { Date().addingTimeInterval(TimeInterval($0)) } ?? record.expiresAt,
+ rateLimitTier: record.rateLimitTier
+ )
+ cacheInMemory(updated)
+ do {
+ try writeOurCache(record: updated)
+ } catch {
+ // Best effort — surface to logs but do not abandon the rotated
+ // token. Next refresh will retry persistence; UI will continue
+ // working from the in-memory cache.
+ NSLog("CodeBurn: cache write failed during refresh rotation: %@", String(describing: error))
+ }
+ return updated
+ }
+}
+
+private extension NSLock {
+ func withLock(_ body: () throws -> T) rethrows -> T {
+ lock(); defer { unlock() }
+ return try body()
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift b/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift
new file mode 100644
index 0000000..cd3ddb0
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift
@@ -0,0 +1,234 @@
+import Foundation
+
+/// Orchestrates "given a credential record, fetch live quota from Anthropic
+/// and surface a result the UI can render". All token persistence lives in
+/// `ClaudeCredentialStore`; the only state this service holds is the
+/// 429 backoff window for the usage endpoint.
+enum ClaudeSubscriptionService {
+ private static let usageURL = URL(string: "https://api.anthropic.com/api/oauth/usage")!
+ private static let betaHeader = "oauth-2025-04-20"
+ private static let userAgent = "claude-code/2.1.0"
+ private static let usageBlockedUntilKey = "codeburn.claude.usage.blockedUntil"
+
+ enum FetchError: Error, LocalizedError {
+ case notBootstrapped
+ case bootstrapFailed(ClaudeCredentialStore.StoreError)
+ case rateLimited(retryAt: Date)
+ case usageHTTPError(Int, String?)
+ case usageDecodeFailed
+ case network(Error)
+ case credential(ClaudeCredentialStore.StoreError)
+
+ var errorDescription: String? {
+ switch self {
+ case .notBootstrapped:
+ return "Connect Claude in the Plan tab to start tracking quota."
+ case let .bootstrapFailed(err):
+ return err.errorDescription
+ case let .rateLimited(retryAt):
+ let f = RelativeDateTimeFormatter()
+ f.unitsStyle = .short
+ return "Anthropic rate-limited the quota endpoint. Retrying \(f.localizedString(for: retryAt, relativeTo: Date()))."
+ case let .usageHTTPError(code, body):
+ return "Quota fetch failed (HTTP \(code))\(body.map { ": \($0)" } ?? "")"
+ case .usageDecodeFailed:
+ return "Quota response was malformed."
+ case let .network(err):
+ return "Network error: \(err.localizedDescription)"
+ case let .credential(err):
+ return err.errorDescription
+ }
+ }
+
+ /// True when the user must take action (re-run claude/login or click
+ /// Reconnect). Drives the red "Reconnect" UI path.
+ var isTerminal: Bool {
+ if case let .credential(err) = self { return err.isTerminal }
+ if case let .bootstrapFailed(err) = self { return err.isTerminal }
+ return false
+ }
+
+ var rateLimitRetryAt: Date? {
+ if case let .rateLimited(retryAt) = self { return retryAt }
+ return nil
+ }
+ }
+
+ // MARK: - Public API
+
+ /// User-initiated. Reads Claude's keychain (PROMPTS), copies to our keychain,
+ /// then fetches usage. Idempotent — safe to call again to "reconnect".
+ static func bootstrap() async throws -> SubscriptionUsage {
+ let record: ClaudeCredentialStore.CredentialRecord
+ do {
+ record = try ClaudeCredentialStore.bootstrap()
+ } catch let err as ClaudeCredentialStore.StoreError {
+ throw FetchError.bootstrapFailed(err)
+ }
+ return try await fetchWithRecord(initial: record)
+ }
+
+ /// Background refresh. Never prompts. Returns nil if not yet bootstrapped.
+ static func refreshIfBootstrapped() async throws -> SubscriptionUsage? {
+ guard ClaudeCredentialStore.isBootstrapCompleted else {
+ return nil
+ }
+
+ // Honour an outstanding rate-limit window — we recorded a 429 recently
+ // and Anthropic told us when to come back.
+ if let until = usageBlockedUntil(), until > Date() {
+ throw FetchError.rateLimited(retryAt: until)
+ }
+
+ do {
+ let token = try await ClaudeCredentialStore.freshAccessToken()
+ guard let token else { throw FetchError.notBootstrapped }
+ return try await fetch(token: token, allowOne401Recovery: true)
+ } catch let err as ClaudeCredentialStore.StoreError {
+ throw FetchError.credential(err)
+ } catch let err as FetchError {
+ throw err
+ }
+ }
+
+ /// Reset everything — used on user-initiated disconnect.
+ static func disconnect() {
+ ClaudeCredentialStore.resetBootstrap()
+ clearUsageBlock()
+ }
+
+ // MARK: - Internal
+
+ private static func fetchWithRecord(initial record: ClaudeCredentialStore.CredentialRecord) async throws -> SubscriptionUsage {
+ do {
+ return try await fetch(token: record.accessToken, allowOne401Recovery: true)
+ } catch let err as FetchError {
+ throw err
+ } catch let err as ClaudeCredentialStore.StoreError {
+ throw FetchError.credential(err)
+ }
+ }
+
+ private static func fetch(token: String, allowOne401Recovery: Bool) async throws -> SubscriptionUsage {
+ var request = URLRequest(url: usageURL)
+ request.httpMethod = "GET"
+ request.timeoutInterval = 30
+ request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
+ request.setValue("application/json", forHTTPHeaderField: "Accept")
+ request.setValue(betaHeader, forHTTPHeaderField: "anthropic-beta")
+ request.setValue(userAgent, forHTTPHeaderField: "User-Agent")
+
+ let data: Data
+ let response: URLResponse
+ do {
+ (data, response) = try await URLSession.shared.data(for: request)
+ } catch {
+ throw FetchError.network(error)
+ }
+ guard let http = response as? HTTPURLResponse else {
+ throw FetchError.usageHTTPError(-1, nil)
+ }
+
+ switch http.statusCode {
+ case 200:
+ clearUsageBlock()
+ do {
+ let decoded = try JSONDecoder().decode(UsageResponse.self, from: data)
+ let tier = try ClaudeCredentialStore.subscriptionTier()
+ return mapResponse(decoded, rawTier: tier)
+ } catch {
+ throw FetchError.usageDecodeFailed
+ }
+ case 401:
+ if allowOne401Recovery {
+ let newToken = try await ClaudeCredentialStore.refreshAfter401()
+ return try await fetch(token: newToken, allowOne401Recovery: false)
+ }
+ throw FetchError.usageHTTPError(401, String(data: data, encoding: .utf8))
+ case 429:
+ let body = String(data: data, encoding: .utf8)
+ let retryAfter = parseRetryAfter(body: body)
+ let until = recordUsageRateLimit(retryAfterSeconds: retryAfter)
+ throw FetchError.rateLimited(retryAt: until)
+ default:
+ throw FetchError.usageHTTPError(http.statusCode, String(data: data, encoding: .utf8))
+ }
+ }
+
+ // MARK: - 429 backoff
+
+ private static func usageBlockedUntil() -> Date? {
+ UserDefaults.standard.object(forKey: usageBlockedUntilKey) as? Date
+ }
+
+ private static func clearUsageBlock() {
+ UserDefaults.standard.removeObject(forKey: usageBlockedUntilKey)
+ }
+
+ @discardableResult
+ private static func recordUsageRateLimit(retryAfterSeconds: Int?) -> Date {
+ let seconds = max(retryAfterSeconds ?? 300, 60)
+ let until = Date().addingTimeInterval(TimeInterval(seconds))
+ UserDefaults.standard.set(until, forKey: usageBlockedUntilKey)
+ return until
+ }
+
+ private static func parseRetryAfter(body: String?) -> Int? {
+ guard let body, let data = body.data(using: .utf8) else { return nil }
+ if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
+ if let n = json["retry_after"] as? Int { return n }
+ if let s = json["retry_after"] as? String, let n = Int(s) { return n }
+ }
+ return nil
+ }
+
+ // MARK: - Response mapping
+
+ private struct UsageResponse: Decodable {
+ let fiveHour: Window?
+ let sevenDay: Window?
+ let sevenDayOpus: Window?
+ let sevenDaySonnet: Window?
+
+ enum CodingKeys: String, CodingKey {
+ case fiveHour = "five_hour"
+ case sevenDay = "seven_day"
+ case sevenDayOpus = "seven_day_opus"
+ case sevenDaySonnet = "seven_day_sonnet"
+ }
+ }
+
+ private struct Window: Decodable {
+ let utilization: Double?
+ let resetsAt: String?
+ enum CodingKeys: String, CodingKey {
+ case utilization
+ case resetsAt = "resets_at"
+ }
+ }
+
+ private static func mapResponse(_ r: UsageResponse, rawTier: String?) -> SubscriptionUsage {
+ SubscriptionUsage(
+ tier: SubscriptionUsage.tier(from: rawTier),
+ rawTier: rawTier,
+ fiveHourPercent: r.fiveHour?.utilization,
+ fiveHourResetsAt: parseDate(r.fiveHour?.resetsAt),
+ sevenDayPercent: r.sevenDay?.utilization,
+ sevenDayResetsAt: parseDate(r.sevenDay?.resetsAt),
+ sevenDayOpusPercent: r.sevenDayOpus?.utilization,
+ sevenDayOpusResetsAt: parseDate(r.sevenDayOpus?.resetsAt),
+ sevenDaySonnetPercent: r.sevenDaySonnet?.utilization,
+ sevenDaySonnetResetsAt: parseDate(r.sevenDaySonnet?.resetsAt),
+ fetchedAt: Date()
+ )
+ }
+
+ private static func parseDate(_ s: String?) -> Date? {
+ guard let s, !s.isEmpty else { return nil }
+ let f = ISO8601DateFormatter()
+ f.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
+ if let d = f.date(from: s) { return d }
+ f.formatOptions = [.withInternetDateTime]
+ return f.date(from: s)
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift b/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift
new file mode 100644
index 0000000..15441b5
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift
@@ -0,0 +1,291 @@
+import Foundation
+
+/// Owns the Codex (ChatGPT-mode) OAuth credential lifecycle. Mirrors
+/// ClaudeCredentialStore but reads from ~/.codex/auth.json — Codex CLI
+/// already stores its tokens as plaintext JSON in the home directory, so
+/// no keychain prompt is involved on bootstrap. After the user clicks
+/// Connect we cache a copy under ~/Library/Application Support/CodeBurn so
+/// we keep using rotated tokens after refresh.
+enum CodexCredentialStore {
+ private static let bootstrapCompletedKey = "codeburn.codex.bootstrapCompleted"
+ private static let inMemoryTTL: TimeInterval = 5 * 60
+ private static let proactiveRefreshMargin: TimeInterval = 5 * 60
+
+ private static let oauthClientID = "app_EMoamEEZ73f0CkXaXp7hrann"
+ private static let refreshURL = URL(string: "https://auth.openai.com/oauth/token")!
+ private static let codexAuthPath = ".codex/auth.json"
+ private static let maxCredentialBytes = 64 * 1024
+
+ private static let cacheFilename = "codex-credentials.v1.json"
+
+ private static let lock = NSLock()
+ private nonisolated(unsafe) static var memoryCache: CachedRecord?
+
+ struct CachedRecord {
+ let record: CredentialRecord
+ let cachedAt: Date
+
+ var isFresh: Bool { Date().timeIntervalSince(cachedAt) < CodexCredentialStore.inMemoryTTL }
+ }
+
+ struct CredentialRecord: Codable, Equatable {
+ let accessToken: String
+ let refreshToken: String
+ let idToken: String?
+ let accountId: String?
+ let expiresAt: Date?
+ }
+
+ enum StoreError: Error, LocalizedError {
+ case bootstrapNoSource
+ case bootstrapDecodeFailed
+ case bootstrapNotChatGPT // user is on API-key mode; we need ChatGPT mode for quota
+ case fileWriteFailed(String)
+ case refreshHTTPError(Int, String?)
+ case refreshNetworkError(Error)
+ case refreshDecodeFailed
+ case noRefreshToken
+
+ var errorDescription: String? {
+ switch self {
+ case .bootstrapNoSource:
+ return "No Codex credentials found at ~/.codex/auth.json. Run `codex` to sign in."
+ case .bootstrapDecodeFailed:
+ return "Codex credentials are malformed."
+ case .bootstrapNotChatGPT:
+ return "Codex is in API-key mode; live quota tracking is only available for ChatGPT subscriptions."
+ case let .fileWriteFailed(message):
+ return "Could not write to local cache: \(message)"
+ case let .refreshHTTPError(code, body):
+ return "Codex token refresh failed (HTTP \(code))\(body.map { ": \($0)" } ?? "")"
+ case let .refreshNetworkError(err):
+ return "Codex token refresh network error: \(err.localizedDescription)"
+ case .refreshDecodeFailed:
+ return "Codex token refresh response was malformed."
+ case .noRefreshToken:
+ return "No refresh token available; reconnect required."
+ }
+ }
+
+ /// True when the user must take action: rerun `codex` to re-authenticate
+ /// or switch from API-key to ChatGPT mode. Drives the red Reconnect path.
+ var isTerminal: Bool {
+ if case let .refreshHTTPError(code, body) = self, code >= 400, code < 500 {
+ let lower = body?.lowercased() ?? ""
+ if lower.contains("refresh_token_expired") ||
+ lower.contains("refresh_token_reused") ||
+ lower.contains("refresh_token_invalidated") ||
+ lower.contains("invalid_grant")
+ {
+ return true
+ }
+ return true
+ }
+ switch self {
+ case .noRefreshToken, .bootstrapNotChatGPT, .bootstrapNoSource: return true
+ default: return false
+ }
+ }
+ }
+
+ // MARK: - Bootstrap state
+
+ static var isBootstrapCompleted: Bool {
+ get { UserDefaults.standard.bool(forKey: bootstrapCompletedKey) }
+ set { UserDefaults.standard.set(newValue, forKey: bootstrapCompletedKey) }
+ }
+
+ static func resetBootstrap() {
+ lock.withLock { memoryCache = nil }
+ deleteOurCache()
+ isBootstrapCompleted = false
+ }
+
+ // MARK: - Public API
+
+ @discardableResult
+ static func bootstrap() throws -> CredentialRecord {
+ let record = try readCodexAuth()
+ try writeOurCache(record: record)
+ isBootstrapCompleted = true
+ cacheInMemory(record)
+ return record
+ }
+
+ static func currentRecord() throws -> CredentialRecord? {
+ guard isBootstrapCompleted else { return nil }
+ if let cached = lock.withLock({ memoryCache }), cached.isFresh {
+ return cached.record
+ }
+ if let stored = try readOurCache() {
+ cacheInMemory(stored)
+ return stored
+ }
+ isBootstrapCompleted = false
+ return nil
+ }
+
+ static func freshAccessToken() async throws -> String? {
+ guard let record = try currentRecord() else { return nil }
+ if let expiresAt = record.expiresAt, expiresAt.timeIntervalSinceNow < proactiveRefreshMargin {
+ let updated = try await refreshAndPersist(record: record)
+ return updated.accessToken
+ }
+ return record.accessToken
+ }
+
+ static func refreshAfter401() async throws -> String {
+ guard let record = try currentRecord() else { throw StoreError.noRefreshToken }
+ let updated = try await refreshAndPersist(record: record)
+ return updated.accessToken
+ }
+
+ // MARK: - Bootstrap source: ~/.codex/auth.json
+
+ private static func readCodexAuth() throws -> CredentialRecord {
+ let url = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(codexAuthPath)
+ guard FileManager.default.fileExists(atPath: url.path) else {
+ throw StoreError.bootstrapNoSource
+ }
+ let data = try SafeFile.read(from: url.path, maxBytes: maxCredentialBytes)
+ struct Root: Decodable {
+ let auth_mode: String?
+ let tokens: Tokens?
+ }
+ struct Tokens: Decodable {
+ let access_token: String?
+ let refresh_token: String?
+ let id_token: String?
+ let account_id: String?
+ }
+ do {
+ let root = try JSONDecoder().decode(Root.self, from: data)
+ // Live quota is only meaningful for ChatGPT-mode auth. API-key users
+ // have a different billing surface (/v1/usage) which we do not yet
+ // implement here.
+ guard root.auth_mode == "chatgpt" else {
+ throw StoreError.bootstrapNotChatGPT
+ }
+ guard let tokens = root.tokens,
+ let access = tokens.access_token?.trimmingCharacters(in: .whitespacesAndNewlines),
+ let refresh = tokens.refresh_token?.trimmingCharacters(in: .whitespacesAndNewlines),
+ !access.isEmpty, !refresh.isEmpty
+ else {
+ throw StoreError.bootstrapDecodeFailed
+ }
+ return CredentialRecord(
+ accessToken: access,
+ refreshToken: refresh,
+ idToken: tokens.id_token,
+ accountId: tokens.account_id,
+ expiresAt: nil // Codex CLI does not record expiresAt in auth.json
+ )
+ } catch let err as StoreError {
+ throw err
+ } catch {
+ throw StoreError.bootstrapDecodeFailed
+ }
+ }
+
+ // MARK: - Local cache file
+
+ private static func cacheFileURL() -> URL {
+ let support = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first
+ ?? FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("Library/Application Support")
+ return support
+ .appendingPathComponent("CodeBurn", isDirectory: true)
+ .appendingPathComponent(cacheFilename)
+ }
+
+ private static func readOurCache() throws -> CredentialRecord? {
+ let url = cacheFileURL()
+ guard FileManager.default.fileExists(atPath: url.path) else { return nil }
+ let data = try Data(contentsOf: url)
+ return try? JSONDecoder().decode(CredentialRecord.self, from: data)
+ }
+
+ private static func writeOurCache(record: CredentialRecord) throws {
+ let url = cacheFileURL()
+ let dir = url.deletingLastPathComponent()
+ try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true, attributes: nil)
+ let data = try JSONEncoder().encode(record)
+ let tmp = url.appendingPathExtension("tmp-\(UUID().uuidString.prefix(8))")
+ do {
+ try data.write(to: tmp)
+ try? FileManager.default.setAttributes([.posixPermissions: NSNumber(value: Int16(0o600))], ofItemAtPath: tmp.path)
+ if FileManager.default.fileExists(atPath: url.path) {
+ _ = try FileManager.default.replaceItemAt(url, withItemAt: tmp)
+ } else {
+ try FileManager.default.moveItem(at: tmp, to: url)
+ }
+ } catch {
+ throw StoreError.fileWriteFailed(String(describing: error))
+ }
+ }
+
+ private static func deleteOurCache() {
+ try? FileManager.default.removeItem(at: cacheFileURL())
+ }
+
+ private static func cacheInMemory(_ record: CredentialRecord) {
+ lock.withLock { memoryCache = CachedRecord(record: record, cachedAt: Date()) }
+ }
+
+ // MARK: - Refresh
+
+ private static func refreshAndPersist(record: CredentialRecord) async throws -> CredentialRecord {
+ guard !record.refreshToken.isEmpty else { throw StoreError.noRefreshToken }
+
+ var request = URLRequest(url: refreshURL)
+ request.httpMethod = "POST"
+ request.timeoutInterval = 30
+ request.setValue("application/json", forHTTPHeaderField: "Content-Type")
+ let body: [String: String] = [
+ "client_id": oauthClientID,
+ "grant_type": "refresh_token",
+ "refresh_token": record.refreshToken,
+ "scope": "openid profile email",
+ ]
+ request.httpBody = try JSONSerialization.data(withJSONObject: body)
+
+ let data: Data
+ let response: URLResponse
+ do {
+ (data, response) = try await URLSession.shared.data(for: request)
+ } catch {
+ throw StoreError.refreshNetworkError(error)
+ }
+ guard let http = response as? HTTPURLResponse else {
+ throw StoreError.refreshHTTPError(-1, nil)
+ }
+ guard http.statusCode == 200 else {
+ let body = String(data: data, encoding: .utf8)
+ throw StoreError.refreshHTTPError(http.statusCode, body)
+ }
+
+ struct RefreshResponse: Decodable {
+ let access_token: String
+ let refresh_token: String?
+ let id_token: String?
+ let expires_in: Int?
+ }
+ guard let decoded = try? JSONDecoder().decode(RefreshResponse.self, from: data) else {
+ throw StoreError.refreshDecodeFailed
+ }
+
+ let updated = CredentialRecord(
+ accessToken: decoded.access_token,
+ refreshToken: decoded.refresh_token ?? record.refreshToken,
+ idToken: decoded.id_token ?? record.idToken,
+ accountId: record.accountId,
+ expiresAt: decoded.expires_in.map { Date().addingTimeInterval(TimeInterval($0)) } ?? record.expiresAt
+ )
+ cacheInMemory(updated)
+ do {
+ try writeOurCache(record: updated)
+ } catch {
+ NSLog("CodeBurn: codex cache write failed during refresh rotation: %@", String(describing: error))
+ }
+ return updated
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift b/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift
new file mode 100644
index 0000000..6a97bc5
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift
@@ -0,0 +1,214 @@
+import Foundation
+
+/// Mirror of ClaudeSubscriptionService for Codex (ChatGPT-mode). Hits
+/// /backend-api/wham/usage with the bearer token from CodexCredentialStore,
+/// applies an independent 429 backoff, and surfaces terminal vs transient
+/// failures to the UI.
+enum CodexSubscriptionService {
+ private static let usageURL = URL(string: "https://chatgpt.com/backend-api/wham/usage")!
+ private static let usageBlockedUntilKey = "codeburn.codex.usage.blockedUntil"
+
+ enum FetchError: Error, LocalizedError {
+ case notBootstrapped
+ case bootstrapFailed(CodexCredentialStore.StoreError)
+ case rateLimited(retryAt: Date)
+ case usageHTTPError(Int, String?)
+ case usageDecodeFailed
+ case network(Error)
+ case credential(CodexCredentialStore.StoreError)
+
+ var errorDescription: String? {
+ switch self {
+ case .notBootstrapped:
+ return "Connect Codex in Settings to start tracking quota."
+ case let .bootstrapFailed(err): return err.errorDescription
+ case let .rateLimited(retryAt):
+ let f = RelativeDateTimeFormatter()
+ f.unitsStyle = .short
+ return "ChatGPT rate-limited the quota endpoint. Retrying \(f.localizedString(for: retryAt, relativeTo: Date()))."
+ case let .usageHTTPError(code, body):
+ return "Codex quota fetch failed (HTTP \(code))\(body.map { ": \($0)" } ?? "")"
+ case .usageDecodeFailed: return "Codex quota response was malformed."
+ case let .network(err): return "Network error: \(err.localizedDescription)"
+ case let .credential(err): return err.errorDescription
+ }
+ }
+
+ var isTerminal: Bool {
+ if case let .credential(err) = self { return err.isTerminal }
+ if case let .bootstrapFailed(err) = self { return err.isTerminal }
+ return false
+ }
+
+ var rateLimitRetryAt: Date? {
+ if case let .rateLimited(retryAt) = self { return retryAt }
+ return nil
+ }
+ }
+
+ static func bootstrap() async throws -> CodexUsage {
+ let record: CodexCredentialStore.CredentialRecord
+ do {
+ record = try CodexCredentialStore.bootstrap()
+ } catch let err as CodexCredentialStore.StoreError {
+ throw FetchError.bootstrapFailed(err)
+ }
+ return try await fetchWithToken(record.accessToken, allowOne401Recovery: true)
+ }
+
+ static func refreshIfBootstrapped() async throws -> CodexUsage? {
+ guard CodexCredentialStore.isBootstrapCompleted else { return nil }
+ if let until = usageBlockedUntil(), until > Date() {
+ throw FetchError.rateLimited(retryAt: until)
+ }
+ do {
+ let token = try await CodexCredentialStore.freshAccessToken()
+ guard let token else { throw FetchError.notBootstrapped }
+ return try await fetchWithToken(token, allowOne401Recovery: true)
+ } catch let err as CodexCredentialStore.StoreError {
+ throw FetchError.credential(err)
+ }
+ }
+
+ static func disconnect() {
+ CodexCredentialStore.resetBootstrap()
+ clearUsageBlock()
+ }
+
+ private static func fetchWithToken(_ token: String, allowOne401Recovery: Bool) async throws -> CodexUsage {
+ var request = URLRequest(url: usageURL)
+ request.httpMethod = "GET"
+ request.timeoutInterval = 30
+ request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
+ request.setValue("application/json", forHTTPHeaderField: "Accept")
+ request.setValue("CodeBurn", forHTTPHeaderField: "User-Agent")
+ // chatgpt.com routes the rate_limit envelope per ChatGPT account. Without
+ // this header the response often comes back as a guest-shape document
+ // missing rate_limit entirely, which our decoder then fails on.
+ if let accountId = try? CodexCredentialStore.currentRecord()?.accountId, !accountId.isEmpty {
+ request.setValue(accountId, forHTTPHeaderField: "ChatGPT-Account-Id")
+ }
+
+ let data: Data
+ let response: URLResponse
+ do {
+ (data, response) = try await URLSession.shared.data(for: request)
+ } catch {
+ throw FetchError.network(error)
+ }
+ guard let http = response as? HTTPURLResponse else {
+ throw FetchError.usageHTTPError(-1, nil)
+ }
+
+ switch http.statusCode {
+ case 200:
+ clearUsageBlock()
+ do {
+ return try decodeUsage(data: data)
+ } catch {
+ // Do not log the response body — it's user-account data from
+ // chatgpt.com and is readable by other local users via
+ // `log stream`. The decode error type alone is enough to
+ // bisect schema drift if needed.
+ NSLog("CodeBurn: codex usage decode failed: %@", String(describing: error))
+ throw FetchError.usageDecodeFailed
+ }
+ case 401:
+ if allowOne401Recovery {
+ let newToken = try await CodexCredentialStore.refreshAfter401()
+ return try await fetchWithToken(newToken, allowOne401Recovery: false)
+ }
+ throw FetchError.usageHTTPError(401, String(data: data, encoding: .utf8))
+ case 429:
+ let until = recordUsageRateLimit(retryAfterSeconds: nil)
+ throw FetchError.rateLimited(retryAt: until)
+ default:
+ throw FetchError.usageHTTPError(http.statusCode, String(data: data, encoding: .utf8))
+ }
+ }
+
+ private struct UsageDTO: Decodable {
+ let plan_type: String?
+ let rate_limit: RateLimit?
+ let additional_rate_limits: [AdditionalLimitDTO]?
+ let credits: Credits?
+
+ struct RateLimit: Decodable {
+ let primary_window: WindowDTO?
+ let secondary_window: WindowDTO?
+ }
+ struct AdditionalLimitDTO: Decodable {
+ let limit_name: String?
+ let rate_limit: RateLimit?
+ }
+ struct WindowDTO: Decodable {
+ let used_percent: Double?
+ let reset_at: Int?
+ let limit_window_seconds: Int?
+ }
+ // chatgpt.com sometimes serializes balance as a Double ("balance": 0.0)
+ // and other times as a String ("balance": "0.00"). Mirror CodexBar's
+ // resilient decode so a schema drift on either shape doesn't blow up
+ // the whole quota fetch.
+ struct Credits: Decodable {
+ let balance: Double?
+ enum CodingKeys: String, CodingKey { case balance }
+ init(from decoder: Decoder) throws {
+ let c = try decoder.container(keyedBy: CodingKeys.self)
+ if let n = try? c.decode(Double.self, forKey: .balance) {
+ balance = n
+ } else if let s = try? c.decode(String.self, forKey: .balance), let n = Double(s) {
+ balance = n
+ } else {
+ balance = nil
+ }
+ }
+ }
+ }
+
+ private static func decodeUsage(data: Data) throws -> CodexUsage {
+ let root = try JSONDecoder().decode(UsageDTO.self, from: data)
+ let additional: [CodexUsage.AdditionalLimit] = (root.additional_rate_limits ?? []).compactMap { dto in
+ guard let name = dto.limit_name, !name.isEmpty else { return nil }
+ return CodexUsage.AdditionalLimit(
+ name: name,
+ primary: makeWindow(dto.rate_limit?.primary_window),
+ secondary: makeWindow(dto.rate_limit?.secondary_window)
+ )
+ }
+ return CodexUsage(
+ plan: CodexUsage.planType(from: root.plan_type),
+ primary: makeWindow(root.rate_limit?.primary_window),
+ secondary: makeWindow(root.rate_limit?.secondary_window),
+ additionalLimits: additional,
+ creditsBalance: root.credits?.balance,
+ fetchedAt: Date()
+ )
+ }
+
+ private static func makeWindow(_ dto: UsageDTO.WindowDTO?) -> CodexUsage.Window? {
+ guard let dto, let used = dto.used_percent, let windowSeconds = dto.limit_window_seconds else {
+ return nil
+ }
+ let resetsAt = dto.reset_at.map { Date(timeIntervalSince1970: TimeInterval($0)) }
+ return CodexUsage.Window(usedPercent: used, resetsAt: resetsAt, limitWindowSeconds: windowSeconds)
+ }
+
+ // MARK: - 429 backoff
+
+ private static func usageBlockedUntil() -> Date? {
+ UserDefaults.standard.object(forKey: usageBlockedUntilKey) as? Date
+ }
+
+ private static func clearUsageBlock() {
+ UserDefaults.standard.removeObject(forKey: usageBlockedUntilKey)
+ }
+
+ @discardableResult
+ private static func recordUsageRateLimit(retryAfterSeconds: Int?) -> Date {
+ let seconds = max(retryAfterSeconds ?? 300, 60)
+ let until = Date().addingTimeInterval(TimeInterval(seconds))
+ UserDefaults.standard.set(until, forKey: usageBlockedUntilKey)
+ return until
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/CodexUsage.swift b/mac/Sources/CodeBurnMenubar/Data/CodexUsage.swift
new file mode 100644
index 0000000..719b117
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/CodexUsage.swift
@@ -0,0 +1,98 @@
+import Foundation
+
+/// Codex (ChatGPT-mode) live quota snapshot returned by /backend-api/wham/usage.
+/// Two windows are exposed: primary (typically the 5-hour rolling window) and
+/// secondary (typically the weekly window). Window size is dynamic per
+/// account — `limitWindowSeconds` tells us whether it's a 5-hour or 7-day
+/// boundary so we can label correctly.
+struct CodexUsage: Sendable, Equatable {
+ enum PlanType: Sendable, Equatable {
+ case guest, free, go, plus, pro, prolite, freeWorkspace, team
+ case business, education, quorum, k12, enterprise, edu
+ /// Captures any plan_type string OpenAI ships that we haven't enumerated
+ /// yet, so the Settings/Plan UI can still show "Plan: " instead of
+ /// a generic "Subscription" placeholder. Preserves forward compatibility
+ /// without requiring a CodeBurn update for every new tier.
+ case unknown(String)
+
+ var displayName: String {
+ switch self {
+ case .guest: "Guest"
+ case .free: "Free"
+ case .go: "Go"
+ case .plus: "Plus"
+ case .pro: "Pro"
+ case .prolite: "Pro Lite"
+ case .freeWorkspace: "Free Workspace"
+ case .team: "Team"
+ case .business: "Business"
+ case .education: "Education"
+ case .quorum: "Quorum"
+ case .k12: "K-12"
+ case .enterprise: "Enterprise"
+ case .edu: "Edu"
+ case let .unknown(raw): raw.isEmpty ? "Subscription" : raw.capitalized
+ }
+ }
+ }
+
+ struct Window: Sendable, Equatable {
+ let usedPercent: Double // 0.0 ... 100.0
+ let resetsAt: Date?
+ let limitWindowSeconds: Int
+
+ /// Human label inferred from window size: 5h, 1d, 7d, etc.
+ var windowLabel: String {
+ switch limitWindowSeconds {
+ case 0..<3600: return "Hourly"
+ case 3600..<7200: return "Hour"
+ case 18000..<19000: return "5-hour"
+ case 86400..<87000: return "Daily"
+ case 604800..<605000: return "Weekly"
+ default:
+ let hours = limitWindowSeconds / 3600
+ if hours < 24 { return "\(hours)-hour" }
+ return "\(hours / 24)-day"
+ }
+ }
+ }
+
+ /// Additional per-model / per-feature quotas exposed by ChatGPT alongside
+ /// the main rate_limit (e.g. "GPT-5.3-Codex-Spark"). Each entry has its
+ /// own primary/secondary windows. Only ones with non-zero utilization are
+ /// surfaced in the popover so users on plans that don't touch these
+ /// features don't see clutter.
+ struct AdditionalLimit: Sendable, Equatable {
+ let name: String
+ let primary: Window?
+ let secondary: Window?
+ }
+
+ let plan: PlanType
+ let primary: Window?
+ let secondary: Window?
+ let additionalLimits: [AdditionalLimit]
+ let creditsBalance: Double?
+ let fetchedAt: Date
+
+ static func planType(from raw: String?) -> PlanType {
+ guard let raw = raw?.lowercased() else { return .unknown("") }
+ switch raw {
+ case "guest": return .guest
+ case "free": return .free
+ case "go": return .go
+ case "plus": return .plus
+ case "pro": return .pro
+ case "prolite", "pro_lite", "pro-lite": return .prolite
+ case "free_workspace": return .freeWorkspace
+ case "team": return .team
+ case "business": return .business
+ case "education": return .education
+ case "quorum": return .quorum
+ case "k12": return .k12
+ case "enterprise": return .enterprise
+ case "edu": return .edu
+ default: return .unknown(raw)
+ }
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/QuotaSummary.swift b/mac/Sources/CodeBurnMenubar/Data/QuotaSummary.swift
new file mode 100644
index 0000000..c76f6ba
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/QuotaSummary.swift
@@ -0,0 +1,75 @@
+import Foundation
+
+/// Per-provider live-quota snapshot consumed by the AgentTab progress bar
+/// and the hover-detail popover. Today only Claude has a real quota source
+/// (Anthropic /api/oauth/usage); future providers (Cursor, Copilot, etc.)
+/// will plug in by producing the same struct from their own auth path.
+struct QuotaSummary: Equatable {
+ enum Connection: Equatable {
+ case connected
+ case disconnected // no credentials present
+ case loading
+ case stale // had data once, current fetch is in flight
+ case transientFailure // backing off; show last-known data dimmed
+ case terminalFailure(reason: String?) // user must reconnect
+ }
+
+ let providerFilter: ProviderFilter
+ let connection: Connection
+ let primary: Window? // weekly utilization, the headline bar
+ let details: [Window] // 5h, weekly, opus, sonnet — full hover card
+ /// Display label for the user's plan (e.g. "Max 20x", "Pro Lite"). Shown
+ /// in the top-right corner of the hover detail popover so users can
+ /// confirm at a glance which subscription is feeding the bar.
+ let planLabel: String?
+ /// Optional footer rows that the popover renders below the window list.
+ /// Used today only by Codex to surface the on-account credits balance,
+ /// but kept generic so future providers can add provider-specific facts
+ /// (e.g. "Anthropic incident in progress", "Cursor team seat").
+ let footerLines: [String]
+
+ struct Window: Equatable {
+ let label: String
+ let percent: Double // 0..1
+ let resetsAt: Date?
+ }
+
+ /// Color band thresholds for the inline chip bar and aggregate menubar
+ /// flame tint. Four tiers so the icon can step from "you're approaching
+ /// your limit" (yellow) through "you're about to hit the wall" (orange)
+ /// to "you're over" (red) — matches what the user expects from a warning
+ /// indicator in the menu bar.
+ static func severity(for percent: Double) -> Severity {
+ if percent >= 1.0 { return .danger }
+ if percent >= 0.9 { return .critical }
+ if percent >= 0.7 { return .warning }
+ return .normal
+ }
+
+ enum Severity {
+ case normal // <70%
+ case warning // 70-90%
+ case critical // 90-100%
+ case danger // >=100%
+ }
+}
+
+extension QuotaSummary.Window {
+ /// Human-readable countdown like "2h 11m" or "3d 14h" or "now".
+ var resetsInLabel: String {
+ guard let resetsAt else { return "" }
+ let seconds = max(0, resetsAt.timeIntervalSinceNow)
+ if seconds < 60 { return "now" }
+ let minutes = Int(seconds / 60)
+ let hours = minutes / 60
+ let days = hours / 24
+ if days > 0 { return "\(days)d \(hours % 24)h" }
+ if hours > 0 { return "\(hours)h \(minutes % 60)m" }
+ return "\(minutes)m"
+ }
+
+ var percentLabel: String {
+ let pct = Int((percent * 100).rounded())
+ return "\(pct)%"
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/SubscriptionClient.swift b/mac/Sources/CodeBurnMenubar/Data/SubscriptionClient.swift
deleted file mode 100644
index 3f71e30..0000000
--- a/mac/Sources/CodeBurnMenubar/Data/SubscriptionClient.swift
+++ /dev/null
@@ -1,268 +0,0 @@
-import Foundation
-import Security
-
-private let credentialsRelativePath = ".claude/.credentials.json"
-private let keychainService = "Claude Code-credentials"
-private let oauthClientID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e"
-private let refreshURL = URL(string: "https://platform.claude.com/v1/oauth/token")!
-private let usageURL = URL(string: "https://api.anthropic.com/api/oauth/usage")!
-private let betaHeader = "oauth-2025-04-20"
-private let userAgent = "claude-code/2.1.0"
-private let requestTimeout: TimeInterval = 30
-
-private let maxCredentialBytes = 64 * 1024
-
-enum SubscriptionError: Error, LocalizedError {
- case noCredentials
- case credentialsInvalid
- case refreshFailed(Int, String?)
- case usageFetchFailed(Int, String?)
- case decodeFailed(Error)
-
- var errorDescription: String? {
- switch self {
- case .noCredentials: "No Claude OAuth credentials found"
- case .credentialsInvalid: "Claude OAuth credentials malformed"
- case let .refreshFailed(code, body): "Token refresh failed (\(code))\(body.map { ": \($0)" } ?? "")"
- case let .usageFetchFailed(code, body): "Usage fetch failed (\(code))\(body.map { ": \($0)" } ?? "")"
- case let .decodeFailed(err): "Decode failed: \(err.localizedDescription)"
- }
- }
-}
-
-struct SubscriptionClient {
- static func fetch() async throws -> SubscriptionUsage {
- let creds = try loadCredentials()
-
- // Try the usage call with the existing token first. Only refresh on 401.
- do {
- let response = try await fetchUsage(token: creds.accessToken)
- return mapResponse(response, rawTier: creds.rateLimitTier)
- } catch SubscriptionError.usageFetchFailed(401, _) {
- guard let refreshToken = creds.refreshToken, !refreshToken.isEmpty else {
- throw SubscriptionError.usageFetchFailed(401, "no refresh token available")
- }
- let newToken = try await refreshAccessToken(refreshToken: refreshToken)
- let response = try await fetchUsage(token: newToken)
- return mapResponse(response, rawTier: creds.rateLimitTier)
- }
- }
-
- // MARK: - Credentials
-
- private static func loadCredentials() throws -> StoredCredentials {
- if let data = try readFileCredentials() {
- return try parseCredentials(data: sanitizeKeychainData(data))
- }
- if let creds = try readKeychainCredentials() {
- return creds
- }
- throw SubscriptionError.noCredentials
- }
-
- private static func readFileCredentials() throws -> Data? {
- let url = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(credentialsRelativePath)
- guard FileManager.default.fileExists(atPath: url.path) else { return nil }
- // SafeFile refuses to follow symlinks and caps the read, so a 6 GB /dev/urandom
- // masquerading as the creds file can't blow up the app.
- return try SafeFile.read(from: url.path, maxBytes: maxCredentialBytes)
- }
-
- private static func readKeychainCredentials() throws -> StoredCredentials? {
- let query: [String: Any] = [
- kSecClass as String: kSecClassGenericPassword,
- kSecAttrService as String: keychainService,
- kSecMatchLimit as String: kSecMatchLimitOne,
- kSecReturnData as String: true,
- ]
- var result: CFTypeRef?
- let status = SecItemCopyMatching(query as CFDictionary, &result)
- if status == errSecItemNotFound { return nil }
- guard status == errSecSuccess, let data = result as? Data else {
- NSLog("CodeBurn: keychain query failed status=\(status)")
- return nil
- }
- return try parseCredentials(data: sanitizeKeychainData(data))
- }
-
- /// Claude Code's keychain writer line-wraps long string values (newline + leading spaces)
- /// mid-token, producing JSON with literal control chars and stray spaces inside string
- /// values. Replace every newline (CR/LF) plus the run of spaces/tabs that follows it.
- /// Drops both the wrapping in tokens AND pretty-print indentation between fields (both
- /// produce valid, compact JSON afterward).
- private static func sanitizeKeychainData(_ data: Data) -> Data {
- guard var s = String(data: data, encoding: .utf8) else { return data }
- s = s.replacingOccurrences(of: "\r", with: "")
- let regex = try? NSRegularExpression(pattern: "\\n[ \\t]*", options: [])
- if let regex {
- let range = NSRange(s.startIndex.. StoredCredentials {
- do {
- let root = try JSONDecoder().decode(CredentialsRoot.self, from: data)
- guard let oauth = root.claudeAiOauth else { throw SubscriptionError.credentialsInvalid }
- let token = oauth.accessToken?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
- guard !token.isEmpty else { throw SubscriptionError.credentialsInvalid }
- let expiresAt = oauth.expiresAt.map { Date(timeIntervalSince1970: $0 / 1000.0) }
- return StoredCredentials(
- accessToken: token,
- refreshToken: oauth.refreshToken,
- expiresAt: expiresAt,
- rateLimitTier: oauth.rateLimitTier
- )
- } catch let err as SubscriptionError {
- throw err
- } catch {
- throw SubscriptionError.decodeFailed(error)
- }
- }
-
- // MARK: - Refresh
-
- private static func refreshAccessToken(refreshToken: String) async throws -> String {
- var request = URLRequest(url: refreshURL)
- request.httpMethod = "POST"
- request.timeoutInterval = requestTimeout
- request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
- request.setValue("application/json", forHTTPHeaderField: "Accept")
- var components = URLComponents()
- components.queryItems = [
- URLQueryItem(name: "grant_type", value: "refresh_token"),
- URLQueryItem(name: "refresh_token", value: refreshToken),
- URLQueryItem(name: "client_id", value: oauthClientID),
- ]
- request.httpBody = (components.percentEncodedQuery ?? "").data(using: .utf8)
-
- let (data, response) = try await URLSession.shared.data(for: request)
- guard let http = response as? HTTPURLResponse else {
- throw SubscriptionError.refreshFailed(-1, nil)
- }
- guard http.statusCode == 200 else {
- let body = String(data: data, encoding: .utf8)
- throw SubscriptionError.refreshFailed(http.statusCode, body)
- }
- do {
- let decoded = try JSONDecoder().decode(TokenRefreshResponse.self, from: data)
- return decoded.accessToken
- } catch {
- throw SubscriptionError.decodeFailed(error)
- }
- }
-
- // MARK: - Usage fetch
-
- private static func fetchUsage(token: String) async throws -> UsageResponse {
- var request = URLRequest(url: usageURL)
- request.httpMethod = "GET"
- request.timeoutInterval = requestTimeout
- request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
- request.setValue("application/json", forHTTPHeaderField: "Accept")
- request.setValue(betaHeader, forHTTPHeaderField: "anthropic-beta")
- request.setValue(userAgent, forHTTPHeaderField: "User-Agent")
-
- let (data, response) = try await URLSession.shared.data(for: request)
- guard let http = response as? HTTPURLResponse else {
- throw SubscriptionError.usageFetchFailed(-1, nil)
- }
- guard http.statusCode == 200 else {
- let body = String(data: data, encoding: .utf8)
- throw SubscriptionError.usageFetchFailed(http.statusCode, body)
- }
- do {
- return try JSONDecoder().decode(UsageResponse.self, from: data)
- } catch {
- throw SubscriptionError.decodeFailed(error)
- }
- }
-
- // MARK: - Mapping
-
- private static func mapResponse(_ r: UsageResponse, rawTier: String?) -> SubscriptionUsage {
- SubscriptionUsage(
- tier: SubscriptionUsage.tier(from: rawTier),
- rawTier: rawTier,
- fiveHourPercent: r.fiveHour?.utilization,
- fiveHourResetsAt: parseDate(r.fiveHour?.resetsAt),
- sevenDayPercent: r.sevenDay?.utilization,
- sevenDayResetsAt: parseDate(r.sevenDay?.resetsAt),
- sevenDayOpusPercent: r.sevenDayOpus?.utilization,
- sevenDayOpusResetsAt: parseDate(r.sevenDayOpus?.resetsAt),
- sevenDaySonnetPercent: r.sevenDaySonnet?.utilization,
- sevenDaySonnetResetsAt: parseDate(r.sevenDaySonnet?.resetsAt),
- fetchedAt: Date()
- )
- }
-
- private static func parseDate(_ s: String?) -> Date? {
- guard let s, !s.isEmpty else { return nil }
- let f = ISO8601DateFormatter()
- f.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
- if let d = f.date(from: s) { return d }
- f.formatOptions = [.withInternetDateTime]
- return f.date(from: s)
- }
-}
-
-// MARK: - Internal models
-
-private struct StoredCredentials {
- let accessToken: String
- let refreshToken: String?
- let expiresAt: Date?
- let rateLimitTier: String?
-}
-
-private struct CredentialsRoot: Decodable {
- let claudeAiOauth: OAuthBlock?
-}
-
-private struct OAuthBlock: Decodable {
- let accessToken: String?
- let refreshToken: String?
- let expiresAt: Double?
- let rateLimitTier: String?
-}
-
-private struct TokenRefreshResponse: Decodable {
- let accessToken: String
- let refreshToken: String?
- let expiresIn: Int?
-
- enum CodingKeys: String, CodingKey {
- case accessToken = "access_token"
- case refreshToken = "refresh_token"
- case expiresIn = "expires_in"
- }
-}
-
-private struct UsageResponse: Decodable {
- let fiveHour: Window?
- let sevenDay: Window?
- let sevenDayOpus: Window?
- let sevenDaySonnet: Window?
-
- enum CodingKeys: String, CodingKey {
- case fiveHour = "five_hour"
- case sevenDay = "seven_day"
- case sevenDayOpus = "seven_day_opus"
- case sevenDaySonnet = "seven_day_sonnet"
- }
-}
-
-private struct Window: Decodable {
- let utilization: Double?
- let resetsAt: String?
-
- enum CodingKeys: String, CodingKey {
- case utilization
- case resetsAt = "resets_at"
- }
-}
diff --git a/mac/Sources/CodeBurnMenubar/Data/SubscriptionRefreshCadence.swift b/mac/Sources/CodeBurnMenubar/Data/SubscriptionRefreshCadence.swift
new file mode 100644
index 0000000..3701d25
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Data/SubscriptionRefreshCadence.swift
@@ -0,0 +1,42 @@
+import Foundation
+
+/// User-configurable cadence for /api/oauth/usage polling. Mirrors CodexBar's
+/// "manual / 1m / 2m / 5m / 15m" preset set so users on tight rate-limit
+/// budgets can dial it down and power users can dial it up. Stored as the raw
+/// number of seconds in UserDefaults; `manual = 0` means "never auto-refresh".
+enum SubscriptionRefreshCadence: Int, CaseIterable, Identifiable {
+ case manual = 0
+ case oneMinute = 60
+ case twoMinutes = 120
+ case fiveMinutes = 300
+ case fifteenMinutes = 900
+
+ var id: Int { rawValue }
+
+ var label: String {
+ switch self {
+ case .manual: return "Manual"
+ case .oneMinute: return "1 minute"
+ case .twoMinutes: return "2 minutes"
+ case .fiveMinutes: return "5 minutes"
+ case .fifteenMinutes: return "15 minutes"
+ }
+ }
+
+ static let defaultsKey = "codeburn.claude.refreshCadenceSeconds"
+ static let `default`: SubscriptionRefreshCadence = .twoMinutes
+
+ static var current: SubscriptionRefreshCadence {
+ get {
+ // UserDefaults.integer returns 0 when the key is missing — that
+ // happens to alias `manual`, which is wrong for a fresh install.
+ // Probe with object(forKey:) so we can distinguish "never set"
+ // from "set to manual" and seed the default on first run.
+ if UserDefaults.standard.object(forKey: defaultsKey) == nil {
+ return .default
+ }
+ return SubscriptionRefreshCadence(rawValue: UserDefaults.standard.integer(forKey: defaultsKey)) ?? .default
+ }
+ set { UserDefaults.standard.set(newValue.rawValue, forKey: defaultsKey) }
+ }
+}
diff --git a/mac/Sources/CodeBurnMenubar/Data/SubscriptionSnapshotStore.swift b/mac/Sources/CodeBurnMenubar/Data/SubscriptionSnapshotStore.swift
index 931154a..9357ee9 100644
--- a/mac/Sources/CodeBurnMenubar/Data/SubscriptionSnapshotStore.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/SubscriptionSnapshotStore.swift
@@ -76,6 +76,13 @@ enum SubscriptionSnapshotStore {
/// Test seam: clear all snapshots.
static func resetForTesting() async {
+ await clearAll()
+ }
+
+ /// Wipe all snapshots from disk. Called when the user disconnects so the
+ /// "Based on last cycle" projections do not contaminate a reconnect under
+ /// a different account or tier.
+ static func clearAll() async {
await SnapshotLock.shared.run {
try? FileManager.default.removeItem(atPath: snapshotsPath())
}
diff --git a/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift b/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
index 33f7b15..9844e33 100644
--- a/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/AgentTabStrip.swift
@@ -13,7 +13,8 @@ struct AgentTabStrip: View {
AgentTab(
filter: filter,
cost: cost(for: filter),
- isActive: store.selectedProvider == filter
+ isActive: store.selectedProvider == filter,
+ quota: store.quotaSummary(for: filter)
)
}
.buttonStyle(.plain)
@@ -63,17 +64,45 @@ private struct AgentTab: View {
let filter: ProviderFilter
let cost: Double?
let isActive: Bool
+ let quota: QuotaSummary?
+
+ @State private var hoverPopoverShown = false
+ @State private var hoverEnterTask: DispatchWorkItem?
+ @State private var hoverExitTask: DispatchWorkItem?
+
+ /// Providers whose AgentTab chip reserves a 3pt bar slot underneath the
+ /// label, even when not yet connected. Driven by which providers we
+ /// actually implement live-quota fetching for in AppStore.quotaSummary.
+ static func providerSupportsQuota(_ filter: ProviderFilter) -> Bool {
+ switch filter {
+ case .claude, .codex: return true
+ default: return false
+ }
+ }
var body: some View {
- HStack(spacing: 5) {
- Text(filter.rawValue)
- .font(.system(size: 11.5, weight: .medium))
- .tracking(-0.05)
- if let cost, cost > 0 {
- Text(cost.asCompactCurrency())
- .font(.codeMono(size: 10.5, weight: .medium))
- .foregroundStyle(isActive ? AnyShapeStyle(.white.opacity(0.8)) : AnyShapeStyle(.secondary))
- .tracking(-0.2)
+ VStack(spacing: 3) {
+ HStack(spacing: 5) {
+ Text(filter.rawValue)
+ .font(.system(size: 11.5, weight: .medium))
+ .tracking(-0.05)
+ if let cost, cost > 0 {
+ Text(cost.asCompactCurrency())
+ .font(.codeMono(size: 10.5, weight: .medium))
+ .foregroundStyle(isActive ? AnyShapeStyle(.white.opacity(0.8)) : AnyShapeStyle(.secondary))
+ .tracking(-0.2)
+ }
+ }
+ // Reserve the bar slot only for providers whose quota source we
+ // implement (Claude, Codex). Providers that will never have a bar
+ // (All / Cursor / Droid / Gemini / Copilot) skip the slot entirely
+ // so the text centers naturally and the chip stays compact.
+ // Reserving the slot for Claude/Codex prevents the strip from
+ // jumping by 6pt the moment the user clicks Connect.
+ if Self.providerSupportsQuota(filter) {
+ AgentTabQuotaBar(quota: quota, isActive: isActive)
+ .frame(height: 3)
+ .opacity(quota == nil ? 0 : 1)
}
}
.padding(.horizontal, 10)
@@ -84,6 +113,229 @@ private struct AgentTab: View {
)
.foregroundStyle(isActive ? AnyShapeStyle(.white) : AnyShapeStyle(.secondary))
.contentShape(Rectangle())
+ .onHover { hovering in
+ // Debounce: 250ms enter so swiping across chips doesn't pop a
+ // popover for every chip touched, and 150ms exit so cursor travel
+ // between chip and popover doesn't dismiss prematurely.
+ hoverEnterTask?.cancel()
+ hoverExitTask?.cancel()
+ if hovering, quota != nil {
+ let task = DispatchWorkItem { hoverPopoverShown = true }
+ hoverEnterTask = task
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.25, execute: task)
+ } else {
+ let task = DispatchWorkItem { hoverPopoverShown = false }
+ hoverExitTask = task
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.15, execute: task)
+ }
+ }
+ .popover(isPresented: $hoverPopoverShown) {
+ if let quota {
+ QuotaDetailPopover(quota: quota)
+ }
+ }
+ }
+}
+
+/// Thin progress bar drawn inside an AgentTab chip when that provider has a live quota
+/// source. Width matches the chip; color shifts green → amber → red at 70% / 90%.
+private struct AgentTabQuotaBar: View {
+ let quota: QuotaSummary?
+ let isActive: Bool
+
+ var body: some View {
+ GeometryReader { geo in
+ ZStack(alignment: .leading) {
+ Capsule()
+ .fill(trackColor)
+ if let percent = filledFraction {
+ Capsule()
+ .fill(barColor)
+ .frame(width: max(2, geo.size.width * CGFloat(percent)))
+ .animation(.easeOut(duration: 0.25), value: percent)
+ }
+ if case .terminalFailure = quota?.connection {
+ // Hatched/red strip to telegraph "broken; reconnect needed".
+ Capsule()
+ .fill(Color.red.opacity(0.7))
+ }
+ }
+ }
+ }
+
+ private var filledFraction: Double? {
+ guard let pct = quota?.primary?.percent else { return nil }
+ return min(max(pct, 0), 1)
+ }
+
+ private var barColor: Color {
+ guard let pct = quota?.primary?.percent else { return .clear }
+ switch QuotaSummary.severity(for: pct) {
+ case .normal: return isActive ? Color.white : Color.green.opacity(0.85)
+ case .warning: return Color.yellow
+ case .critical: return Color.orange
+ case .danger: return Color.red
+ }
+ }
+
+ private var trackColor: Color {
+ isActive ? Color.white.opacity(0.20) : Color.secondary.opacity(0.18)
+ }
+}
+
+private struct QuotaDetailPopover: View {
+ let quota: QuotaSummary
+
+ var body: some View {
+ VStack(alignment: .leading, spacing: 8) {
+ switch quota.connection {
+ case .terminalFailure(let reason):
+ terminalFailureCard(reason: reason)
+ case .disconnected:
+ Text(disconnectedMessage)
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ case .loading where quota.details.isEmpty:
+ Text("Loading…")
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ default:
+ rowsCard
+ }
+ }
+ .padding(12)
+ .frame(width: 260)
+ }
+
+ private var disconnectedMessage: String {
+ switch quota.providerFilter {
+ case .codex: return "Sign in with `codex` (ChatGPT mode) to track quota."
+ case .claude: return "Sign in to Claude Code to track quota."
+ default: return "Sign in to track quota."
+ }
+ }
+
+ private var rowsCard: some View {
+ VStack(alignment: .leading, spacing: 6) {
+ HStack(spacing: 6) {
+ Text("\(quota.providerFilter.rawValue) usage")
+ .font(.system(size: 11, weight: .semibold))
+ if case .stale = quota.connection {
+ Text("stale")
+ .font(.system(size: 9.5))
+ .foregroundStyle(.secondary)
+ } else if case .transientFailure = quota.connection {
+ Text("retrying")
+ .font(.system(size: 9.5))
+ .foregroundStyle(.orange)
+ }
+ Spacer()
+ if let plan = quota.planLabel, !plan.isEmpty {
+ Text(plan)
+ .font(.system(size: 9.5, weight: .medium))
+ .foregroundStyle(.secondary)
+ .lineLimit(1)
+ .truncationMode(.tail)
+ .padding(.horizontal, 6)
+ .padding(.vertical, 2)
+ .background(
+ RoundedRectangle(cornerRadius: 4)
+ .fill(Color.secondary.opacity(0.12))
+ )
+ // Size to content. Plan names are bounded short strings
+ // ("Max 20x", "Pro Lite", "Free Workspace"); a forced
+ // maxWidth was making short labels look stretched.
+ .fixedSize(horizontal: true, vertical: false)
+ }
+ }
+ ForEach(Array(quota.details.enumerated()), id: \.offset) { _, w in
+ QuotaDetailRow(window: w)
+ }
+ if !quota.footerLines.isEmpty {
+ Divider()
+ .padding(.top, 2)
+ ForEach(Array(quota.footerLines.enumerated()), id: \.offset) { _, line in
+ Text(line)
+ .font(.system(size: 10.5))
+ .foregroundStyle(.secondary)
+ }
+ }
+ }
+ }
+
+ private func terminalFailureCard(reason: String?) -> some View {
+ VStack(alignment: .leading, spacing: 6) {
+ Text(reconnectTitle)
+ .font(.system(size: 11.5, weight: .semibold))
+ .foregroundStyle(.red)
+ Text(reason ?? defaultReconnectReason)
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ .lineLimit(2)
+ Text(reconnectInstruction)
+ .font(.system(size: 10.5))
+ .foregroundStyle(.secondary)
+ }
+ }
+
+ private var reconnectTitle: String {
+ switch quota.providerFilter {
+ case .codex: return "Reconnect Codex"
+ default: return "Reconnect Claude"
+ }
+ }
+
+ private var defaultReconnectReason: String {
+ switch quota.providerFilter {
+ case .codex: return "Refresh token rejected by OpenAI."
+ default: return "Refresh token rejected by Anthropic."
+ }
+ }
+
+ private var reconnectInstruction: String {
+ switch quota.providerFilter {
+ case .codex: return "Run `codex login` in your terminal, then click Reconnect."
+ default: return "Open Claude Code in your terminal and type `/login`, then click Reconnect."
+ }
+ }
+}
+
+private struct QuotaDetailRow: View {
+ let window: QuotaSummary.Window
+
+ var body: some View {
+ HStack(spacing: 8) {
+ Text(window.label)
+ .font(.system(size: 10.5))
+ .frame(width: 92, alignment: .leading)
+ GeometryReader { geo in
+ ZStack(alignment: .leading) {
+ Capsule().fill(Color.secondary.opacity(0.18))
+ Capsule()
+ .fill(barColor)
+ .frame(width: max(2, geo.size.width * CGFloat(min(max(window.percent, 0), 1))))
+ }
+ }
+ .frame(height: 4)
+ Text(window.percentLabel)
+ .font(.codeMono(size: 10.5, weight: .medium))
+ .frame(width: 36, alignment: .trailing)
+ if !window.resetsInLabel.isEmpty {
+ Text(window.resetsInLabel)
+ .font(.codeMono(size: 10))
+ .foregroundStyle(.secondary)
+ .frame(width: 50, alignment: .trailing)
+ }
+ }
+ }
+
+ private var barColor: Color {
+ switch QuotaSummary.severity(for: window.percent) {
+ case .normal: return Color.green.opacity(0.85)
+ case .warning: return Color.yellow
+ case .critical: return Color.orange
+ case .danger: return Color.red
+ }
}
}
diff --git a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
index 2e2dc3a..3374bd9 100644
--- a/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/HeatmapSection.swift
@@ -55,10 +55,14 @@ struct HeatmapSection: View {
}
private var visibleModes: [InsightMode] {
- // Plan sources from Claude's OAuth usage endpoint, so it only makes sense when the
- // Claude provider tab is selected. Hidden on All/Cursor/Codex/etc.
+ // Plan sources from a provider's OAuth usage endpoint. Currently
+ // implemented for Claude (Anthropic) and Codex (ChatGPT). Hidden on
+ // All / Cursor / Droid / Gemini / Copilot until those providers ship
+ // their own quota data sources.
InsightMode.allCases.filter { mode in
- if mode == .plan { return store.selectedProvider == .claude }
+ if mode == .plan {
+ return store.selectedProvider == .claude || store.selectedProvider == .codex
+ }
return true
}
}
@@ -72,7 +76,12 @@ struct HeatmapSection: View {
@ViewBuilder
private var content: some View {
switch store.selectedInsight {
- case .plan: PlanInsight(usage: store.subscription)
+ case .plan:
+ if store.selectedProvider == .codex {
+ CodexPlanInsight()
+ } else {
+ PlanInsight(usage: store.subscription)
+ }
case .trend: TrendInsight(days: store.payload.history.daily)
case .forecast: ForecastInsight(days: store.payload.history.daily)
case .pulse: PulseInsight(payload: store.payload)
@@ -891,28 +900,36 @@ private struct PlanInsight: View {
var body: some View {
Group {
switch store.subscriptionLoadState {
- case .idle:
- PlanIdleView()
- case .loading:
+ case .notBootstrapped:
+ PlanConnectView { Task { await store.bootstrapSubscription() } }
+ case .bootstrapping:
PlanLoadingView()
+ case .loading:
+ if let usage {
+ loadedBody(usage: usage)
+ } else {
+ PlanLoadingView()
+ }
case .noCredentials:
PlanNoCredentialsView()
case .failed:
PlanFailedView(error: store.subscriptionError)
+ case .transientFailure:
+ if let usage {
+ loadedBody(usage: usage)
+ } else {
+ PlanFailedView(error: store.subscriptionError ?? "Anthropic temporarily unreachable — retrying.")
+ }
+ case let .terminalFailure(reason):
+ PlanReconnectView(reason: reason) { Task { await store.bootstrapSubscription() } }
case .loaded:
if let usage {
loadedBody(usage: usage)
} else {
- PlanNoCredentialsView()
+ PlanLoadingView()
}
}
}
- .task {
- // Lazy-trigger fetch the first time Plan is opened.
- if store.subscriptionLoadState == .idle {
- await store.refreshSubscription()
- }
- }
}
@ViewBuilder
@@ -1010,26 +1027,6 @@ private struct PlanInsight: View {
// MARK: - Plan empty/loading/failure states
-private struct PlanIdleView: View {
- var body: some View {
- VStack(spacing: 8) {
- Image(systemName: "person.crop.circle.dashed")
- .font(.system(size: 22))
- .foregroundStyle(.tertiary)
- Text("Loading your plan...")
- .font(.system(size: 11.5, weight: .medium))
- .foregroundStyle(.secondary)
- Text("macOS may ask permission to read your Claude Code credentials.")
- .font(.system(size: 10))
- .foregroundStyle(.tertiary)
- .multilineTextAlignment(.center)
- .frame(maxWidth: 260)
- }
- .frame(maxWidth: .infinity)
- .padding(.vertical, 16)
- }
-}
-
private struct PlanLoadingView: View {
var body: some View {
VStack(spacing: 8) {
@@ -1047,27 +1044,27 @@ private struct PlanNoCredentialsView: View {
@Environment(AppStore.self) private var store
var body: some View {
- VStack(spacing: 8) {
+ VStack(spacing: 10) {
Image(systemName: "key.slash")
- .font(.system(size: 20))
+ .font(.system(size: 24))
.foregroundStyle(.tertiary)
- Text("No Claude subscription connected")
+ Text("No Claude credentials found")
.font(.system(size: 12, weight: .semibold))
.foregroundStyle(.primary)
- Text("Sign in with Claude Code, then click Retry.")
+ Text("Sign in with Claude Code first: open `claude` in your terminal and type `/login`. Then click Try Again.")
.font(.system(size: 10.5))
.foregroundStyle(.secondary)
.multilineTextAlignment(.center)
- .frame(maxWidth: 260)
- Button("Retry") {
- Task { await store.refreshSubscription() }
+ .frame(maxWidth: 280)
+ Button("Try Again") {
+ Task { await store.bootstrapSubscription() }
}
.controlSize(.small)
.buttonStyle(.borderedProminent)
.tint(Theme.brandAccent)
}
.frame(maxWidth: .infinity)
- .padding(.vertical, 14)
+ .padding(.vertical, 16)
}
}
@@ -1103,6 +1100,175 @@ private struct PlanFailedView: View {
}
}
+/// Shown the very first time a user opens the Plan tab. Clicking Connect is the
+/// only path to triggering the macOS keychain prompt for Claude Code credentials —
+/// the menubar app does not touch the keychain at startup.
+private struct PlanConnectView: View {
+ let onConnect: () -> Void
+
+ var body: some View {
+ VStack(spacing: 10) {
+ Image(systemName: "link.circle")
+ .font(.system(size: 26))
+ .foregroundStyle(Theme.brandAccent)
+ Text("Connect Claude subscription")
+ .font(.system(size: 12, weight: .semibold))
+ .foregroundStyle(.primary)
+ Text("CodeBurn will read your Claude Code credentials once. macOS will ask permission. After that, the live quota bar shows next to the Claude tab and updates automatically.")
+ .font(.system(size: 10.5))
+ .foregroundStyle(.secondary)
+ .multilineTextAlignment(.center)
+ .frame(maxWidth: 280)
+ Button("Connect", action: onConnect)
+ .controlSize(.small)
+ .buttonStyle(.borderedProminent)
+ .tint(Theme.brandAccent)
+ }
+ .frame(maxWidth: .infinity)
+ .padding(.vertical, 18)
+ }
+}
+
+/// Shown when the refresh token has been invalidated (typically because the user
+/// re-authenticated on another device). Clicking the button re-runs bootstrap,
+/// which reads Claude's credentials source again and writes a fresh copy to our
+/// own keychain item.
+private struct PlanReconnectView: View {
+ let reason: String?
+ let onReconnect: () -> Void
+
+ var body: some View {
+ VStack(spacing: 10) {
+ Image(systemName: "arrow.triangle.2.circlepath.circle")
+ .font(.system(size: 24))
+ .foregroundStyle(.red)
+ Text("Reconnect Claude")
+ .font(.system(size: 12, weight: .semibold))
+ .foregroundStyle(.primary)
+ Text(reason ?? "Your Claude session has expired. Open Claude Code in your terminal and type `/login`, then click Reconnect.")
+ .font(.system(size: 10.5))
+ .foregroundStyle(.secondary)
+ .multilineTextAlignment(.center)
+ .frame(maxWidth: 280)
+ .lineLimit(3)
+ Button("Reconnect", action: onReconnect)
+ .controlSize(.small)
+ .buttonStyle(.borderedProminent)
+ .tint(.red)
+ }
+ .frame(maxWidth: .infinity)
+ .padding(.vertical, 16)
+ }
+}
+
+/// Plan tab for Codex. Mirrors PlanInsight's layout but reads from
+/// store.codexUsage / store.codexLoadState. We deliberately skip the
+/// "On pace at reset" projection here — that math is fed by local
+/// per-message Claude spend extrapolated against the API quota windows;
+/// our local Codex spend isn't an apples-to-apples signal for the
+/// ChatGPT-subscription rate windows reported by wham/usage. Add when
+/// we wire a comparable extrapolator.
+private struct CodexPlanInsight: View {
+ @Environment(AppStore.self) private var store
+
+ var body: some View {
+ Group {
+ switch store.codexLoadState {
+ case .notBootstrapped:
+ PlanConnectView { Task { await store.bootstrapCodex() } }
+ case .bootstrapping:
+ PlanLoadingView()
+ case .loading:
+ if let usage = store.codexUsage {
+ loadedBody(usage: usage)
+ } else {
+ PlanLoadingView()
+ }
+ case .noCredentials:
+ PlanNoCredentialsView()
+ case .failed:
+ PlanFailedView(error: store.codexError)
+ case .transientFailure:
+ if let usage = store.codexUsage {
+ loadedBody(usage: usage)
+ } else {
+ PlanFailedView(error: store.codexError ?? "ChatGPT temporarily unreachable — retrying.")
+ }
+ case let .terminalFailure(reason):
+ PlanReconnectView(reason: reason) { Task { await store.bootstrapCodex() } }
+ case .loaded:
+ if let usage = store.codexUsage {
+ loadedBody(usage: usage)
+ } else {
+ PlanLoadingView()
+ }
+ }
+ }
+ }
+
+ @ViewBuilder
+ private func loadedBody(usage: CodexUsage) -> some View {
+ VStack(alignment: .leading, spacing: 10) {
+ HStack(alignment: .firstTextBaseline) {
+ Text(usage.plan.displayName)
+ .font(.system(size: 13, weight: .semibold))
+ .foregroundStyle(.primary)
+ Spacer()
+ if let resetsAt = (usage.primary ?? usage.secondary)?.resetsAt {
+ Text("Resets \(relativeReset(resetsAt))")
+ .font(.system(size: 10.5))
+ .foregroundStyle(.secondary)
+ }
+ }
+ if let primary = usage.primary {
+ UtilizationRow(
+ label: "\(primary.windowLabel) window",
+ percent: primary.usedPercent,
+ resetsAt: primary.resetsAt,
+ projection: nil
+ )
+ }
+ if let secondary = usage.secondary {
+ UtilizationRow(
+ label: "\(secondary.windowLabel) window",
+ percent: secondary.usedPercent,
+ resetsAt: secondary.resetsAt,
+ projection: nil
+ )
+ }
+ // Surface non-zero per-model rate limits (Codex Spark, etc.) so
+ // power users see them; idle ones stay collapsed.
+ ForEach(Array(usage.additionalLimits.enumerated()), id: \.offset) { _, limit in
+ if let p = limit.primary, p.usedPercent > 0 {
+ UtilizationRow(
+ label: "\(limit.name) · \(p.windowLabel)",
+ percent: p.usedPercent,
+ resetsAt: p.resetsAt,
+ projection: nil
+ )
+ }
+ if let s = limit.secondary, s.usedPercent > 0 {
+ UtilizationRow(
+ label: "\(limit.name) · \(s.windowLabel)",
+ percent: s.usedPercent,
+ resetsAt: s.resetsAt,
+ projection: nil
+ )
+ }
+ }
+ }
+ .padding(.horizontal, 14)
+ .padding(.top, 4)
+ .padding(.bottom, 8)
+ }
+
+ private func relativeReset(_ date: Date) -> String {
+ let f = RelativeDateTimeFormatter()
+ f.unitsStyle = .short
+ return f.localizedString(for: date, relativeTo: Date())
+ }
+}
+
private struct WindowProjection {
enum Source { case linear, historicalBaseline }
let percent: Double
diff --git a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
index 6e3719f..28bd8a9 100644
--- a/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
+++ b/mac/Sources/CodeBurnMenubar/Views/MenuBarContent.swift
@@ -207,24 +207,31 @@ private struct BurnFlame: View {
private struct Header: View {
@Environment(UpdateChecker.self) private var updateChecker
+ @Environment(AppStore.self) private var store
var body: some View {
- HStack {
- VStack(alignment: .leading, spacing: 1) {
- (
- Text("Code").foregroundStyle(.primary)
- + Text("Burn").foregroundStyle(Theme.brandEmber)
- )
- .font(.system(size: 13, weight: .semibold))
- .tracking(-0.15)
- Text("AI Coding Cost Tracker")
- .font(.system(size: 10.5))
- .foregroundStyle(.secondary)
+ VStack(alignment: .leading, spacing: 6) {
+ HStack {
+ VStack(alignment: .leading, spacing: 1) {
+ (
+ Text("Code").foregroundStyle(.primary)
+ + Text("Burn").foregroundStyle(Theme.brandEmber)
+ )
+ .font(.system(size: 13, weight: .semibold))
+ .tracking(-0.15)
+ Text("AI Coding Cost Tracker")
+ .font(.system(size: 10.5))
+ .foregroundStyle(.secondary)
+ }
+ Spacer()
+ if updateChecker.updateAvailable {
+ UpdateBadge()
+ }
+ AccentPicker()
}
- Spacer()
- if updateChecker.updateAvailable {
- UpdateBadge()
- }
- AccentPicker()
+ // Compact warning row when any connected provider crosses 70%.
+ // Lists all warning providers with their worst-window percent so
+ // the user knows whether to slow down on Claude, Codex, or both.
+ QuotaWarningRow(status: store.aggregateQuotaStatus)
}
.padding(.horizontal, 14)
.padding(.top, 10)
@@ -232,6 +239,61 @@ private struct Header: View {
}
}
+private struct QuotaWarningRow: View {
+ let status: AppStore.AggregateQuotaStatus
+
+ var body: some View {
+ if !status.warnings.isEmpty {
+ HStack(spacing: 6) {
+ Image(systemName: severityIcon)
+ .font(.system(size: 10, weight: .semibold))
+ .foregroundStyle(severityColor)
+ Text(message)
+ .font(.system(size: 10.5, weight: .medium))
+ .foregroundStyle(severityColor)
+ Spacer(minLength: 0)
+ }
+ .padding(.horizontal, 8)
+ .padding(.vertical, 5)
+ .background(
+ RoundedRectangle(cornerRadius: 5)
+ .fill(severityColor.opacity(0.12))
+ )
+ }
+ }
+
+ private var message: String {
+ let parts = status.warnings.map { "\($0.name) \(Int($0.percent.rounded()))%" }
+ if parts.count == 1 {
+ // Reads "Claude over limit (105%)" when any provider exceeds the
+ // quota cap, instead of the awkward "Claude 105% of quota used".
+ if case .danger = status.severity {
+ return "\(status.warnings[0].name) over limit (\(Int(status.warnings[0].percent.rounded()))%)"
+ }
+ return "\(parts[0]) of quota used"
+ }
+ return parts.joined(separator: " · ")
+ }
+
+ private var severityColor: Color {
+ switch status.severity {
+ case .normal: return .secondary
+ case .warning: return .yellow
+ case .critical: return .orange
+ case .danger: return .red
+ }
+ }
+
+ private var severityIcon: String {
+ switch status.severity {
+ case .normal: return "info.circle"
+ case .warning: return "exclamationmark.circle"
+ case .critical: return "exclamationmark.triangle"
+ case .danger: return "octagon"
+ }
+ }
+}
+
private struct AccentPicker: View {
@Environment(AppStore.self) private var store
diff --git a/mac/Sources/CodeBurnMenubar/Views/SettingsView.swift b/mac/Sources/CodeBurnMenubar/Views/SettingsView.swift
new file mode 100644
index 0000000..a4c3585
--- /dev/null
+++ b/mac/Sources/CodeBurnMenubar/Views/SettingsView.swift
@@ -0,0 +1,367 @@
+import SwiftUI
+
+/// macOS-standard tabbed Settings window. New per-provider sections (Codex,
+/// Cursor, Copilot, etc.) plug in as additional tabs. Each tab owns its own
+/// concerns; this top-level view only hosts the TabView shell.
+struct SettingsView: View {
+ @Environment(AppStore.self) private var store
+
+ var body: some View {
+ TabView {
+ GeneralSettingsTab()
+ .tabItem { Label("General", systemImage: "gearshape") }
+
+ ClaudeSettingsTab()
+ .tabItem { Label("Claude", systemImage: "brain") }
+
+ CodexSettingsTab()
+ .tabItem { Label("Codex", systemImage: "chevron.left.forwardslash.chevron.right") }
+
+ AboutSettingsTab()
+ .tabItem { Label("About", systemImage: "info.circle") }
+ }
+ .frame(width: 520, height: 400)
+ }
+}
+
+// MARK: - General
+
+private struct GeneralSettingsTab: View {
+ @Environment(AppStore.self) private var store
+
+ var body: some View {
+ Form {
+ Section("Display") {
+ Picker("Currency", selection: Binding(
+ get: { store.currency },
+ set: { applyCurrency(code: $0) }
+ )) {
+ ForEach(["USD", "EUR", "GBP", "INR", "JPY", "AUD", "CAD"], id: \.self) { code in
+ Text(code).tag(code)
+ }
+ }
+ Picker("Accent", selection: Binding(
+ get: { store.accentPreset },
+ set: { store.accentPreset = $0 }
+ )) {
+ ForEach(AccentPreset.allCases) { preset in
+ Text(preset.rawValue).tag(preset)
+ }
+ }
+ }
+ }
+ .formStyle(.grouped)
+ .padding()
+ }
+
+ private func applyCurrency(code: String) {
+ let symbol = CurrencyState.symbolForCode(code)
+ Task {
+ let cached = await FXRateCache.shared.cachedRate(for: code)
+ if let cached {
+ store.currency = code
+ CurrencyState.shared.apply(code: code, rate: cached, symbol: symbol)
+ }
+ let fresh = await FXRateCache.shared.rate(for: code)
+ store.currency = code
+ CurrencyState.shared.apply(code: code, rate: fresh ?? cached, symbol: symbol)
+ }
+ CLICurrencyConfig.persist(code: code)
+ }
+}
+
+// MARK: - Claude
+
+private struct ClaudeSettingsTab: View {
+ @Environment(AppStore.self) private var store
+
+ var body: some View {
+ Form {
+ Section("Connection") {
+ ClaudeConnectionRow()
+ }
+ Section("Quota Refresh") {
+ Picker("Update every", selection: Binding(
+ get: { SubscriptionRefreshCadence.current },
+ set: { SubscriptionRefreshCadence.current = $0 }
+ )) {
+ ForEach(SubscriptionRefreshCadence.allCases) { cadence in
+ Text(cadence.label).tag(cadence)
+ }
+ }
+ .pickerStyle(.menu)
+ Text("Anthropic rate-limits this endpoint per account. 2 minutes is plenty for the 5-hour and weekly windows; pick Manual if you only want updates on demand.")
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ Button("Refresh Now") {
+ Task { await store.refreshSubscription() }
+ }
+ }
+ }
+ .formStyle(.grouped)
+ .padding()
+ }
+}
+
+private struct ClaudeConnectionRow: View {
+ @Environment(AppStore.self) private var store
+ @State private var showDisconnectConfirm = false
+
+ var body: some View {
+ HStack(alignment: .top, spacing: 12) {
+ Image(systemName: stateIcon)
+ .font(.system(size: 18))
+ .foregroundStyle(stateTint)
+ .frame(width: 22)
+ VStack(alignment: .leading, spacing: 2) {
+ Text(stateTitle)
+ .font(.system(size: 12, weight: .semibold))
+ Text(stateDetail)
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ .lineLimit(2)
+ }
+ Spacer()
+ actionButton
+ }
+ .padding(.vertical, 4)
+ }
+
+ private var stateIcon: String {
+ switch store.subscriptionLoadState {
+ case .loaded: return "checkmark.circle.fill"
+ case .terminalFailure: return "exclamationmark.triangle.fill"
+ case .transientFailure: return "clock.arrow.circlepath"
+ case .bootstrapping, .loading: return "ellipsis.circle"
+ case .notBootstrapped, .noCredentials: return "link.circle"
+ case .failed: return "xmark.circle"
+ }
+ }
+
+ private var stateTint: Color {
+ switch store.subscriptionLoadState {
+ case .loaded: return .green
+ case .terminalFailure, .failed: return .red
+ case .transientFailure: return .orange
+ default: return .secondary
+ }
+ }
+
+ private var stateTitle: String {
+ switch store.subscriptionLoadState {
+ case .loaded: return "Connected"
+ case let .terminalFailure(reason): return reason ?? "Reconnect required"
+ case .transientFailure: return "Backing off"
+ case .bootstrapping: return "Connecting…"
+ case .loading: return "Refreshing…"
+ case .notBootstrapped, .noCredentials: return "Not connected"
+ case .failed: return "Couldn't load plan data"
+ }
+ }
+
+ private var stateDetail: String {
+ switch store.subscriptionLoadState {
+ case .loaded:
+ if let tier = store.subscription?.tier.displayName {
+ return "Plan: \(tier)"
+ }
+ return "Live quota tracked from Anthropic."
+ case .terminalFailure: return "Open Claude Code in your terminal and type `/login`, then click Reconnect."
+ case .transientFailure: return store.subscriptionError ?? "Anthropic rate-limited; auto-retrying."
+ case .bootstrapping: return "macOS may ask permission to read your credentials."
+ case .loading: return "Background refresh in progress."
+ case .notBootstrapped, .noCredentials: return "Click Connect to read your Claude Code credentials and start tracking quota."
+ case .failed: return store.subscriptionError ?? ""
+ }
+ }
+
+ @ViewBuilder
+ private var actionButton: some View {
+ switch store.subscriptionLoadState {
+ case .loaded, .transientFailure, .loading:
+ Button("Disconnect") { showDisconnectConfirm = true }
+ .confirmationDialog(
+ "Disconnect Claude?",
+ isPresented: $showDisconnectConfirm
+ ) {
+ Button("Disconnect", role: .destructive) {
+ store.disconnectSubscription()
+ }
+ Button("Cancel", role: .cancel) {}
+ } message: {
+ Text("CodeBurn will stop tracking quota and delete its local copy of your Claude credentials. Your Claude Code keychain entry is untouched — Claude Code keeps working.")
+ }
+ case .terminalFailure, .noCredentials, .failed:
+ Button("Reconnect") { Task { await store.bootstrapSubscription() } }
+ .buttonStyle(.borderedProminent)
+ case .notBootstrapped:
+ Button("Connect") { Task { await store.bootstrapSubscription() } }
+ .buttonStyle(.borderedProminent)
+ case .bootstrapping:
+ ProgressView().controlSize(.small)
+ }
+ }
+}
+
+// MARK: - Codex
+
+private struct CodexSettingsTab: View {
+ @Environment(AppStore.self) private var store
+
+ var body: some View {
+ Form {
+ Section("Connection") {
+ CodexConnectionRow()
+ }
+ Section {
+ Text("Codex live-quota tracking reads `~/.codex/auth.json` once on Connect, then keeps a local copy under Application Support so subsequent quota fetches don't re-read the original. Only ChatGPT-mode auth (Plus / Pro / Team / Business) is supported — API-key users are billed per request and have a different reporting surface.")
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ } header: {
+ Text("How it works")
+ }
+ }
+ .formStyle(.grouped)
+ .padding()
+ }
+}
+
+private struct CodexConnectionRow: View {
+ @Environment(AppStore.self) private var store
+ @State private var showDisconnectConfirm = false
+
+ var body: some View {
+ HStack(alignment: .top, spacing: 12) {
+ Image(systemName: stateIcon)
+ .font(.system(size: 18))
+ .foregroundStyle(stateTint)
+ .frame(width: 22)
+ VStack(alignment: .leading, spacing: 2) {
+ Text(stateTitle)
+ .font(.system(size: 12, weight: .semibold))
+ Text(stateDetail)
+ .font(.system(size: 11))
+ .foregroundStyle(.secondary)
+ .lineLimit(2)
+ }
+ Spacer()
+ actionButton
+ }
+ .padding(.vertical, 4)
+ }
+
+ private var stateIcon: String {
+ switch store.codexLoadState {
+ case .loaded: return "checkmark.circle.fill"
+ case .terminalFailure: return "exclamationmark.triangle.fill"
+ case .transientFailure: return "clock.arrow.circlepath"
+ case .bootstrapping, .loading: return "ellipsis.circle"
+ case .notBootstrapped, .noCredentials: return "link.circle"
+ case .failed: return "xmark.circle"
+ }
+ }
+
+ private var stateTint: Color {
+ switch store.codexLoadState {
+ case .loaded: return .green
+ case .terminalFailure, .failed: return .red
+ case .transientFailure: return .orange
+ default: return .secondary
+ }
+ }
+
+ private var stateTitle: String {
+ switch store.codexLoadState {
+ case .loaded: return "Connected"
+ case let .terminalFailure(reason): return reason ?? "Reconnect required"
+ case .transientFailure: return "Backing off"
+ case .bootstrapping: return "Connecting…"
+ case .loading: return "Refreshing…"
+ case .notBootstrapped, .noCredentials: return "Not connected"
+ case .failed: return "Couldn't load Codex quota"
+ }
+ }
+
+ private var stateDetail: String {
+ switch store.codexLoadState {
+ case .loaded:
+ if let plan = store.codexUsage?.plan.displayName {
+ return "Plan: \(plan)"
+ }
+ return "Live quota tracked from chatgpt.com."
+ case .terminalFailure:
+ // Be specific about the cause: the message we already surface in
+ // codexError will say "API-key mode" if that's the situation, so
+ // the generic "run codex login" hint covers both cases.
+ if let err = store.codexError, err.lowercased().contains("api-key") {
+ return "Codex is in API-key mode. Run `codex login` and choose a ChatGPT plan to enable quota tracking."
+ }
+ return "Run `codex login` in your terminal to sign in again, then click Reconnect."
+ case .transientFailure: return store.codexError ?? "ChatGPT rate-limited; auto-retrying."
+ case .bootstrapping: return "Reading ~/.codex/auth.json."
+ case .loading: return "Background refresh in progress."
+ case .notBootstrapped, .noCredentials:
+ return "Click Connect to read your Codex CLI credentials. If Connect fails, run `codex login` in your terminal first to create ~/.codex/auth.json."
+ case .failed: return store.codexError ?? ""
+ }
+ }
+
+ @ViewBuilder
+ private var actionButton: some View {
+ switch store.codexLoadState {
+ case .loaded, .transientFailure, .loading:
+ Button("Disconnect") { showDisconnectConfirm = true }
+ .confirmationDialog(
+ "Disconnect Codex?",
+ isPresented: $showDisconnectConfirm
+ ) {
+ Button("Disconnect", role: .destructive) {
+ store.disconnectCodex()
+ }
+ Button("Cancel", role: .cancel) {}
+ } message: {
+ Text("CodeBurn will stop tracking quota and delete its local copy of your Codex credentials. Your ~/.codex/auth.json is untouched — Codex CLI keeps working.")
+ }
+ case .terminalFailure, .noCredentials, .failed:
+ Button("Reconnect") { Task { await store.bootstrapCodex() } }
+ .buttonStyle(.borderedProminent)
+ case .notBootstrapped:
+ Button("Connect") { Task { await store.bootstrapCodex() } }
+ .buttonStyle(.borderedProminent)
+ case .bootstrapping:
+ ProgressView().controlSize(.small)
+ }
+ }
+}
+
+// MARK: - About
+
+private struct AboutSettingsTab: View {
+ private let appVersion: String =
+ (Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String) ?? "—"
+ private let buildVersion: String =
+ (Bundle.main.infoDictionary?["CFBundleVersion"] as? String) ?? "—"
+
+ var body: some View {
+ VStack(spacing: 14) {
+ Image(systemName: "flame.fill")
+ .font(.system(size: 40))
+ .foregroundStyle(Theme.brandAccent)
+ Text("CodeBurn")
+ .font(.system(size: 18, weight: .semibold))
+ Text("AI Coding Cost Tracker")
+ .font(.system(size: 12))
+ .foregroundStyle(.secondary)
+ Text("Version \(appVersion) (\(buildVersion))")
+ .font(.codeMono(size: 11))
+ .foregroundStyle(.secondary)
+ HStack(spacing: 10) {
+ Link("GitHub", destination: URL(string: "https://github.com/getagentseal/codeburn")!)
+ Link("Issues", destination: URL(string: "https://github.com/getagentseal/codeburn/issues")!)
+ }
+ .font(.system(size: 12))
+ }
+ .frame(maxWidth: .infinity, maxHeight: .infinity)
+ .padding()
+ }
+}
From daa673449c5ec1c30cebdeb8c0fee8b00797ebdf Mon Sep 17 00:00:00 2001
From: Resham Joshi <65915470+iamtoruk@users.noreply.github.com>
Date: Wed, 6 May 2026 22:15:11 -0700
Subject: [PATCH 057/115] Menubar and CLI hardening from multi-agent audit
(#257)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Two passes of validators across CLI accuracy, dashboard UX, menubar Swift,
performance, security, and end-to-end smoke tests on real session data.
Data-correctness fixes:
- parseLocalDate rejects month/day overflow. JS Date silently rolled
Feb 31 to Mar 3, so --from 2026-02-31 --to 2026-03-15 quietly dropped
sessions on Feb 28 - Mar 2. Now throws "Invalid date" with a clear
reason. Leap-day case covered (2024-02-29 valid, 2025-02-29 rejected).
- CSV/JSON exports use the active currency's natural decimal places. The
previous round2 helper produced ¥412.37 in CSV while the dashboard
rendered ¥412 — finance teams comparing the two surfaces saw a
discrepancy. New roundForActiveCurrency consults Intl.NumberFormat for
the right precision (0 for JPY/KRW/CLP, 2 for USD/EUR, etc).
- Copilot toolRequests is Array.isArray-guarded in both modern and legacy
event branches. Previously a corrupt session with toolRequests=null or
a string aborted the whole file's parse loop and silently dropped every
legitimate call after it.
- Codex token_count dedup uses a null sentinel for prevCumulativeTotal so
the first event is never confused with a duplicate. Sessions that emit
only last_token_usage (no total_token_usage) report cumulativeTotal=0
on every event; with the previous 0-initialized prev, the first event
matched the dedup guard and was dropped.
- LiteLLM pricing values are clamped to [0, 1] per token via safePerTokenRate.
Defense in depth against a tampered upstream JSON shipping negative or
absurdly large per-token costs that would otherwise propagate into all
cost totals.
Performance:
- Cursor SQLite parse no longer pegs at minutes on multi-GB DBs. Two
changes: per-conversation user-message buffer uses an index pointer
instead of Array.shift() (which was O(n) per call); and a real ROWID
cutoff via subquery limits the scan to the most recent 250k bubbles
with a stderr warning so power users get a partial report rather than
a stalled CLI.
- Spawned codeburn CLI subprocesses are terminated when the calling Task
is cancelled. Without this, rapid period/provider tab clicks in the
menubar cancelled the Task but left the subprocess running to
completion, piling up zombie processes.
UX:
- Dashboard period switch flips to loading and clears projects
synchronously before reloadData runs, eliminating the frame where the
new period label rendered over the old period's projects.
- Optimize findings tab paginates 3-at-a-time with j/k scroll. With 4
new detectors plus 7 originals, 8-10 findings * 6 lines was scrolling
the StatusBar off the alt buffer top.
- Custom --from/--to ranges hide the period tab strip and disable the
1-5 / arrow keys so a stray period press no longer abandons the user's
explicit range. A "Custom range: X to Y" banner replaces the tab strip.
- OpenCode storage-format warning is per-table-set, rate-limited to once
per process, and points the user at OpenCode's migration step or the
issue tracker. The previous all-or-nothing check fired the generic
"format not recognized" string for any schema mismatch.
Menubar / OAuth:
- Both Claude and Codex bootstrap (Reconnect button) now honour the
usageBlockedUntil 429 backoff that refreshIfBootstrapped respects.
Spamming Reconnect during sustained rate-limit windows previously
hammered the upstream endpoint on every click.
- Codex Retry-After HTTP header is parsed (delta-seconds plus IMF-fixdate
fallback) so we don't over-back-off when ChatGPT tells us a shorter
window than our 5-minute floor.
- Both credential cache files are written via SafeFile.write
(O_CREAT | O_EXCL | O_NOFOLLOW with explicit 0600) so there is no race
window where the temp file briefly exists at default umask, and a
symlink at the destination cannot redirect the write. Reads now route
through SafeFile.read with a 64 KiB cap, closing the symlink-follow gap
on Data(contentsOf:).
CI signal:
- TypeScript strict typecheck (tsc --noEmit) is now zero errors. The
six errors in src/providers/copilot.ts came from a discriminated-union
catch-all branch whose `data: Record` shape TS picked
over the specific event branches when narrowing on `type`. Removed the
catch-all; runtime falls through unknown event types via the existing
if/else chain.
Tests added: 16 new (now 555 total)
- date-range-filter: month/day/year overflow rejection, leap-day correctness
- currency-rounding: convertCost no-rounding contract, roundForActiveCurrency
for USD/JPY/KRW/EUR
- providers/copilot: malformed toolRequests does not abort the parse
- providers/cursor-bubble-dedup: re-parse after token mutation does not
double-count, single parse yields one call per bubble
- providers/codex: first event with cumulativeTotal=0 not dropped,
consecutive zero-cumulative duplicates still deduped
---
.../Data/ClaudeCredentialStore.swift | 27 ++-
.../Data/ClaudeSubscriptionService.swift | 7 +
.../Data/CodexCredentialStore.swift | 18 +-
.../Data/CodexSubscriptionService.swift | 31 ++-
.../CodeBurnMenubar/Data/DataClient.swift | 25 ++-
src/cli-date.ts | 10 +-
src/cli.ts | 3 +-
src/currency.ts | 13 +-
src/dashboard.tsx | 105 ++++++++---
src/export.ts | 18 +-
src/models.ts | 26 ++-
src/providers/codex.ts | 15 +-
src/providers/copilot.ts | 28 ++-
src/providers/cursor.ts | 87 ++++++++-
src/providers/opencode.ts | 56 ++++--
tests/currency-rounding.test.ts | 104 +++++++++++
tests/date-range-filter.test.ts | 18 ++
tests/providers/codex.test.ts | 61 ++++++
tests/providers/copilot.test.ts | 41 ++++
tests/providers/cursor-bubble-dedup.test.ts | 176 ++++++++++++++++++
20 files changed, 765 insertions(+), 104 deletions(-)
create mode 100644 tests/currency-rounding.test.ts
create mode 100644 tests/providers/cursor-bubble-dedup.test.ts
diff --git a/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift b/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift
index 544eb5b..9d887bf 100644
--- a/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/ClaudeCredentialStore.swift
@@ -285,27 +285,24 @@ enum ClaudeCredentialStore {
private static func readOurCache() throws -> CredentialRecord? {
let url = cacheFileURL()
guard FileManager.default.fileExists(atPath: url.path) else { return nil }
- let data = try Data(contentsOf: url)
+ // Route through SafeFile.read so we lstat for symlinks before opening
+ // and bound the read with maxCredentialBytes. Without this, an
+ // attacker who can plant a symlink in ~/Library/Application Support/
+ // CodeBurn/ between disconnect and reconnect could redirect our read
+ // to /dev/zero (unbounded memory) or another file the user owns.
+ let data = try SafeFile.read(from: url.path, maxBytes: maxCredentialBytes)
return try? JSONDecoder().decode(CredentialRecord.self, from: data)
}
private static func writeOurCache(record: CredentialRecord) throws {
let url = cacheFileURL()
- let dir = url.deletingLastPathComponent()
- try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true, attributes: nil)
let data = try JSONEncoder().encode(record)
- // Atomic temp-rename so a crash mid-write cannot leave a half-file.
- let tmp = url.appendingPathExtension("tmp-\(UUID().uuidString.prefix(8))")
- try data.write(to: tmp)
- // 0600 — owner read/write only. Mirrors ~/.claude/.credentials.json's
- // permission posture; nothing extra to protect since this is just a
- // cached copy of credentials the user already has on disk in cleartext.
- try? FileManager.default.setAttributes([.posixPermissions: NSNumber(value: Int16(0o600))], ofItemAtPath: tmp.path)
- if FileManager.default.fileExists(atPath: url.path) {
- _ = try FileManager.default.replaceItemAt(url, withItemAt: tmp)
- } else {
- try FileManager.default.moveItem(at: tmp, to: url)
- }
+ // SafeFile.write opens the temp file with O_CREAT | O_EXCL | O_NOFOLLOW
+ // and the explicit 0600 mode in a single syscall — no race window
+ // where the file briefly exists at default umask, and no chance of
+ // following a malicious symlink at the destination path. Also creates
+ // the parent dir at 0700.
+ try SafeFile.write(data, to: url.path, mode: 0o600)
}
private static func deleteOurCache() {
diff --git a/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift b/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift
index cd3ddb0..f97641d 100644
--- a/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/ClaudeSubscriptionService.swift
@@ -59,6 +59,13 @@ enum ClaudeSubscriptionService {
/// User-initiated. Reads Claude's keychain (PROMPTS), copies to our keychain,
/// then fetches usage. Idempotent — safe to call again to "reconnect".
static func bootstrap() async throws -> SubscriptionUsage {
+ // Honour the same 429 backoff that refreshIfBootstrapped respects.
+ // Without this, a user spamming Reconnect during a sustained
+ // rate-limit window hammers Anthropic on every click — exactly the
+ // pattern that escalates the backoff.
+ if let until = usageBlockedUntil(), until > Date() {
+ throw FetchError.rateLimited(retryAt: until)
+ }
let record: ClaudeCredentialStore.CredentialRecord
do {
record = try ClaudeCredentialStore.bootstrap()
diff --git a/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift b/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift
index 15441b5..d821151 100644
--- a/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/CodexCredentialStore.swift
@@ -200,24 +200,20 @@ enum CodexCredentialStore {
private static func readOurCache() throws -> CredentialRecord? {
let url = cacheFileURL()
guard FileManager.default.fileExists(atPath: url.path) else { return nil }
- let data = try Data(contentsOf: url)
+ // Symlink-defense + size cap (same hardening as ClaudeCredentialStore).
+ let data = try SafeFile.read(from: url.path, maxBytes: maxCredentialBytes)
return try? JSONDecoder().decode(CredentialRecord.self, from: data)
}
private static func writeOurCache(record: CredentialRecord) throws {
let url = cacheFileURL()
- let dir = url.deletingLastPathComponent()
- try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true, attributes: nil)
let data = try JSONEncoder().encode(record)
- let tmp = url.appendingPathExtension("tmp-\(UUID().uuidString.prefix(8))")
do {
- try data.write(to: tmp)
- try? FileManager.default.setAttributes([.posixPermissions: NSNumber(value: Int16(0o600))], ofItemAtPath: tmp.path)
- if FileManager.default.fileExists(atPath: url.path) {
- _ = try FileManager.default.replaceItemAt(url, withItemAt: tmp)
- } else {
- try FileManager.default.moveItem(at: tmp, to: url)
- }
+ // SafeFile.write opens the temp file with O_CREAT | O_EXCL | O_NOFOLLOW
+ // and the explicit 0600 mode in a single syscall — no race window
+ // where the file briefly exists at default umask, and no chance of
+ // following a malicious symlink at the destination path.
+ try SafeFile.write(data, to: url.path, mode: 0o600)
} catch {
throw StoreError.fileWriteFailed(String(describing: error))
}
diff --git a/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift b/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift
index 6a97bc5..ac3bd94 100644
--- a/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/CodexSubscriptionService.swift
@@ -47,6 +47,13 @@ enum CodexSubscriptionService {
}
static func bootstrap() async throws -> CodexUsage {
+ // Honour the same 429 backoff that refreshIfBootstrapped respects.
+ // A user clicking Reconnect during a sustained ChatGPT rate-limit
+ // window would otherwise re-hit /wham/usage on every click and keep
+ // the backoff window pegged.
+ if let until = usageBlockedUntil(), until > Date() {
+ throw FetchError.rateLimited(retryAt: until)
+ }
let record: CodexCredentialStore.CredentialRecord
do {
record = try CodexCredentialStore.bootstrap()
@@ -120,7 +127,12 @@ enum CodexSubscriptionService {
}
throw FetchError.usageHTTPError(401, String(data: data, encoding: .utf8))
case 429:
- let until = recordUsageRateLimit(retryAfterSeconds: nil)
+ // Honour the RFC Retry-After header when present — ChatGPT's quota
+ // endpoint sometimes sets it to a window shorter than our 5-min
+ // floor, and ignoring it forced users to wait longer than the
+ // server actually wanted.
+ let retryAfter = parseRetryAfterHeader(http.value(forHTTPHeaderField: "Retry-After"))
+ let until = recordUsageRateLimit(retryAfterSeconds: retryAfter)
throw FetchError.rateLimited(retryAt: until)
default:
throw FetchError.usageHTTPError(http.statusCode, String(data: data, encoding: .utf8))
@@ -205,6 +217,23 @@ enum CodexSubscriptionService {
}
@discardableResult
+ /// RFC 7231 says Retry-After is either a delta-seconds or an HTTP-date.
+ /// chatgpt.com appears to send delta-seconds today; we still parse both
+ /// shapes defensively so a future change to HTTP-date doesn't drop us
+ /// onto the silent 5-minute floor.
+ private static func parseRetryAfterHeader(_ value: String?) -> Int? {
+ guard let value = value?.trimmingCharacters(in: .whitespaces), !value.isEmpty else { return nil }
+ if let seconds = Int(value), seconds >= 0 { return seconds }
+ let f = DateFormatter()
+ f.locale = Locale(identifier: "en_US_POSIX")
+ f.timeZone = TimeZone(secondsFromGMT: 0)
+ f.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzz"
+ if let date = f.date(from: value) {
+ return max(0, Int(date.timeIntervalSinceNow))
+ }
+ return nil
+ }
+
private static func recordUsageRateLimit(retryAfterSeconds: Int?) -> Date {
let seconds = max(retryAfterSeconds ?? 300, 60)
let until = Date().addingTimeInterval(TimeInterval(seconds))
diff --git a/mac/Sources/CodeBurnMenubar/Data/DataClient.swift b/mac/Sources/CodeBurnMenubar/Data/DataClient.swift
index d7e388a..edd8a40 100644
--- a/mac/Sources/CodeBurnMenubar/Data/DataClient.swift
+++ b/mac/Sources/CodeBurnMenubar/Data/DataClient.swift
@@ -61,11 +61,6 @@ struct DataClient {
throw DataClientError.spawn(error.localizedDescription)
}
- // Drain both pipes concurrently so a large stderr can't deadlock stdout (the child
- // blocks on write once the pipe buffer fills). `drain` also enforces a byte cap.
- async let stdoutData = drain(outPipe.fileHandleForReading, limit: maxPayloadBytes)
- async let stderrData = drain(errPipe.fileHandleForReading, limit: maxStderrBytes)
-
// Wall-clock timeout: if the CLI hangs (parser stuck, disk stall), kill it.
let timeoutTask = Task.detached(priority: .utility) {
try? await Task.sleep(nanoseconds: spawnTimeoutSeconds * 1_000_000_000)
@@ -75,7 +70,25 @@ struct DataClient {
}
defer { timeoutTask.cancel() }
- let (out, err) = await (stdoutData, stderrData)
+ // If the caller cancels its Task (rapid period/provider tab clicks
+ // cancel switchTask in AppStore), terminate the in-flight subprocess.
+ // Without this the cancelled Task returns immediately but the spawned
+ // CLI keeps running to completion, piling up zombie codeburn processes
+ // on rapid UI interactions. We hold a strong reference to the Process
+ // in the cancellation handler so the closure can find it even if the
+ // surrounding scope has gone async.
+ let (out, err) = await withTaskCancellationHandler {
+ // Drain both pipes concurrently so a large stderr can't deadlock stdout
+ // (the child blocks on write once the pipe buffer fills). `drain`
+ // also enforces a byte cap.
+ async let stdoutData = drain(outPipe.fileHandleForReading, limit: maxPayloadBytes)
+ async let stderrData = drain(errPipe.fileHandleForReading, limit: maxStderrBytes)
+ return await (stdoutData, stderrData)
+ } onCancel: {
+ if process.isRunning {
+ process.terminate()
+ }
+ }
process.waitUntilExit()
if out.count >= maxPayloadBytes {
diff --git a/src/cli-date.ts b/src/cli-date.ts
index f62b401..a7b3202 100644
--- a/src/cli-date.ts
+++ b/src/cli-date.ts
@@ -47,7 +47,15 @@ function parseLocalDate(s: string): Date {
throw new Error(`Invalid date format "${s}": expected YYYY-MM-DD`)
}
const [y, m, d] = s.split('-').map(Number) as [number, number, number]
- return new Date(y, m - 1, d)
+ const date = new Date(y, m - 1, d)
+ // JS Date silently rolls overflow forward (Feb 31 → Mar 3). That makes a
+ // typo like `--from 2026-02-31 --to 2026-03-15` quietly drop sessions
+ // dated Feb 28 - Mar 2. Reject overflow so the user gets a loud error
+ // instead of an off-by-N-days date range.
+ if (date.getFullYear() !== y || date.getMonth() !== m - 1 || date.getDate() !== d) {
+ throw new Error(`Invalid date "${s}": ${m}/${d}/${y} is not a real calendar date`)
+ }
+ return date
}
export function parseDateRangeFlags(from: string | undefined, to: string | undefined): DateRange | null {
diff --git a/src/cli.ts b/src/cli.ts
index 470614d..df0f2bf 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -300,7 +300,8 @@ program
return
}
await hydrateCache()
- await renderDashboard(period, opts.provider, opts.refresh, opts.project, opts.exclude, customRange)
+ const customRangeLabel = customRange ? formatDateRangeLabel(opts.from, opts.to) : undefined
+ await renderDashboard(period, opts.provider, opts.refresh, opts.project, opts.exclude, customRange, customRangeLabel)
})
function buildPeriodData(label: string, projects: ProjectSummary[]): PeriodData {
diff --git a/src/currency.ts b/src/currency.ts
index bc2e792..92f0364 100644
--- a/src/currency.ts
+++ b/src/currency.ts
@@ -47,13 +47,24 @@ function resolveSymbol(code: string): string {
return parts.find(p => p.type === 'currency')?.value ?? code
}
-function getFractionDigits(code: string): number {
+export function getFractionDigits(code: string): number {
return new Intl.NumberFormat('en', {
style: 'currency',
currency: code,
}).resolvedOptions().maximumFractionDigits ?? 2
}
+/// Round a converted cost to the currency's natural decimal places. JPY/KRW/CLP
+/// resolve to 0 fraction digits — exporting those with `round2` produced rows
+/// like `¥412.37` while the dashboard rendered `¥412`, breaking finance reports
+/// that compare the two surfaces.
+export function roundForActiveCurrency(value: number): number {
+ const code = getCurrency().code
+ const digits = getFractionDigits(code)
+ const factor = Math.pow(10, digits)
+ return Math.round(value * factor) / factor
+}
+
function getCacheDir(): string {
return join(homedir(), '.cache', 'codeburn')
}
diff --git a/src/dashboard.tsx b/src/dashboard.tsx
index f1e53ba..35c6d92 100644
--- a/src/dashboard.tsx
+++ b/src/dashboard.tsx
@@ -14,7 +14,7 @@ import { dateKey } from './day-aggregator.js'
import { CompareView } from './compare.js'
import { getPlanUsageOrNull, type PlanUsage } from './plan-usage.js'
import { planDisplayName } from './plans.js'
-import { getDateRange, PERIODS, PERIOD_LABELS, type Period } from './cli-date.js'
+import { getDateRange, PERIODS, PERIOD_LABELS, type Period, formatDateRangeLabel } from './cli-date.js'
import { join } from 'path'
import { patchStdoutForWindows } from './ink-win.js'
@@ -563,13 +563,23 @@ function FindingPanel({ index, finding, costRate, width }: { index: number; find
const GRADE_COLORS: Record = { A: '#5BF5A0', B: '#5BF5A0', C: GOLD, D: ORANGE, F: '#F55B5B' }
-function OptimizeView({ findings, costRate, projects, label, width, healthScore, healthGrade }: { findings: WasteFinding[]; costRate: number; projects: ProjectSummary[]; label: string; width: number; healthScore: number; healthGrade: string }) {
+// Each finding panel takes ~6-8 lines. Show 3 at a time so the window fits a
+// 30-line terminal alongside the optimize header + status bar; users page
+// with j/k. Without this cap, 4 new detectors + 7 originals scrolled findings
+// off the alt-buffer top and the user couldn't see the StatusBar at all.
+const FINDINGS_WINDOW_SIZE = 3
+
+function OptimizeView({ findings, costRate, projects, label, width, healthScore, healthGrade, cursor }: { findings: WasteFinding[]; costRate: number; projects: ProjectSummary[]; label: string; width: number; healthScore: number; healthGrade: string; cursor: number }) {
const periodCost = projects.reduce((s, p) => s + p.totalCostUSD, 0)
const totalTokens = findings.reduce((s, f) => s + f.tokensSaved, 0)
const totalCost = totalTokens * costRate
const pctRaw = periodCost > 0 ? (totalCost / periodCost) * 100 : 0
const pct = pctRaw >= 1 ? pctRaw.toFixed(0) : pctRaw.toFixed(1)
const gradeColor = GRADE_COLORS[healthGrade] ?? DIM
+ const total = findings.length
+ const start = total === 0 ? 0 : Math.min(cursor, Math.max(0, total - FINDINGS_WINDOW_SIZE))
+ const end = Math.min(start + FINDINGS_WINDOW_SIZE, total)
+ const visible = findings.slice(start, end)
return (
@@ -580,27 +590,36 @@ function OptimizeView({ findings, costRate, projects, label, width, healthScore,
({healthScore}/100)
Savings: ~{formatTokens(totalTokens)} tokens (~{formatCost(totalCost)}, ~{pct}% of spend)
+ {total > FINDINGS_WINDOW_SIZE && (
+ Showing {start + 1}–{end} of {total} · j/k to scroll
+ )}
- {findings.map((f, i) => )}
+ {visible.map((f, i) => )}
Token estimates are approximate.
)
}
-function StatusBar({ width, showProvider, view, findingCount, optimizeAvailable, compareAvailable }: { width: number; showProvider?: boolean; view?: View; findingCount?: number; optimizeAvailable?: boolean; compareAvailable?: boolean }) {
+function StatusBar({ width, showProvider, view, findingCount, optimizeAvailable, compareAvailable, customRange }: { width: number; showProvider?: boolean; view?: View; findingCount?: number; optimizeAvailable?: boolean; compareAvailable?: boolean; customRange?: boolean }) {
const isOptimize = view === 'optimize'
return (
{isOptimize
- ? <>b back >
- : <>{'<'}{'>'} switch >}
- q quit
- 1 today
- 2 week
- 3 30 days
- 4 month
- 5 6 months
+ ? <>b back j/k scroll >
+ : !customRange
+ ? <>{'<'}{'>'} switch >
+ : null}
+ q quit
+ {!customRange && !isOptimize && (
+ <>
+ 1 today
+ 2 week
+ 3 30 days
+ 4 month
+ 5 6 months
+ >
+ )}
{!isOptimize && optimizeAvailable && findingCount != null && findingCount > 0 && (
<> o optimize ({findingCount})>
)}
@@ -639,7 +658,7 @@ function DashboardContent({ projects, period, columns, activeProvider, budgets,
)
}
-function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider, initialPlanUsage, refreshSeconds, projectFilter, excludeFilter }: {
+function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider, initialPlanUsage, refreshSeconds, projectFilter, excludeFilter, customRange, customRangeLabel }: {
initialProjects: ProjectSummary[]
initialPeriod: Period
initialProvider: string
@@ -647,6 +666,8 @@ function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider,
refreshSeconds?: number
projectFilter?: string[]
excludeFilter?: string[]
+ customRange?: DateRange | null
+ customRangeLabel?: string
}) {
const { exit } = useApp()
const [period, setPeriod] = useState(initialPeriod)
@@ -658,6 +679,11 @@ function InteractiveDashboard({ initialProjects, initialPeriod, initialProvider,
const [optimizeResult, setOptimizeResult] = useState(null)
const [projectBudgets, setProjectBudgets] = useState