add sync script for openrouter, sync openrouter models

This commit is contained in:
Aiden Cline
2026-05-15 10:00:32 -05:00
parent 8269e04222
commit c2c5cc8f21
383 changed files with 6041 additions and 1373 deletions
+1
View File
File diff suppressed because one or more lines are too long
+2 -1
View File
@@ -24,7 +24,8 @@
"vercel:generate": "bun ./packages/core/script/generate-vercel.ts",
"wandb:generate": "bun ./packages/core/script/generate-wandb.ts",
"digitalocean:generate": "bun ./packages/core/script/generate-digitalocean.ts",
"ambient:generate": "bun ./packages/core/script/generate-ambient.ts"
"ambient:generate": "bun ./packages/core/script/generate-ambient.ts",
"openrouter:sync": "bun ./packages/core/script/sync-openrouter.ts"
},
"dependencies": {
"@cloudflare/workers-types": "^4.20260424.1",
+309
View File
@@ -0,0 +1,309 @@
#!/usr/bin/env bun
import path from "node:path";
import { mkdir, rm } from "node:fs/promises";
import { z } from "zod";
import { ModelFamilyValues } from "../src/family.js";
import { AuthoredModel, AuthoredModelShape } from "../src/schema.js";
const API_ENDPOINT = "https://openrouter.ai/api/v1/models";
const OpenRouterModel = z
.object({
id: z.string(),
name: z.string(),
created: z.number(),
hugging_face_id: z.string().nullable(),
knowledge_cutoff: z.string().nullable(),
context_length: z.number(),
architecture: z.object({
input_modalities: z.array(z.string()),
output_modalities: z.array(z.string()),
}),
pricing: z
.object({
prompt: z.string(),
completion: z.string(),
internal_reasoning: z.string().optional(),
input_cache_read: z.string().optional(),
input_cache_write: z.string().optional(),
}),
top_provider: z.object({
context_length: z.number().nullable(),
max_completion_tokens: z.number().nullable(),
}),
supported_parameters: z.array(z.string()),
});
const OpenRouterResponse = z
.object({
data: z.array(OpenRouterModel),
})
.passthrough();
const ExistingModel = AuthoredModelShape.partial()
.extend({
extends: z
.object({
from: z.string(),
omit: z.array(z.string()).optional(),
})
.strict()
.optional(),
})
.strict();
type OpenRouterModel = z.infer<typeof OpenRouterModel>;
type ExistingModel = z.infer<typeof ExistingModel>;
function dateFromTimestamp(timestamp: number | undefined) {
if (timestamp === undefined) return new Date().toISOString().slice(0, 10);
return new Date(timestamp * 1000).toISOString().slice(0, 10);
}
function formatInteger(n: number) {
return String(n).replace(/\B(?=(\d{3})+(?!\d))/g, "_");
}
function quote(value: string) {
return `"${value.replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"`;
}
function price(value: string | undefined) {
if (value === undefined) return undefined;
const number = Number(value);
return Number.isFinite(number) && number >= 0
? Math.round(number * 1_000_000_000_000) / 1_000_000
: undefined;
}
function modality(value: string) {
return value === "file" ? "pdf" : value;
}
function modalities(values: string[] | undefined, fallback: string[]) {
const allowed = new Set(["text", "audio", "image", "video", "pdf"]);
const result = (values ?? fallback)
.map((value) => modality(value.toLowerCase()))
.filter((value) => allowed.has(value));
return [...new Set(result.length > 0 ? result : fallback)];
}
function inferFamily(model: OpenRouterModel, name: string) {
const target = `${model.id} ${name}`.toLowerCase();
return [...ModelFamilyValues]
.sort((a, b) => b.length - a.length)
.find((family) => target.includes(family.toLowerCase()));
}
function buildModel(model: OpenRouterModel, existing: ExistingModel | undefined) {
const params = new Set(model.supported_parameters ?? []);
const name = model.name.replace(/^[^:]+:\s+/, "");
const input = modalities(model.architecture?.input_modalities, ["text"]);
const output = modalities(model.architecture?.output_modalities, ["text"]);
const prompt = price(model.pricing?.prompt);
const completion = price(model.pricing?.completion);
const reasoning = params.has("reasoning") || params.has("include_reasoning");
const context = model.top_provider?.context_length ?? model.context_length ?? 0;
const maxOutput = model.top_provider?.max_completion_tokens ?? existing?.limit?.output ?? context;
return {
name,
family: existing?.family ?? inferFamily(model, name),
release_date: dateFromTimestamp(model.created),
last_updated: dateFromTimestamp(model.created),
attachment: input.some((value) => value !== "text"),
reasoning,
temperature: params.has("temperature"),
tool_call: params.has("tools") || params.has("tool_choice"),
structured_output:
params.has("structured_outputs") || params.has("response_format"),
knowledge: model.knowledge_cutoff?.slice(0, 10) ?? existing?.knowledge,
open_weights: Boolean(model.hugging_face_id),
status: existing?.status,
interleaved: existing?.interleaved,
cost:
prompt !== undefined && completion !== undefined
? {
input: prompt,
output: completion,
reasoning: reasoning ? price(model.pricing?.internal_reasoning) : undefined,
cache_read: price(model.pricing?.input_cache_read),
cache_write: price(model.pricing?.input_cache_write),
tiers: existing?.cost?.tiers,
}
: existing?.cost,
limit: {
context,
input: existing?.limit?.input,
output: maxOutput,
},
modalities: { input, output },
};
}
function formatToml(model: ReturnType<typeof buildModel>) {
const lines: string[] = [];
lines.push(`name = ${quote(model.name)}`);
if (model.family) lines.push(`family = ${quote(model.family)}`);
lines.push(`release_date = ${quote(model.release_date)}`);
lines.push(`last_updated = ${quote(model.last_updated)}`);
lines.push(`attachment = ${model.attachment}`);
lines.push(`reasoning = ${model.reasoning}`);
lines.push(`temperature = ${model.temperature}`);
lines.push(`tool_call = ${model.tool_call}`);
lines.push(`structured_output = ${model.structured_output}`);
if (model.knowledge) lines.push(`knowledge = ${quote(model.knowledge)}`);
lines.push(`open_weights = ${model.open_weights}`);
if (model.status) lines.push(`status = ${quote(model.status)}`);
if (model.interleaved !== undefined) {
lines.push("");
if (model.interleaved === true) {
lines.push("interleaved = true");
} else {
lines.push("[interleaved]");
lines.push(`field = ${quote(model.interleaved.field)}`);
}
}
if (model.cost) {
lines.push("");
lines.push("[cost]");
if (model.cost.input !== undefined) lines.push(`input = ${model.cost.input}`);
if (model.cost.output !== undefined) lines.push(`output = ${model.cost.output}`);
if (model.cost.reasoning !== undefined) {
lines.push(`reasoning = ${model.cost.reasoning}`);
}
if (model.cost.cache_read !== undefined) {
lines.push(`cache_read = ${model.cost.cache_read}`);
}
if (model.cost.cache_write !== undefined) {
lines.push(`cache_write = ${model.cost.cache_write}`);
}
for (const tier of model.cost.tiers ?? []) {
lines.push("");
lines.push("[[cost.tiers]]");
lines.push(`tier = { size = ${formatInteger(tier.tier.size)} }`);
if (tier.input !== undefined) lines.push(`input = ${tier.input}`);
if (tier.output !== undefined) lines.push(`output = ${tier.output}`);
if (tier.cache_read !== undefined) lines.push(`cache_read = ${tier.cache_read}`);
if (tier.cache_write !== undefined) lines.push(`cache_write = ${tier.cache_write}`);
}
}
lines.push("");
lines.push("[limit]");
lines.push(`context = ${formatInteger(model.limit.context)}`);
if (model.limit.input !== undefined) {
lines.push(`input = ${formatInteger(model.limit.input)}`);
}
lines.push(`output = ${formatInteger(model.limit.output)}`);
lines.push("");
lines.push("[modalities]");
lines.push(`input = [${model.modalities.input.map(quote).join(", ")}]`);
lines.push(`output = [${model.modalities.output.map(quote).join(", ")}]`);
return `${lines.join("\n")}\n`;
}
async function main() {
const dryRun = process.argv.includes("--dry-run");
const modelsDir = path.join(
import.meta.dirname,
"..",
"..",
"..",
"providers",
"openrouter",
"models",
);
const headers = process.env.OPENROUTER_API_KEY
? { Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}` }
: undefined;
const response = await fetch(API_ENDPOINT, { headers });
if (!response.ok) {
throw new Error(`OpenRouter request failed: ${response.status} ${response.statusText}`);
}
const parsed = OpenRouterResponse.safeParse(await response.json());
if (!parsed.success) throw parsed.error;
const existingFiles = new Set<string>();
for await (const file of new Bun.Glob("**/*.toml").scan({ cwd: modelsDir })) {
existingFiles.add(file);
}
let created = 0;
let updated = 0;
let removed = 0;
let unchanged = 0;
const apiFiles = new Set<string>();
for (const apiModel of parsed.data.data) {
const relativePath = `${apiModel.id}.toml`;
const filePath = path.join(modelsDir, relativePath);
const file = Bun.file(filePath);
const current = await file.exists() ? await file.text() : undefined;
const existing = current === undefined
? undefined
: ExistingModel.parse(Bun.TOML.parse(current));
const model = buildModel(apiModel, existing);
const next = formatToml(model);
const valid = AuthoredModel.safeParse({
id: relativePath.slice(0, -5),
...Bun.TOML.parse(next),
});
if (!valid.success) {
valid.error.cause = { relativePath };
throw valid.error;
}
apiFiles.add(relativePath);
if (current === undefined) {
created++;
if (dryRun) {
console.log(`Would create ${relativePath}`);
} else {
await mkdir(path.dirname(filePath), { recursive: true });
await Bun.write(filePath, next);
}
continue;
}
if (current !== next) {
updated++;
if (dryRun) {
console.log(`Would update ${relativePath}`);
} else {
await Bun.write(filePath, next);
}
} else {
unchanged++;
}
}
for (const relativePath of existingFiles) {
if (apiFiles.has(relativePath)) continue;
removed++;
if (dryRun) {
console.log(`Would remove ${relativePath}`);
} else {
await rm(path.join(modelsDir, relativePath));
}
}
console.log(
`${dryRun ? "Dry run: " : ""}${created} created, ${updated} updated, ${removed} removed, ${unchanged} unchanged`,
);
}
await main();
@@ -0,0 +1,23 @@
name = "Jamba Large 1.7"
family = "jamba"
release_date = "2025-08-08"
last_updated = "2025-08-08"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-08-31"
open_weights = true
[cost]
input = 2
output = 8
[limit]
context = 256_000
output = 4_096
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Aion-1.0-Mini"
family = "o"
release_date = "2025-02-04"
last_updated = "2025-02-04"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = false
open_weights = true
[cost]
input = 0.7
output = 1.4
[limit]
context = 131_072
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Aion-1.0"
family = "o"
release_date = "2025-02-04"
last_updated = "2025-02-04"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = false
open_weights = false
[cost]
input = 4
output = 8
[limit]
context = 131_072
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Aion-2.0"
family = "o"
release_date = "2026-02-23"
last_updated = "2026-02-23"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = false
open_weights = false
[cost]
input = 0.8
output = 1.6
cache_read = 0.2
[limit]
context = 131_072
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Aion-RP 1.0 (8B)"
family = "llama"
release_date = "2025-02-04"
last_updated = "2025-02-04"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2023-12-31"
open_weights = false
[cost]
input = 0.8
output = 1.6
[limit]
context = 32_768
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "CodeLLaMa 7B Instruct Solidity"
family = "llama"
release_date = "2025-04-14"
last_updated = "2025-04-14"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2023-06-30"
open_weights = true
[cost]
input = 0.8
output = 1.2
[limit]
context = 4_096
output = 4_096
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,24 @@
name = "Tongyi DeepResearch 30B A3B"
family = "yi"
release_date = "2025-09-18"
last_updated = "2025-09-18"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.09
output = 0.45
cache_read = 0.09
[limit]
context = 131_072
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Olmo 3 32B Think"
family = "allenai"
release_date = "2025-11-21"
last_updated = "2025-11-21"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = true
open_weights = true
[cost]
input = 0.15
output = 0.5
[limit]
context = 65_536
output = 65_536
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Nova 2 Lite"
family = "nova"
release_date = "2025-12-02"
last_updated = "2025-12-02"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = false
open_weights = false
[cost]
input = 0.3
output = 2.5
[limit]
context = 1_000_000
output = 65_535
[modalities]
input = ["text", "image", "video", "pdf"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Nova Lite 1.0"
family = "nova-lite"
release_date = "2024-12-05"
last_updated = "2024-12-05"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2024-10-31"
open_weights = false
[cost]
input = 0.06
output = 0.24
[limit]
context = 300_000
output = 5_120
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Nova Micro 1.0"
family = "nova-micro"
release_date = "2024-12-05"
last_updated = "2024-12-05"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2024-10-31"
open_weights = false
[cost]
input = 0.035
output = 0.14
[limit]
context = 128_000
output = 5_120
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Nova Premier 1.0"
family = "nova"
release_date = "2025-10-31"
last_updated = "2025-10-31"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = false
open_weights = false
[cost]
input = 2.5
output = 12.5
cache_read = 0.625
[limit]
context = 1_000_000
output = 32_000
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Nova Pro 1.0"
family = "nova-pro"
release_date = "2024-12-05"
last_updated = "2024-12-05"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2024-10-31"
open_weights = false
[cost]
input = 0.8
output = 3.2
[limit]
context = 300_000
output = 5_120
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Magnum v4 72B"
family = "o"
release_date = "2024-10-22"
last_updated = "2024-10-22"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = true
knowledge = "2024-06-30"
open_weights = true
[cost]
input = 3
output = 5
[limit]
context = 16_384
output = 2_048
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,25 @@
name = "Claude 3 Haiku"
family = "claude"
release_date = "2024-03-13"
last_updated = "2024-03-13"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2023-08-31"
open_weights = false
[cost]
input = 0.25
output = 1.25
cache_read = 0.03
cache_write = 0.3
[limit]
context = 200_000
output = 4_096
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -1,2 +1,25 @@
[extends]
from = "anthropic/claude-3-5-haiku-20241022"
name = "Claude 3.5 Haiku"
family = "claude"
release_date = "2024-11-04"
last_updated = "2024-11-04"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2024-07-31"
open_weights = false
[cost]
input = 0.8
output = 4
cache_read = 0.08
cache_write = 1
[limit]
context = 200_000
output = 8_192
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -11,9 +11,9 @@ knowledge = "2025-02-28"
open_weights = false
[cost]
input = 1.00
output = 5.00
cache_read = 0.10
input = 1
output = 5
cache_read = 0.1
cache_write = 1.25
[limit]
@@ -7,13 +7,13 @@ reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-03-31"
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 15.00
output = 75.00
cache_read = 1.50
input = 15
output = 75
cache_read = 1.5
cache_write = 18.75
[limit]
@@ -21,5 +21,5 @@ context = 200_000
output = 32_000
[modalities]
input = ["text", "image", "pdf"]
input = ["image", "text", "pdf"]
output = ["text"]
@@ -11,15 +11,15 @@ knowledge = "2025-05-30"
open_weights = false
[cost]
input = 5.00
output = 25.00
cache_read = 0.50
input = 5
output = 25
cache_read = 0.5
cache_write = 6.25
[limit]
context = 200_000
output = 32_000
output = 64_000
[modalities]
input = ["text", "image", "pdf"]
input = ["pdf", "image", "text"]
output = ["text"]
@@ -0,0 +1,24 @@
name = "Claude Opus 4.6 (Fast)"
family = "claude-opus"
release_date = "2026-04-07"
last_updated = "2026-04-07"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 30
output = 150
cache_read = 3
cache_write = 37.5
[limit]
context = 1_000_000
output = 128_000
[modalities]
input = ["text", "image", "pdf"]
output = ["text"]
@@ -1,7 +1,7 @@
name = "Claude Opus 4.6"
family = "claude-opus"
release_date = "2026-02-05"
last_updated = "2026-02-05"
release_date = "2026-02-04"
last_updated = "2026-02-04"
attachment = true
reasoning = true
temperature = true
@@ -11,17 +11,17 @@ knowledge = "2025-05-31"
open_weights = false
[cost]
input = 5.00
output = 25.00
cache_read = 0.50
input = 5
output = 25
cache_read = 0.5
cache_write = 6.25
[[cost.tiers]]
tier = { size = 200_000 }
input = 10.00
output = 37.50
cache_read = 1.00
cache_write = 12.50
input = 10
output = 37.5
cache_read = 1
cache_write = 12.5
[limit]
context = 1_000_000
@@ -0,0 +1,24 @@
name = "Claude Opus 4.7 (Fast)"
family = "claude-opus"
release_date = "2026-05-12"
last_updated = "2026-05-12"
attachment = true
reasoning = true
temperature = false
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 30
output = 150
cache_read = 3
cache_write = 37.5
[limit]
context = 1_000_000
output = 128_000
[modalities]
input = ["text", "image", "pdf"]
output = ["text"]
@@ -11,17 +11,17 @@ knowledge = "2026-01-31"
open_weights = false
[cost]
input = 5.00
output = 25.00
cache_read = 0.50
input = 5
output = 25
cache_read = 0.5
cache_write = 6.25
[[cost.tiers]]
tier = { size = 200_000 }
input = 10.00
output = 37.50
cache_read = 1.00
cache_write = 12.50
input = 10
output = 37.5
cache_read = 1
cache_write = 12.5
[limit]
context = 1_000_000
@@ -1,2 +1,25 @@
[extends]
from = "anthropic/claude-opus-4-20250514"
name = "Claude Opus 4"
family = "claude-opus"
release_date = "2025-05-22"
last_updated = "2025-05-22"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = false
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 15
output = 75
cache_read = 1.5
cache_write = 18.75
[limit]
context = 200_000
output = 32_000
[modalities]
input = ["image", "text", "pdf"]
output = ["text"]
@@ -7,21 +7,21 @@ reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-07-31"
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 3.00
output = 15.00
cache_read = 0.30
input = 3
output = 15
cache_read = 0.3
cache_write = 3.75
[[cost.tiers]]
tier = { size = 200_000 }
input = 6.00
output = 22.50
cache_read = 0.60
cache_write = 7.50
input = 6
output = 22.5
cache_read = 0.6
cache_write = 7.5
[limit]
context = 1_000_000
@@ -11,22 +11,22 @@ knowledge = "2025-08-31"
open_weights = false
[cost]
input = 3.00
output = 15.00
cache_read = 0.30
input = 3
output = 15
cache_read = 0.3
cache_write = 3.75
[[cost.tiers]]
tier = { size = 200_000 }
input = 6.00
output = 22.50
cache_read = 0.60
cache_write = 7.50
input = 6
output = 22.5
cache_read = 0.6
cache_write = 7.5
[limit]
context = 1_000_000
output = 128_000
[modalities]
input = ["text", "image"]
input = ["text", "image", "pdf"]
output = ["text"]
@@ -6,26 +6,27 @@ attachment = true
reasoning = true
temperature = true
tool_call = true
knowledge = "2025-03-31"
structured_output = false
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 3.00
output = 15.00
cache_read = 0.30
input = 3
output = 15
cache_read = 0.3
cache_write = 3.75
[[cost.tiers]]
tier = { size = 200_000 }
input = 6.00
output = 22.50
cache_read = 0.60
cache_write = 7.50
input = 6
output = 22.5
cache_read = 0.6
cache_write = 7.5
[limit]
context = 200_000
context = 1_000_000
output = 64_000
[modalities]
input = ["text", "image", "pdf"]
input = ["image", "text", "pdf"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Coder Large"
family = "o"
release_date = "2025-05-05"
last_updated = "2025-05-05"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-03-31"
open_weights = false
[cost]
input = 0.5
output = 0.8
[limit]
context = 32_768
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Maestro Reasoning"
family = "o"
release_date = "2025-05-05"
last_updated = "2025-05-05"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-03-31"
open_weights = false
[cost]
input = 0.9
output = 3.3
[limit]
context = 131_072
output = 32_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Spotlight"
family = "o"
release_date = "2025-05-05"
last_updated = "2025-05-05"
attachment = true
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-03-31"
open_weights = false
[cost]
input = 0.18
output = 0.18
[limit]
context = 131_072
output = 65_537
[modalities]
input = ["image", "text"]
output = ["text"]
@@ -1,23 +1,21 @@
name = "Trinity Large Preview"
family = "trinity"
release_date = "2026-01-28"
last_updated = "2026-01-28"
release_date = "2026-01-27"
last_updated = "2026-01-27"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = true
structured_output = true
open_weights = true
[cost]
input = 0.00
output = 0.00
input = 0.15
output = 0.45
[limit]
context = 131_072
output = 131_072
context = 131_000
output = 131_000
[modalities]
input = ["text"]
@@ -1,20 +1,22 @@
name = "Trinity Large Thinking"
family = "trinity"
release_date = "2026-04-01"
last_updated = "2026-04-01"
attachment = false
reasoning = true
tool_call = true
temperature = true
release_date = "2026-04-01"
last_updated = "2026-04-03"
tool_call = true
structured_output = true
open_weights = true
[cost]
input = 0.22
output = 0.85
cache_read = 0.06
[limit]
context = 262_144
output = 80_000
output = 262_144
[modalities]
input = ["text"]
@@ -0,0 +1,22 @@
name = "Trinity Large Thinking (free)"
family = "trinity"
release_date = "2026-04-01"
last_updated = "2026-04-01"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = false
open_weights = true
[cost]
input = 0
output = 0
[limit]
context = 262_144
output = 80_000
[modalities]
input = ["text"]
output = ["text"]
@@ -1,7 +1,7 @@
name = "GPT OSS 120B (exacto)"
family = "gpt-oss"
release_date = "2025-08-05"
last_updated = "2025-08-05"
name = "Trinity Mini"
family = "trinity-mini"
release_date = "2025-12-01"
last_updated = "2025-12-01"
attachment = false
reasoning = true
temperature = true
@@ -10,12 +10,12 @@ structured_output = true
open_weights = true
[cost]
input = 0.05
output = 0.24
input = 0.045
output = 0.15
[limit]
context = 131_072
output = 32_768
output = 131_072
[modalities]
input = ["text"]
@@ -0,0 +1,23 @@
name = "Virtuoso Large"
family = "o"
release_date = "2025-05-05"
last_updated = "2025-05-05"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2025-03-31"
open_weights = false
[cost]
input = 0.75
output = 1.2
[limit]
context = 131_072
output = 64_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "CoBuddy (free)"
family = "o"
release_date = "2026-05-06"
last_updated = "2026-05-06"
attachment = false
reasoning = true
temperature = false
tool_call = true
structured_output = false
open_weights = false
[cost]
input = 0
output = 0
[limit]
context = 131_072
output = 65_536
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "ERNIE 4.5 21B A3B Thinking"
family = "ernie"
release_date = "2025-10-09"
last_updated = "2025-10-09"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.07
output = 0.28
[limit]
context = 131_072
output = 65_536
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "ERNIE 4.5 21B A3B"
family = "ernie"
release_date = "2025-08-12"
last_updated = "2025-08-12"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = false
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.07
output = 0.28
[limit]
context = 120_000
output = 8_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "ERNIE 4.5 300B A47B "
family = "ernie"
release_date = "2025-06-30"
last_updated = "2025-06-30"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.28
output = 1.1
[limit]
context = 123_000
output = 12_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "ERNIE 4.5 VL 28B A3B"
family = "ernie"
release_date = "2025-08-12"
last_updated = "2025-08-12"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = false
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.14
output = 0.56
[limit]
context = 30_000
output = 8_000
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "ERNIE 4.5 VL 424B A47B "
family = "ernie"
release_date = "2025-06-30"
last_updated = "2025-06-30"
attachment = true
reasoning = true
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.42
output = 1.25
[limit]
context = 123_000
output = 16_000
[modalities]
input = ["image", "text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Qianfan-OCR-Fast"
family = "o"
release_date = "2026-04-20"
last_updated = "2026-04-20"
attachment = true
reasoning = true
temperature = true
tool_call = false
structured_output = false
open_weights = false
[cost]
input = 0.68
output = 2.81
[limit]
context = 65_536
output = 28_672
[modalities]
input = ["image", "text"]
output = ["text"]
@@ -1,23 +0,0 @@
name = "FLUX.2 Flex"
family = "flux"
release_date = "2025-11-25"
last_updated = "2026-01-31"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = false
open_weights = false
[cost]
input = 0.00
output = 0.00
[limit]
context = 67_344
output = 67_344
[modalities]
input = ["image","text"]
output = ["image"]
@@ -1,23 +0,0 @@
name = "FLUX.2 Klein 4B"
family = "flux"
release_date = "2026-01-14"
last_updated = "2026-01-31"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = false
open_weights = true
[cost]
input = 0.00
output = 0.00
[limit]
context = 40_960
output = 40_960
[modalities]
input = ["image","text"]
output = ["image"]
@@ -1,23 +0,0 @@
name = "FLUX.2 Max"
family = "flux"
release_date = "2025-12-16"
last_updated = "2026-01-31"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = false
open_weights = false
[cost]
input = 0.00
output = 0.00
[limit]
context = 46_864
output = 46_864
[modalities]
input = ["image","text"]
output = ["image"]
@@ -1,23 +0,0 @@
name = "FLUX.2 Pro"
family = "flux"
release_date = "2025-11-25"
last_updated = "2026-01-31"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = false
open_weights = false
[cost]
input = 0.00
output = 0.00
[limit]
context = 46_864
output = 46_864
[modalities]
input = ["image","text"]
output = ["image"]
@@ -0,0 +1,22 @@
name = "Seed 1.6 Flash"
family = "seed"
release_date = "2025-12-23"
last_updated = "2025-12-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 0.075
output = 0.3
[limit]
context = 262_144
output = 32_768
[modalities]
input = ["image", "text", "video"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Seed 1.6"
family = "seed"
release_date = "2025-12-23"
last_updated = "2025-12-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 0.25
output = 2
[limit]
context = 262_144
output = 32_768
[modalities]
input = ["image", "text", "video"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Seed-2.0-Lite"
family = "seed"
release_date = "2026-03-10"
last_updated = "2026-03-10"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 0.25
output = 2
[limit]
context = 262_144
output = 131_072
[modalities]
input = ["text", "image", "video"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Seed-2.0-Mini"
family = "seed"
release_date = "2026-02-26"
last_updated = "2026-02-26"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 0.1
output = 0.4
[limit]
context = 262_144
output = 131_072
[modalities]
input = ["text", "image", "video"]
output = ["text"]
@@ -1,23 +0,0 @@
name = "Seedream 4.5"
family = "seed"
release_date = "2025-12-23"
last_updated = "2026-01-31"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = false
open_weights = true
[cost]
input = 0.00
output = 0.00
[limit]
context = 4_096
output = 4_096
[modalities]
input = ["image","text"]
output = ["image"]
@@ -0,0 +1,23 @@
name = "UI-TARS 7B "
release_date = "2025-07-22"
last_updated = "2025-07-22"
attachment = true
reasoning = false
temperature = true
tool_call = false
structured_output = false
knowledge = "2025-01-31"
open_weights = true
[cost]
input = 0.1
output = 0.2
cache_read = 0.1
[limit]
context = 128_000
output = 2_048
[modalities]
input = ["image", "text"]
output = ["text"]
@@ -1,19 +1,18 @@
name = "Uncensored (free)"
family = "mistral"
release_date = "2025-07-09"
last_updated = "2026-01-31"
last_updated = "2025-07-09"
attachment = false
reasoning = false
temperature = true
# may be inaccurate
knowledge = "2025-06"
tool_call = false
structured_output = true
knowledge = "2024-04-30"
open_weights = true
[cost]
input = 0.00
output = 0.00
input = 0
output = 0
[limit]
context = 32_768
@@ -1,22 +1,23 @@
name = "Gemma 3 12B (free)"
family = "gemma"
name = "Command A"
family = "command-a"
release_date = "2025-03-13"
last_updated = "2025-03-13"
attachment = true
attachment = false
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = false
structured_output = true
knowledge = "2024-08-31"
open_weights = true
[cost]
input = 0
output = 0
input = 2.5
output = 10
[limit]
context = 32_768
context = 256_000
output = 8_192
[modalities]
input = ["text", "image"]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Command R (08-2024)"
family = "command-r"
release_date = "2024-08-30"
last_updated = "2024-08-30"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-03-31"
open_weights = false
[cost]
input = 0.15
output = 0.6
[limit]
context = 128_000
output = 4_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Command R+ (08-2024)"
family = "command-r"
release_date = "2024-08-30"
last_updated = "2024-08-30"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-03-31"
open_weights = false
[cost]
input = 2.5
output = 10
[limit]
context = 128_000
output = 4_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Command R7B (12-2024)"
family = "command-r"
release_date = "2024-12-14"
last_updated = "2024-12-14"
attachment = false
reasoning = false
temperature = true
tool_call = false
structured_output = true
knowledge = "2024-08-31"
open_weights = false
[cost]
input = 0.0375
output = 0.15
[limit]
context = 128_000
output = 4_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Cogito v2.1 671B"
family = "cogito"
release_date = "2025-11-13"
last_updated = "2025-11-13"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = true
open_weights = false
[cost]
input = 1.25
output = 1.25
[limit]
context = 128_000
output = 128_000
[modalities]
input = ["text"]
output = ["text"]
@@ -1,4 +1,3 @@
id = "deepseek/deepseek-chat-v3-0324:free"
name = "DeepSeek V3 0324"
family = "deepseek"
release_date = "2025-03-24"
@@ -6,13 +5,20 @@ last_updated = "2025-03-24"
attachment = false
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = false
tool_call = true
structured_output = true
knowledge = "2024-07-31"
open_weights = true
cost = { input = 0, output = 0 }
limit = { context = 16384, output = 8192 }
[cost]
input = 0.2
output = 0.77
cache_read = 0.135
[limit]
context = 163_840
output = 16_384
[modalities]
input = ["text"]
output = ["text"]
output = ["text"]
@@ -1,22 +1,23 @@
name = "DeepSeek-V3.1"
name = "DeepSeek V3.1"
family = "deepseek"
release_date = "2025-08-21"
last_updated = "2025-08-21"
attachment = false
reasoning = true
temperature = true
knowledge = "2025-07"
tool_call = true
structured_output = true
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.20
output = 0.80
input = 0.21
output = 0.79
cache_read = 0.13
[limit]
context = 163_840
output = 163_840
output = 32_768
[modalities]
input = ["text"]
@@ -0,0 +1,23 @@
name = "DeepSeek V3"
family = "deepseek"
release_date = "2024-12-26"
last_updated = "2024-12-26"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-07-31"
open_weights = true
[cost]
input = 0.32
output = 0.89
[limit]
context = 163_840
output = 16_384
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,24 @@
name = "R1 0528"
family = "deepseek"
release_date = "2025-05-28"
last_updated = "2025-05-28"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.5
output = 2.15
cache_read = 0.35
[limit]
context = 163_840
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -1,18 +1,23 @@
id = "deepseek/deepseek-r1-distill-llama-70b:free"
name = "DeepSeek R1 Distill Llama 70B"
name = "R1 Distill Llama 70B"
family = "deepseek-thinking"
release_date = "2025-01-23"
last_updated = "2025-01-23"
attachment = false
reasoning = true
temperature = true
knowledge = "2024-10"
tool_call = false
structured_output = true
knowledge = "2024-07-31"
open_weights = true
cost = { input = 0, output = 0 }
limit = { context = 8192, output = 8192 }
[cost]
input = 0.7
output = 0.8
[limit]
context = 131_072
output = 16_384
[modalities]
input = ["text"]
output = ["text"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "R1 Distill Qwen 32B"
family = "deepseek"
release_date = "2025-01-29"
last_updated = "2025-01-29"
attachment = false
reasoning = true
temperature = true
tool_call = false
structured_output = true
knowledge = "2024-07-31"
open_weights = true
[cost]
input = 0.29
output = 0.29
[limit]
context = 32_768
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -1,18 +1,18 @@
name = "DeepSeek: R1"
name = "R1"
family = "deepseek-thinking"
release_date = "2025-01-20"
last_updated = "2025-01-20"
attachment = false
reasoning = true
temperature = true
knowledge = "2024-07"
tool_call = true
structured_output = false
knowledge = "2024-07-31"
open_weights = true
[cost]
input = 0.70
output = 2.50
input = 0.7
output = 2.5
[limit]
context = 64_000
@@ -5,18 +5,19 @@ last_updated = "2025-09-22"
attachment = false
reasoning = true
temperature = true
knowledge = "2025-07"
tool_call = true
structured_output = true
knowledge = "2025-03-31"
open_weights = true
[cost]
input = 0.27
output = 1.00
output = 0.95
cache_read = 0.13
[limit]
context = 131_072
output = 65_536
context = 163_840
output = 32_768
[modalities]
input = ["text"]
@@ -1,21 +1,21 @@
name = "DeepSeek V3.1 Terminus (exacto)"
name = "DeepSeek V3.2 Exp"
family = "deepseek"
release_date = "2025-09-22"
last_updated = "2025-09-22"
release_date = "2025-09-29"
last_updated = "2025-09-29"
attachment = false
reasoning = true
temperature = true
knowledge = "2025-07"
tool_call = true
structured_output = true
knowledge = "2025-07-31"
open_weights = true
[cost]
input = 0.27
output = 1.00
output = 0.41
[limit]
context = 131_072
context = 163_840
output = 65_536
[modalities]
@@ -5,18 +5,19 @@ last_updated = "2025-12-01"
attachment = false
reasoning = true
temperature = true
knowledge = "2024-07"
tool_call = true
tool_call = false
structured_output = true
knowledge = "2024-07"
open_weights = true
[cost]
input = 0.27
output = 0.41
input = 0.287
output = 0.431
cache_read = 0.058
[limit]
context = 163_840
output = 65_536
output = 163_840
[modalities]
input = ["text"]
@@ -5,17 +5,18 @@ last_updated = "2025-12-01"
attachment = false
reasoning = true
temperature = true
knowledge = "2024-07"
tool_call = true
structured_output = true
knowledge = "2024-07"
open_weights = true
[cost]
input = 0.28
output = 0.40
input = 0.252
output = 0.378
cache_read = 0.0252
[limit]
context = 163_840
context = 131_072
output = 65_536
[modalities]
@@ -1,11 +1,26 @@
name = "DeepSeek V4 Flash"
family = "deepseek"
release_date = "2026-04-24"
last_updated = "2026-04-24"
attachment = false
[extends]
from = "deepseek/deepseek-v4-flash"
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = true
[interleaved]
field = "reasoning_content"
[cost]
input = 0.126
output = 0.252
cache_read = 0.0252
[limit]
context = 1_048_576
output = 393_216
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "DeepSeek V4 Flash (free)"
family = "deepseek"
release_date = "2026-04-24"
last_updated = "2026-04-24"
attachment = false
reasoning = true
temperature = false
tool_call = true
structured_output = false
open_weights = true
[cost]
input = 0
output = 0
[limit]
context = 1_048_576
output = 384_000
[modalities]
input = ["text"]
output = ["text"]
@@ -1,11 +1,26 @@
name = "DeepSeek V4 Pro"
family = "deepseek"
release_date = "2026-04-24"
last_updated = "2026-04-24"
attachment = false
[extends]
from = "deepseek/deepseek-v4-pro"
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = true
[interleaved]
field = "reasoning_content"
[cost]
input = 0.435
output = 0.87
cache_read = 0.003625
[limit]
context = 1_048_576
output = 393_216
output = 384_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "Rnj 1 Instruct"
family = "rnj"
release_date = "2025-12-07"
last_updated = "2025-12-07"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
open_weights = true
[cost]
input = 0.15
output = 0.15
[limit]
context = 32_768
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
@@ -1,24 +1,25 @@
name = "Gemini 2.0 Flash"
family = "gemini-flash"
release_date = "2024-12-11"
last_updated = "2024-12-11"
release_date = "2025-02-05"
last_updated = "2025-02-05"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-06"
tool_call = true
structured_output = true
knowledge = "2024-08-31"
open_weights = false
[cost]
input = 0.10
output = 0.40
input = 0.1
output = 0.4
cache_read = 0.025
cache_write = 0.083333
[limit]
context = 1_048_576
output = 8_192
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -0,0 +1,23 @@
name = "Gemini 2.0 Flash Lite"
family = "gemini"
release_date = "2025-02-25"
last_updated = "2025-02-25"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-08-31"
open_weights = false
[cost]
input = 0.075
output = 0.3
[limit]
context = 1_048_576
output = 8_192
[modalities]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -0,0 +1,25 @@
name = "Nano Banana (Gemini 2.5 Flash Image)"
family = "gemini"
release_date = "2025-10-07"
last_updated = "2025-10-07"
attachment = true
reasoning = false
temperature = true
tool_call = false
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 0.3
output = 2.5
cache_read = 0.03
cache_write = 0.083333
[limit]
context = 32_768
output = 32_768
[modalities]
input = ["image", "text"]
output = ["image", "text"]
@@ -1,24 +1,26 @@
name = "Gemini 2.5 Flash Lite Preview 09-25"
name = "Gemini 2.5 Flash Lite Preview 09-2025"
family = "gemini-flash-lite"
release_date = "2025-09-25"
last_updated = "2025-09-25"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 0.10
output = 0.40
cache_read = 0.025
input = 0.1
output = 0.4
reasoning = 0.4
cache_read = 0.01
cache_write = 0.083333
[limit]
context = 1_048_576
output = 65_536
output = 65_535
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -1,24 +1,26 @@
name = "Gemini 2.5 Flash Lite"
family = "gemini-flash-lite"
release_date = "2025-06-17"
last_updated = "2025-06-17"
release_date = "2025-07-22"
last_updated = "2025-07-22"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 0.10
output = 0.40
cache_read = 0.025
input = 0.1
output = 0.4
reasoning = 0.4
cache_read = 0.01
cache_write = 0.083333
[limit]
context = 1_048_576
output = 65_536
output = 65_535
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
output = ["text"]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -1,24 +1,26 @@
name = "Gemini 2.5 Flash"
family = "gemini-flash"
release_date = "2025-07-17"
last_updated = "2025-07-17"
release_date = "2025-06-17"
last_updated = "2025-06-17"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 0.30
output = 2.50
cache_read = 0.0375
input = 0.3
output = 2.5
reasoning = 2.5
cache_read = 0.03
cache_write = 0.083333
[limit]
context = 1_048_576
output = 65_536
output = 65_535
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
output = ["text"]
input = ["pdf", "image", "text", "audio", "video"]
output = ["text"]
@@ -1,24 +1,26 @@
name = "Gemini 2.5 Pro Preview 05-06"
family = "gemini-pro"
release_date = "2025-05-06"
last_updated = "2025-05-06"
release_date = "2025-05-07"
last_updated = "2025-05-07"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 1.25
output = 10.00
cache_read = 0.31
output = 10
reasoning = 10
cache_read = 0.125
cache_write = 0.375
[limit]
context = 1_048_576
output = 65_536
output = 65_535
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -1,24 +1,26 @@
name = "Gemini 2.5 Pro Preview 06-05"
family = "gemini-pro"
family = "gemini"
release_date = "2025-06-05"
last_updated = "2025-06-05"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 1.25
output = 10.00
cache_read = 0.31
output = 10
reasoning = 10
cache_read = 0.125
cache_write = 0.375
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["pdf", "image", "text", "audio"]
output = ["text"]
@@ -1,2 +1,26 @@
[extends]
from = "google/gemini-2.5-pro"
name = "Gemini 2.5 Pro"
family = "gemini"
release_date = "2025-06-17"
last_updated = "2025-06-17"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-01-31"
open_weights = false
[cost]
input = 1.25
output = 10
reasoning = 10
cache_read = 0.125
cache_write = 0.375
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -5,23 +5,25 @@ last_updated = "2025-12-17"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01"
open_weights = false
[interleaved]
field = "reasoning_details"
[cost]
input = 0.50
output = 3.00
input = 0.5
output = 3
reasoning = 3
cache_read = 0.05
cache_write = 0.083333
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["text", "image", "pdf", "audio", "video"]
output = ["text"]
@@ -0,0 +1,25 @@
name = "Nano Banana Pro (Gemini 3 Pro Image Preview)"
family = "gemini"
release_date = "2025-11-20"
last_updated = "2025-11-20"
attachment = true
reasoning = true
temperature = true
tool_call = false
structured_output = true
open_weights = false
[cost]
input = 2
output = 12
reasoning = 12
cache_read = 0.2
cache_write = 0.375
[limit]
context = 65_536
output = 32_768
[modalities]
input = ["image", "text"]
output = ["image", "text"]
@@ -1,26 +0,0 @@
name = "Gemini 3 Pro Preview"
family = "gemini-pro"
release_date = "2025-11-18"
last_updated = "2025-11"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
open_weights = false
[interleaved]
field = "reasoning_details"
[cost]
input = 2.00
output = 12.00
[limit]
context = 1_050_000
output = 66_000
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
output = ["text"]
@@ -1,23 +1,23 @@
name = "Gemini 3.1 Flash Image Preview (Nano Banana 2)"
name = "Nano Banana 2 (Gemini 3.1 Flash Image Preview)"
family = "gemini-flash"
release_date = "2026-02-26"
last_updated = "2026-02-26"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = false
structured_output = true
knowledge = "2025-01"
open_weights = false
[cost]
input = 0.50
output = 3.00
input = 0.5
output = 3
[limit]
context = 65_536
output = 65_536
[modalities]
input = ["text", "image"]
output = ["text", "image"]
input = ["image", "text"]
output = ["image", "text"]
@@ -14,13 +14,11 @@ input = 0.25
output = 1.5
reasoning = 1.5
cache_read = 0.025
cache_write = 0.083
input_audio = 0.5
output_audio = 0.5
cache_write = 0.083333
[limit]
context = 1048576
output = 65536
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "video", "pdf", "audio"]
@@ -0,0 +1,25 @@
name = "Gemini 3.1 Flash Lite"
family = "gemini"
release_date = "2026-05-07"
last_updated = "2026-05-07"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 0.25
output = 1.5
reasoning = 1.5
cache_read = 0.025
cache_write = 0.083333
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "video", "pdf", "audio"]
output = ["text"]
@@ -1,33 +1,35 @@
name = "Gemini 3.1 Pro Preview Custom Tools"
family = "gemini-pro"
release_date = "2026-02-19"
last_updated = "2026-02-19"
release_date = "2026-02-25"
last_updated = "2026-02-25"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01"
open_weights = false
[interleaved]
field = "reasoning_details"
[cost]
input = 2.00
output = 12.00
reasoning = 12.00
input = 2
output = 12
reasoning = 12
cache_read = 0.2
cache_write = 0.375
[[cost.tiers]]
tier = { size = 200_000 }
input = 4.00
output = 18.00
cache_read = 0.40
input = 4
output = 18
cache_read = 0.4
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["text", "audio", "image", "video", "pdf"]
output = ["text"]
@@ -5,29 +5,31 @@ last_updated = "2026-02-19"
attachment = true
reasoning = true
temperature = true
knowledge = "2025-01"
tool_call = true
structured_output = true
knowledge = "2025-01"
open_weights = false
[interleaved]
field = "reasoning_details"
[cost]
input = 2.00
output = 12.00
reasoning = 12.00
input = 2
output = 12
reasoning = 12
cache_read = 0.2
cache_write = 0.375
[[cost.tiers]]
tier = { size = 200_000 }
input = 4.00
output = 18.00
cache_read = 0.40
input = 4
output = 18
cache_read = 0.4
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "audio", "video", "pdf"]
input = ["audio", "pdf", "image", "text", "video"]
output = ["text"]
@@ -1,21 +1,22 @@
name = "Gemma 2 9B"
name = "Gemma 2 27B"
family = "gemma"
release_date = "2024-06-28"
last_updated = "2024-06-28"
release_date = "2024-07-13"
last_updated = "2024-07-13"
attachment = false
reasoning = false
temperature = true
knowledge = "2024-06"
tool_call = false
structured_output = true
knowledge = "2024-06-30"
open_weights = true
[cost]
input = 0.03
output = 0.09
input = 0.65
output = 0.65
[limit]
context = 8_192
output = 8_192
output = 2_048
[modalities]
input = ["text"]
@@ -5,18 +5,18 @@ last_updated = "2025-03-13"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = false
tool_call = true
structured_output = true
knowledge = "2024-08-31"
open_weights = true
[cost]
input = 0.03
output = 0.10
input = 0.04
output = 0.13
[limit]
context = 131_072
output = 131_072
output = 16_384
[modalities]
input = ["text", "image"]
@@ -5,18 +5,18 @@ last_updated = "2025-03-12"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = true
structured_output = true
knowledge = "2024-08-31"
open_weights = true
[cost]
input = 0.04
output = 0.15
input = 0.08
output = 0.16
[limit]
context = 96_000
output = 96_000
context = 131_072
output = 16_384
[modalities]
input = ["text", "image"]
@@ -1,22 +0,0 @@
name = "Gemma 3 27B (free)"
family = "gemma"
release_date = "2025-03-12"
last_updated = "2025-03-12"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = true
open_weights = true
[cost]
input = 0
output = 0
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -5,17 +5,18 @@ last_updated = "2025-03-13"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = false
structured_output = true
knowledge = "2024-08-31"
open_weights = true
[cost]
input = 0.01703
output = 0.06815
input = 0.04
output = 0.08
[limit]
context = 96_000
output = 96_000
context = 131_072
output = 16_384
[modalities]
input = ["text", "image"]
@@ -1,22 +0,0 @@
name = "Gemma 3 4B (free)"
family = "gemma"
release_date = "2025-03-13"
last_updated = "2025-03-13"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-10"
tool_call = false
open_weights = true
[cost]
input = 0
output = 0
[limit]
context = 32_768
output = 8_192
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -1,22 +0,0 @@
name = "Gemma 3n 2B (free)"
family = "gemma"
release_date = "2025-07-09"
last_updated = "2025-07-09"
attachment = true
reasoning = false
temperature = true
knowledge = "2024-06"
tool_call = false
open_weights = true
[cost]
input = 0.00
output = 0.00
[limit]
context = 8_192
output = 2_000
[modalities]
input = ["text"]
output = ["text"]

Some files were not shown because too many files have changed in this diff Show More