diff --git a/.github/workflows/sync-models.yml b/.github/workflows/sync-models.yml index ac9f3690bcd..3382485eb62 100644 --- a/.github/workflows/sync-models.yml +++ b/.github/workflows/sync-models.yml @@ -74,6 +74,7 @@ jobs: GH_TOKEN: ${{ github.token }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} BASETEN_API_KEY: ${{ secrets.BASETEN_API_KEY }} + CHEAPERINFERENCE_API_KEY: ${{ secrets.CHEAPERINFERENCE_API_KEY }} DEEPINFRA_API_KEY: ${{ secrets.DEEPINFRA_API_KEY }} DIGITALOCEAN_API_TOKEN: ${{ secrets.DIGITALOCEAN_API_TOKEN }} DIGITALOCEAN_ACCESS_TOKEN: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} diff --git a/packages/core/src/sync/index.ts b/packages/core/src/sync/index.ts index 7f88aacb5bb..584b243f9fe 100644 --- a/packages/core/src/sync/index.ts +++ b/packages/core/src/sync/index.ts @@ -9,6 +9,7 @@ import { MissingReasoningOptionsError } from "./missing-reasoning-options.js"; import { ambient } from "./providers/ambient.js"; import { anthropic } from "./providers/anthropic.js"; import { baseten } from "./providers/baseten.js"; +import { cheaperinference } from "./providers/cheaperinference.js"; import { chutes } from "./providers/chutes.js"; import { cloudflareAiGateway } from "./providers/cloudflare-ai-gateway.js"; import { cloudflareWorkersAi } from "./providers/cloudflare-workers-ai.js"; @@ -133,6 +134,7 @@ export const providers: { ambient: SyncProvider; anthropic: SyncProvider; baseten: SyncProvider; + cheaperinference: SyncProvider; chutes: SyncProvider; "cloudflare-ai-gateway": SyncProvider; "cloudflare-workers-ai": SyncProvider; @@ -168,6 +170,7 @@ export const providers: { ambient, anthropic, baseten, + cheaperinference, chutes, "cloudflare-ai-gateway": cloudflareAiGateway, "cloudflare-workers-ai": cloudflareWorkersAi, @@ -203,6 +206,7 @@ export const providers: { export const groups = { aggregators: [ + "cheaperinference", "crossmodel", "edenai", "empiriolabs", diff --git a/packages/core/src/sync/providers/cheaperinference.ts b/packages/core/src/sync/providers/cheaperinference.ts new file mode 100644 index 00000000000..4ede4f2d823 --- /dev/null +++ b/packages/core/src/sync/providers/cheaperinference.ts @@ -0,0 +1,195 @@ +import { z } from "zod"; + +import type { ExistingModel, SyncedFullModel, SyncedModel, SyncProvider } from "../index.js"; +import { MissingReasoningOptionsError } from "../missing-reasoning-options.js"; +import { factorBaseModel } from "./openrouter.js"; + +const API_ENDPOINT = "https://api.cheaperinference.com/v1/models"; + +/** Long-context band. The gateway bills prompts above the threshold at these rates. */ +const AboveThreshold = z + .object({ + input_token_price_threshold: z.number().int().positive(), + input_per_million: z.string().min(1), + output_per_million: z.string().min(1), + cache_read_input_per_million: z.string().min(1).nullish(), + cache_write_input_per_million: z.string().min(1).nullish(), + }) + .passthrough(); + +const CheaperInferencePricing = z + .object({ + currency: z.literal("USD"), + input_per_million: z.string().min(1), + output_per_million: z.string().min(1), + cache_read_input_per_million: z.string().min(1).nullish(), + cache_write_input_per_million: z.string().min(1).nullish(), + input_token_price_threshold: z.number().int().positive().nullish(), + above_threshold: AboveThreshold.nullish(), + }) + .passthrough(); + +export const CheaperInferenceModel = z + .object({ + id: z.string().min(1), + object: z.literal("model"), + type: z.string().min(1), + endpoint: z.string().min(1), + context_length: z.number().int().positive().nullish(), + max_output_tokens: z.number().int().positive().nullish(), + is_free: z.boolean(), + pricing: CheaperInferencePricing, + }) + .passthrough(); + +export const CheaperInferenceResponse = z + .object({ + object: z.literal("list"), + data: z.array(CheaperInferenceModel), + pricing_version: z.string().min(1), + pricing_checked_at: z.string().min(1), + }) + .passthrough(); + +export type CheaperInferenceModel = z.infer; + +export const cheaperinference = { + id: "cheaperinference", + name: "CheaperInference", + modelsDir: "providers/cheaperinference/models", + // The catalog carries pricing and limits but no reasoning controls, so new + // models need hand-authored reasoning_options before they can be created. + skipCreates: true, + sourceID(model) { + return isTokenPricedTextModel(model) ? model.id : undefined; + }, + skippedNotice(ids) { + if (ids.length === 0) return []; + return [ + `${ids.length} CheaperInference models were not created because the catalog exposes no reasoning controls, which this repo requires for reasoning models.`, + `Skipped remote IDs: ${ids.map((id) => `\`${id}\``).join(", ")}`, + ]; + }, + async fetchModels() { + return fetchCheaperInferenceModels(); + }, + parseModels(raw) { + return CheaperInferenceResponse.parse(raw).data; + }, + translateModel(model, context) { + const existing = context.existing(model.id); + if (existing === undefined) return undefined; + return { + id: model.id, + model: buildCheaperInferenceModel(model, existing), + }; + }, +} satisfies SyncProvider; + +export async function fetchCheaperInferenceModels(fetcher: typeof fetch = fetch) { + const apiKey = process.env["CHEAPERINFERENCE_API_KEY"]; + if (apiKey === undefined || apiKey === "") { + throw new Error("CHEAPERINFERENCE_API_KEY is required to read the CheaperInference catalog"); + } + const response = await fetcher(API_ENDPOINT, { + headers: { Authorization: `Bearer ${apiKey}` }, + }); + if (!response.ok) { + throw new Error( + `CheaperInference models request failed: ${response.status} ${response.statusText}`, + ); + } + return CheaperInferenceResponse.parse(await response.json()); +} + +/** + * Only text models billed per token can be expressed by the catalog schema. + * Image and video routes price per unit of generated media, and free routes + * carry no rates worth syncing. + */ +function isTokenPricedTextModel(model: CheaperInferenceModel) { + return ( + model.type === "text" && + model.endpoint === "/v1/chat/completions" && + !model.is_free && + price(model.pricing.input_per_million) > 0 && + price(model.pricing.output_per_million) > 0 + ); +} + +function price(value: string) { + const parsed = Number(value); + if (!Number.isFinite(parsed) || parsed < 0) { + throw new Error(`CheaperInference returned an unusable price: ${value}`); + } + return parsed; +} + +function optionalPrice(value: string | null | undefined) { + return value === null || value === undefined ? undefined : price(value); +} + +export function buildCheaperInferenceModel( + model: CheaperInferenceModel, + existing: ExistingModel, +): SyncedModel { + if (existing.reasoning !== false && existing.reasoning_options === undefined) { + // The runner keeps the local file and reports the ID instead of failing the + // whole sync, so one unresearched model cannot stop the hourly run. + throw new MissingReasoningOptionsError( + model.id, + "reasons on this host but the catalog exposes no reasoning controls, so reasoning_options must be hand-authored", + ); + } + + const { base_model: baseModel, base_model_omit: baseModelOmit, ...current } = existing; + const pricing = model.pricing; + + const cost = { + ...existing.cost, + input: price(pricing.input_per_million), + output: price(pricing.output_per_million), + cache_read: optionalPrice(pricing.cache_read_input_per_million), + cache_write: optionalPrice(pricing.cache_write_input_per_million), + tiers: buildTiers(pricing.above_threshold), + }; + + // The gateway is authoritative for what it serves, so its limits win when it + // publishes them. Missing values stay inherited from the lab entry. + const limit = { + ...existing.limit, + ...(model.context_length === null || model.context_length === undefined + ? {} + : { context: model.context_length }), + ...(model.max_output_tokens === null || model.max_output_tokens === undefined + ? {} + : { output: model.max_output_tokens }), + }; + + const values = { + ...current, + cost, + limit, + } as SyncedFullModel; + + return baseModel === undefined + ? values + : factorBaseModel(baseModel, values, limit, baseModelOmit); +} + +function buildTiers(above: z.infer | null | undefined) { + if (above === null || above === undefined) return undefined; + // The threshold is the last token billed at the base rate, so the band starts + // one token later. The gateway reports both 271_999 and 272_000 for the same + // 272k boundary, which normalises to one tier size. + const size = above.input_token_price_threshold + 1; + return [ + { + tier: { type: "context" as const, size: size - (size % 1000) }, + input: price(above.input_per_million), + output: price(above.output_per_million), + cache_read: optionalPrice(above.cache_read_input_per_million), + cache_write: optionalPrice(above.cache_write_input_per_million), + }, + ]; +} diff --git a/packages/core/test/cheaperinference.test.ts b/packages/core/test/cheaperinference.test.ts new file mode 100644 index 00000000000..f2265ea9e32 --- /dev/null +++ b/packages/core/test/cheaperinference.test.ts @@ -0,0 +1,179 @@ +import { expect, spyOn, test } from "bun:test"; +import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import path from "node:path"; + +import { syncProvider } from "../src/sync/index.js"; +import * as missingIssues from "../src/sync/missing-issues.js"; +import { MissingReasoningOptionsError } from "../src/sync/missing-reasoning-options.js"; +import { + buildCheaperInferenceModel, + CheaperInferenceResponse, + cheaperinference, +} from "../src/sync/providers/cheaperinference.js"; + +function sourceModel(overrides: Record = {}) { + return { + id: "claude-sonnet-5", + object: "model" as const, + type: "text", + endpoint: "/v1/chat/completions", + context_length: 1_000_000, + max_output_tokens: 64_000, + is_free: false, + pricing: { + currency: "USD" as const, + input_per_million: "1.400000", + output_per_million: "7.000000", + cache_read_input_per_million: "0.140000", + cache_write_input_per_million: "1.700000", + input_token_price_threshold: null, + above_threshold: null, + }, + ...overrides, + }; +} + +const existing = { + base_model: "anthropic/claude-sonnet-5", + reasoning: true, + reasoning_options: [{ type: "effort" as const, values: ["low", "high"] }], + cost: { input: 1.4, output: 7 }, + limit: { context: 1_000_000, output: 64_000 }, +}; + +test("syncs the gateway's discounted rates, including cache rates", () => { + const model = buildCheaperInferenceModel(sourceModel() as never, existing as never); + + expect(model).toMatchObject({ + base_model: "anthropic/claude-sonnet-5", + cost: { input: 1.4, output: 7, cache_read: 0.14, cache_write: 1.7 }, + }); +}); + +test("turns a long-context band into a single context tier", () => { + const model = buildCheaperInferenceModel( + sourceModel({ + id: "gpt-5.6-luna", + context_length: 1_050_000, + max_output_tokens: 128_000, + pricing: { + currency: "USD", + input_per_million: "0.080000", + output_per_million: "0.480000", + cache_read_input_per_million: "0.008000", + cache_write_input_per_million: "0.100000", + input_token_price_threshold: 271_999, + above_threshold: { + input_token_price_threshold: 271_999, + input_per_million: "0.160000", + output_per_million: "0.720000", + cache_read_input_per_million: "0.016000", + cache_write_input_per_million: "0.200000", + }, + }, + }) as never, + { ...existing, base_model: "openai/gpt-5.6-luna" } as never, + ); + + expect(model.cost?.tiers).toEqual([ + { + tier: { type: "context", size: 272_000 }, + input: 0.16, + output: 0.72, + cache_read: 0.016, + cache_write: 0.2, + }, + ]); +}); + +test("takes the gateway's limits when it publishes them and inherits when it does not", () => { + const capped = buildCheaperInferenceModel( + sourceModel({ id: "deepseek-v4-flash-0731", context_length: 1_048_576, max_output_tokens: 65_536 }) as never, + { ...existing, base_model: "deepseek/deepseek-v4-flash-0731", limit: { context: 1_000_000, output: 384_000 } } as never, + ); + expect(capped.limit).toMatchObject({ context: 1_048_576, output: 65_536 }); + + // With nothing published, the synced file authors no limit override at all + // and the lab entry's limits keep applying. + const unpublished = buildCheaperInferenceModel( + sourceModel({ id: "gpt-oss-120b", context_length: null, max_output_tokens: null }) as never, + { ...existing, base_model: "openai/gpt-oss-120b", limit: { context: 131_072, output: 32_768 } } as never, + ); + expect(unpublished.limit).toBeUndefined(); +}); + +test("refuses to sync a reasoning model that has no authored controls", () => { + // MissingReasoningOptionsError, not a bare Error: the runner catches this one + // to skip the single ID and keep the local file, instead of failing the run. + let thrown: unknown; + try { + buildCheaperInferenceModel(sourceModel() as never, { + ...existing, + reasoning_options: undefined, + } as never); + } catch (error) { + thrown = error; + } + expect(thrown).toBeInstanceOf(MissingReasoningOptionsError); + expect((thrown as MissingReasoningOptionsError).modelId).toBe("claude-sonnet-5"); + expect((thrown as Error).message).toContain("reasoning_options"); +}); + +test("an unresearched reasoner is reported and its file kept, and the rest of the run continues", async () => { + const dir = await mkdtemp(path.join(import.meta.dirname, "../../../providers/.cheaperinference-sync-")); + const modelsDir = path.join(dir, "models"); + const authored = '# authored by hand\nbase_model = "anthropic/claude-sonnet-5"\n'; + const researched = + '# authored by hand\nbase_model = "anthropic/claude-opus-5"\n\n[[reasoning_options]]\ntype = "effort"\nvalues = ["low", "high"]\n'; + await mkdir(modelsDir, { recursive: true }); + await writeFile(path.join(modelsDir, "claude-sonnet-5.toml"), authored); + await writeFile(path.join(modelsDir, "claude-opus-5.toml"), researched); + const issues = spyOn(missingIssues, "openMissingModelIssues").mockResolvedValue([]); + try { + const result = await syncProvider( + { + ...cheaperinference, + modelsDir, + async fetchModels() { + return { + object: "list", + data: [sourceModel(), sourceModel({ id: "claude-opus-5" })], + pricing_version: "sha256:test", + pricing_checked_at: "2026-09-16T08:00:58.592Z", + } as never; + }, + }, + { openIssues: true }, + ); + expect(result.deleted).toBe(0); + expect(await readFile(path.join(modelsDir, "claude-sonnet-5.toml"), "utf8")).toBe(authored); + expect(issues.mock.calls[0]?.[1]).toEqual(["claude-sonnet-5"]); + expect(issues.mock.calls[0]?.[2]?.reasons?.["claude-sonnet-5"]).toContain("reasoning_options"); + } finally { + issues.mockRestore(); + await rm(dir, { recursive: true, force: true }); + } +}); + +test("only syncs token-priced text routes", () => { + const ids = [ + sourceModel(), + sourceModel({ id: "nano-banana-2", type: "image", endpoint: "/v1/images/generations" }), + sourceModel({ id: "seedance-2.0", type: "video", endpoint: "/v1/videos/generations" }), + sourceModel({ id: "some-free-model", is_free: true }), + ].map((model) => cheaperinference.sourceID(model as never)); + + expect(ids).toEqual(["claude-sonnet-5", undefined, undefined, undefined]); +}); + +test("parses the catalog response shape", () => { + const parsed = CheaperInferenceResponse.parse({ + object: "list", + data: [sourceModel()], + pricing_version: "sha256:abc", + pricing_checked_at: "2026-09-10T21:01:09.012Z", + pricing_updated_at: "2026-08-05T00:00:00.000Z", + }); + + expect(parsed.data[0]?.id).toBe("claude-sonnet-5"); +}); diff --git a/providers/cheaperinference/logo.svg b/providers/cheaperinference/logo.svg new file mode 100644 index 00000000000..36847516c91 --- /dev/null +++ b/providers/cheaperinference/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/providers/cheaperinference/models/claude-fable-5.1.toml b/providers/cheaperinference/models/claude-fable-5.1.toml new file mode 100644 index 00000000000..a28cc5472b2 --- /dev/null +++ b/providers/cheaperinference/models/claude-fable-5.1.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($10.0/$50.0 per 1M). +base_model = "anthropic/claude-fable-5-1" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 7.0 +output = 35.0 +cache_read = 0.175 +cache_write = 8.5 diff --git a/providers/cheaperinference/models/claude-fable-5.toml b/providers/cheaperinference/models/claude-fable-5.toml new file mode 100644 index 00000000000..fb04e3bf7be --- /dev/null +++ b/providers/cheaperinference/models/claude-fable-5.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($10.0/$50.0 per 1M). +base_model = "anthropic/claude-fable-5" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 7.0 +output = 35.0 +cache_read = 0.7 +cache_write = 8.5 diff --git a/providers/cheaperinference/models/claude-haiku-4.5.toml b/providers/cheaperinference/models/claude-haiku-4.5.toml new file mode 100644 index 00000000000..8066af50629 --- /dev/null +++ b/providers/cheaperinference/models/claude-haiku-4.5.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: 2 of 4 colour probes exact, the others "lime" for green and +# "magenta" for purple (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort, top-level reasoning_effort and +# thinking.budget_tokens each return 200 with no reasoning_content and no reasoning token count; the catalog +# reports capabilities.reasoning false (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($1.0/$5.0 per 1M). +base_model = "anthropic/claude-haiku-4-5" +reasoning = false + +[cost] +input = 0.7 +output = 3.5 +cache_read = 0.07 +cache_write = 0.85 diff --git a/providers/cheaperinference/models/claude-opus-4-8-fast.toml b/providers/cheaperinference/models/claude-opus-4-8-fast.toml new file mode 100644 index 00000000000..6ce5f09b443 --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-4-8-fast.toml @@ -0,0 +1,26 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 400 on 4 of 4 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($12.0/$60.0 per 1M). +base_model = "anthropic/claude-opus-4-8" +attachment = false + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 8.4 +output = 42.0 +cache_read = 0.84 +cache_write = 10.2 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/claude-opus-4.5.toml b/providers/cheaperinference/models/claude-opus-4.5.toml new file mode 100644 index 00000000000..4586bb922b2 --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-4.5.toml @@ -0,0 +1,19 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort and thinking.budget_tokens each return +# 200 with no reasoning_content and no reasoning token count, though the catalog reports +# capabilities.reasoning true (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($5.0/$25.0 per 1M). +base_model = "anthropic/claude-opus-4-5" +reasoning = false + +[cost] +input = 3.5 +output = 17.5 +cache_read = 0.35 +cache_write = 4.25 + +[limit] +context = 198000 +output = 32768 diff --git a/providers/cheaperinference/models/claude-opus-4.6.toml b/providers/cheaperinference/models/claude-opus-4.6.toml new file mode 100644 index 00000000000..07f499ad23d --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-4.6.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort and thinking.budget_tokens each return +# 200 with no reasoning_content and no reasoning token count, though the catalog reports +# capabilities.reasoning true (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($5.0/$25.0 per 1M). +base_model = "anthropic/claude-opus-4-6" +reasoning = false + +[cost] +input = 3.5 +output = 17.5 +cache_read = 0.35 +cache_write = 4.25 diff --git a/providers/cheaperinference/models/claude-opus-4.7.toml b/providers/cheaperinference/models/claude-opus-4.7.toml new file mode 100644 index 00000000000..4af692312f0 --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-4.7.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort, top-level reasoning_effort and +# thinking.budget_tokens each return 200 with no reasoning_content and no reasoning token count; the catalog +# reports capabilities.reasoning false (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($5.0/$25.0 per 1M). +base_model = "anthropic/claude-opus-4-7" +reasoning = false + +[cost] +input = 3.5 +output = 17.5 +cache_read = 0.35 +cache_write = 4.25 diff --git a/providers/cheaperinference/models/claude-opus-4.8.toml b/providers/cheaperinference/models/claude-opus-4.8.toml new file mode 100644 index 00000000000..e1597404760 --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-4.8.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($5.0/$25.0 per 1M). +base_model = "anthropic/claude-opus-4-8" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 3.5 +output = 17.5 +cache_read = 0.35 +cache_write = 4.25 diff --git a/providers/cheaperinference/models/claude-opus-5-fast.toml b/providers/cheaperinference/models/claude-opus-5-fast.toml new file mode 100644 index 00000000000..df7310cc5cd --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-5-fast.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($10.0/$50.0 per 1M). +base_model = "anthropic/claude-opus-5" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 7.0 +output = 35.0 +cache_read = 0.7 +cache_write = 8.5 diff --git a/providers/cheaperinference/models/claude-opus-5.toml b/providers/cheaperinference/models/claude-opus-5.toml new file mode 100644 index 00000000000..3ae53009f66 --- /dev/null +++ b/providers/cheaperinference/models/claude-opus-5.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($5.0/$25.0 per 1M). +base_model = "anthropic/claude-opus-5" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 3.5 +output = 17.5 +cache_read = 0.35 +cache_write = 4.25 diff --git a/providers/cheaperinference/models/claude-sonnet-4.5.toml b/providers/cheaperinference/models/claude-sonnet-4.5.toml new file mode 100644 index 00000000000..28babdc5771 --- /dev/null +++ b/providers/cheaperinference/models/claude-sonnet-4.5.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: 3 of 4 colour probes exact and the fourth called "lime" for +# green (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort and thinking.budget_tokens each return +# 200 with no reasoning_content and no reasoning token count, though the catalog reports +# capabilities.reasoning true (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($3.0/$15.0 per 1M). +base_model = "anthropic/claude-sonnet-4-5" +reasoning = false + +[cost] +input = 2.1 +output = 10.5 +cache_read = 0.21 +cache_write = 2.55 + +[limit] +context = 198000 diff --git a/providers/cheaperinference/models/claude-sonnet-4.6.toml b/providers/cheaperinference/models/claude-sonnet-4.6.toml new file mode 100644 index 00000000000..d04b32f738a --- /dev/null +++ b/providers/cheaperinference/models/claude-sonnet-4.6.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort and thinking.budget_tokens each return +# 200 with no reasoning_content and no reasoning token count, though the catalog reports +# capabilities.reasoning true (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($3.0/$15.0 per 1M). +base_model = "anthropic/claude-sonnet-4-6" +reasoning = false + +[cost] +input = 2.1 +output = 10.5 +cache_read = 0.21 +cache_write = 2.55 diff --git a/providers/cheaperinference/models/claude-sonnet-5.toml b/providers/cheaperinference/models/claude-sonnet-5.toml new file mode 100644 index 00000000000..e55c244600a --- /dev/null +++ b/providers/cheaperinference/models/claude-sonnet-5.toml @@ -0,0 +1,25 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($2.0/$10.0 per 1M). +base_model = "anthropic/claude-sonnet-5" +attachment = false + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 1.4 +output = 7.0 +cache_read = 0.14 +cache_write = 1.7 + +[limit] +output = 64000 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/deepseek-v4-flash-0731.toml b/providers/cheaperinference/models/deepseek-v4-flash-0731.toml new file mode 100644 index 00000000000..a9301d2e38a --- /dev/null +++ b/providers/cheaperinference/models/deepseek-v4-flash-0731.toml @@ -0,0 +1,31 @@ +# Image input works on this host although the base model is text-only: a 32x32 solid-colour PNG as a +# data: URI was named correctly on 10 of 10 probes across four colours, so attachment and the input +# modalities are overridden here rather than inherited (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 40.00% off the model maker's list price ($0.076/$0.153 per 1M). +base_model = "deepseek/deepseek-v4-flash-0731" +attachment = true + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 0.0456 +output = 0.0918 +cache_read = 0.00646 +cache_write = 0.0456 + +[limit] +context = 1048576 +output = 65536 + +[modalities] +input = ["text", "image"] diff --git a/providers/cheaperinference/models/deepseek-v4-flash.toml b/providers/cheaperinference/models/deepseek-v4-flash.toml new file mode 100644 index 00000000000..2fd837482f3 --- /dev/null +++ b/providers/cheaperinference/models/deepseek-v4-flash.toml @@ -0,0 +1,25 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# NOIMAGE for green and purple on 4 of 4 probes, with only the blue guess landing (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.09% off the model maker's list price ($0.13/$0.26 per 1M). +base_model = "deepseek/deepseek-v4-flash" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "xhigh"] + +[cost] +input = 0.071388 +output = 0.142777 +cache_read = 0.01105 +cache_write = 0.071388 + +[limit] +output = 128000 diff --git a/providers/cheaperinference/models/deepseek-v4-pro-0813.toml b/providers/cheaperinference/models/deepseek-v4-pro-0813.toml new file mode 100644 index 00000000000..bba5653d0a2 --- /dev/null +++ b/providers/cheaperinference/models/deepseek-v4-pro-0813.toml @@ -0,0 +1,25 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# NOIMAGE for green and purple on 4 of 4 probes, with only the blue guess landing (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.66/$1.98 per 1M). +base_model = "deepseek/deepseek-v4-pro-0813" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "max"] + +[cost] +input = 0.462 +output = 1.386 +cache_read = 0.01541 +cache_write = 0.462 + +[limit] +context = 1048576 diff --git a/providers/cheaperinference/models/deepseek-v4-pro.toml b/providers/cheaperinference/models/deepseek-v4-pro.toml new file mode 100644 index 00000000000..6c999fa5252 --- /dev/null +++ b/providers/cheaperinference/models/deepseek-v4-pro.toml @@ -0,0 +1,25 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 6 of 6 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.66/$1.98 per 1M). +base_model = "deepseek/deepseek-v4-pro" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "xhigh"] + +[cost] +input = 0.462 +output = 1.386 +cache_read = 0.038981 +cache_write = 0.462 + +[limit] +output = 128000 diff --git a/providers/cheaperinference/models/deepseek-v4.1-flash.toml b/providers/cheaperinference/models/deepseek-v4.1-flash.toml new file mode 100644 index 00000000000..0483ac30e78 --- /dev/null +++ b/providers/cheaperinference/models/deepseek-v4.1-flash.toml @@ -0,0 +1,25 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.3/$1.2 per 1M). +base_model = "deepseek/deepseek-v4.1-flash" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 0.21 +output = 0.84 +cache_read = 0.0042 +cache_write = 0.21 + +[limit] +context = 1048576 diff --git a/providers/cheaperinference/models/gemini-2.5-flash.toml b/providers/cheaperinference/models/gemini-2.5-flash.toml new file mode 100644 index 00000000000..82054bb36ca --- /dev/null +++ b/providers/cheaperinference/models/gemini-2.5-flash.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort, top-level reasoning_effort and +# thinking.budget_tokens each return 200 with no reasoning_content and no reasoning token count; the catalog +# reports capabilities.reasoning false (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.3/$2.5 per 1M). +base_model = "google/gemini-2.5-flash" +reasoning = false + +[cost] +input = 0.21 +output = 1.75 +cache_read = 0.021 +cache_write = 0.05831 + +[limit] +output = 65535 diff --git a/providers/cheaperinference/models/gemini-3-5-flash.toml b/providers/cheaperinference/models/gemini-3-5-flash.toml new file mode 100644 index 00000000000..974352eeb29 --- /dev/null +++ b/providers/cheaperinference/models/gemini-3-5-flash.toml @@ -0,0 +1,21 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($1.5/$9.0 per 1M). +base_model = "google/gemini-3.5-flash" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 1.05 +output = 6.3 +cache_read = 0.105 +cache_write = 0.05831 + +[limit] +context = 1000000 diff --git a/providers/cheaperinference/models/gemini-3-flash-preview.toml b/providers/cheaperinference/models/gemini-3-flash-preview.toml new file mode 100644 index 00000000000..d892bebf1c7 --- /dev/null +++ b/providers/cheaperinference/models/gemini-3-flash-preview.toml @@ -0,0 +1,21 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.5/$3.0 per 1M). +base_model = "google/gemini-3-flash-preview" + +[interleaved] +field = "reasoning_details" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.35 +output = 2.1 +cache_read = 0.035 +cache_write = 0.05831 + +[limit] +context = 256000 diff --git a/providers/cheaperinference/models/gemini-3.1-flash-lite.toml b/providers/cheaperinference/models/gemini-3.1-flash-lite.toml new file mode 100644 index 00000000000..8600ee38911 --- /dev/null +++ b/providers/cheaperinference/models/gemini-3.1-flash-lite.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# No reasoning on this host: plain, reasoning.enabled, reasoning.effort, top-level reasoning_effort and +# thinking.budget_tokens each return 200 with no reasoning_content and no reasoning token count; the catalog +# reports capabilities.reasoning false (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 19.43% off the model maker's list price ($0.25/$1.5 per 1M). +base_model = "google/gemini-3.1-flash-lite" +reasoning = false + +[cost] +input = 0.201421 +output = 1.20853 +cache_read = 0.02125 +cache_write = 0.067113 diff --git a/providers/cheaperinference/models/gemini-3.1-pro-preview.toml b/providers/cheaperinference/models/gemini-3.1-pro-preview.toml new file mode 100644 index 00000000000..f312c3a785d --- /dev/null +++ b/providers/cheaperinference/models/gemini-3.1-pro-preview.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($2.0/$12.0 per 1M). +base_model = "google/gemini-3.1-pro-preview" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 1.4 +output = 8.4 +cache_read = 0.14 +cache_write = 0.2625 + +[limit] +context = 1000000 +output = 32768 diff --git a/providers/cheaperinference/models/gemini-3.6-flash.toml b/providers/cheaperinference/models/gemini-3.6-flash.toml new file mode 100644 index 00000000000..f4eee3e05ea --- /dev/null +++ b/providers/cheaperinference/models/gemini-3.6-flash.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Reasoning is billed and counted but never returned: 8 of 8 probes reported +# usage.completion_tokens_details.reasoning_tokens (235-385) while the message carried only content, +# so there is no side channel to declare here (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 15.00% off the model maker's list price ($0.75/$3.75 per 1M). +base_model = "google/gemini-3.6-flash" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.6375 +output = 3.1875 +cache_read = 0.06375 +cache_write = 0.035416 diff --git a/providers/cheaperinference/models/gemini-3.7-flash.toml b/providers/cheaperinference/models/gemini-3.7-flash.toml new file mode 100644 index 00000000000..10fbb304fff --- /dev/null +++ b/providers/cheaperinference/models/gemini-3.7-flash.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.75/$3.75 per 1M). +base_model = "google/gemini-3.7-flash" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.525 +output = 2.625 +cache_read = 0.0525 +cache_write = 0.02919 diff --git a/providers/cheaperinference/models/glm-4.5-air.toml b/providers/cheaperinference/models/glm-4.5-air.toml new file mode 100644 index 00000000000..a94d1e11ce8 --- /dev/null +++ b/providers/cheaperinference/models/glm-4.5-air.toml @@ -0,0 +1,22 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 502 on 4 of 4 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: thinking.type = enabled|disabled +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($0.2/$1.1 per 1M). +base_model = "zhipuai/glm-4.5-air" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.104739 +output = 0.605 +cache_read = 0.017 +cache_write = 0.104739 + +[limit] +context = 128000 +output = 32768 diff --git a/providers/cheaperinference/models/glm-4.5.toml b/providers/cheaperinference/models/glm-4.5.toml new file mode 100644 index 00000000000..92935999ec3 --- /dev/null +++ b/providers/cheaperinference/models/glm-4.5.toml @@ -0,0 +1,22 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 502 on 4 of 4 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($0.6/$2.2 per 1M). +base_model = "zhipuai/glm-4.5" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.33 +output = 1.21 +cache_read = 0.051 +cache_write = 0.33 + +[limit] +context = 128000 +output = 32768 diff --git a/providers/cheaperinference/models/glm-4.6.toml b/providers/cheaperinference/models/glm-4.6.toml new file mode 100644 index 00000000000..6d000fa4889 --- /dev/null +++ b/providers/cheaperinference/models/glm-4.6.toml @@ -0,0 +1,22 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 502 on 4 of 4 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($0.6/$2.2 per 1M). +base_model = "zhipuai/glm-4.6" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.33 +output = 1.21 +cache_read = 0.051 +cache_write = 0.33 + +[limit] +context = 198000 +output = 16384 diff --git a/providers/cheaperinference/models/glm-4.7.toml b/providers/cheaperinference/models/glm-4.7.toml new file mode 100644 index 00000000000..aa25e6b9ae7 --- /dev/null +++ b/providers/cheaperinference/models/glm-4.7.toml @@ -0,0 +1,20 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 502 on 4 of 4 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($0.6/$2.2 per 1M). +base_model = "zhipuai/glm-4.7" +interleaved = true + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.322274 +output = 1.21 +cache_read = 0.051 +cache_write = 0.322274 + +[limit] +context = 128000 +output = 32768 diff --git a/providers/cheaperinference/models/glm-5.1.toml b/providers/cheaperinference/models/glm-5.1.toml new file mode 100644 index 00000000000..2de36652906 --- /dev/null +++ b/providers/cheaperinference/models/glm-5.1.toml @@ -0,0 +1,21 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 502 on 4 of 4 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($1.4/$4.4 per 1M). +base_model = "zhipuai/glm-5.1" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.77 +output = 2.42 +cache_read = 0.119 +cache_write = 0.77 + +[limit] +output = 24000 diff --git a/providers/cheaperinference/models/glm-5.2.toml b/providers/cheaperinference/models/glm-5.2.toml new file mode 100644 index 00000000000..18aa327e9ed --- /dev/null +++ b/providers/cheaperinference/models/glm-5.2.toml @@ -0,0 +1,21 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($0.8/$2.55 per 1M). +base_model = "zhipuai/glm-5.2" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["high", "max"] + +[cost] +input = 0.44 +output = 1.4025 +cache_read = 0.068 +cache_write = 0.44 + +[limit] +context = 1048576 diff --git a/providers/cheaperinference/models/glm-5.3-flash.toml b/providers/cheaperinference/models/glm-5.3-flash.toml new file mode 100644 index 00000000000..2b0a819a45b --- /dev/null +++ b/providers/cheaperinference/models/glm-5.3-flash.toml @@ -0,0 +1,25 @@ +# No dependable image input on this host: 10 probes gave 3 colours right, "red" for green and one +# NOIMAGE, so image input cannot be relied on here (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 51.66% off the model maker's list price ($0.15/$0.5 per 1M). +base_model = "zhipuai/glm-5.3-flash" +attachment = false + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 0.072511 +output = 0.241706 +cache_read = 0.01275 +cache_write = 0.072511 + +[limit] +context = 1048576 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/glm-5.3.toml b/providers/cheaperinference/models/glm-5.3.toml new file mode 100644 index 00000000000..22332be6ffc --- /dev/null +++ b/providers/cheaperinference/models/glm-5.3.toml @@ -0,0 +1,18 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 45.00% off the model maker's list price ($1.4/$4.4 per 1M). +base_model = "zhipuai/glm-5.3" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 0.77 +output = 2.42 +cache_read = 0.119 +cache_write = 0.77 diff --git a/providers/cheaperinference/models/glm-5.toml b/providers/cheaperinference/models/glm-5.toml new file mode 100644 index 00000000000..d013708de60 --- /dev/null +++ b/providers/cheaperinference/models/glm-5.toml @@ -0,0 +1,22 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 502 on 6 of 6 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 51.66% off the model maker's list price ($1.0/$3.2 per 1M). +base_model = "zhipuai/glm-5" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.483412 +output = 1.546919 +cache_read = 0.085 +cache_write = 0.483412 + +[limit] +context = 198000 +output = 32768 diff --git a/providers/cheaperinference/models/google/gemini-3.5-flash-lite.toml b/providers/cheaperinference/models/google/gemini-3.5-flash-lite.toml new file mode 100644 index 00000000000..8c0e1534430 --- /dev/null +++ b/providers/cheaperinference/models/google/gemini-3.5-flash-lite.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.3/$2.5 per 1M). +base_model = "google/gemini-3.5-flash-lite" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.21 +output = 1.75 +cache_read = 0.021 +cache_write = 0.078333 diff --git a/providers/cheaperinference/models/gpt-4.1-nano.toml b/providers/cheaperinference/models/gpt-4.1-nano.toml new file mode 100644 index 00000000000..eea038d8246 --- /dev/null +++ b/providers/cheaperinference/models/gpt-4.1-nano.toml @@ -0,0 +1,15 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 15.00% off the model maker's list price ($0.1/$0.4 per 1M). +base_model = "openai/gpt-4.1-nano" +attachment = false + +[cost] +input = 0.085 +output = 0.34 +cache_read = 0.008499 +cache_write = 0.085 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/gpt-5-mini.toml b/providers/cheaperinference/models/gpt-5-mini.toml new file mode 100644 index 00000000000..579cbddba16 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5-mini.toml @@ -0,0 +1,19 @@ +# No usable image input on this host: the request is accepted but the colour is guessed - 0 of 6 probes +# right (orange, maroon, olive, magenta, cyan, turquoise) (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 19.43% off the model maker's list price ($0.25/$2.0 per 1M). +base_model = "openai/gpt-5-mini" +attachment = false + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.201421 +output = 1.611374 +cache_read = 0.020142 +cache_write = 0.201421 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/gpt-5-nano.toml b/providers/cheaperinference/models/gpt-5-nano.toml new file mode 100644 index 00000000000..dc2627003cb --- /dev/null +++ b/providers/cheaperinference/models/gpt-5-nano.toml @@ -0,0 +1,19 @@ +# No usable image input on this host: the request is accepted but the colour is guessed - 1 of 6 probes +# right, the rest wrong or empty (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 19.43% off the model maker's list price ($0.05/$0.4 per 1M). +base_model = "openai/gpt-5-nano" +attachment = false + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.040284 +output = 0.322274 +cache_read = 0.004028 +cache_write = 0.040284 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/gpt-5.2-codex.toml b/providers/cheaperinference/models/gpt-5.2-codex.toml new file mode 100644 index 00000000000..4755e4c25b5 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.2-codex.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($1.75/$14.0 per 1M). +base_model = "openai/gpt-5.2-codex" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +[cost] +input = 1.225 +output = 9.8 +cache_read = 0.1225 +cache_write = 1.225 + +[limit] +context = 256000 +output = 65536 diff --git a/providers/cheaperinference/models/gpt-5.4-mini.toml b/providers/cheaperinference/models/gpt-5.4-mini.toml new file mode 100644 index 00000000000..e75899b3609 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.4-mini.toml @@ -0,0 +1,15 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.75/$4.5 per 1M). +base_model = "openai/gpt-5.4-mini" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 0.525 +output = 3.15 +cache_read = 0.0525 +cache_write = 0.525 diff --git a/providers/cheaperinference/models/gpt-5.4-nano.toml b/providers/cheaperinference/models/gpt-5.4-nano.toml new file mode 100644 index 00000000000..35272eca19d --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.4-nano.toml @@ -0,0 +1,19 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# "black" twice and NOIMAGE twice across 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 19.43% off the model maker's list price ($0.2/$1.25 per 1M). +base_model = "openai/gpt-5.4-nano" +attachment = false + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 0.161137 +output = 1.007109 +cache_read = 0.016114 +cache_write = 0.161137 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/gpt-5.4.toml b/providers/cheaperinference/models/gpt-5.4.toml new file mode 100644 index 00000000000..c8045ce6fb1 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.4.toml @@ -0,0 +1,19 @@ +# Image input verified on this host: 3 of 4 colour probes exact and the fourth called "orange" for +# yellow (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($2.5/$15.0 per 1M). +base_model = "openai/gpt-5.4" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 1.75 +output = 10.5 +cache_read = 0.175 +cache_write = 1.75 + +[limit] +context = 1000000 +output = 131072 diff --git a/providers/cheaperinference/models/gpt-5.5-pro.toml b/providers/cheaperinference/models/gpt-5.5-pro.toml new file mode 100644 index 00000000000..b26a4104979 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.5-pro.toml @@ -0,0 +1,25 @@ +# Image input verified on this host through the /v1/responses layer this route requires: a 32x32 +# solid-colour PNG as a data: URI was named correctly on 4 of 5 attempts, the fifth a transient 502 +# (probed 2026-09-17). +# /v1/chat/completions returns 400 "Pro reasoning mode requires the /v1/responses endpoint", and /v1/responses +# answers, so this route is responses-shaped. There effort medium and high are accepted, low returns 400 and +# xhigh fails upstream (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($30.0/$180.0 per 1M). +base_model = "openai/gpt-5.5-pro" + +[[reasoning_options]] +type = "effort" +values = ["medium", "high"] + +[cost] +input = 21.0 +output = 126.0 +cache_read = 2.55 +cache_write = 21.0 + +[limit] +context = 1000000 + +[provider] +shape = "responses" diff --git a/providers/cheaperinference/models/gpt-5.5.toml b/providers/cheaperinference/models/gpt-5.5.toml new file mode 100644 index 00000000000..4aa5dcf0a60 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.5.toml @@ -0,0 +1,18 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($5.0/$30.0 per 1M). +base_model = "openai/gpt-5.5" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 3.5 +output = 21.0 +cache_read = 0.35 +cache_write = 3.5 + +[limit] +context = 1000000 diff --git a/providers/cheaperinference/models/gpt-5.6-luna.toml b/providers/cheaperinference/models/gpt-5.6-luna.toml new file mode 100644 index 00000000000..f97d8800b7d --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.6-luna.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 60.00% off the model maker's list price ($0.2/$1.2 per 1M). +base_model = "openai/gpt-5.6-luna" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 0.08 +output = 0.48 +cache_read = 0.008 +cache_write = 0.1 + +[[cost.tiers]] +tier = { type = "context", size = 272_000 } +input = 0.16 +output = 0.72 +cache_read = 0.016 +cache_write = 0.2 diff --git a/providers/cheaperinference/models/gpt-5.6-sol.toml b/providers/cheaperinference/models/gpt-5.6-sol.toml new file mode 100644 index 00000000000..bf26e1ee568 --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.6-sol.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 50.00% off the model maker's list price ($2.0/$10.0 per 1M). +base_model = "openai/gpt-5.6-sol" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 1.0 +output = 5.0 +cache_read = 0.1 +cache_write = 1.25 + +[[cost.tiers]] +tier = { type = "context", size = 272_000 } +input = 2.0 +output = 7.5 +cache_read = 0.2 +cache_write = 2.5 diff --git a/providers/cheaperinference/models/gpt-5.6-terra.toml b/providers/cheaperinference/models/gpt-5.6-terra.toml new file mode 100644 index 00000000000..fd948ab09fc --- /dev/null +++ b/providers/cheaperinference/models/gpt-5.6-terra.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 60.00% off the model maker's list price ($2.0/$12.0 per 1M). +base_model = "openai/gpt-5.6-terra" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 0.8 +output = 4.8 +cache_read = 0.08 +cache_write = 1.0 + +[[cost.tiers]] +tier = { type = "context", size = 272_000 } +input = 1.6 +output = 7.2 +cache_read = 0.16 +cache_write = 2.0 diff --git a/providers/cheaperinference/models/gpt-6-astra.toml b/providers/cheaperinference/models/gpt-6-astra.toml new file mode 100644 index 00000000000..6f8f65529fe --- /dev/null +++ b/providers/cheaperinference/models/gpt-6-astra.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($10.0/$50.0 per 1M). +base_model = "openai/gpt-6-astra" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 7.0 +output = 35.0 +cache_read = 0.7 +cache_write = 8.5 + +[[cost.tiers]] +tier = { type = "context", size = 272_000 } +input = 14.0 +output = 52.5 +cache_read = 1.4 +cache_write = 17.0 diff --git a/providers/cheaperinference/models/gpt-oss-120b.toml b/providers/cheaperinference/models/gpt-oss-120b.toml new file mode 100644 index 00000000000..1ee0cbfe40c --- /dev/null +++ b/providers/cheaperinference/models/gpt-oss-120b.toml @@ -0,0 +1,18 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 60.00% off the model maker's list price ($0.1/$0.5 per 1M). +base_model = "openai/gpt-oss-120b" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.04 +output = 0.2 +cache_read = 0.0085 +cache_write = 0.04 diff --git a/providers/cheaperinference/models/grok-4.5.toml b/providers/cheaperinference/models/grok-4.5.toml new file mode 100644 index 00000000000..6ca9c1491a8 --- /dev/null +++ b/providers/cheaperinference/models/grok-4.5.toml @@ -0,0 +1,21 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($2.0/$6.0 per 1M). +base_model = "xai/grok-4.5" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 1.4 +output = 4.2 +cache_read = 0.17 +cache_write = 1.4 + +[limit] +output = 128000 diff --git a/providers/cheaperinference/models/kimi-k3.toml b/providers/cheaperinference/models/kimi-k3.toml new file mode 100644 index 00000000000..9d11d32f6ca --- /dev/null +++ b/providers/cheaperinference/models/kimi-k3.toml @@ -0,0 +1,25 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($3.0/$15.0 per 1M). +base_model = "moonshotai/kimi-k3" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 2.1 +output = 10.5 +cache_read = 0.239969 +cache_write = 2.1 + +[limit] +context = 1000000 diff --git a/providers/cheaperinference/models/minimax-m2.7.toml b/providers/cheaperinference/models/minimax-m2.7.toml new file mode 100644 index 00000000000..0654c123111 --- /dev/null +++ b/providers/cheaperinference/models/minimax-m2.7.toml @@ -0,0 +1,22 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# it answered NOIMAGE on 4 of 4 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.3/$1.2 per 1M). +base_model = "minimax/MiniMax-M2.7" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.21 +output = 0.84 +cache_read = 0.0255 +cache_write = 0.255 + +[limit] +context = 198000 +output = 32768 diff --git a/providers/cheaperinference/models/muse-spark-1.2.toml b/providers/cheaperinference/models/muse-spark-1.2.toml new file mode 100644 index 00000000000..e1d025ea6a4 --- /dev/null +++ b/providers/cheaperinference/models/muse-spark-1.2.toml @@ -0,0 +1,27 @@ +# No usable image input on this host: the request is accepted but the image never reaches the model - +# NOIMAGE or an empty message on 6 of 6 colour probes (probed 2026-09-17). +# Reasoning is returned in a reasoning_details field on the message: present on 3 of 3 untruncated probes +# (runs cut short by max_tokens carry none), so the side channel is declared below (probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($1.25/$4.25 per 1M). +base_model = "meta/muse-spark-1.2" +attachment = false + +[interleaved] +field = "reasoning_details" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high", "xhigh"] + +[cost] +input = 0.875 +output = 2.975 +cache_read = 0.105 +cache_write = 0.875 + +[limit] +output = 943718 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/qwen-3-8-27b.toml b/providers/cheaperinference/models/qwen-3-8-27b.toml new file mode 100644 index 00000000000..c3879cd149a --- /dev/null +++ b/providers/cheaperinference/models/qwen-3-8-27b.toml @@ -0,0 +1,25 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.214/$2.55 per 1M). +base_model = "alibaba/qwen3.8-27b" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "xhigh"] + +[cost] +input = 0.1498 +output = 1.785 +cache_read = 0.01819 +cache_write = 0.1498 + +[limit] +output = 65536 diff --git a/providers/cheaperinference/models/qwen-3-8-max.toml b/providers/cheaperinference/models/qwen-3-8-max.toml new file mode 100644 index 00000000000..dc324f00d5f --- /dev/null +++ b/providers/cheaperinference/models/qwen-3-8-max.toml @@ -0,0 +1,17 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Reasoning is always on and takes no caller control: reasoning_content comes back on every request, including +# with reasoning.enabled = false and with reasoning.effort = "none" (6 of 6 probed 2026-09-16). +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($2.5/$7.5 per 1M). +base_model = "alibaba/qwen3.8-max" +reasoning_options = [] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 1.75 +output = 5.25 +cache_read = 0.2125 +cache_write = 2.125 diff --git a/providers/cheaperinference/models/qwen3-5-35b-a3b.toml b/providers/cheaperinference/models/qwen3-5-35b-a3b.toml new file mode 100644 index 00000000000..2e609965597 --- /dev/null +++ b/providers/cheaperinference/models/qwen3-5-35b-a3b.toml @@ -0,0 +1,21 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.3125/$1.25 per 1M). +base_model = "alibaba/qwen3.5-35b-a3b" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.21875 +output = 0.875 +cache_read = 0.026562 +cache_write = 0.21875 + +[limit] +context = 256000 diff --git a/providers/cheaperinference/models/qwen3-6-35b-a3b.toml b/providers/cheaperinference/models/qwen3-6-35b-a3b.toml new file mode 100644 index 00000000000..7a047967e25 --- /dev/null +++ b/providers/cheaperinference/models/qwen3-6-35b-a3b.toml @@ -0,0 +1,25 @@ +# No image input on this host: an image_url part carrying a 32x32 PNG as a data: URI is rejected with +# 400 on 6 of 6 requests while a text-only control answers 200 (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 30.00% off the model maker's list price ($0.1/$1.0 per 1M). +base_model = "alibaba/qwen3.6-35b-a3b" +attachment = false + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.07 +output = 0.7 +cache_read = 0.0085 +cache_write = 0.07 + +[limit] +output = 262144 + +[modalities] +input = ["text"] diff --git a/providers/cheaperinference/models/qwen3.6-27b.toml b/providers/cheaperinference/models/qwen3.6-27b.toml new file mode 100644 index 00000000000..89568257521 --- /dev/null +++ b/providers/cheaperinference/models/qwen3.6-27b.toml @@ -0,0 +1,22 @@ +# Image input verified on this host: a 32x32 solid-colour PNG as a data: URI was named correctly on +# 4 of 4 colour probes (probed 2026-09-17). +# Toggle: reasoning.enabled = true|false +# Rates: GET https://api.cheaperinference.com/v1/models (pricing_version sha256:6d2520b9…, checked 2026-09-17T07:00:28Z) +# Discounted marketplace rate, 55.24% off the model maker's list price ($0.6/$3.6 per 1M). +base_model = "alibaba/qwen3.6-27b" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.241706 +output = 1.611374 +cache_read = 0.024171 +cache_write = 0.241706 + +[limit] +context = 256000 +output = 32768 diff --git a/providers/cheaperinference/provider.toml b/providers/cheaperinference/provider.toml new file mode 100644 index 00000000000..b3bc7116068 --- /dev/null +++ b/providers/cheaperinference/provider.toml @@ -0,0 +1,5 @@ +name = "CheaperInference" +env = ["CHEAPERINFERENCE_API_KEY"] +npm = "@ai-sdk/openai-compatible" +api = "https://api.cheaperinference.com/v1" +doc = "https://cheaperinference.com/docs"