usage-tab 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -8
- package/dist/index.cjs +555 -192
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +66 -3
- package/dist/index.d.ts +66 -3
- package/dist/index.js +555 -192
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -30,13 +30,15 @@ __export(index_exports, {
|
|
|
30
30
|
REGISTRY_VERSION: () => REGISTRY_VERSION,
|
|
31
31
|
UnknownModelError: () => UnknownModelError,
|
|
32
32
|
calculateCost: () => calculateCost,
|
|
33
|
+
createCostAggregator: () => createCostAggregator,
|
|
33
34
|
createPriceCalculator: () => createPriceCalculator,
|
|
34
35
|
createPriceOverride: () => createPriceOverride,
|
|
35
36
|
normalizeAnthropicUsage: () => normalizeAnthropicUsage,
|
|
36
37
|
normalizeGoogleUsage: () => normalizeGoogleUsage,
|
|
37
38
|
normalizeOpenAICompatibleUsage: () => normalizeOpenAICompatibleUsage,
|
|
38
39
|
normalizeOpenAIUsage: () => normalizeOpenAIUsage,
|
|
39
|
-
resolveModel: () => resolveModel2
|
|
40
|
+
resolveModel: () => resolveModel2,
|
|
41
|
+
sumExactUsd: () => sumExactUsd
|
|
40
42
|
});
|
|
41
43
|
module.exports = __toCommonJS(index_exports);
|
|
42
44
|
|
|
@@ -122,8 +124,9 @@ function toCandidate(descriptor) {
|
|
|
122
124
|
}
|
|
123
125
|
function matchExact(pool, id, provider) {
|
|
124
126
|
if (provider !== void 0) {
|
|
125
|
-
const canonical = pool.
|
|
126
|
-
if (canonical
|
|
127
|
+
const canonical = pool.filter((d) => d.provider === provider && d.canonicalId === id);
|
|
128
|
+
if (canonical.length === 1) return { unique: canonical[0] };
|
|
129
|
+
if (canonical.length > 1) return { ambiguous: canonical };
|
|
127
130
|
const scoped = pool.filter((d) => d.provider === provider && d.aliases.includes(id));
|
|
128
131
|
if (scoped.length === 1) return { unique: scoped[0] };
|
|
129
132
|
if (scoped.length > 1) return { ambiguous: scoped };
|
|
@@ -151,16 +154,22 @@ function resolveModel(requestedId, registry, options = {}) {
|
|
|
151
154
|
}
|
|
152
155
|
}
|
|
153
156
|
if (provider !== void 0) {
|
|
154
|
-
const canonical = registry.
|
|
157
|
+
const canonical = registry.filter(
|
|
155
158
|
(d) => d.provider === provider && d.canonicalId === requestedId
|
|
156
159
|
);
|
|
157
|
-
if (canonical
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
160
|
+
if (canonical.length === 1) {
|
|
161
|
+
const descriptor = canonical[0];
|
|
162
|
+
if (descriptor !== void 0) {
|
|
163
|
+
return {
|
|
164
|
+
descriptor,
|
|
165
|
+
matchedBy: "canonical-qualified",
|
|
166
|
+
requestedId,
|
|
167
|
+
requestedProvider: provider
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (canonical.length > 1) {
|
|
172
|
+
throw new AmbiguousAliasError(requestedId, canonical.map(toCandidate));
|
|
164
173
|
}
|
|
165
174
|
const scoped = registry.filter(
|
|
166
175
|
(d) => d.provider === provider && d.aliases.includes(requestedId)
|
|
@@ -214,10 +223,16 @@ function resolveModel(requestedId, registry, options = {}) {
|
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
// ../../internal/model-registry/src/pricing-period.ts
|
|
226
|
+
var OFFSETLESS_ISO_DATETIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
|
|
217
227
|
function toTimestamp(value) {
|
|
218
|
-
|
|
228
|
+
if (value instanceof Date) {
|
|
229
|
+
const ms2 = value.getTime();
|
|
230
|
+
if (Number.isNaN(ms2)) throw new InvalidLookupDateError(String(value));
|
|
231
|
+
return ms2;
|
|
232
|
+
}
|
|
233
|
+
const ms = Date.parse(OFFSETLESS_ISO_DATETIME.test(value) ? `${value}Z` : value);
|
|
219
234
|
if (Number.isNaN(ms)) {
|
|
220
|
-
throw new InvalidLookupDateError(value
|
|
235
|
+
throw new InvalidLookupDateError(value);
|
|
221
236
|
}
|
|
222
237
|
return ms;
|
|
223
238
|
}
|
|
@@ -250,7 +265,7 @@ function selectPricingPeriod(periods, at, identity) {
|
|
|
250
265
|
}
|
|
251
266
|
|
|
252
267
|
// ../../internal/model-registry/src/generated/registry.ts
|
|
253
|
-
var REGISTRY_VERSION = "registry-
|
|
268
|
+
var REGISTRY_VERSION = "registry-e5f4ec7eb681a235";
|
|
254
269
|
var MODEL_REGISTRY = [
|
|
255
270
|
{
|
|
256
271
|
canonicalId: "claude-fable-5",
|
|
@@ -259,9 +274,30 @@ var MODEL_REGISTRY = [
|
|
|
259
274
|
family: "fable",
|
|
260
275
|
contextWindow: 1e6,
|
|
261
276
|
pricing: [
|
|
262
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "10.00", "output": "50.00", "cachedInput": "1.00", "cacheWrite": "12.50", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
277
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "10.00", "output": "50.00", "cachedInput": "1.00", "cacheWrite": "12.50", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
278
|
+
],
|
|
279
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
canonicalId: "claude-fable-5-1",
|
|
283
|
+
provider: "anthropic",
|
|
284
|
+
aliases: [],
|
|
285
|
+
family: "fable",
|
|
286
|
+
contextWindow: 1e6,
|
|
287
|
+
pricing: [
|
|
288
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "10.00", "output": "50.00", "cachedInput": "0.25", "cacheWrite": "12.50", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Cache hits are priced at 0.025x base input on this model (page footnote 1), not the 0.1x every other model uses - cachedInput is read from the table, not derived.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
263
289
|
],
|
|
264
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
290
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
canonicalId: "claude-haiku-3-5",
|
|
294
|
+
provider: "anthropic",
|
|
295
|
+
aliases: [],
|
|
296
|
+
family: "haiku",
|
|
297
|
+
pricing: [
|
|
298
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.80", "output": "4.00", "cachedInput": "0.08", "cacheWrite": "1.00", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Retired on Anthropic-operated platforms; the pricing page still publishes its rate and notes it remains available on Amazon Bedrock and Google Cloud. Included so historical usage can still be priced.", "This model predates 2026, so the conservative 2026-01-01 effectiveFrom cannot price usage from its actual lifetime; no rollout date was published on the source page. A future pass should source real dates before relying on historical lookups for it.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
299
|
+
],
|
|
300
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
265
301
|
},
|
|
266
302
|
{
|
|
267
303
|
canonicalId: "claude-haiku-4-5-20251001",
|
|
@@ -270,9 +306,59 @@ var MODEL_REGISTRY = [
|
|
|
270
306
|
family: "haiku",
|
|
271
307
|
contextWindow: 2e5,
|
|
272
308
|
pricing: [
|
|
273
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.00", "output": "5.00", "cachedInput": "0.10", "cacheWrite": "1.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
309
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.00", "output": "5.00", "cachedInput": "0.10", "cacheWrite": "1.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
310
|
+
],
|
|
311
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["canonicalId is the dated snapshot id published on the models overview page; claude-haiku-4-5 is the alias that resolves to it."] }
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
canonicalId: "claude-mythos-5",
|
|
315
|
+
provider: "anthropic",
|
|
316
|
+
aliases: [],
|
|
317
|
+
family: "mythos",
|
|
318
|
+
pricing: [
|
|
319
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "10.00", "output": "50.00", "cachedInput": "1.00", "cacheWrite": "12.50", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Limited availability model (page links it to anthropic.com/glasswing); its published rate is recorded as-is.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
274
320
|
],
|
|
275
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
321
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
canonicalId: "claude-mythos-5-1",
|
|
325
|
+
provider: "anthropic",
|
|
326
|
+
aliases: [],
|
|
327
|
+
family: "mythos",
|
|
328
|
+
pricing: [
|
|
329
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "10.00", "output": "50.00", "cachedInput": "0.25", "cacheWrite": "12.50", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Limited availability model (page links it to anthropic.com/glasswing); its published rate is recorded as-is.", "Cache hits are priced at 0.025x base input on this model (page footnote 1), not the 0.1x every other model uses - cachedInput is read from the table, not derived.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
330
|
+
],
|
|
331
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
canonicalId: "claude-opus-4",
|
|
335
|
+
provider: "anthropic",
|
|
336
|
+
aliases: [],
|
|
337
|
+
family: "opus",
|
|
338
|
+
pricing: [
|
|
339
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "15.00", "output": "75.00", "cachedInput": "1.50", "cacheWrite": "18.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Retired on Anthropic-operated platforms; the pricing page still publishes its rate and notes it remains available on Google Cloud. Included so historical usage can still be priced.", "This model predates 2026, so the conservative 2026-01-01 effectiveFrom cannot price usage from its actual lifetime; no rollout date was published on the source page. A future pass should source real dates before relying on historical lookups for it.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
340
|
+
],
|
|
341
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
canonicalId: "claude-opus-4-1",
|
|
345
|
+
provider: "anthropic",
|
|
346
|
+
aliases: [],
|
|
347
|
+
family: "opus",
|
|
348
|
+
pricing: [
|
|
349
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "15.00", "output": "75.00", "cachedInput": "1.50", "cacheWrite": "18.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Retired on Anthropic-operated platforms; the pricing page still publishes its rate and notes it remains available on Amazon Bedrock and Google Cloud. Included so historical usage can still be priced.", "This model predates 2026, so the conservative 2026-01-01 effectiveFrom cannot price usage from its actual lifetime; no rollout date was published on the source page. A future pass should source real dates before relying on historical lookups for it.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
350
|
+
],
|
|
351
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
canonicalId: "claude-opus-4-5",
|
|
355
|
+
provider: "anthropic",
|
|
356
|
+
aliases: [],
|
|
357
|
+
family: "opus",
|
|
358
|
+
pricing: [
|
|
359
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
360
|
+
],
|
|
361
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
276
362
|
},
|
|
277
363
|
{
|
|
278
364
|
canonicalId: "claude-opus-4-6",
|
|
@@ -281,9 +367,9 @@ var MODEL_REGISTRY = [
|
|
|
281
367
|
family: "opus",
|
|
282
368
|
contextWindow: 1e6,
|
|
283
369
|
pricing: [
|
|
284
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
370
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
285
371
|
],
|
|
286
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
372
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
287
373
|
},
|
|
288
374
|
{
|
|
289
375
|
canonicalId: "claude-opus-4-7",
|
|
@@ -292,9 +378,9 @@ var MODEL_REGISTRY = [
|
|
|
292
378
|
family: "opus",
|
|
293
379
|
contextWindow: 1e6,
|
|
294
380
|
pricing: [
|
|
295
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
381
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
296
382
|
],
|
|
297
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
383
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
298
384
|
},
|
|
299
385
|
{
|
|
300
386
|
canonicalId: "claude-opus-4-8",
|
|
@@ -303,9 +389,9 @@ var MODEL_REGISTRY = [
|
|
|
303
389
|
family: "opus",
|
|
304
390
|
contextWindow: 1e6,
|
|
305
391
|
pricing: [
|
|
306
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
392
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
307
393
|
],
|
|
308
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
394
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
309
395
|
},
|
|
310
396
|
{
|
|
311
397
|
canonicalId: "claude-opus-5",
|
|
@@ -314,9 +400,29 @@ var MODEL_REGISTRY = [
|
|
|
314
400
|
family: "opus",
|
|
315
401
|
contextWindow: 1e6,
|
|
316
402
|
pricing: [
|
|
317
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
403
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "25.00", "cachedInput": "0.50", "cacheWrite": "6.25", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
404
|
+
],
|
|
405
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
canonicalId: "claude-sonnet-4",
|
|
409
|
+
provider: "anthropic",
|
|
410
|
+
aliases: [],
|
|
411
|
+
family: "sonnet",
|
|
412
|
+
pricing: [
|
|
413
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "cacheWrite": "3.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "Retired on Anthropic-operated platforms; the pricing page still publishes its rate and notes it remains available on Amazon Bedrock and Google Cloud. Included so historical usage can still be priced.", "This model predates 2026, so the conservative 2026-01-01 effectiveFrom cannot price usage from its actual lifetime; no rollout date was published on the source page. A future pass should source real dates before relying on historical lookups for it.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
318
414
|
],
|
|
319
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
415
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
canonicalId: "claude-sonnet-4-5",
|
|
419
|
+
provider: "anthropic",
|
|
420
|
+
aliases: [],
|
|
421
|
+
family: "sonnet",
|
|
422
|
+
pricing: [
|
|
423
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "cacheWrite": "3.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
424
|
+
],
|
|
425
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
320
426
|
},
|
|
321
427
|
{
|
|
322
428
|
canonicalId: "claude-sonnet-4-6",
|
|
@@ -325,9 +431,9 @@ var MODEL_REGISTRY = [
|
|
|
325
431
|
family: "sonnet",
|
|
326
432
|
contextWindow: 1e6,
|
|
327
433
|
pricing: [
|
|
328
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "cacheWrite": "3.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/
|
|
434
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "cacheWrite": "3.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ["Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
329
435
|
],
|
|
330
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
436
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
331
437
|
},
|
|
332
438
|
{
|
|
333
439
|
canonicalId: "claude-sonnet-5",
|
|
@@ -336,10 +442,9 @@ var MODEL_REGISTRY = [
|
|
|
336
442
|
family: "sonnet",
|
|
337
443
|
contextWindow: 1e6,
|
|
338
444
|
pricing: [
|
|
339
|
-
{ "effectiveFrom": "2026-01-01", "
|
|
340
|
-
{ "effectiveFrom": "2026-09-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "cacheWrite": "3.75", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/models/overview", "observedAt": "2026-08-05", "notes": ["Standard rate, effective 2026-09-01 immediately after the introductory-rate window (through 2026-08-31) ends. A lookup dated 2026-09-15 must select this period.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
445
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "10.00", "cachedInput": "0.20", "cacheWrite": "2.50", "batchMultiplier": "0.5", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07", "notes": ['$2.00/$10.00 launched as an introductory rate through 2026-08-31. On 2026-09-07 the pricing page states it "is now the standard price" and that "the previously scheduled increase to $3/$15 per million input/output tokens on September 1, 2026 will not occur", so the rate continues open-ended rather than ending 2026-08-31.', "Supersedes the two-period shape recorded on 2026-08-05 (introductory $2.00/$10.00 to 2026-09-01, then standard $3.00/$15.00). That second period was removed, not closed: the higher rate never took effect, so no date range may report it.", "Anthropic did not publish an explicit effective date for this rate as observed; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "cacheWrite reflects the 5-minute cache TTL (1.25x input). The 1-hour TTL write multiplier is 2x input and is not separately modeled by this schema (a single cacheWrite field)."] }
|
|
341
446
|
],
|
|
342
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
447
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
343
448
|
},
|
|
344
449
|
{
|
|
345
450
|
canonicalId: "amazon-nova-lite",
|
|
@@ -347,7 +452,7 @@ var MODEL_REGISTRY = [
|
|
|
347
452
|
aliases: [],
|
|
348
453
|
family: "amazon-nova",
|
|
349
454
|
pricing: [
|
|
350
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.60", "output": "2.40", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Same cross-region/in-region caveat as amazon-nova-micro."] }
|
|
455
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.60", "output": "2.40", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Same cross-region/in-region caveat as amazon-nova-micro.", "Not surfaced by the 2026-09-07 fetch of the same page, whose accessible sections did not include this model. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal."] }
|
|
351
456
|
],
|
|
352
457
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
353
458
|
},
|
|
@@ -357,7 +462,7 @@ var MODEL_REGISTRY = [
|
|
|
357
462
|
aliases: [],
|
|
358
463
|
family: "amazon-nova",
|
|
359
464
|
pricing: [
|
|
360
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "1.20", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": [`AWS's own first-party model (Amazon publishes both Bedrock and Nova), so "aws-bedrock" is effectively first-party pricing here, unlike the resold third-party models in this file.`, "No explicit effective date published for this specific rate (unlike the Claude 3.5 Sonnet rows above, which do carry a stated Dec 2025 date); effectiveFrom is set conservatively to 2026-01-01.", `Bedrock's pricing page also distinguishes "Global cross-region" vs "in-region" inference pricing for Nova; this rate was not confirmed to be specifically the in-region (vs cross-region) figure \u2014 treat as the headline on-demand rate observed
|
|
465
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "1.20", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": [`AWS's own first-party model (Amazon publishes both Bedrock and Nova), so "aws-bedrock" is effectively first-party pricing here, unlike the resold third-party models in this file.`, "No explicit effective date published for this specific rate (unlike the Claude 3.5 Sonnet rows above, which do carry a stated Dec 2025 date); effectiveFrom is set conservatively to 2026-01-01.", `Bedrock's pricing page also distinguishes "Global cross-region" vs "in-region" inference pricing for Nova; this rate was not confirmed to be specifically the in-region (vs cross-region) figure \u2014 treat as the headline on-demand rate observed.`, "Not surfaced by the 2026-09-07 fetch of the same page, whose accessible sections did not include this model. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal."] }
|
|
361
466
|
],
|
|
362
467
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
363
468
|
},
|
|
@@ -367,7 +472,7 @@ var MODEL_REGISTRY = [
|
|
|
367
472
|
aliases: [],
|
|
368
473
|
family: "amazon-nova",
|
|
369
474
|
pricing: [
|
|
370
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.20", "output": "4.80", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Same cross-region/in-region caveat as amazon-nova-micro."] }
|
|
475
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.20", "output": "4.80", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Same cross-region/in-region caveat as amazon-nova-micro.", "Not surfaced by the 2026-09-07 fetch of the same page, whose accessible sections did not include this model. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal."] }
|
|
371
476
|
],
|
|
372
477
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
373
478
|
},
|
|
@@ -377,9 +482,9 @@ var MODEL_REGISTRY = [
|
|
|
377
482
|
aliases: [],
|
|
378
483
|
family: "anthropic-claude",
|
|
379
484
|
pricing: [
|
|
380
|
-
{ "effectiveFrom": "2025-12-01", "currency": "USD", "unit": "per-million-tokens", "input": "6.00", "output": "30.00", "batchMultiplier": "0.5", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
485
|
+
{ "effectiveFrom": "2025-12-01", "currency": "USD", "unit": "per-million-tokens", "input": "6.00", "output": "30.00", "batchMultiplier": "0.5", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": [`AWS Bedrock's own rate card for this Anthropic model, explicitly labeled "Effective 1 Dec 2025" on the pricing page \u2014 a real, confirmed effective date, not the conservative default used elsewhere in this file.`, "Batch: $3.00/$15.00 (confirmed 0.5x standard) as observed on the same page.", "This is Bedrock's own price for an older Claude generation (3.5 Sonnet), not the current claude-sonnet-5 model in anthropic.json \u2014 no comparable first-party entry exists in this registry for the same model, so no direct parity claim is possible or intended. Bedrock and Azure resell other vendors' models under their own rate cards, so a first-party price is never a safe proxy for theirs.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
381
486
|
],
|
|
382
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
487
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
383
488
|
},
|
|
384
489
|
{
|
|
385
490
|
canonicalId: "claude-3.5-sonnet-v2",
|
|
@@ -387,9 +492,29 @@ var MODEL_REGISTRY = [
|
|
|
387
492
|
aliases: [],
|
|
388
493
|
family: "anthropic-claude",
|
|
389
494
|
pricing: [
|
|
390
|
-
{ "effectiveFrom": "2025-12-01", "currency": "USD", "unit": "per-million-tokens", "input": "6.00", "output": "30.00", "cachedInput": "0.60", "cacheWrite": "7.50", "batchMultiplier": "0.5", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
495
|
+
{ "effectiveFrom": "2025-12-01", "currency": "USD", "unit": "per-million-tokens", "input": "6.00", "output": "30.00", "cachedInput": "0.60", "cacheWrite": "7.50", "batchMultiplier": "0.5", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": [`AWS Bedrock's own rate card, explicitly labeled "Effective 1 Dec 2025" on the pricing page.`, "Batch: $3.00/$15.00 (confirmed 0.5x standard) as observed on the same page.", "Bedrock's own price for an older Claude generation; not comparable to any first-party entry currently in anthropic.json (which covers 4.x/5.x models only).", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
391
496
|
],
|
|
392
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
497
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
canonicalId: "gemma-3-12b",
|
|
501
|
+
provider: "aws-bedrock",
|
|
502
|
+
aliases: [],
|
|
503
|
+
family: "gemma",
|
|
504
|
+
pricing: [
|
|
505
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.09", "output": "0.29", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": ["Bedrock's own resale rate for this google model, read from Bedrock's pricing page - never copied from that vendor's first-party file.", "Added from the 2026-09-07 fetch; effectiveFrom is the observation date, since the 2026-08-05 fetch of the same page did not surface it.", "US East on-demand rate as printed; Bedrock prices some models per region and this schema has no region dimension."] }
|
|
506
|
+
],
|
|
507
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
canonicalId: "gemma-3-27b",
|
|
511
|
+
provider: "aws-bedrock",
|
|
512
|
+
aliases: [],
|
|
513
|
+
family: "gemma",
|
|
514
|
+
pricing: [
|
|
515
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.23", "output": "0.38", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": ["Bedrock's own resale rate for this google model, read from Bedrock's pricing page - never copied from that vendor's first-party file.", "Added from the 2026-09-07 fetch; effectiveFrom is the observation date, since the 2026-08-05 fetch of the same page did not surface it.", "US East on-demand rate as printed; Bedrock prices some models per region and this schema has no region dimension."] }
|
|
516
|
+
],
|
|
517
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
393
518
|
},
|
|
394
519
|
{
|
|
395
520
|
canonicalId: "gemma-4-31b",
|
|
@@ -397,9 +522,9 @@ var MODEL_REGISTRY = [
|
|
|
397
522
|
aliases: [],
|
|
398
523
|
family: "google-gemma",
|
|
399
524
|
pricing: [
|
|
400
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.14", "output": "0.40", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
525
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.14", "output": "0.40", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Cross-provider alias/canonicalId collision (allowed, not an error): Together AI also lists "Gemma 4 31B" (together.json: gemma-4-31b) at a different, higher rate ($0.39/$0.97 as observed) \u2014 same underlying Google open-weight model, independently priced by each reseller; do not assume parity.', "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
401
526
|
],
|
|
402
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
527
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
403
528
|
},
|
|
404
529
|
{
|
|
405
530
|
canonicalId: "mistral-large-3",
|
|
@@ -407,9 +532,19 @@ var MODEL_REGISTRY = [
|
|
|
407
532
|
aliases: [],
|
|
408
533
|
family: "mistral",
|
|
409
534
|
pricing: [
|
|
410
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
535
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Cross-provider alias/canonicalId collision (allowed, not an error): Mistral's own first-party pricing (mistral.json: mistral-large-3) shows the identical $0.50/$1.50 figure as independently observed \u2014 coincidental agreement between the two independently fetched sources, not assumed; both were confirmed directly.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
411
536
|
],
|
|
412
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
537
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
canonicalId: "nemotron-3-super-120b",
|
|
541
|
+
provider: "aws-bedrock",
|
|
542
|
+
aliases: [],
|
|
543
|
+
family: "nemotron",
|
|
544
|
+
pricing: [
|
|
545
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.65", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07", "notes": ["Bedrock's own resale rate for this nvidia model, read from Bedrock's pricing page - never copied from that vendor's first-party file.", "Added from the 2026-09-07 fetch; effectiveFrom is the observation date, since the 2026-08-05 fetch of the same page did not surface it.", "US East on-demand rate as printed; Bedrock prices some models per region and this schema has no region dimension."] }
|
|
546
|
+
],
|
|
547
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
413
548
|
},
|
|
414
549
|
{
|
|
415
550
|
canonicalId: "nemotron-nano-2",
|
|
@@ -417,7 +552,7 @@ var MODEL_REGISTRY = [
|
|
|
417
552
|
aliases: [],
|
|
418
553
|
family: "nvidia-nemotron",
|
|
419
554
|
pricing: [
|
|
420
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.06", "output": "0.23", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01."] }
|
|
555
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.06", "output": "0.23", "sourceUrl": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05", "notes": ["No explicit effective date published for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Not surfaced by the 2026-09-07 fetch of the same page, whose accessible sections did not include this model. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal."] }
|
|
421
556
|
],
|
|
422
557
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
423
558
|
},
|
|
@@ -647,9 +782,9 @@ var MODEL_REGISTRY = [
|
|
|
647
782
|
aliases: [],
|
|
648
783
|
family: "gpt-5.6",
|
|
649
784
|
pricing: [
|
|
650
|
-
{ "effectiveFrom": "2026-07-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "30.00", "cachedInput": "0.50", "cacheWrite": "6.25", "cheapestTier": true, "sourceUrl": "https://prices.azure.com/api/retail/prices?currencyCode='USD'&$filter=contains(productName,%20%27OpenAI%27)", "observedAt": "2026-
|
|
785
|
+
{ "effectiveFrom": "2026-07-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "30.00", "cachedInput": "0.50", "cacheWrite": "6.25", "cheapestTier": true, "sourceUrl": "https://prices.azure.com/api/retail/prices?currencyCode='USD'&$filter=contains(productName,%20%27OpenAI%27)", "observedAt": "2026-09-07", "notes": ["retailPrice confirmed identical across all 24 Azure regions returned for this Global-deployment SKU (spot-checked programmatically, not just a couple of regions) \u2014 no regional price variation observed for the Global tier.", "No Batch API meter was found for this model/SKU in the Retail Prices API response; batchMultiplier is intentionally omitted rather than assumed.", `canonicalId "gpt-5.6-sol" is deliberately identical to the same model's entry in openai.json \u2014 Azure genuinely resells the identical first-party OpenAI model, unlike AWS Bedrock's or OpenRouter's differently-branded catalogues. Following the aws-bedrock.json precedent (e.g. its "mistral-large-3" and "gemma-4-31b" entries) rather than OpenRouter's provider-prefixed-slug convention: this is an intentional cross-provider canonicalId collision, not an error. A bare lookup of this id without a provider qualifier is ambiguous by design and must fail, exactly as already documented for the aws-bedrock.json collisions, since a lookup with a duplicated canonicalId requires a provider qualifier to resolve unambiguously. Per this task's ownership boundary, openai.json itself was not modified to cross-reference this note; a follow-up pass should add a mirroring note there.`, `Re-observed 2026-09-07 via the Retail Prices API filtered to this model's meters ("5.6 sol ShortCo Inp Std Gl" $5.00, "5.6 sol ShortCo Opt Std Gl" $30.00, "5.6 sol ShortCo Cd Inp Std Gl" $0.50): unchanged.`, `NOW DIFFERS from OpenAI's own first-party rate in openai.json for the same canonicalId "gpt-5.6-sol". Both files recorded $5.00/$30.00/$0.50 on 2026-08-05; on 2026-09-07 OpenAI's pricing page published $4.00/$20.00/$0.40 while Azure's meters stayed at $5.00/$30.00/$0.50. Azure did not follow the first-party cut, so this joins gpt-5.6-terra and gpt-5.6-luna as a confirmed same-id price divergence rather than a transcription error.`, `The API also exposes "LongCo" (long-context) meters for this model at $10.00 input / $45.00 output Global Standard, alongside the "ShortCo" rates recorded here - the same context tiering OpenAI's page labels "<272K". This schema has no context-length dimension, so only the ShortCo tier is recorded.`] }
|
|
651
786
|
],
|
|
652
|
-
source: { "url": "https://prices.azure.com/api/retail/prices?currencyCode='USD'&$filter=contains(productName,%20%27OpenAI%27)", "observedAt": "2026-
|
|
787
|
+
source: { "url": "https://prices.azure.com/api/retail/prices?currencyCode='USD'&$filter=contains(productName,%20%27OpenAI%27)", "observedAt": "2026-09-07" }
|
|
653
788
|
},
|
|
654
789
|
{
|
|
655
790
|
canonicalId: "gpt-5.6-terra",
|
|
@@ -747,9 +882,9 @@ var MODEL_REGISTRY = [
|
|
|
747
882
|
aliases: [],
|
|
748
883
|
family: "aya-expanse",
|
|
749
884
|
pricing: [
|
|
750
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
885
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": ["Cohere's pricing page publishes an identical $0.50/$1.50 rate for both the 8B and 32B Aya Expanse sizes (confirmed by two independent re-fetches of the same page); this was double-checked rather than assumed to be an extraction error.", "effectiveFrom set conservatively to 2026-01-01; exact rate-effective date not published.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
751
886
|
],
|
|
752
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
887
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
753
888
|
},
|
|
754
889
|
{
|
|
755
890
|
canonicalId: "aya-expanse-8b",
|
|
@@ -757,9 +892,9 @@ var MODEL_REGISTRY = [
|
|
|
757
892
|
aliases: [],
|
|
758
893
|
family: "aya-expanse",
|
|
759
894
|
pricing: [
|
|
760
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
895
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": ["Cohere's pricing page publishes an identical $0.50/$1.50 rate for both the 8B and 32B Aya Expanse sizes (confirmed by two independent re-fetches of the same page); this was double-checked rather than assumed to be an extraction error.", "effectiveFrom set conservatively to 2026-01-01; exact rate-effective date not published.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
761
896
|
],
|
|
762
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
897
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
763
898
|
},
|
|
764
899
|
{
|
|
765
900
|
canonicalId: "command",
|
|
@@ -767,9 +902,9 @@ var MODEL_REGISTRY = [
|
|
|
767
902
|
aliases: [],
|
|
768
903
|
family: "command",
|
|
769
904
|
pricing: [
|
|
770
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.00", "output": "2.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
905
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.00", "output": "2.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": ["Cohere's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "This rate appears in the pricing page's FAQ/legacy-rates section, not a headline pricing table; it is nonetheless the only per-token price Cohere currently publishes for this model.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
771
906
|
],
|
|
772
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
907
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
773
908
|
},
|
|
774
909
|
{
|
|
775
910
|
canonicalId: "command-light",
|
|
@@ -777,9 +912,9 @@ var MODEL_REGISTRY = [
|
|
|
777
912
|
aliases: [],
|
|
778
913
|
family: "command",
|
|
779
914
|
pricing: [
|
|
780
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.60", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
915
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.60", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": ["Cohere's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'FAQ/legacy-rates section pricing, per the same caveat as "command".', "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
781
916
|
],
|
|
782
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
917
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
783
918
|
},
|
|
784
919
|
{
|
|
785
920
|
canonicalId: "command-r-03-2024",
|
|
@@ -787,9 +922,9 @@ var MODEL_REGISTRY = [
|
|
|
787
922
|
aliases: [],
|
|
788
923
|
family: "command-r",
|
|
789
924
|
pricing: [
|
|
790
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
925
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": [`"03-2024" is Cohere's own dated-snapshot naming for this model, not a confirmed price-effective date; effectiveFrom is set conservatively to 2026-01-01 per this repository's convention (a too-early effectiveFrom is safe; the price could have applied earlier than 2026 but was not independently confirmed).`, "FAQ/legacy-rates section pricing.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
791
926
|
],
|
|
792
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
927
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
793
928
|
},
|
|
794
929
|
{
|
|
795
930
|
canonicalId: "command-r-plus-04-2024",
|
|
@@ -797,9 +932,9 @@ var MODEL_REGISTRY = [
|
|
|
797
932
|
aliases: [],
|
|
798
933
|
family: "command-r-plus",
|
|
799
934
|
pricing: [
|
|
800
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
935
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": [`"04-2024" is Cohere's own dated-snapshot naming for this model, not a confirmed price-effective date; effectiveFrom is set conservatively to 2026-01-01.`, `FAQ/legacy-rates section pricing. Superseded in Cohere's catalogue by "Command R+ 08-2024" (below), a distinct dated snapshot with its own price \u2014 the two are not the same PricingPeriod for one model, they are two different canonicalIds, matching how Cohere itself lists them.`, "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
801
936
|
],
|
|
802
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
937
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
803
938
|
},
|
|
804
939
|
{
|
|
805
940
|
canonicalId: "command-r-plus-08-2024",
|
|
@@ -807,9 +942,9 @@ var MODEL_REGISTRY = [
|
|
|
807
942
|
aliases: [],
|
|
808
943
|
family: "command-r-plus",
|
|
809
944
|
pricing: [
|
|
810
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "10.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
945
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "10.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-09-07", "notes": [`"08-2024" is Cohere's own dated-snapshot naming for this model, not a confirmed price-effective date; effectiveFrom is set conservatively to 2026-01-01.`, "FAQ/legacy-rates section pricing.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
811
946
|
],
|
|
812
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
947
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
813
948
|
},
|
|
814
949
|
{
|
|
815
950
|
canonicalId: "gemini-2.5-flash",
|
|
@@ -817,9 +952,9 @@ var MODEL_REGISTRY = [
|
|
|
817
952
|
aliases: [],
|
|
818
953
|
family: "gemini-2.5",
|
|
819
954
|
pricing: [
|
|
820
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "2.50", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
955
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "2.50", "cachedInput": "0.03", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01.", "Input and context-caching rates are the text/image/video rates. The page prices audio input separately ($1.00 input, $0.10 context caching); this schema has no per-modality dimension, so the audio rate is not recorded.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.15 / $1.25), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] }
|
|
821
956
|
],
|
|
822
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
957
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
823
958
|
},
|
|
824
959
|
{
|
|
825
960
|
canonicalId: "gemini-2.5-flash-lite",
|
|
@@ -827,9 +962,9 @@ var MODEL_REGISTRY = [
|
|
|
827
962
|
aliases: [],
|
|
828
963
|
family: "gemini-2.5",
|
|
829
964
|
pricing: [
|
|
830
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.40", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
965
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.40", "cachedInput": "0.01", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01.", "Input and context-caching rates are the text/image/video rates. The page prices audio input separately ($0.30 input, $0.03 context caching); this schema has no per-modality dimension, so the audio rate is not recorded.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.05 / $0.20), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] }
|
|
831
966
|
],
|
|
832
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
967
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
833
968
|
},
|
|
834
969
|
{
|
|
835
970
|
canonicalId: "gemini-2.5-pro",
|
|
@@ -837,9 +972,19 @@ var MODEL_REGISTRY = [
|
|
|
837
972
|
aliases: [],
|
|
838
973
|
family: "gemini-2.5",
|
|
839
974
|
pricing: [
|
|
840
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cheapestTier": true, "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
975
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cachedInput": "0.125", "batchMultiplier": "0.5", "cheapestTier": true, "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01.", "The page prices prompts >200k tokens higher ($2.50 input / $15.00 output / $0.25 context caching); only the <=200k tier is recorded, since this schema has no context-length dimension.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.625 / $5.00), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model.", "batchMultiplier and cachedInput added on 2026-09-07: the page now publishes this model's own Batch and context-caching rows, which were not confirmed per-model on 2026-08-05."] }
|
|
976
|
+
],
|
|
977
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
canonicalId: "gemini-3.1-flash-lite",
|
|
981
|
+
provider: "google",
|
|
982
|
+
aliases: [],
|
|
983
|
+
family: "gemini-3.1",
|
|
984
|
+
pricing: [
|
|
985
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.25", "output": "1.50", "cachedInput": "0.025", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["New model: absent from the pricing page on 2026-08-05, present on 2026-09-07. effectiveFrom is the observation date rather than a backdated guess.", "Input and context-caching rates are the text/image/video rates. The page prices audio input separately ($0.50 input, $0.05 context caching); this schema has no per-modality dimension, so the audio rate is not recorded.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.125 / $0.75), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] }
|
|
841
986
|
],
|
|
842
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
987
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
843
988
|
},
|
|
844
989
|
{
|
|
845
990
|
canonicalId: "gemini-3.1-pro-preview",
|
|
@@ -847,9 +992,9 @@ var MODEL_REGISTRY = [
|
|
|
847
992
|
aliases: [],
|
|
848
993
|
family: "gemini-3.1",
|
|
849
994
|
pricing: [
|
|
850
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "12.00", "cheapestTier": true, "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
995
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "12.00", "cachedInput": "0.20", "batchMultiplier": "0.5", "cheapestTier": true, "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01.", "The page prices prompts >200k tokens higher ($4.00 input / $18.00 output / $0.40 context caching); only the <=200k tier is recorded, since this schema has no context-length dimension.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($1.00 / $6.00), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model.", "batchMultiplier and cachedInput added on 2026-09-07: the page now publishes this model's own Batch and context-caching rows, which were not confirmed per-model on 2026-08-05."] }
|
|
851
996
|
],
|
|
852
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
997
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
853
998
|
},
|
|
854
999
|
{
|
|
855
1000
|
canonicalId: "gemini-3.5-flash",
|
|
@@ -857,9 +1002,9 @@ var MODEL_REGISTRY = [
|
|
|
857
1002
|
aliases: [],
|
|
858
1003
|
family: "gemini-3.5",
|
|
859
1004
|
pricing: [
|
|
860
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "9.00", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
1005
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "9.00", "cachedInput": "0.15", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.75 / $4.50), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model.", "cachedInput added on 2026-09-07: the page now publishes a per-model context-caching rate, which it did not on 2026-08-05."] }
|
|
861
1006
|
],
|
|
862
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
1007
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
863
1008
|
},
|
|
864
1009
|
{
|
|
865
1010
|
canonicalId: "gemini-3.5-flash-lite",
|
|
@@ -867,9 +1012,9 @@ var MODEL_REGISTRY = [
|
|
|
867
1012
|
aliases: [],
|
|
868
1013
|
family: "gemini-3.5",
|
|
869
1014
|
pricing: [
|
|
870
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "2.50", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
1015
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "2.50", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.15 / $1.25), not from a blanket statement.", "No context-caching rate is published for this model; cachedInput is omitted rather than inferred from a sibling model."] }
|
|
871
1016
|
],
|
|
872
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
1017
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
873
1018
|
},
|
|
874
1019
|
{
|
|
875
1020
|
canonicalId: "gemini-3.6-flash",
|
|
@@ -877,9 +1022,33 @@ var MODEL_REGISTRY = [
|
|
|
877
1022
|
aliases: [],
|
|
878
1023
|
family: "gemini-3.6",
|
|
879
1024
|
pricing: [
|
|
880
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
1025
|
+
{ "effectiveFrom": "2026-01-01", "effectiveTo": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Supersedes the single $1.50 / $7.50 period recorded on 2026-08-05. That rate was live then and is scheduled to return on 2027-01-01, so it is kept as a closed historical period rather than deleted.", "Recorded 2026-08-05 at $1.50 / $7.50 with no cachedInput; the page did not then publish a per-model context-caching rate. Closed at the 2026-09-07 observation date, the last date the promotional rate is known not to have applied being 2026-08-05.", "Google's page does not state when this rate took effect; effectiveFrom is set conservatively to 2026-01-01."] },
|
|
1026
|
+
{ "effectiveFrom": "2026-09-07", "effectiveTo": "2027-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.75", "output": "3.75", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Promotional rate published as running through 2026-12-31, with the standard rate resuming 2027-01-01 - both dates are stated on the page, so this period's effectiveTo and the next period's effectiveFrom are sourced, not conservative placeholders.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.375 / $1.875 promo, $0.75 / $3.75 standard), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] },
|
|
1027
|
+
{ "effectiveFrom": "2027-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "cachedInput": "0.15", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Standard rate resuming 2027-01-01, the date the page publishes for the end of the promotional rate.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.375 / $1.875 promo, $0.75 / $3.75 standard), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] }
|
|
881
1028
|
],
|
|
882
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-08-05" }
|
|
1029
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Three periods: the $1.50/$7.50 rate observed 2026-08-05, the $0.75/$3.75 promotional rate observed 2026-09-07 and published as running through 2026-12-31, then the standard rate resuming 2027-01-01."] }
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
canonicalId: "gemini-3.7-flash",
|
|
1033
|
+
provider: "google",
|
|
1034
|
+
aliases: [],
|
|
1035
|
+
family: "gemini-3.7",
|
|
1036
|
+
pricing: [
|
|
1037
|
+
{ "effectiveFrom": "2026-09-07", "effectiveTo": "2027-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.75", "output": "3.75", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["New model: absent from the pricing page on 2026-08-05, present on 2026-09-07. effectiveFrom is the observation date rather than a backdated guess.", "Promotional rate published as running through 2026-12-31, with the standard rate resuming 2027-01-01 - both dates are stated on the page, so this period's effectiveTo and the next period's effectiveFrom are sourced, not conservative placeholders.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.375 / $1.875 promo, $0.75 / $3.75 standard), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] },
|
|
1038
|
+
{ "effectiveFrom": "2027-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "cachedInput": "0.15", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Standard rate resuming 2027-01-01, the date the page publishes for the end of the promotional rate.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.375 / $1.875 promo, $0.75 / $3.75 standard), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] }
|
|
1039
|
+
],
|
|
1040
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
canonicalId: "gemini-3.8-flash",
|
|
1044
|
+
provider: "google",
|
|
1045
|
+
aliases: [],
|
|
1046
|
+
family: "gemini-3.8",
|
|
1047
|
+
pricing: [
|
|
1048
|
+
{ "effectiveFrom": "2026-09-07", "effectiveTo": "2027-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.75", "output": "3.75", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["New model: absent from the pricing page on 2026-08-05, present on 2026-09-07. effectiveFrom is the observation date rather than a backdated guess.", "Promotional rate published as running through 2026-12-31, with the standard rate resuming 2027-01-01 - both dates are stated on the page, so this period's effectiveTo and the next period's effectiveFrom are sourced, not conservative placeholders.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.375 / $1.875 promo, $0.75 / $3.75 standard), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] },
|
|
1049
|
+
{ "effectiveFrom": "2027-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "cachedInput": "0.15", "batchMultiplier": "0.5", "sourceUrl": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Standard rate resuming 2027-01-01, the date the page publishes for the end of the promotional rate.", "batchMultiplier of 0.5 was verified from this model's own Batch rows ($0.375 / $1.875 promo, $0.75 / $3.75 standard), not from a blanket statement.", "cachedInput is this model's own published context-caching rate. The page also charges a separate per-hour cache storage fee, which this per-token schema does not model."] }
|
|
1050
|
+
],
|
|
1051
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
883
1052
|
},
|
|
884
1053
|
{
|
|
885
1054
|
canonicalId: "gpt-oss-120b",
|
|
@@ -887,9 +1056,9 @@ var MODEL_REGISTRY = [
|
|
|
887
1056
|
aliases: [],
|
|
888
1057
|
family: "gpt-oss",
|
|
889
1058
|
pricing: [
|
|
890
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1059
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-09-07", "notes": ["Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No prompt-caching or Batch API discount is documented for Groq in the fetched page.", "OpenAI's open-weight gpt-oss-120b model, hosted independently by Groq under Groq's own rate card (also hosted by Together AI, at the same $0.15/$0.60 rate as observed \u2014 coincidental agreement, not assumed parity).", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
891
1060
|
],
|
|
892
|
-
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1061
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
893
1062
|
},
|
|
894
1063
|
{
|
|
895
1064
|
canonicalId: "gpt-oss-20b",
|
|
@@ -897,9 +1066,9 @@ var MODEL_REGISTRY = [
|
|
|
897
1066
|
aliases: [],
|
|
898
1067
|
family: "gpt-oss",
|
|
899
1068
|
pricing: [
|
|
900
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.075", "output": "0.30", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1069
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.075", "output": "0.30", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-09-07", "notes": ["Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No prompt-caching or Batch API discount is documented for Groq in the fetched page.", "Also hosted by Together AI at a different rate ($0.05/$0.20 as observed) \u2014 each host prices it independently; do not assume parity.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
901
1070
|
],
|
|
902
|
-
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1071
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
903
1072
|
},
|
|
904
1073
|
{
|
|
905
1074
|
canonicalId: "llama-3.1-8b-instant",
|
|
@@ -907,7 +1076,7 @@ var MODEL_REGISTRY = [
|
|
|
907
1076
|
aliases: ["llama-3.1-8b"],
|
|
908
1077
|
family: "llama-3.1",
|
|
909
1078
|
pricing: [
|
|
910
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.05", "output": "0.08", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-08-05", "notes": ["Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No prompt-caching or Batch API discount is documented for Groq in the fetched page, so cachedInput and batchMultiplier are omitted rather than assumed."] }
|
|
1079
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.05", "output": "0.08", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-08-05", "notes": ["Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No prompt-caching or Batch API discount is documented for Groq in the fetched page, so cachedInput and batchMultiplier are omitted rather than assumed.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the gpt-oss and Qwen models with per-token prices. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
911
1080
|
],
|
|
912
1081
|
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-08-05" }
|
|
913
1082
|
},
|
|
@@ -917,7 +1086,7 @@ var MODEL_REGISTRY = [
|
|
|
917
1086
|
aliases: ["llama-3.3-70b"],
|
|
918
1087
|
family: "llama-3.3",
|
|
919
1088
|
pricing: [
|
|
920
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.59", "output": "0.79", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-08-05", "notes": ["Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No prompt-caching or Batch API discount is documented for Groq in the fetched page, so cachedInput and batchMultiplier are omitted rather than assumed.", "This is Groq's own hosted rate for the same open-weight model Together AI also hosts (see together.json's llama-3.3-70b at a different, higher price) and AWS Bedrock resells \u2014 each host prices it independently; do not assume parity."] }
|
|
1089
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.59", "output": "0.79", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-08-05", "notes": ["Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No prompt-caching or Batch API discount is documented for Groq in the fetched page, so cachedInput and batchMultiplier are omitted rather than assumed.", "This is Groq's own hosted rate for the same open-weight model Together AI also hosts (see together.json's llama-3.3-70b at a different, higher price) and AWS Bedrock resells \u2014 each host prices it independently; do not assume parity.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the gpt-oss and Qwen models with per-token prices. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
921
1090
|
],
|
|
922
1091
|
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-08-05" }
|
|
923
1092
|
},
|
|
@@ -927,19 +1096,29 @@ var MODEL_REGISTRY = [
|
|
|
927
1096
|
aliases: [],
|
|
928
1097
|
family: "qwen",
|
|
929
1098
|
pricing: [
|
|
930
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.60", "output": "3.00", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1099
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.60", "output": "3.00", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-09-07", "notes": [`Listed under Groq's "Preview" models section, not "Production" \u2014 preview models on Groq are explicitly subject to change or removal without notice. Included because a real price was published, but treat this one as less stable than the production-tier entries in this file.`, "Groq's docs page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
931
1100
|
],
|
|
932
|
-
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1101
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
1102
|
+
},
|
|
1103
|
+
{
|
|
1104
|
+
canonicalId: "qwen3.8-27b",
|
|
1105
|
+
provider: "groq",
|
|
1106
|
+
aliases: ["qwen/qwen3.8-27b"],
|
|
1107
|
+
family: "qwen3.8",
|
|
1108
|
+
pricing: [
|
|
1109
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.80", "output": "4.00", "sourceUrl": "https://console.groq.com/docs/models", "observedAt": "2026-09-07", "notes": ["New model: absent from this page on 2026-08-05, present on 2026-09-07. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the earlier fetch proves it was not listed then.", "Marked Preview on Groq's page - less stable than a Production model, and its price may move accordingly.", "No cached-input rate and no batch discount are published for Groq models; both fields are omitted rather than guessed."] }
|
|
1110
|
+
],
|
|
1111
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
933
1112
|
},
|
|
934
1113
|
{
|
|
935
1114
|
canonicalId: "codestral",
|
|
936
1115
|
provider: "mistral",
|
|
937
|
-
aliases: [],
|
|
1116
|
+
aliases: ["codestral-latest"],
|
|
938
1117
|
family: "codestral",
|
|
939
1118
|
pricing: [
|
|
940
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.90", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1119
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.90", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'codestral-latest' (recorded as an alias)."] }
|
|
941
1120
|
],
|
|
942
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1121
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
943
1122
|
},
|
|
944
1123
|
{
|
|
945
1124
|
canonicalId: "devstral-2",
|
|
@@ -947,7 +1126,7 @@ var MODEL_REGISTRY = [
|
|
|
947
1126
|
aliases: [],
|
|
948
1127
|
family: "devstral",
|
|
949
1128
|
pricing: [
|
|
950
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.40", "output": "2.00", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01."] }
|
|
1129
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.40", "output": "2.00", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
951
1130
|
],
|
|
952
1131
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
953
1132
|
},
|
|
@@ -957,7 +1136,7 @@ var MODEL_REGISTRY = [
|
|
|
957
1136
|
aliases: [],
|
|
958
1137
|
family: "devstral",
|
|
959
1138
|
pricing: [
|
|
960
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.30", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01."] }
|
|
1139
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.30", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
961
1140
|
],
|
|
962
1141
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
963
1142
|
},
|
|
@@ -967,7 +1146,7 @@ var MODEL_REGISTRY = [
|
|
|
967
1146
|
aliases: [],
|
|
968
1147
|
family: "magistral",
|
|
969
1148
|
pricing: [
|
|
970
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "5.00", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Listed as a reasoning model on the pricing page; no separate "reasoning" surcharge is published, so the reasoning field is omitted.'] }
|
|
1149
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "5.00", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Listed as a reasoning model on the pricing page; no separate "reasoning" surcharge is published, so the reasoning field is omitted.', "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
971
1150
|
],
|
|
972
1151
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
973
1152
|
},
|
|
@@ -977,59 +1156,59 @@ var MODEL_REGISTRY = [
|
|
|
977
1156
|
aliases: [],
|
|
978
1157
|
family: "magistral",
|
|
979
1158
|
pricing: [
|
|
980
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01."] }
|
|
1159
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
981
1160
|
],
|
|
982
1161
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
983
1162
|
},
|
|
984
1163
|
{
|
|
985
1164
|
canonicalId: "ministral-3-14b",
|
|
986
1165
|
provider: "mistral",
|
|
987
|
-
aliases: [],
|
|
1166
|
+
aliases: ["ministral-14b-latest"],
|
|
988
1167
|
family: "ministral-3",
|
|
989
1168
|
pricing: [
|
|
990
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "0.20", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1169
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "0.20", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", `AWS Bedrock resells a "Ministral 14B 3.0" at the same $0.20/$0.20 figure as independently observed on Bedrock's pricing page \u2014 likely the same model, coincidental agreement not assumed; Bedrock's variant was not added to aws-bedrock.json in this pass since the version suffix ("3.0") was not cross-checked against this "ministral-3-14b" naming.`, "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'ministral-14b-latest' (recorded as an alias)."] }
|
|
991
1170
|
],
|
|
992
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1171
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
993
1172
|
},
|
|
994
1173
|
{
|
|
995
1174
|
canonicalId: "ministral-3-3b",
|
|
996
1175
|
provider: "mistral",
|
|
997
|
-
aliases: [],
|
|
1176
|
+
aliases: ["ministral-3b-latest"],
|
|
998
1177
|
family: "ministral-3",
|
|
999
1178
|
pricing: [
|
|
1000
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.10", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1179
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.10", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'ministral-3b-latest' (recorded as an alias)."] }
|
|
1001
1180
|
],
|
|
1002
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1181
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1003
1182
|
},
|
|
1004
1183
|
{
|
|
1005
1184
|
canonicalId: "ministral-3-8b",
|
|
1006
1185
|
provider: "mistral",
|
|
1007
|
-
aliases: [],
|
|
1186
|
+
aliases: ["ministral-8b-latest"],
|
|
1008
1187
|
family: "ministral-3",
|
|
1009
1188
|
pricing: [
|
|
1010
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.15", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1189
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.15", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'ministral-8b-latest' (recorded as an alias)."] }
|
|
1011
1190
|
],
|
|
1012
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1191
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1013
1192
|
},
|
|
1014
1193
|
{
|
|
1015
1194
|
canonicalId: "mistral-large-3",
|
|
1016
1195
|
provider: "mistral",
|
|
1017
|
-
aliases: [],
|
|
1196
|
+
aliases: ["mistral-large-latest"],
|
|
1018
1197
|
family: "mistral-large",
|
|
1019
1198
|
pricing: [
|
|
1020
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1199
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "cachedInput": "0.05", "batchMultiplier": "0.5", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", `This is Mistral's own first-party rate. AWS Bedrock also resells "Mistral Large 3" under its own rate card at the same $0.50/$1.50 figure as independently observed on Bedrock's pricing page \u2014 coincidental agreement between the two sources, not assumed; see aws-bedrock.json.`, "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'mistral-large-latest' (recorded as an alias).", `cachedInput and batchMultiplier added on 2026-09-07: the page publishes "Cached input: 90% discount" and "Batch: 50% discount" for this model, so cachedInput is 0.1x this model's own input rate (0.50 -> 0.05), computed as an exact decimal, and batchMultiplier is 0.5. Both come from this model's own row, not from a sibling's rate.`] }
|
|
1021
1200
|
],
|
|
1022
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1201
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1023
1202
|
},
|
|
1024
1203
|
{
|
|
1025
1204
|
canonicalId: "mistral-medium-3.5",
|
|
1026
1205
|
provider: "mistral",
|
|
1027
|
-
aliases: [],
|
|
1206
|
+
aliases: ["mistral-medium-latest"],
|
|
1028
1207
|
family: "mistral-medium",
|
|
1029
1208
|
pricing: [
|
|
1030
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1209
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "cachedInput": "0.15", "batchMultiplier": "0.5", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "No cachedInput or batchMultiplier is documented on the fetched page for this model; omitted rather than assumed.", "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'mistral-medium-latest' (recorded as an alias).", `cachedInput and batchMultiplier added on 2026-09-07: the page publishes "Cached input: 90% discount" and "Batch: 50% discount" for this model, so cachedInput is 0.1x this model's own input rate (1.50 -> 0.15), computed as an exact decimal, and batchMultiplier is 0.5. Both come from this model's own row, not from a sibling's rate.`] }
|
|
1031
1210
|
],
|
|
1032
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1211
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1033
1212
|
},
|
|
1034
1213
|
{
|
|
1035
1214
|
canonicalId: "mistral-nemo",
|
|
@@ -1037,19 +1216,19 @@ var MODEL_REGISTRY = [
|
|
|
1037
1216
|
aliases: [],
|
|
1038
1217
|
family: "mistral-nemo",
|
|
1039
1218
|
pricing: [
|
|
1040
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.15", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "An older model generation still listed with a live price on the current pricing page as fetched; included because it is confidently sourced, not because it is a current flagship."] }
|
|
1219
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.15", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "An older model generation still listed with a live price on the current pricing page as fetched; included because it is confidently sourced, not because it is a current flagship.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
1041
1220
|
],
|
|
1042
1221
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
1043
1222
|
},
|
|
1044
1223
|
{
|
|
1045
1224
|
canonicalId: "mistral-small-4",
|
|
1046
1225
|
provider: "mistral",
|
|
1047
|
-
aliases: [],
|
|
1226
|
+
aliases: ["mistral-small-latest"],
|
|
1048
1227
|
family: "mistral-small",
|
|
1049
1228
|
pricing: [
|
|
1050
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1229
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "cachedInput": "0.015", "batchMultiplier": "0.5", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page, which prints the API id as 'mistral-small-latest' (recorded as an alias).", `cachedInput and batchMultiplier added on 2026-09-07: the page publishes "Cached input: 90% discount" and "Batch: 50% discount" for this model, so cachedInput is 0.1x this model's own input rate (0.15 -> 0.015), computed as an exact decimal, and batchMultiplier is 0.5. Both come from this model's own row, not from a sibling's rate.`] }
|
|
1051
1230
|
],
|
|
1052
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1231
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1053
1232
|
},
|
|
1054
1233
|
{
|
|
1055
1234
|
canonicalId: "mixtral-8x22b",
|
|
@@ -1057,7 +1236,7 @@ var MODEL_REGISTRY = [
|
|
|
1057
1236
|
aliases: [],
|
|
1058
1237
|
family: "mixtral",
|
|
1059
1238
|
pricing: [
|
|
1060
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "6.00", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "An older model generation still listed with a live price on the current pricing page as fetched."] }
|
|
1239
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "6.00", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "An older model generation still listed with a live price on the current pricing page as fetched.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
1061
1240
|
],
|
|
1062
1241
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
1063
1242
|
},
|
|
@@ -1067,19 +1246,29 @@ var MODEL_REGISTRY = [
|
|
|
1067
1246
|
aliases: [],
|
|
1068
1247
|
family: "mixtral",
|
|
1069
1248
|
pricing: [
|
|
1070
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.70", "output": "0.70", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "An older model generation still listed with a live price on the current pricing page as fetched."] }
|
|
1249
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.70", "output": "0.70", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05", "notes": ["Mistral's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "An older model generation still listed with a live price on the current pricing page as fetched.", "Not surfaced by the 2026-09-07 fetch of the same page, which listed only the Medium/Small/Large, Ministral, Codestral, embedding and third-party GLM entries. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal. Re-check before relying on this entry."] }
|
|
1071
1250
|
],
|
|
1072
1251
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
1073
1252
|
},
|
|
1253
|
+
{
|
|
1254
|
+
canonicalId: "zai-glm-5-2",
|
|
1255
|
+
provider: "mistral",
|
|
1256
|
+
aliases: [],
|
|
1257
|
+
family: "glm",
|
|
1258
|
+
pricing: [
|
|
1259
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "1.40", "output": "4.40", "cachedInput": "0.14", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07", "notes": ["New entry: absent from this page on 2026-08-05, present on 2026-09-07. effectiveFrom is the observation date rather than this file's conservative 2026-01-01.", `Listed under "Third-Party Models" on Mistral's own pricing page - a Z.ai GLM model resold through La Plateforme, so this is Mistral's resale rate, not Z.ai's first-party rate.`, "All three rates are printed per-model on the page. No batch discount is stated for the third-party section, so batchMultiplier is omitted rather than assumed from the first-party models' 50%."] }
|
|
1260
|
+
],
|
|
1261
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1262
|
+
},
|
|
1074
1263
|
{
|
|
1075
1264
|
canonicalId: "gpt-3.5-turbo",
|
|
1076
1265
|
provider: "openai",
|
|
1077
1266
|
aliases: [],
|
|
1078
1267
|
family: "gpt-3.5",
|
|
1079
1268
|
pricing: [
|
|
1080
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1269
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Found on https://developers.openai.com/api/docs/pricing during a second confirmation pass.", "No cached-input rate is published for gpt-3.5-turbo on the current pricing page; cachedInput is intentionally omitted rather than guessed.", "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1081
1270
|
],
|
|
1082
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1271
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1083
1272
|
},
|
|
1084
1273
|
{
|
|
1085
1274
|
canonicalId: "gpt-4.1",
|
|
@@ -1087,9 +1276,9 @@ var MODEL_REGISTRY = [
|
|
|
1087
1276
|
aliases: [],
|
|
1088
1277
|
family: "gpt-4.1",
|
|
1089
1278
|
pricing: [
|
|
1090
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "8.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1279
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "8.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1091
1280
|
],
|
|
1092
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1281
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1093
1282
|
},
|
|
1094
1283
|
{
|
|
1095
1284
|
canonicalId: "gpt-4.1-mini",
|
|
@@ -1097,9 +1286,9 @@ var MODEL_REGISTRY = [
|
|
|
1097
1286
|
aliases: [],
|
|
1098
1287
|
family: "gpt-4.1",
|
|
1099
1288
|
pricing: [
|
|
1100
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.40", "output": "1.60", "cachedInput": "0.10", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1289
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.40", "output": "1.60", "cachedInput": "0.10", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1101
1290
|
],
|
|
1102
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1291
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1103
1292
|
},
|
|
1104
1293
|
{
|
|
1105
1294
|
canonicalId: "gpt-4.1-nano",
|
|
@@ -1107,9 +1296,9 @@ var MODEL_REGISTRY = [
|
|
|
1107
1296
|
aliases: [],
|
|
1108
1297
|
family: "gpt-4.1",
|
|
1109
1298
|
pricing: [
|
|
1110
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.40", "cachedInput": "0.025", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1299
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.40", "cachedInput": "0.025", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1111
1300
|
],
|
|
1112
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1301
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1113
1302
|
},
|
|
1114
1303
|
{
|
|
1115
1304
|
canonicalId: "gpt-4o",
|
|
@@ -1117,9 +1306,9 @@ var MODEL_REGISTRY = [
|
|
|
1117
1306
|
aliases: [],
|
|
1118
1307
|
family: "gpt-4o",
|
|
1119
1308
|
pricing: [
|
|
1120
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "10.00", "cachedInput": "1.25", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1309
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "10.00", "cachedInput": "1.25", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1121
1310
|
],
|
|
1122
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1311
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1123
1312
|
},
|
|
1124
1313
|
{
|
|
1125
1314
|
canonicalId: "gpt-4o-mini",
|
|
@@ -1127,9 +1316,9 @@ var MODEL_REGISTRY = [
|
|
|
1127
1316
|
aliases: [],
|
|
1128
1317
|
family: "gpt-4o",
|
|
1129
1318
|
pricing: [
|
|
1130
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1319
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1131
1320
|
],
|
|
1132
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1321
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1133
1322
|
},
|
|
1134
1323
|
{
|
|
1135
1324
|
canonicalId: "gpt-5",
|
|
@@ -1137,9 +1326,9 @@ var MODEL_REGISTRY = [
|
|
|
1137
1326
|
aliases: [],
|
|
1138
1327
|
family: "gpt-5",
|
|
1139
1328
|
pricing: [
|
|
1140
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cachedInput": "0.125", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1329
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cachedInput": "0.125", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model.", "Lead-supplied verified table (observed 2026-08-05) matches this rate exactly; independently re-confirmed against https://developers.openai.com/api/docs/pricing on the same date."] }
|
|
1141
1330
|
],
|
|
1142
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1331
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1143
1332
|
},
|
|
1144
1333
|
{
|
|
1145
1334
|
canonicalId: "gpt-5-mini",
|
|
@@ -1147,9 +1336,9 @@ var MODEL_REGISTRY = [
|
|
|
1147
1336
|
aliases: [],
|
|
1148
1337
|
family: "gpt-5",
|
|
1149
1338
|
pricing: [
|
|
1150
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.25", "output": "2.00", "cachedInput": "0.025", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1339
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.25", "output": "2.00", "cachedInput": "0.025", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1151
1340
|
],
|
|
1152
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1341
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1153
1342
|
},
|
|
1154
1343
|
{
|
|
1155
1344
|
canonicalId: "gpt-5-nano",
|
|
@@ -1157,9 +1346,9 @@ var MODEL_REGISTRY = [
|
|
|
1157
1346
|
aliases: [],
|
|
1158
1347
|
family: "gpt-5",
|
|
1159
1348
|
pricing: [
|
|
1160
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.05", "output": "0.40", "cachedInput": "0.005", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1349
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.05", "output": "0.40", "cachedInput": "0.005", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1161
1350
|
],
|
|
1162
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1351
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1163
1352
|
},
|
|
1164
1353
|
{
|
|
1165
1354
|
canonicalId: "gpt-5-pro",
|
|
@@ -1167,9 +1356,9 @@ var MODEL_REGISTRY = [
|
|
|
1167
1356
|
aliases: [],
|
|
1168
1357
|
family: "gpt-5",
|
|
1169
1358
|
pricing: [
|
|
1170
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "15.00", "output": "120.00", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1359
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "15.00", "output": "120.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ['No cached-input rate is published for gpt-5-pro (shown as "\u2014"); cachedInput is intentionally omitted rather than guessed.', "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1171
1360
|
],
|
|
1172
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1361
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1173
1362
|
},
|
|
1174
1363
|
{
|
|
1175
1364
|
canonicalId: "gpt-5.1",
|
|
@@ -1177,9 +1366,9 @@ var MODEL_REGISTRY = [
|
|
|
1177
1366
|
aliases: [],
|
|
1178
1367
|
family: "gpt-5.1",
|
|
1179
1368
|
pricing: [
|
|
1180
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cachedInput": "0.125", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1369
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cachedInput": "0.125", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1181
1370
|
],
|
|
1182
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1371
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1183
1372
|
},
|
|
1184
1373
|
{
|
|
1185
1374
|
canonicalId: "gpt-5.2",
|
|
@@ -1187,9 +1376,9 @@ var MODEL_REGISTRY = [
|
|
|
1187
1376
|
aliases: [],
|
|
1188
1377
|
family: "gpt-5.2",
|
|
1189
1378
|
pricing: [
|
|
1190
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.75", "output": "14.00", "cachedInput": "0.175", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1379
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.75", "output": "14.00", "cachedInput": "0.175", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1191
1380
|
],
|
|
1192
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1381
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1193
1382
|
},
|
|
1194
1383
|
{
|
|
1195
1384
|
canonicalId: "gpt-5.2-pro",
|
|
@@ -1197,9 +1386,9 @@ var MODEL_REGISTRY = [
|
|
|
1197
1386
|
aliases: [],
|
|
1198
1387
|
family: "gpt-5.2",
|
|
1199
1388
|
pricing: [
|
|
1200
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "21.00", "output": "168.00", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1389
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "21.00", "output": "168.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ['No cached-input rate is published for gpt-5.2-pro (shown as "\u2014"); cachedInput is intentionally omitted rather than guessed.', "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1201
1390
|
],
|
|
1202
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1391
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1203
1392
|
},
|
|
1204
1393
|
{
|
|
1205
1394
|
canonicalId: "gpt-5.4",
|
|
@@ -1207,9 +1396,9 @@ var MODEL_REGISTRY = [
|
|
|
1207
1396
|
aliases: [],
|
|
1208
1397
|
family: "gpt-5.4",
|
|
1209
1398
|
pricing: [
|
|
1210
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "15.00", "cachedInput": "0.25", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1399
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "15.00", "cachedInput": "0.25", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model.", 'The pricing page qualifies this rate as the "<272K" context tier. A higher tier above 272K tokens is implied by that label but no rate for it was published in the fetched table, and this schema has no context-length dimension, so only the <272K rate is recorded.'] }
|
|
1211
1400
|
],
|
|
1212
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1401
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1213
1402
|
},
|
|
1214
1403
|
{
|
|
1215
1404
|
canonicalId: "gpt-5.4-mini",
|
|
@@ -1217,9 +1406,9 @@ var MODEL_REGISTRY = [
|
|
|
1217
1406
|
aliases: [],
|
|
1218
1407
|
family: "gpt-5.4",
|
|
1219
1408
|
pricing: [
|
|
1220
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.75", "output": "4.50", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1409
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.75", "output": "4.50", "cachedInput": "0.075", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1221
1410
|
],
|
|
1222
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1411
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1223
1412
|
},
|
|
1224
1413
|
{
|
|
1225
1414
|
canonicalId: "gpt-5.4-nano",
|
|
@@ -1227,9 +1416,9 @@ var MODEL_REGISTRY = [
|
|
|
1227
1416
|
aliases: [],
|
|
1228
1417
|
family: "gpt-5.4",
|
|
1229
1418
|
pricing: [
|
|
1230
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "1.25", "cachedInput": "0.02", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1419
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "1.25", "cachedInput": "0.02", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1231
1420
|
],
|
|
1232
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1421
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1233
1422
|
},
|
|
1234
1423
|
{
|
|
1235
1424
|
canonicalId: "gpt-5.4-pro",
|
|
@@ -1237,9 +1426,9 @@ var MODEL_REGISTRY = [
|
|
|
1237
1426
|
aliases: [],
|
|
1238
1427
|
family: "gpt-5.4",
|
|
1239
1428
|
pricing: [
|
|
1240
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "30.00", "output": "180.00", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1429
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "30.00", "output": "180.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ['No cached-input rate is published for gpt-5.4-pro (shown as "\u2014"); cachedInput is intentionally omitted rather than guessed.', "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`, 'The pricing page qualifies this rate as the "<272K" context tier. A higher tier above 272K tokens is implied by that label but no rate for it was published in the fetched table, and this schema has no context-length dimension, so only the <272K rate is recorded.'] }
|
|
1241
1430
|
],
|
|
1242
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1431
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1243
1432
|
},
|
|
1244
1433
|
{
|
|
1245
1434
|
canonicalId: "gpt-5.5",
|
|
@@ -1247,9 +1436,9 @@ var MODEL_REGISTRY = [
|
|
|
1247
1436
|
aliases: [],
|
|
1248
1437
|
family: "gpt-5.5",
|
|
1249
1438
|
pricing: [
|
|
1250
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "30.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1439
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "30.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model.", 'The pricing page qualifies this rate as the "<272K" context tier. A higher tier above 272K tokens is implied by that label but no rate for it was published in the fetched table, and this schema has no context-length dimension, so only the <272K rate is recorded.'] }
|
|
1251
1440
|
],
|
|
1252
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1441
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1253
1442
|
},
|
|
1254
1443
|
{
|
|
1255
1444
|
canonicalId: "gpt-5.5-pro",
|
|
@@ -1257,9 +1446,9 @@ var MODEL_REGISTRY = [
|
|
|
1257
1446
|
aliases: [],
|
|
1258
1447
|
family: "gpt-5.5",
|
|
1259
1448
|
pricing: [
|
|
1260
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "30.00", "output": "180.00", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1449
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "30.00", "output": "180.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ['No cached-input rate is published for gpt-5.5-pro (shown as "\u2014" on the pricing page); cachedInput is intentionally omitted rather than guessed.', "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`, 'The pricing page qualifies this rate as the "<272K" context tier. A higher tier above 272K tokens is implied by that label but no rate for it was published in the fetched table, and this schema has no context-length dimension, so only the <272K rate is recorded.'] }
|
|
1261
1450
|
],
|
|
1262
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1451
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1263
1452
|
},
|
|
1264
1453
|
{
|
|
1265
1454
|
canonicalId: "gpt-5.6-luna",
|
|
@@ -1267,9 +1456,9 @@ var MODEL_REGISTRY = [
|
|
|
1267
1456
|
aliases: [],
|
|
1268
1457
|
family: "gpt-5.6",
|
|
1269
1458
|
pricing: [
|
|
1270
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "1.20", "cachedInput": "0.02", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1459
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "1.20", "cachedInput": "0.02", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1271
1460
|
],
|
|
1272
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1461
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1273
1462
|
},
|
|
1274
1463
|
{
|
|
1275
1464
|
canonicalId: "gpt-5.6-sol",
|
|
@@ -1277,9 +1466,10 @@ var MODEL_REGISTRY = [
|
|
|
1277
1466
|
aliases: [],
|
|
1278
1467
|
family: "gpt-5.6",
|
|
1279
1468
|
pricing: [
|
|
1280
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "30.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-08-05", "notes": [`OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date (this model's naming implies a later release, but a conservative too-early effectiveFrom only ever makes a historical lookup succeed when it should return "no period found", never the reverse).`, `batchMultiplier reflects OpenAI's general Batch API policy ("a 50% discount to Standard pricing rates across all models") as stated on the pricing page; not independently confirmed per-model
|
|
1469
|
+
{ "effectiveFrom": "2026-01-01", "effectiveTo": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "5.00", "output": "30.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-08-05", "notes": [`OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date (this model's naming implies a later release, but a conservative too-early effectiveFrom only ever makes a historical lookup succeed when it should return "no period found", never the reverse).`, `batchMultiplier reflects OpenAI's general Batch API policy ("a 50% discount to Standard pricing rates across all models") as stated on the pricing page; not independently confirmed per-model.`, "Closed on 2026-09-07: the pricing page published a lower rate (4.00 input / 20.00 output) on that date. The old rate was last confirmed 2026-08-05, so the true change date lies in (2026-08-05, 2026-09-07]; effectiveTo is the observation date, which keeps every confirmed observation correct and approximates only the unobserved gap, toward the last confirmed value."] },
|
|
1470
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "4.00", "output": "20.00", "cachedInput": "0.40", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Price cut observed on 2026-09-07: input 5.00 -> 4.00, output 30.00 -> 20.00, cached input 0.50 -> 0.40. OpenAI publishes no effective date, so effectiveFrom is the observation date rather than a guess at when the cut actually landed.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1281
1471
|
],
|
|
1282
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1472
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1283
1473
|
},
|
|
1284
1474
|
{
|
|
1285
1475
|
canonicalId: "gpt-5.6-terra",
|
|
@@ -1287,9 +1477,19 @@ var MODEL_REGISTRY = [
|
|
|
1287
1477
|
aliases: [],
|
|
1288
1478
|
family: "gpt-5.6",
|
|
1289
1479
|
pricing: [
|
|
1290
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "12.00", "cachedInput": "0.20", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1480
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "12.00", "cachedInput": "0.20", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1481
|
+
],
|
|
1482
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
canonicalId: "gpt-6-astra",
|
|
1486
|
+
provider: "openai",
|
|
1487
|
+
aliases: [],
|
|
1488
|
+
family: "gpt-6",
|
|
1489
|
+
pricing: [
|
|
1490
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "10.00", "output": "50.00", "cachedInput": "1.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["New model: absent from the pricing page on 2026-08-05, present on 2026-09-07. effectiveFrom is the observation date rather than this file's usual conservative 2026-01-01 - the model demonstrably did not exist at that rate a month earlier, so backdating it would invent a period.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1291
1491
|
],
|
|
1292
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1492
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1293
1493
|
},
|
|
1294
1494
|
{
|
|
1295
1495
|
canonicalId: "o1",
|
|
@@ -1297,9 +1497,9 @@ var MODEL_REGISTRY = [
|
|
|
1297
1497
|
aliases: [],
|
|
1298
1498
|
family: "o-series",
|
|
1299
1499
|
pricing: [
|
|
1300
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "15.00", "output": "60.00", "cachedInput": "7.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1500
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "15.00", "output": "60.00", "cachedInput": "7.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1301
1501
|
],
|
|
1302
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1502
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1303
1503
|
},
|
|
1304
1504
|
{
|
|
1305
1505
|
canonicalId: "o1-pro",
|
|
@@ -1307,9 +1507,9 @@ var MODEL_REGISTRY = [
|
|
|
1307
1507
|
aliases: [],
|
|
1308
1508
|
family: "o-series",
|
|
1309
1509
|
pricing: [
|
|
1310
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "150.00", "output": "600.00", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1510
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "150.00", "output": "600.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["Found on https://developers.openai.com/api/docs/pricing during a second confirmation pass.", 'No cached-input rate is published for o1-pro (shown as "\u2014"); cachedInput is intentionally omitted rather than guessed.', "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1311
1511
|
],
|
|
1312
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1512
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1313
1513
|
},
|
|
1314
1514
|
{
|
|
1315
1515
|
canonicalId: "o3",
|
|
@@ -1317,9 +1517,9 @@ var MODEL_REGISTRY = [
|
|
|
1317
1517
|
aliases: [],
|
|
1318
1518
|
family: "o-series",
|
|
1319
1519
|
pricing: [
|
|
1320
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "8.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1520
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "8.00", "cachedInput": "0.50", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1321
1521
|
],
|
|
1322
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1522
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1323
1523
|
},
|
|
1324
1524
|
{
|
|
1325
1525
|
canonicalId: "o3-mini",
|
|
@@ -1327,9 +1527,9 @@ var MODEL_REGISTRY = [
|
|
|
1327
1527
|
aliases: [],
|
|
1328
1528
|
family: "o-series",
|
|
1329
1529
|
pricing: [
|
|
1330
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.10", "output": "4.40", "cachedInput": "0.55", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1530
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.10", "output": "4.40", "cachedInput": "0.55", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1331
1531
|
],
|
|
1332
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1532
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1333
1533
|
},
|
|
1334
1534
|
{
|
|
1335
1535
|
canonicalId: "o3-pro",
|
|
@@ -1337,9 +1537,9 @@ var MODEL_REGISTRY = [
|
|
|
1337
1537
|
aliases: [],
|
|
1338
1538
|
family: "o-series",
|
|
1339
1539
|
pricing: [
|
|
1340
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "20.00", "output": "80.00", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1540
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "20.00", "output": "80.00", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ['No cached-input rate is published for o3-pro (shown as "\u2014"); cachedInput is intentionally omitted rather than guessed.', "OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", `batchMultiplier is "0.5" per the pricing page's Batch API section, which states the 50% saving "applies to all text models listed above in the Standard table" - an explicit all-model statement, so the pro tiers are covered too.`] }
|
|
1341
1541
|
],
|
|
1342
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1542
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1343
1543
|
},
|
|
1344
1544
|
{
|
|
1345
1545
|
canonicalId: "o4-mini",
|
|
@@ -1347,9 +1547,9 @@ var MODEL_REGISTRY = [
|
|
|
1347
1547
|
aliases: [],
|
|
1348
1548
|
family: "o-series",
|
|
1349
1549
|
pricing: [
|
|
1350
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.10", "output": "4.40", "cachedInput": "0.275", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1550
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.10", "output": "4.40", "cachedInput": "0.275", "batchMultiplier": "0.5", "sourceUrl": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07", "notes": ["OpenAI's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01 pending confirmation of the true rollout date.", "batchMultiplier reflects OpenAI's general Batch API policy as stated on the pricing page; not independently confirmed per-model."] }
|
|
1351
1551
|
],
|
|
1352
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1552
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1353
1553
|
},
|
|
1354
1554
|
{
|
|
1355
1555
|
canonicalId: "anthropic/claude-sonnet-5",
|
|
@@ -1357,9 +1557,9 @@ var MODEL_REGISTRY = [
|
|
|
1357
1557
|
aliases: [],
|
|
1358
1558
|
family: "anthropic-proxy",
|
|
1359
1559
|
pricing: [
|
|
1360
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "10.00", "sourceUrl": "https://openrouter.ai/anthropic/claude-sonnet-5", "observedAt": "2026-
|
|
1560
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "10.00", "cachedInput": "0.20", "cacheWrite": "2.50", "sourceUrl": "https://openrouter.ai/anthropic/claude-sonnet-5", "observedAt": "2026-09-07", "notes": ["Recorded 2026-08-05 flagged UNCERTAIN: $2.00/$10.00 matched what anthropic.json then held as an introductory rate expiring 2026-08-31, so it was unclear whether OpenRouter had simply not updated its listing. Resolved on 2026-09-07 - Anthropic's pricing page states the scheduled $3.00/$15.00 increase will not occur and $2.00/$10.00 is the standard rate, so this listing was correct all along and the flag is withdrawn.", "OpenRouter's per-model page does not publish an effective date; effectiveFrom is set conservatively to 2026-01-01.", `canonicalId uses OpenRouter's own slug format, deliberately distinct from Anthropic's first-party canonicalId "claude-sonnet-5" (anthropic.json) to avoid a canonicalId collision; this is a legitimate cross-provider situation, not an error.`, "Re-confirmed unchanged on 2026-09-07 against the same model page.", "cachedInput added on 2026-09-07: the model page now prints a Cache Read rate of 0.20 per million tokens for this model.", "cacheWrite added on 2026-09-07: the model page prints a 5-minute Cache Write rate of 2.50 per million tokens (and $4.00 for the 1-hour TTL, which this single-field schema does not model).", "Resolves the 2026-08-05 caveat on this entry: $2.00/$10.00 was flagged as possibly Anthropic's introductory rate, due to be superseded by $3.00/$15.00 on 2026-09-01. Anthropic's own pricing page now states that increase will not occur and $2.00/$10.00 is the standard rate, so OpenRouter's rate matches the first-party standard rate, not a stale introductory one.", "The page notes Google Vertex (US/Europe) and Amazon Bedrock (US) upstreams charge $2.20/$11.00 through OpenRouter; the default cross-provider rate is recorded, since this schema has no upstream dimension."] }
|
|
1361
1561
|
],
|
|
1362
|
-
source: { "url": "https://openrouter.ai/anthropic/claude-sonnet-5", "observedAt": "2026-
|
|
1562
|
+
source: { "url": "https://openrouter.ai/anthropic/claude-sonnet-5", "observedAt": "2026-09-07" }
|
|
1363
1563
|
},
|
|
1364
1564
|
{
|
|
1365
1565
|
canonicalId: "google/gemini-3.1-pro-preview",
|
|
@@ -1367,9 +1567,9 @@ var MODEL_REGISTRY = [
|
|
|
1367
1567
|
aliases: [],
|
|
1368
1568
|
family: "google-proxy",
|
|
1369
1569
|
pricing: [
|
|
1370
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "12.00", "cheapestTier": true, "sourceUrl": "https://openrouter.ai/google/gemini-3.1-pro-preview", "observedAt": "2026-
|
|
1570
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "12.00", "cachedInput": "0.20", "cheapestTier": true, "sourceUrl": "https://openrouter.ai/google/gemini-3.1-pro-preview", "observedAt": "2026-09-07", "notes": ["OpenRouter's per-model page does not publish an effective date; effectiveFrom is set conservatively to 2026-01-01.", "Matches Google's own first-party <=200k-token-tier rate for gemini-3.1-pro-preview ($2.00/$12.00, see google.json) exactly as observed. Google's >200k-token tier ($4.00/$18.00) is not represented here (or, evidently, distinguished by OpenRouter's listing either) \u2014 same context-length-tiering limitation as google.json.", `canonicalId uses OpenRouter's own slug format, deliberately distinct from Google's first-party canonicalId "gemini-3.1-pro-preview" (google.json).`, "Re-confirmed unchanged on 2026-09-07 against the same model page.", "cachedInput added on 2026-09-07: the model page now prints a Cache Read rate of 0.20 per million tokens for this model."] }
|
|
1371
1571
|
],
|
|
1372
|
-
source: { "url": "https://openrouter.ai/google/gemini-3.1-pro-preview", "observedAt": "2026-
|
|
1572
|
+
source: { "url": "https://openrouter.ai/google/gemini-3.1-pro-preview", "observedAt": "2026-09-07" }
|
|
1373
1573
|
},
|
|
1374
1574
|
{
|
|
1375
1575
|
canonicalId: "meta-llama/llama-3.3-70b-instruct",
|
|
@@ -1377,9 +1577,9 @@ var MODEL_REGISTRY = [
|
|
|
1377
1577
|
aliases: [],
|
|
1378
1578
|
family: "meta-proxy",
|
|
1379
1579
|
pricing: [
|
|
1380
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.32", "sourceUrl": "https://openrouter.ai/meta-llama/llama-3.3-70b-instruct", "observedAt": "2026-
|
|
1580
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.32", "sourceUrl": "https://openrouter.ai/meta-llama/llama-3.3-70b-instruct", "observedAt": "2026-09-07", "notes": ["OpenRouter's per-model page does not publish an effective date; effectiveFrom is set conservatively to 2026-01-01.", `Meta does not sell first-party API access to Llama, so there is no first-party "llama-3.3-70b" entry in this registry to compare against; Groq (groq.json: llama-3.3-70b-versatile, $0.59/$0.79) and Together AI (together.json: llama-3.3-70b, $1.04/$1.04) each host the same open-weight model at their own, different rates. OpenRouter's rate here is the lowest of the three observed, plausibly because OpenRouter itself proxies to one of several underlying hosts and shows a blended/lowest-cost route; not independently confirmed which underlying host this routes to.`, "Re-confirmed unchanged on 2026-09-07 against the same model page.", 'The page labels this "the average price customers actually pay" and warns caching and discounts often put the effective price below it; recorded as printed.'] }
|
|
1381
1581
|
],
|
|
1382
|
-
source: { "url": "https://openrouter.ai/meta-llama/llama-3.3-70b-instruct", "observedAt": "2026-
|
|
1582
|
+
source: { "url": "https://openrouter.ai/meta-llama/llama-3.3-70b-instruct", "observedAt": "2026-09-07" }
|
|
1383
1583
|
},
|
|
1384
1584
|
{
|
|
1385
1585
|
canonicalId: "openai/gpt-5",
|
|
@@ -1387,9 +1587,19 @@ var MODEL_REGISTRY = [
|
|
|
1387
1587
|
aliases: [],
|
|
1388
1588
|
family: "openai-proxy",
|
|
1389
1589
|
pricing: [
|
|
1390
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "sourceUrl": "https://openrouter.ai/openai/gpt-5", "observedAt": "2026-
|
|
1590
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "10.00", "cachedInput": "0.125", "sourceUrl": "https://openrouter.ai/openai/gpt-5", "observedAt": "2026-09-07", "notes": ["OpenRouter's per-model page does not publish an effective date; effectiveFrom is set conservatively to 2026-01-01.", "Matches OpenAI's own first-party rate for gpt-5 ($1.25/$10.00, see openai.json) exactly as observed \u2014 no markup detected for this model.", `canonicalId uses OpenRouter's own slug format ("openai/gpt-5"), deliberately distinct from OpenAI's first-party canonicalId "gpt-5" (openai.json) \u2014 this avoids a canonicalId collision while still allowing a cross-provider alias collision if a caller looks up the bare id "gpt-5" without a provider qualifier; no bare "gpt-5" alias was added to this entry to keep that surface area minimal.`, "Re-confirmed unchanged on 2026-09-07 against the same model page.", "cachedInput added on 2026-09-07: the model page now prints a Cache Read rate of 0.125 per million tokens for this model."] }
|
|
1591
|
+
],
|
|
1592
|
+
source: { "url": "https://openrouter.ai/openai/gpt-5", "observedAt": "2026-09-07" }
|
|
1593
|
+
},
|
|
1594
|
+
{
|
|
1595
|
+
canonicalId: "deepseek-v4-flash-0731",
|
|
1596
|
+
provider: "together",
|
|
1597
|
+
aliases: [],
|
|
1598
|
+
family: "deepseek",
|
|
1599
|
+
pricing: [
|
|
1600
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.14", "output": "0.28", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1391
1601
|
],
|
|
1392
|
-
source: { "url": "https://
|
|
1602
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1393
1603
|
},
|
|
1394
1604
|
{
|
|
1395
1605
|
canonicalId: "deepseek-v4-pro",
|
|
@@ -1397,19 +1607,29 @@ var MODEL_REGISTRY = [
|
|
|
1397
1607
|
aliases: [],
|
|
1398
1608
|
family: "deepseek",
|
|
1399
1609
|
pricing: [
|
|
1400
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.74", "output": "3.48", "cachedInput": "0.20", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-08-05", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01."] }
|
|
1610
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.74", "output": "3.48", "cachedInput": "0.20", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-08-05", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Not re-confirmed on 2026-09-07: that fetch listed "DeepSeek V4 Pro 0813" at $1.32 / $3.96 and no undated "DeepSeek V4 Pro" row. Whether the dated build is this same model repriced or a separate snapshot is not stated on the page, so this entry keeps its 2026-08-05 rate and the dated build is recorded separately as deepseek-v4-pro-0813 rather than silently overwriting this one.'] }
|
|
1401
1611
|
],
|
|
1402
1612
|
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-08-05" }
|
|
1403
1613
|
},
|
|
1614
|
+
{
|
|
1615
|
+
canonicalId: "deepseek-v4-pro-0813",
|
|
1616
|
+
provider: "together",
|
|
1617
|
+
aliases: [],
|
|
1618
|
+
family: "deepseek",
|
|
1619
|
+
pricing: [
|
|
1620
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "1.32", "output": "3.96", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Dated build listed on the page on 2026-09-07; see deepseek-v4-pro's notes for why it is a separate entry rather than a reprice of that one.", "Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1621
|
+
],
|
|
1622
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1623
|
+
},
|
|
1404
1624
|
{
|
|
1405
1625
|
canonicalId: "gemma-4-31b",
|
|
1406
1626
|
provider: "together",
|
|
1407
1627
|
aliases: [],
|
|
1408
1628
|
family: "gemma",
|
|
1409
1629
|
pricing: [
|
|
1410
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.39", "output": "0.97", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1630
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.39", "output": "0.97", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Cross-provider alias/canonicalId collision (allowed, not an error): AWS Bedrock also lists "Gemma 4 31B" (aws-bedrock.json: gemma-4-31b) at a different, lower rate ($0.14/$0.40 as observed on Bedrock) \u2014 same underlying Google open-weight model, independently priced by each reseller; do not assume parity.', "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1411
1631
|
],
|
|
1412
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1632
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1413
1633
|
},
|
|
1414
1634
|
{
|
|
1415
1635
|
canonicalId: "glm-5.2",
|
|
@@ -1417,9 +1637,29 @@ var MODEL_REGISTRY = [
|
|
|
1417
1637
|
aliases: [],
|
|
1418
1638
|
family: "glm",
|
|
1419
1639
|
pricing: [
|
|
1420
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.40", "output": "4.40", "cachedInput": "0.26", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1640
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.40", "output": "4.40", "cachedInput": "0.26", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1421
1641
|
],
|
|
1422
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1642
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1643
|
+
},
|
|
1644
|
+
{
|
|
1645
|
+
canonicalId: "glm-5.3",
|
|
1646
|
+
provider: "together",
|
|
1647
|
+
aliases: [],
|
|
1648
|
+
family: "glm",
|
|
1649
|
+
pricing: [
|
|
1650
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "1.40", "output": "4.40", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1651
|
+
],
|
|
1652
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
canonicalId: "glm-5.3-flash",
|
|
1656
|
+
provider: "together",
|
|
1657
|
+
aliases: [],
|
|
1658
|
+
family: "glm",
|
|
1659
|
+
pricing: [
|
|
1660
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.50", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1661
|
+
],
|
|
1662
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1423
1663
|
},
|
|
1424
1664
|
{
|
|
1425
1665
|
canonicalId: "gpt-oss-120b",
|
|
@@ -1427,9 +1667,9 @@ var MODEL_REGISTRY = [
|
|
|
1427
1667
|
aliases: [],
|
|
1428
1668
|
family: "gpt-oss",
|
|
1429
1669
|
pricing: [
|
|
1430
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1670
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Cross-provider alias/canonicalId collision (allowed, not an error): Groq also publishes a model with canonicalId "gpt-oss-120b" (groq.json), independently priced at the same $0.15/$0.60 figure as observed. The identical string "gpt-oss-120b" is used as the canonicalId on both providers because that is the actual model name each provider publishes; resolving "gpt-oss-120b" without a provider qualifier is ambiguous across providers by design and the resolver requires a provider qualifier to disambiguate it.', "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1431
1671
|
],
|
|
1432
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1672
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1433
1673
|
},
|
|
1434
1674
|
{
|
|
1435
1675
|
canonicalId: "gpt-oss-20b",
|
|
@@ -1437,7 +1677,7 @@ var MODEL_REGISTRY = [
|
|
|
1437
1677
|
aliases: [],
|
|
1438
1678
|
family: "gpt-oss",
|
|
1439
1679
|
pricing: [
|
|
1440
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.05", "output": "0.20", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-08-05", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Cross-provider alias/canonicalId collision (allowed, not an error): Groq also publishes "gpt-oss-20b" (groq.json) at a different rate ($0.075/$0.30 as observed) \u2014 same model name, independently priced by each host; do not assume parity.'] }
|
|
1680
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.05", "output": "0.20", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-08-05", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", 'Cross-provider alias/canonicalId collision (allowed, not an error): Groq also publishes "gpt-oss-20b" (groq.json) at a different rate ($0.075/$0.30 as observed) \u2014 same model name, independently priced by each host; do not assume parity.', "Not surfaced by the 2026-09-07 fetch of the same page. observedAt is deliberately left at 2026-08-05: the rate was not re-observed, and an absence in one page fetch is not evidence of a withdrawal."] }
|
|
1441
1681
|
],
|
|
1442
1682
|
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-08-05" }
|
|
1443
1683
|
},
|
|
@@ -1447,9 +1687,19 @@ var MODEL_REGISTRY = [
|
|
|
1447
1687
|
aliases: [],
|
|
1448
1688
|
family: "kimi",
|
|
1449
1689
|
pricing: [
|
|
1450
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1690
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "cachedInput": "0.30", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1451
1691
|
],
|
|
1452
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1692
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
canonicalId: "llama-3-8b-instruct-lite",
|
|
1696
|
+
provider: "together",
|
|
1697
|
+
aliases: [],
|
|
1698
|
+
family: "llama",
|
|
1699
|
+
pricing: [
|
|
1700
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.14", "output": "0.14", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1701
|
+
],
|
|
1702
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1453
1703
|
},
|
|
1454
1704
|
{
|
|
1455
1705
|
canonicalId: "llama-3.3-70b",
|
|
@@ -1457,9 +1707,9 @@ var MODEL_REGISTRY = [
|
|
|
1457
1707
|
aliases: [],
|
|
1458
1708
|
family: "llama-3.3",
|
|
1459
1709
|
pricing: [
|
|
1460
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.04", "output": "1.04", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1710
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.04", "output": "1.04", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Also hosted by Groq (groq.json: llama-3.3-70b-versatile, $0.59/$0.79) and resold by AWS Bedrock \u2014 each host prices this same open-weight model independently; do not assume parity across providers.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1461
1711
|
],
|
|
1462
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1712
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1463
1713
|
},
|
|
1464
1714
|
{
|
|
1465
1715
|
canonicalId: "minimax-m3",
|
|
@@ -1467,9 +1717,19 @@ var MODEL_REGISTRY = [
|
|
|
1467
1717
|
aliases: [],
|
|
1468
1718
|
family: "minimax",
|
|
1469
1719
|
pricing: [
|
|
1470
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "1.20", "cachedInput": "0.06", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1720
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "1.20", "cachedInput": "0.06", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1471
1721
|
],
|
|
1472
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1722
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
canonicalId: "qwen2.5-7b-instruct-turbo",
|
|
1726
|
+
provider: "together",
|
|
1727
|
+
aliases: [],
|
|
1728
|
+
family: "qwen",
|
|
1729
|
+
pricing: [
|
|
1730
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.30", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1731
|
+
],
|
|
1732
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1473
1733
|
},
|
|
1474
1734
|
{
|
|
1475
1735
|
canonicalId: "qwen3.5-397b-a17b",
|
|
@@ -1477,9 +1737,29 @@ var MODEL_REGISTRY = [
|
|
|
1477
1737
|
aliases: [],
|
|
1478
1738
|
family: "qwen",
|
|
1479
1739
|
pricing: [
|
|
1480
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.60", "output": "3.60", "cachedInput": "0.35", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1740
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.60", "output": "3.60", "cachedInput": "0.35", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1481
1741
|
],
|
|
1482
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1742
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1743
|
+
},
|
|
1744
|
+
{
|
|
1745
|
+
canonicalId: "qwen3.5-9b",
|
|
1746
|
+
provider: "together",
|
|
1747
|
+
aliases: [],
|
|
1748
|
+
family: "qwen",
|
|
1749
|
+
pricing: [
|
|
1750
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.17", "output": "0.25", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1751
|
+
],
|
|
1752
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1753
|
+
},
|
|
1754
|
+
{
|
|
1755
|
+
canonicalId: "qwen3.6-plus",
|
|
1756
|
+
provider: "together",
|
|
1757
|
+
aliases: [],
|
|
1758
|
+
family: "qwen",
|
|
1759
|
+
pricing: [
|
|
1760
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "3.00", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1761
|
+
],
|
|
1762
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1483
1763
|
},
|
|
1484
1764
|
{
|
|
1485
1765
|
canonicalId: "qwen3.7-max",
|
|
@@ -1487,9 +1767,39 @@ var MODEL_REGISTRY = [
|
|
|
1487
1767
|
aliases: [],
|
|
1488
1768
|
family: "qwen",
|
|
1489
1769
|
pricing: [
|
|
1490
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "3.75", "cachedInput": "0.13", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1770
|
+
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.25", "output": "3.75", "cachedInput": "0.13", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Together's pricing page does not publish an effective date for this rate; effectiveFrom is set conservatively to 2026-01-01.", "Re-confirmed unchanged on 2026-09-07 against the same page."] }
|
|
1491
1771
|
],
|
|
1492
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1772
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1773
|
+
},
|
|
1774
|
+
{
|
|
1775
|
+
canonicalId: "qwen3.7-plus",
|
|
1776
|
+
provider: "together",
|
|
1777
|
+
aliases: [],
|
|
1778
|
+
family: "qwen",
|
|
1779
|
+
pricing: [
|
|
1780
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.32", "output": "1.28", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1781
|
+
],
|
|
1782
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1783
|
+
},
|
|
1784
|
+
{
|
|
1785
|
+
canonicalId: "qwen3.8-2.4t-a95b",
|
|
1786
|
+
provider: "together",
|
|
1787
|
+
aliases: [],
|
|
1788
|
+
family: "qwen",
|
|
1789
|
+
pricing: [
|
|
1790
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "2.00", "output": "6.00", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1791
|
+
],
|
|
1792
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
canonicalId: "qwen3.8-flash",
|
|
1796
|
+
provider: "together",
|
|
1797
|
+
aliases: [],
|
|
1798
|
+
family: "qwen",
|
|
1799
|
+
pricing: [
|
|
1800
|
+
{ "effectiveFrom": "2026-09-07", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.47", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-09-07", "notes": ["Added from the 2026-09-07 fetch. effectiveFrom is the observation date rather than this file's conservative 2026-01-01, since the 2026-08-05 fetch of the same page did not list it.", "Together publishes no cached-input rate or batch discount for serverless models; both fields are omitted rather than guessed."] }
|
|
1801
|
+
],
|
|
1802
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1493
1803
|
}
|
|
1494
1804
|
];
|
|
1495
1805
|
|
|
@@ -1549,7 +1859,7 @@ var InvalidRateError = class extends Error {
|
|
|
1549
1859
|
var ZERO = { numerator: 0n, scale: 0 };
|
|
1550
1860
|
var DECIMAL_PATTERN = /^\d+(\.\d+)?$/;
|
|
1551
1861
|
function parseDecimalRate(value, field) {
|
|
1552
|
-
if (!DECIMAL_PATTERN.test(value)) {
|
|
1862
|
+
if (typeof value !== "string" || !DECIMAL_PATTERN.test(value)) {
|
|
1553
1863
|
throw new InvalidRateError(field, value);
|
|
1554
1864
|
}
|
|
1555
1865
|
const dot = value.indexOf(".");
|
|
@@ -1983,6 +2293,59 @@ function createPriceOverride(input) {
|
|
|
1983
2293
|
};
|
|
1984
2294
|
}
|
|
1985
2295
|
|
|
2296
|
+
// src/aggregate.ts
|
|
2297
|
+
function sumExactUsd(values) {
|
|
2298
|
+
const amounts = [];
|
|
2299
|
+
for (const [index, value] of values.entries()) {
|
|
2300
|
+
amounts.push(parseDecimalRate(value, `values[${String(index)}]`));
|
|
2301
|
+
}
|
|
2302
|
+
return formatExact(addExact(amounts));
|
|
2303
|
+
}
|
|
2304
|
+
function modelKey(breakdown) {
|
|
2305
|
+
return `${breakdown.provider}:${breakdown.canonicalModel}`;
|
|
2306
|
+
}
|
|
2307
|
+
function newBucket() {
|
|
2308
|
+
return { count: 0, sum: ZERO, registryVersions: /* @__PURE__ */ new Set() };
|
|
2309
|
+
}
|
|
2310
|
+
function accumulate(bucket, amount, registryVersion) {
|
|
2311
|
+
bucket.count += 1;
|
|
2312
|
+
bucket.sum = addExact([bucket.sum, amount]);
|
|
2313
|
+
bucket.registryVersions.add(registryVersion);
|
|
2314
|
+
}
|
|
2315
|
+
function toTotal(bucket) {
|
|
2316
|
+
return {
|
|
2317
|
+
count: bucket.count,
|
|
2318
|
+
totalUsd: toDisplayNumber(bucket.sum),
|
|
2319
|
+
totalUsdExact: formatExact(bucket.sum),
|
|
2320
|
+
registryVersions: [...bucket.registryVersions].sort()
|
|
2321
|
+
};
|
|
2322
|
+
}
|
|
2323
|
+
function createCostAggregator() {
|
|
2324
|
+
const overall = newBucket();
|
|
2325
|
+
const byModelBuckets = /* @__PURE__ */ new Map();
|
|
2326
|
+
return {
|
|
2327
|
+
add(breakdown) {
|
|
2328
|
+
const amount = parseDecimalRate(breakdown.totalUsdExact, "totalUsdExact");
|
|
2329
|
+
const key = modelKey(breakdown);
|
|
2330
|
+
let bucket = byModelBuckets.get(key);
|
|
2331
|
+
if (bucket === void 0) {
|
|
2332
|
+
bucket = newBucket();
|
|
2333
|
+
byModelBuckets.set(key, bucket);
|
|
2334
|
+
}
|
|
2335
|
+
accumulate(bucket, amount, breakdown.registryVersion);
|
|
2336
|
+
accumulate(overall, amount, breakdown.registryVersion);
|
|
2337
|
+
},
|
|
2338
|
+
total() {
|
|
2339
|
+
return toTotal(overall);
|
|
2340
|
+
},
|
|
2341
|
+
byModel() {
|
|
2342
|
+
const result = /* @__PURE__ */ new Map();
|
|
2343
|
+
for (const [key, bucket] of byModelBuckets) result.set(key, toTotal(bucket));
|
|
2344
|
+
return result;
|
|
2345
|
+
}
|
|
2346
|
+
};
|
|
2347
|
+
}
|
|
2348
|
+
|
|
1986
2349
|
// src/normalize/openai.ts
|
|
1987
2350
|
var KNOWN_TOP_LEVEL = /* @__PURE__ */ new Set([
|
|
1988
2351
|
"prompt_tokens",
|