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.js
CHANGED
|
@@ -80,8 +80,9 @@ function toCandidate(descriptor) {
|
|
|
80
80
|
}
|
|
81
81
|
function matchExact(pool, id, provider) {
|
|
82
82
|
if (provider !== void 0) {
|
|
83
|
-
const canonical = pool.
|
|
84
|
-
if (canonical
|
|
83
|
+
const canonical = pool.filter((d) => d.provider === provider && d.canonicalId === id);
|
|
84
|
+
if (canonical.length === 1) return { unique: canonical[0] };
|
|
85
|
+
if (canonical.length > 1) return { ambiguous: canonical };
|
|
85
86
|
const scoped = pool.filter((d) => d.provider === provider && d.aliases.includes(id));
|
|
86
87
|
if (scoped.length === 1) return { unique: scoped[0] };
|
|
87
88
|
if (scoped.length > 1) return { ambiguous: scoped };
|
|
@@ -109,16 +110,22 @@ function resolveModel(requestedId, registry, options = {}) {
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
if (provider !== void 0) {
|
|
112
|
-
const canonical = registry.
|
|
113
|
+
const canonical = registry.filter(
|
|
113
114
|
(d) => d.provider === provider && d.canonicalId === requestedId
|
|
114
115
|
);
|
|
115
|
-
if (canonical
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
if (canonical.length === 1) {
|
|
117
|
+
const descriptor = canonical[0];
|
|
118
|
+
if (descriptor !== void 0) {
|
|
119
|
+
return {
|
|
120
|
+
descriptor,
|
|
121
|
+
matchedBy: "canonical-qualified",
|
|
122
|
+
requestedId,
|
|
123
|
+
requestedProvider: provider
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (canonical.length > 1) {
|
|
128
|
+
throw new AmbiguousAliasError(requestedId, canonical.map(toCandidate));
|
|
122
129
|
}
|
|
123
130
|
const scoped = registry.filter(
|
|
124
131
|
(d) => d.provider === provider && d.aliases.includes(requestedId)
|
|
@@ -172,10 +179,16 @@ function resolveModel(requestedId, registry, options = {}) {
|
|
|
172
179
|
}
|
|
173
180
|
|
|
174
181
|
// ../../internal/model-registry/src/pricing-period.ts
|
|
182
|
+
var OFFSETLESS_ISO_DATETIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
|
|
175
183
|
function toTimestamp(value) {
|
|
176
|
-
|
|
184
|
+
if (value instanceof Date) {
|
|
185
|
+
const ms2 = value.getTime();
|
|
186
|
+
if (Number.isNaN(ms2)) throw new InvalidLookupDateError(String(value));
|
|
187
|
+
return ms2;
|
|
188
|
+
}
|
|
189
|
+
const ms = Date.parse(OFFSETLESS_ISO_DATETIME.test(value) ? `${value}Z` : value);
|
|
177
190
|
if (Number.isNaN(ms)) {
|
|
178
|
-
throw new InvalidLookupDateError(value
|
|
191
|
+
throw new InvalidLookupDateError(value);
|
|
179
192
|
}
|
|
180
193
|
return ms;
|
|
181
194
|
}
|
|
@@ -208,7 +221,7 @@ function selectPricingPeriod(periods, at, identity) {
|
|
|
208
221
|
}
|
|
209
222
|
|
|
210
223
|
// ../../internal/model-registry/src/generated/registry.ts
|
|
211
|
-
var REGISTRY_VERSION = "registry-
|
|
224
|
+
var REGISTRY_VERSION = "registry-e5f4ec7eb681a235";
|
|
212
225
|
var MODEL_REGISTRY = [
|
|
213
226
|
{
|
|
214
227
|
canonicalId: "claude-fable-5",
|
|
@@ -217,9 +230,30 @@ var MODEL_REGISTRY = [
|
|
|
217
230
|
family: "fable",
|
|
218
231
|
contextWindow: 1e6,
|
|
219
232
|
pricing: [
|
|
220
|
-
{ "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/
|
|
233
|
+
{ "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)."] }
|
|
234
|
+
],
|
|
235
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
canonicalId: "claude-fable-5-1",
|
|
239
|
+
provider: "anthropic",
|
|
240
|
+
aliases: [],
|
|
241
|
+
family: "fable",
|
|
242
|
+
contextWindow: 1e6,
|
|
243
|
+
pricing: [
|
|
244
|
+
{ "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)."] }
|
|
221
245
|
],
|
|
222
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
246
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
canonicalId: "claude-haiku-3-5",
|
|
250
|
+
provider: "anthropic",
|
|
251
|
+
aliases: [],
|
|
252
|
+
family: "haiku",
|
|
253
|
+
pricing: [
|
|
254
|
+
{ "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)."] }
|
|
255
|
+
],
|
|
256
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
223
257
|
},
|
|
224
258
|
{
|
|
225
259
|
canonicalId: "claude-haiku-4-5-20251001",
|
|
@@ -228,9 +262,59 @@ var MODEL_REGISTRY = [
|
|
|
228
262
|
family: "haiku",
|
|
229
263
|
contextWindow: 2e5,
|
|
230
264
|
pricing: [
|
|
231
|
-
{ "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/
|
|
265
|
+
{ "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)."] }
|
|
266
|
+
],
|
|
267
|
+
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."] }
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
canonicalId: "claude-mythos-5",
|
|
271
|
+
provider: "anthropic",
|
|
272
|
+
aliases: [],
|
|
273
|
+
family: "mythos",
|
|
274
|
+
pricing: [
|
|
275
|
+
{ "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)."] }
|
|
232
276
|
],
|
|
233
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
277
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
canonicalId: "claude-mythos-5-1",
|
|
281
|
+
provider: "anthropic",
|
|
282
|
+
aliases: [],
|
|
283
|
+
family: "mythos",
|
|
284
|
+
pricing: [
|
|
285
|
+
{ "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)."] }
|
|
286
|
+
],
|
|
287
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
canonicalId: "claude-opus-4",
|
|
291
|
+
provider: "anthropic",
|
|
292
|
+
aliases: [],
|
|
293
|
+
family: "opus",
|
|
294
|
+
pricing: [
|
|
295
|
+
{ "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)."] }
|
|
296
|
+
],
|
|
297
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
canonicalId: "claude-opus-4-1",
|
|
301
|
+
provider: "anthropic",
|
|
302
|
+
aliases: [],
|
|
303
|
+
family: "opus",
|
|
304
|
+
pricing: [
|
|
305
|
+
{ "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)."] }
|
|
306
|
+
],
|
|
307
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
canonicalId: "claude-opus-4-5",
|
|
311
|
+
provider: "anthropic",
|
|
312
|
+
aliases: [],
|
|
313
|
+
family: "opus",
|
|
314
|
+
pricing: [
|
|
315
|
+
{ "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)."] }
|
|
316
|
+
],
|
|
317
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
234
318
|
},
|
|
235
319
|
{
|
|
236
320
|
canonicalId: "claude-opus-4-6",
|
|
@@ -239,9 +323,9 @@ var MODEL_REGISTRY = [
|
|
|
239
323
|
family: "opus",
|
|
240
324
|
contextWindow: 1e6,
|
|
241
325
|
pricing: [
|
|
242
|
-
{ "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/
|
|
326
|
+
{ "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)."] }
|
|
243
327
|
],
|
|
244
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
328
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
245
329
|
},
|
|
246
330
|
{
|
|
247
331
|
canonicalId: "claude-opus-4-7",
|
|
@@ -250,9 +334,9 @@ var MODEL_REGISTRY = [
|
|
|
250
334
|
family: "opus",
|
|
251
335
|
contextWindow: 1e6,
|
|
252
336
|
pricing: [
|
|
253
|
-
{ "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/
|
|
337
|
+
{ "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)."] }
|
|
254
338
|
],
|
|
255
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
339
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
256
340
|
},
|
|
257
341
|
{
|
|
258
342
|
canonicalId: "claude-opus-4-8",
|
|
@@ -261,9 +345,9 @@ var MODEL_REGISTRY = [
|
|
|
261
345
|
family: "opus",
|
|
262
346
|
contextWindow: 1e6,
|
|
263
347
|
pricing: [
|
|
264
|
-
{ "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/
|
|
348
|
+
{ "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)."] }
|
|
265
349
|
],
|
|
266
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
350
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
267
351
|
},
|
|
268
352
|
{
|
|
269
353
|
canonicalId: "claude-opus-5",
|
|
@@ -272,9 +356,29 @@ var MODEL_REGISTRY = [
|
|
|
272
356
|
family: "opus",
|
|
273
357
|
contextWindow: 1e6,
|
|
274
358
|
pricing: [
|
|
275
|
-
{ "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/
|
|
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" }
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
canonicalId: "claude-sonnet-4",
|
|
365
|
+
provider: "anthropic",
|
|
366
|
+
aliases: [],
|
|
367
|
+
family: "sonnet",
|
|
368
|
+
pricing: [
|
|
369
|
+
{ "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)."] }
|
|
276
370
|
],
|
|
277
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
371
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
canonicalId: "claude-sonnet-4-5",
|
|
375
|
+
provider: "anthropic",
|
|
376
|
+
aliases: [],
|
|
377
|
+
family: "sonnet",
|
|
378
|
+
pricing: [
|
|
379
|
+
{ "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)."] }
|
|
380
|
+
],
|
|
381
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
278
382
|
},
|
|
279
383
|
{
|
|
280
384
|
canonicalId: "claude-sonnet-4-6",
|
|
@@ -283,9 +387,9 @@ var MODEL_REGISTRY = [
|
|
|
283
387
|
family: "sonnet",
|
|
284
388
|
contextWindow: 1e6,
|
|
285
389
|
pricing: [
|
|
286
|
-
{ "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/
|
|
390
|
+
{ "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)."] }
|
|
287
391
|
],
|
|
288
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
392
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
289
393
|
},
|
|
290
394
|
{
|
|
291
395
|
canonicalId: "claude-sonnet-5",
|
|
@@ -294,10 +398,9 @@ var MODEL_REGISTRY = [
|
|
|
294
398
|
family: "sonnet",
|
|
295
399
|
contextWindow: 1e6,
|
|
296
400
|
pricing: [
|
|
297
|
-
{ "effectiveFrom": "2026-01-01", "
|
|
298
|
-
{ "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)."] }
|
|
401
|
+
{ "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)."] }
|
|
299
402
|
],
|
|
300
|
-
source: { "url": "https://platform.claude.com/docs/en/about-claude/
|
|
403
|
+
source: { "url": "https://platform.claude.com/docs/en/about-claude/pricing", "observedAt": "2026-09-07" }
|
|
301
404
|
},
|
|
302
405
|
{
|
|
303
406
|
canonicalId: "amazon-nova-lite",
|
|
@@ -305,7 +408,7 @@ var MODEL_REGISTRY = [
|
|
|
305
408
|
aliases: [],
|
|
306
409
|
family: "amazon-nova",
|
|
307
410
|
pricing: [
|
|
308
|
-
{ "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."] }
|
|
411
|
+
{ "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."] }
|
|
309
412
|
],
|
|
310
413
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
311
414
|
},
|
|
@@ -315,7 +418,7 @@ var MODEL_REGISTRY = [
|
|
|
315
418
|
aliases: [],
|
|
316
419
|
family: "amazon-nova",
|
|
317
420
|
pricing: [
|
|
318
|
-
{ "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
|
|
421
|
+
{ "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."] }
|
|
319
422
|
],
|
|
320
423
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
321
424
|
},
|
|
@@ -325,7 +428,7 @@ var MODEL_REGISTRY = [
|
|
|
325
428
|
aliases: [],
|
|
326
429
|
family: "amazon-nova",
|
|
327
430
|
pricing: [
|
|
328
|
-
{ "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."] }
|
|
431
|
+
{ "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."] }
|
|
329
432
|
],
|
|
330
433
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
331
434
|
},
|
|
@@ -335,9 +438,9 @@ var MODEL_REGISTRY = [
|
|
|
335
438
|
aliases: [],
|
|
336
439
|
family: "anthropic-claude",
|
|
337
440
|
pricing: [
|
|
338
|
-
{ "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-
|
|
441
|
+
{ "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."] }
|
|
339
442
|
],
|
|
340
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
443
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
341
444
|
},
|
|
342
445
|
{
|
|
343
446
|
canonicalId: "claude-3.5-sonnet-v2",
|
|
@@ -345,9 +448,29 @@ var MODEL_REGISTRY = [
|
|
|
345
448
|
aliases: [],
|
|
346
449
|
family: "anthropic-claude",
|
|
347
450
|
pricing: [
|
|
348
|
-
{ "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-
|
|
451
|
+
{ "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."] }
|
|
349
452
|
],
|
|
350
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
453
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
canonicalId: "gemma-3-12b",
|
|
457
|
+
provider: "aws-bedrock",
|
|
458
|
+
aliases: [],
|
|
459
|
+
family: "gemma",
|
|
460
|
+
pricing: [
|
|
461
|
+
{ "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."] }
|
|
462
|
+
],
|
|
463
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
canonicalId: "gemma-3-27b",
|
|
467
|
+
provider: "aws-bedrock",
|
|
468
|
+
aliases: [],
|
|
469
|
+
family: "gemma",
|
|
470
|
+
pricing: [
|
|
471
|
+
{ "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."] }
|
|
472
|
+
],
|
|
473
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
351
474
|
},
|
|
352
475
|
{
|
|
353
476
|
canonicalId: "gemma-4-31b",
|
|
@@ -355,9 +478,9 @@ var MODEL_REGISTRY = [
|
|
|
355
478
|
aliases: [],
|
|
356
479
|
family: "google-gemma",
|
|
357
480
|
pricing: [
|
|
358
|
-
{ "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-
|
|
481
|
+
{ "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."] }
|
|
359
482
|
],
|
|
360
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
483
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
361
484
|
},
|
|
362
485
|
{
|
|
363
486
|
canonicalId: "mistral-large-3",
|
|
@@ -365,9 +488,19 @@ var MODEL_REGISTRY = [
|
|
|
365
488
|
aliases: [],
|
|
366
489
|
family: "mistral",
|
|
367
490
|
pricing: [
|
|
368
|
-
{ "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-
|
|
491
|
+
{ "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."] }
|
|
369
492
|
],
|
|
370
|
-
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-
|
|
493
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
canonicalId: "nemotron-3-super-120b",
|
|
497
|
+
provider: "aws-bedrock",
|
|
498
|
+
aliases: [],
|
|
499
|
+
family: "nemotron",
|
|
500
|
+
pricing: [
|
|
501
|
+
{ "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."] }
|
|
502
|
+
],
|
|
503
|
+
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-09-07" }
|
|
371
504
|
},
|
|
372
505
|
{
|
|
373
506
|
canonicalId: "nemotron-nano-2",
|
|
@@ -375,7 +508,7 @@ var MODEL_REGISTRY = [
|
|
|
375
508
|
aliases: [],
|
|
376
509
|
family: "nvidia-nemotron",
|
|
377
510
|
pricing: [
|
|
378
|
-
{ "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."] }
|
|
511
|
+
{ "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."] }
|
|
379
512
|
],
|
|
380
513
|
source: { "url": "https://aws.amazon.com/bedrock/pricing/", "observedAt": "2026-08-05" }
|
|
381
514
|
},
|
|
@@ -605,9 +738,9 @@ var MODEL_REGISTRY = [
|
|
|
605
738
|
aliases: [],
|
|
606
739
|
family: "gpt-5.6",
|
|
607
740
|
pricing: [
|
|
608
|
-
{ "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-
|
|
741
|
+
{ "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.`] }
|
|
609
742
|
],
|
|
610
|
-
source: { "url": "https://prices.azure.com/api/retail/prices?currencyCode='USD'&$filter=contains(productName,%20%27OpenAI%27)", "observedAt": "2026-
|
|
743
|
+
source: { "url": "https://prices.azure.com/api/retail/prices?currencyCode='USD'&$filter=contains(productName,%20%27OpenAI%27)", "observedAt": "2026-09-07" }
|
|
611
744
|
},
|
|
612
745
|
{
|
|
613
746
|
canonicalId: "gpt-5.6-terra",
|
|
@@ -705,9 +838,9 @@ var MODEL_REGISTRY = [
|
|
|
705
838
|
aliases: [],
|
|
706
839
|
family: "aya-expanse",
|
|
707
840
|
pricing: [
|
|
708
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
841
|
+
{ "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."] }
|
|
709
842
|
],
|
|
710
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
843
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
711
844
|
},
|
|
712
845
|
{
|
|
713
846
|
canonicalId: "aya-expanse-8b",
|
|
@@ -715,9 +848,9 @@ var MODEL_REGISTRY = [
|
|
|
715
848
|
aliases: [],
|
|
716
849
|
family: "aya-expanse",
|
|
717
850
|
pricing: [
|
|
718
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
851
|
+
{ "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."] }
|
|
719
852
|
],
|
|
720
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
853
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
721
854
|
},
|
|
722
855
|
{
|
|
723
856
|
canonicalId: "command",
|
|
@@ -725,9 +858,9 @@ var MODEL_REGISTRY = [
|
|
|
725
858
|
aliases: [],
|
|
726
859
|
family: "command",
|
|
727
860
|
pricing: [
|
|
728
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.00", "output": "2.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
861
|
+
{ "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."] }
|
|
729
862
|
],
|
|
730
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
863
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
731
864
|
},
|
|
732
865
|
{
|
|
733
866
|
canonicalId: "command-light",
|
|
@@ -735,9 +868,9 @@ var MODEL_REGISTRY = [
|
|
|
735
868
|
aliases: [],
|
|
736
869
|
family: "command",
|
|
737
870
|
pricing: [
|
|
738
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.60", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
871
|
+
{ "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."] }
|
|
739
872
|
],
|
|
740
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
873
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
741
874
|
},
|
|
742
875
|
{
|
|
743
876
|
canonicalId: "command-r-03-2024",
|
|
@@ -745,9 +878,9 @@ var MODEL_REGISTRY = [
|
|
|
745
878
|
aliases: [],
|
|
746
879
|
family: "command-r",
|
|
747
880
|
pricing: [
|
|
748
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
881
|
+
{ "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."] }
|
|
749
882
|
],
|
|
750
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
883
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
751
884
|
},
|
|
752
885
|
{
|
|
753
886
|
canonicalId: "command-r-plus-04-2024",
|
|
@@ -755,9 +888,9 @@ var MODEL_REGISTRY = [
|
|
|
755
888
|
aliases: [],
|
|
756
889
|
family: "command-r-plus",
|
|
757
890
|
pricing: [
|
|
758
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "3.00", "output": "15.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
891
|
+
{ "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."] }
|
|
759
892
|
],
|
|
760
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
893
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
761
894
|
},
|
|
762
895
|
{
|
|
763
896
|
canonicalId: "command-r-plus-08-2024",
|
|
@@ -765,9 +898,9 @@ var MODEL_REGISTRY = [
|
|
|
765
898
|
aliases: [],
|
|
766
899
|
family: "command-r-plus",
|
|
767
900
|
pricing: [
|
|
768
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "2.50", "output": "10.00", "sourceUrl": "https://cohere.com/pricing", "observedAt": "2026-
|
|
901
|
+
{ "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."] }
|
|
769
902
|
],
|
|
770
|
-
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-
|
|
903
|
+
source: { "url": "https://cohere.com/pricing", "observedAt": "2026-09-07" }
|
|
771
904
|
},
|
|
772
905
|
{
|
|
773
906
|
canonicalId: "gemini-2.5-flash",
|
|
@@ -775,9 +908,9 @@ var MODEL_REGISTRY = [
|
|
|
775
908
|
aliases: [],
|
|
776
909
|
family: "gemini-2.5",
|
|
777
910
|
pricing: [
|
|
778
|
-
{ "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-
|
|
911
|
+
{ "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."] }
|
|
779
912
|
],
|
|
780
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
913
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
781
914
|
},
|
|
782
915
|
{
|
|
783
916
|
canonicalId: "gemini-2.5-flash-lite",
|
|
@@ -785,9 +918,9 @@ var MODEL_REGISTRY = [
|
|
|
785
918
|
aliases: [],
|
|
786
919
|
family: "gemini-2.5",
|
|
787
920
|
pricing: [
|
|
788
|
-
{ "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-
|
|
921
|
+
{ "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."] }
|
|
789
922
|
],
|
|
790
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
923
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
791
924
|
},
|
|
792
925
|
{
|
|
793
926
|
canonicalId: "gemini-2.5-pro",
|
|
@@ -795,9 +928,19 @@ var MODEL_REGISTRY = [
|
|
|
795
928
|
aliases: [],
|
|
796
929
|
family: "gemini-2.5",
|
|
797
930
|
pricing: [
|
|
798
|
-
{ "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-
|
|
931
|
+
{ "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."] }
|
|
932
|
+
],
|
|
933
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
canonicalId: "gemini-3.1-flash-lite",
|
|
937
|
+
provider: "google",
|
|
938
|
+
aliases: [],
|
|
939
|
+
family: "gemini-3.1",
|
|
940
|
+
pricing: [
|
|
941
|
+
{ "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."] }
|
|
799
942
|
],
|
|
800
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
943
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
801
944
|
},
|
|
802
945
|
{
|
|
803
946
|
canonicalId: "gemini-3.1-pro-preview",
|
|
@@ -805,9 +948,9 @@ var MODEL_REGISTRY = [
|
|
|
805
948
|
aliases: [],
|
|
806
949
|
family: "gemini-3.1",
|
|
807
950
|
pricing: [
|
|
808
|
-
{ "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-
|
|
951
|
+
{ "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."] }
|
|
809
952
|
],
|
|
810
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
953
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
811
954
|
},
|
|
812
955
|
{
|
|
813
956
|
canonicalId: "gemini-3.5-flash",
|
|
@@ -815,9 +958,9 @@ var MODEL_REGISTRY = [
|
|
|
815
958
|
aliases: [],
|
|
816
959
|
family: "gemini-3.5",
|
|
817
960
|
pricing: [
|
|
818
|
-
{ "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-
|
|
961
|
+
{ "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."] }
|
|
819
962
|
],
|
|
820
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
963
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
821
964
|
},
|
|
822
965
|
{
|
|
823
966
|
canonicalId: "gemini-3.5-flash-lite",
|
|
@@ -825,9 +968,9 @@ var MODEL_REGISTRY = [
|
|
|
825
968
|
aliases: [],
|
|
826
969
|
family: "gemini-3.5",
|
|
827
970
|
pricing: [
|
|
828
|
-
{ "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-
|
|
971
|
+
{ "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."] }
|
|
829
972
|
],
|
|
830
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-
|
|
973
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
831
974
|
},
|
|
832
975
|
{
|
|
833
976
|
canonicalId: "gemini-3.6-flash",
|
|
@@ -835,9 +978,33 @@ var MODEL_REGISTRY = [
|
|
|
835
978
|
aliases: [],
|
|
836
979
|
family: "gemini-3.6",
|
|
837
980
|
pricing: [
|
|
838
|
-
{ "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-
|
|
981
|
+
{ "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."] },
|
|
982
|
+
{ "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."] },
|
|
983
|
+
{ "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."] }
|
|
839
984
|
],
|
|
840
|
-
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-08-05" }
|
|
985
|
+
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."] }
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
canonicalId: "gemini-3.7-flash",
|
|
989
|
+
provider: "google",
|
|
990
|
+
aliases: [],
|
|
991
|
+
family: "gemini-3.7",
|
|
992
|
+
pricing: [
|
|
993
|
+
{ "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."] },
|
|
994
|
+
{ "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."] }
|
|
995
|
+
],
|
|
996
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
canonicalId: "gemini-3.8-flash",
|
|
1000
|
+
provider: "google",
|
|
1001
|
+
aliases: [],
|
|
1002
|
+
family: "gemini-3.8",
|
|
1003
|
+
pricing: [
|
|
1004
|
+
{ "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."] },
|
|
1005
|
+
{ "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."] }
|
|
1006
|
+
],
|
|
1007
|
+
source: { "url": "https://ai.google.dev/gemini-api/docs/pricing", "observedAt": "2026-09-07" }
|
|
841
1008
|
},
|
|
842
1009
|
{
|
|
843
1010
|
canonicalId: "gpt-oss-120b",
|
|
@@ -845,9 +1012,9 @@ var MODEL_REGISTRY = [
|
|
|
845
1012
|
aliases: [],
|
|
846
1013
|
family: "gpt-oss",
|
|
847
1014
|
pricing: [
|
|
848
|
-
{ "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-
|
|
1015
|
+
{ "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."] }
|
|
849
1016
|
],
|
|
850
|
-
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1017
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
851
1018
|
},
|
|
852
1019
|
{
|
|
853
1020
|
canonicalId: "gpt-oss-20b",
|
|
@@ -855,9 +1022,9 @@ var MODEL_REGISTRY = [
|
|
|
855
1022
|
aliases: [],
|
|
856
1023
|
family: "gpt-oss",
|
|
857
1024
|
pricing: [
|
|
858
|
-
{ "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-
|
|
1025
|
+
{ "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."] }
|
|
859
1026
|
],
|
|
860
|
-
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1027
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
861
1028
|
},
|
|
862
1029
|
{
|
|
863
1030
|
canonicalId: "llama-3.1-8b-instant",
|
|
@@ -865,7 +1032,7 @@ var MODEL_REGISTRY = [
|
|
|
865
1032
|
aliases: ["llama-3.1-8b"],
|
|
866
1033
|
family: "llama-3.1",
|
|
867
1034
|
pricing: [
|
|
868
|
-
{ "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."] }
|
|
1035
|
+
{ "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."] }
|
|
869
1036
|
],
|
|
870
1037
|
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-08-05" }
|
|
871
1038
|
},
|
|
@@ -875,7 +1042,7 @@ var MODEL_REGISTRY = [
|
|
|
875
1042
|
aliases: ["llama-3.3-70b"],
|
|
876
1043
|
family: "llama-3.3",
|
|
877
1044
|
pricing: [
|
|
878
|
-
{ "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."] }
|
|
1045
|
+
{ "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."] }
|
|
879
1046
|
],
|
|
880
1047
|
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-08-05" }
|
|
881
1048
|
},
|
|
@@ -885,19 +1052,29 @@ var MODEL_REGISTRY = [
|
|
|
885
1052
|
aliases: [],
|
|
886
1053
|
family: "qwen",
|
|
887
1054
|
pricing: [
|
|
888
|
-
{ "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-
|
|
1055
|
+
{ "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."] }
|
|
889
1056
|
],
|
|
890
|
-
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-
|
|
1057
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
1058
|
+
},
|
|
1059
|
+
{
|
|
1060
|
+
canonicalId: "qwen3.8-27b",
|
|
1061
|
+
provider: "groq",
|
|
1062
|
+
aliases: ["qwen/qwen3.8-27b"],
|
|
1063
|
+
family: "qwen3.8",
|
|
1064
|
+
pricing: [
|
|
1065
|
+
{ "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."] }
|
|
1066
|
+
],
|
|
1067
|
+
source: { "url": "https://console.groq.com/docs/models", "observedAt": "2026-09-07" }
|
|
891
1068
|
},
|
|
892
1069
|
{
|
|
893
1070
|
canonicalId: "codestral",
|
|
894
1071
|
provider: "mistral",
|
|
895
|
-
aliases: [],
|
|
1072
|
+
aliases: ["codestral-latest"],
|
|
896
1073
|
family: "codestral",
|
|
897
1074
|
pricing: [
|
|
898
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.30", "output": "0.90", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1075
|
+
{ "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)."] }
|
|
899
1076
|
],
|
|
900
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1077
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
901
1078
|
},
|
|
902
1079
|
{
|
|
903
1080
|
canonicalId: "devstral-2",
|
|
@@ -905,7 +1082,7 @@ var MODEL_REGISTRY = [
|
|
|
905
1082
|
aliases: [],
|
|
906
1083
|
family: "devstral",
|
|
907
1084
|
pricing: [
|
|
908
|
-
{ "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."] }
|
|
1085
|
+
{ "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."] }
|
|
909
1086
|
],
|
|
910
1087
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
911
1088
|
},
|
|
@@ -915,7 +1092,7 @@ var MODEL_REGISTRY = [
|
|
|
915
1092
|
aliases: [],
|
|
916
1093
|
family: "devstral",
|
|
917
1094
|
pricing: [
|
|
918
|
-
{ "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."] }
|
|
1095
|
+
{ "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."] }
|
|
919
1096
|
],
|
|
920
1097
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
921
1098
|
},
|
|
@@ -925,7 +1102,7 @@ var MODEL_REGISTRY = [
|
|
|
925
1102
|
aliases: [],
|
|
926
1103
|
family: "magistral",
|
|
927
1104
|
pricing: [
|
|
928
|
-
{ "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.'] }
|
|
1105
|
+
{ "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."] }
|
|
929
1106
|
],
|
|
930
1107
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
931
1108
|
},
|
|
@@ -935,59 +1112,59 @@ var MODEL_REGISTRY = [
|
|
|
935
1112
|
aliases: [],
|
|
936
1113
|
family: "magistral",
|
|
937
1114
|
pricing: [
|
|
938
|
-
{ "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."] }
|
|
1115
|
+
{ "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."] }
|
|
939
1116
|
],
|
|
940
1117
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
941
1118
|
},
|
|
942
1119
|
{
|
|
943
1120
|
canonicalId: "ministral-3-14b",
|
|
944
1121
|
provider: "mistral",
|
|
945
|
-
aliases: [],
|
|
1122
|
+
aliases: ["ministral-14b-latest"],
|
|
946
1123
|
family: "ministral-3",
|
|
947
1124
|
pricing: [
|
|
948
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.20", "output": "0.20", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1125
|
+
{ "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)."] }
|
|
949
1126
|
],
|
|
950
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1127
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
951
1128
|
},
|
|
952
1129
|
{
|
|
953
1130
|
canonicalId: "ministral-3-3b",
|
|
954
1131
|
provider: "mistral",
|
|
955
|
-
aliases: [],
|
|
1132
|
+
aliases: ["ministral-3b-latest"],
|
|
956
1133
|
family: "ministral-3",
|
|
957
1134
|
pricing: [
|
|
958
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.10", "output": "0.10", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1135
|
+
{ "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)."] }
|
|
959
1136
|
],
|
|
960
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1137
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
961
1138
|
},
|
|
962
1139
|
{
|
|
963
1140
|
canonicalId: "ministral-3-8b",
|
|
964
1141
|
provider: "mistral",
|
|
965
|
-
aliases: [],
|
|
1142
|
+
aliases: ["ministral-8b-latest"],
|
|
966
1143
|
family: "ministral-3",
|
|
967
1144
|
pricing: [
|
|
968
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.15", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1145
|
+
{ "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)."] }
|
|
969
1146
|
],
|
|
970
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1147
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
971
1148
|
},
|
|
972
1149
|
{
|
|
973
1150
|
canonicalId: "mistral-large-3",
|
|
974
1151
|
provider: "mistral",
|
|
975
|
-
aliases: [],
|
|
1152
|
+
aliases: ["mistral-large-latest"],
|
|
976
1153
|
family: "mistral-large",
|
|
977
1154
|
pricing: [
|
|
978
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.50", "output": "1.50", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1155
|
+
{ "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.`] }
|
|
979
1156
|
],
|
|
980
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1157
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
981
1158
|
},
|
|
982
1159
|
{
|
|
983
1160
|
canonicalId: "mistral-medium-3.5",
|
|
984
1161
|
provider: "mistral",
|
|
985
|
-
aliases: [],
|
|
1162
|
+
aliases: ["mistral-medium-latest"],
|
|
986
1163
|
family: "mistral-medium",
|
|
987
1164
|
pricing: [
|
|
988
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.50", "output": "7.50", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1165
|
+
{ "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.`] }
|
|
989
1166
|
],
|
|
990
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1167
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
991
1168
|
},
|
|
992
1169
|
{
|
|
993
1170
|
canonicalId: "mistral-nemo",
|
|
@@ -995,19 +1172,19 @@ var MODEL_REGISTRY = [
|
|
|
995
1172
|
aliases: [],
|
|
996
1173
|
family: "mistral-nemo",
|
|
997
1174
|
pricing: [
|
|
998
|
-
{ "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."] }
|
|
1175
|
+
{ "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."] }
|
|
999
1176
|
],
|
|
1000
1177
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
1001
1178
|
},
|
|
1002
1179
|
{
|
|
1003
1180
|
canonicalId: "mistral-small-4",
|
|
1004
1181
|
provider: "mistral",
|
|
1005
|
-
aliases: [],
|
|
1182
|
+
aliases: ["mistral-small-latest"],
|
|
1006
1183
|
family: "mistral-small",
|
|
1007
1184
|
pricing: [
|
|
1008
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1185
|
+
{ "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.`] }
|
|
1009
1186
|
],
|
|
1010
|
-
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-
|
|
1187
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1011
1188
|
},
|
|
1012
1189
|
{
|
|
1013
1190
|
canonicalId: "mixtral-8x22b",
|
|
@@ -1015,7 +1192,7 @@ var MODEL_REGISTRY = [
|
|
|
1015
1192
|
aliases: [],
|
|
1016
1193
|
family: "mixtral",
|
|
1017
1194
|
pricing: [
|
|
1018
|
-
{ "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."] }
|
|
1195
|
+
{ "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."] }
|
|
1019
1196
|
],
|
|
1020
1197
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
1021
1198
|
},
|
|
@@ -1025,19 +1202,29 @@ var MODEL_REGISTRY = [
|
|
|
1025
1202
|
aliases: [],
|
|
1026
1203
|
family: "mixtral",
|
|
1027
1204
|
pricing: [
|
|
1028
|
-
{ "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."] }
|
|
1205
|
+
{ "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."] }
|
|
1029
1206
|
],
|
|
1030
1207
|
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-08-05" }
|
|
1031
1208
|
},
|
|
1209
|
+
{
|
|
1210
|
+
canonicalId: "zai-glm-5-2",
|
|
1211
|
+
provider: "mistral",
|
|
1212
|
+
aliases: [],
|
|
1213
|
+
family: "glm",
|
|
1214
|
+
pricing: [
|
|
1215
|
+
{ "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%."] }
|
|
1216
|
+
],
|
|
1217
|
+
source: { "url": "https://mistral.ai/pricing/api", "observedAt": "2026-09-07" }
|
|
1218
|
+
},
|
|
1032
1219
|
{
|
|
1033
1220
|
canonicalId: "gpt-3.5-turbo",
|
|
1034
1221
|
provider: "openai",
|
|
1035
1222
|
aliases: [],
|
|
1036
1223
|
family: "gpt-3.5",
|
|
1037
1224
|
pricing: [
|
|
1038
|
-
{ "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-
|
|
1225
|
+
{ "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.`] }
|
|
1039
1226
|
],
|
|
1040
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1227
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1041
1228
|
},
|
|
1042
1229
|
{
|
|
1043
1230
|
canonicalId: "gpt-4.1",
|
|
@@ -1045,9 +1232,9 @@ var MODEL_REGISTRY = [
|
|
|
1045
1232
|
aliases: [],
|
|
1046
1233
|
family: "gpt-4.1",
|
|
1047
1234
|
pricing: [
|
|
1048
|
-
{ "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-
|
|
1235
|
+
{ "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."] }
|
|
1049
1236
|
],
|
|
1050
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1237
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1051
1238
|
},
|
|
1052
1239
|
{
|
|
1053
1240
|
canonicalId: "gpt-4.1-mini",
|
|
@@ -1055,9 +1242,9 @@ var MODEL_REGISTRY = [
|
|
|
1055
1242
|
aliases: [],
|
|
1056
1243
|
family: "gpt-4.1",
|
|
1057
1244
|
pricing: [
|
|
1058
|
-
{ "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-
|
|
1245
|
+
{ "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."] }
|
|
1059
1246
|
],
|
|
1060
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1247
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1061
1248
|
},
|
|
1062
1249
|
{
|
|
1063
1250
|
canonicalId: "gpt-4.1-nano",
|
|
@@ -1065,9 +1252,9 @@ var MODEL_REGISTRY = [
|
|
|
1065
1252
|
aliases: [],
|
|
1066
1253
|
family: "gpt-4.1",
|
|
1067
1254
|
pricing: [
|
|
1068
|
-
{ "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-
|
|
1255
|
+
{ "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."] }
|
|
1069
1256
|
],
|
|
1070
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1257
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1071
1258
|
},
|
|
1072
1259
|
{
|
|
1073
1260
|
canonicalId: "gpt-4o",
|
|
@@ -1075,9 +1262,9 @@ var MODEL_REGISTRY = [
|
|
|
1075
1262
|
aliases: [],
|
|
1076
1263
|
family: "gpt-4o",
|
|
1077
1264
|
pricing: [
|
|
1078
|
-
{ "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-
|
|
1265
|
+
{ "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."] }
|
|
1079
1266
|
],
|
|
1080
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1267
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1081
1268
|
},
|
|
1082
1269
|
{
|
|
1083
1270
|
canonicalId: "gpt-4o-mini",
|
|
@@ -1085,9 +1272,9 @@ var MODEL_REGISTRY = [
|
|
|
1085
1272
|
aliases: [],
|
|
1086
1273
|
family: "gpt-4o",
|
|
1087
1274
|
pricing: [
|
|
1088
|
-
{ "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-
|
|
1275
|
+
{ "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."] }
|
|
1089
1276
|
],
|
|
1090
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1277
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1091
1278
|
},
|
|
1092
1279
|
{
|
|
1093
1280
|
canonicalId: "gpt-5",
|
|
@@ -1095,9 +1282,9 @@ var MODEL_REGISTRY = [
|
|
|
1095
1282
|
aliases: [],
|
|
1096
1283
|
family: "gpt-5",
|
|
1097
1284
|
pricing: [
|
|
1098
|
-
{ "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-
|
|
1285
|
+
{ "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."] }
|
|
1099
1286
|
],
|
|
1100
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1287
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1101
1288
|
},
|
|
1102
1289
|
{
|
|
1103
1290
|
canonicalId: "gpt-5-mini",
|
|
@@ -1105,9 +1292,9 @@ var MODEL_REGISTRY = [
|
|
|
1105
1292
|
aliases: [],
|
|
1106
1293
|
family: "gpt-5",
|
|
1107
1294
|
pricing: [
|
|
1108
|
-
{ "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-
|
|
1295
|
+
{ "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."] }
|
|
1109
1296
|
],
|
|
1110
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1297
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1111
1298
|
},
|
|
1112
1299
|
{
|
|
1113
1300
|
canonicalId: "gpt-5-nano",
|
|
@@ -1115,9 +1302,9 @@ var MODEL_REGISTRY = [
|
|
|
1115
1302
|
aliases: [],
|
|
1116
1303
|
family: "gpt-5",
|
|
1117
1304
|
pricing: [
|
|
1118
|
-
{ "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-
|
|
1305
|
+
{ "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."] }
|
|
1119
1306
|
],
|
|
1120
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1307
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1121
1308
|
},
|
|
1122
1309
|
{
|
|
1123
1310
|
canonicalId: "gpt-5-pro",
|
|
@@ -1125,9 +1312,9 @@ var MODEL_REGISTRY = [
|
|
|
1125
1312
|
aliases: [],
|
|
1126
1313
|
family: "gpt-5",
|
|
1127
1314
|
pricing: [
|
|
1128
|
-
{ "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-
|
|
1315
|
+
{ "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.`] }
|
|
1129
1316
|
],
|
|
1130
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1317
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1131
1318
|
},
|
|
1132
1319
|
{
|
|
1133
1320
|
canonicalId: "gpt-5.1",
|
|
@@ -1135,9 +1322,9 @@ var MODEL_REGISTRY = [
|
|
|
1135
1322
|
aliases: [],
|
|
1136
1323
|
family: "gpt-5.1",
|
|
1137
1324
|
pricing: [
|
|
1138
|
-
{ "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-
|
|
1325
|
+
{ "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."] }
|
|
1139
1326
|
],
|
|
1140
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1327
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1141
1328
|
},
|
|
1142
1329
|
{
|
|
1143
1330
|
canonicalId: "gpt-5.2",
|
|
@@ -1145,9 +1332,9 @@ var MODEL_REGISTRY = [
|
|
|
1145
1332
|
aliases: [],
|
|
1146
1333
|
family: "gpt-5.2",
|
|
1147
1334
|
pricing: [
|
|
1148
|
-
{ "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-
|
|
1335
|
+
{ "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."] }
|
|
1149
1336
|
],
|
|
1150
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1337
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1151
1338
|
},
|
|
1152
1339
|
{
|
|
1153
1340
|
canonicalId: "gpt-5.2-pro",
|
|
@@ -1155,9 +1342,9 @@ var MODEL_REGISTRY = [
|
|
|
1155
1342
|
aliases: [],
|
|
1156
1343
|
family: "gpt-5.2",
|
|
1157
1344
|
pricing: [
|
|
1158
|
-
{ "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-
|
|
1345
|
+
{ "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.`] }
|
|
1159
1346
|
],
|
|
1160
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1347
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1161
1348
|
},
|
|
1162
1349
|
{
|
|
1163
1350
|
canonicalId: "gpt-5.4",
|
|
@@ -1165,9 +1352,9 @@ var MODEL_REGISTRY = [
|
|
|
1165
1352
|
aliases: [],
|
|
1166
1353
|
family: "gpt-5.4",
|
|
1167
1354
|
pricing: [
|
|
1168
|
-
{ "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-
|
|
1355
|
+
{ "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.'] }
|
|
1169
1356
|
],
|
|
1170
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1357
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1171
1358
|
},
|
|
1172
1359
|
{
|
|
1173
1360
|
canonicalId: "gpt-5.4-mini",
|
|
@@ -1175,9 +1362,9 @@ var MODEL_REGISTRY = [
|
|
|
1175
1362
|
aliases: [],
|
|
1176
1363
|
family: "gpt-5.4",
|
|
1177
1364
|
pricing: [
|
|
1178
|
-
{ "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-
|
|
1365
|
+
{ "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."] }
|
|
1179
1366
|
],
|
|
1180
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1367
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1181
1368
|
},
|
|
1182
1369
|
{
|
|
1183
1370
|
canonicalId: "gpt-5.4-nano",
|
|
@@ -1185,9 +1372,9 @@ var MODEL_REGISTRY = [
|
|
|
1185
1372
|
aliases: [],
|
|
1186
1373
|
family: "gpt-5.4",
|
|
1187
1374
|
pricing: [
|
|
1188
|
-
{ "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-
|
|
1375
|
+
{ "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."] }
|
|
1189
1376
|
],
|
|
1190
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1377
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1191
1378
|
},
|
|
1192
1379
|
{
|
|
1193
1380
|
canonicalId: "gpt-5.4-pro",
|
|
@@ -1195,9 +1382,9 @@ var MODEL_REGISTRY = [
|
|
|
1195
1382
|
aliases: [],
|
|
1196
1383
|
family: "gpt-5.4",
|
|
1197
1384
|
pricing: [
|
|
1198
|
-
{ "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-
|
|
1385
|
+
{ "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.'] }
|
|
1199
1386
|
],
|
|
1200
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1387
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1201
1388
|
},
|
|
1202
1389
|
{
|
|
1203
1390
|
canonicalId: "gpt-5.5",
|
|
@@ -1205,9 +1392,9 @@ var MODEL_REGISTRY = [
|
|
|
1205
1392
|
aliases: [],
|
|
1206
1393
|
family: "gpt-5.5",
|
|
1207
1394
|
pricing: [
|
|
1208
|
-
{ "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-
|
|
1395
|
+
{ "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.'] }
|
|
1209
1396
|
],
|
|
1210
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1397
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1211
1398
|
},
|
|
1212
1399
|
{
|
|
1213
1400
|
canonicalId: "gpt-5.5-pro",
|
|
@@ -1215,9 +1402,9 @@ var MODEL_REGISTRY = [
|
|
|
1215
1402
|
aliases: [],
|
|
1216
1403
|
family: "gpt-5.5",
|
|
1217
1404
|
pricing: [
|
|
1218
|
-
{ "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-
|
|
1405
|
+
{ "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.'] }
|
|
1219
1406
|
],
|
|
1220
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1407
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1221
1408
|
},
|
|
1222
1409
|
{
|
|
1223
1410
|
canonicalId: "gpt-5.6-luna",
|
|
@@ -1225,9 +1412,9 @@ var MODEL_REGISTRY = [
|
|
|
1225
1412
|
aliases: [],
|
|
1226
1413
|
family: "gpt-5.6",
|
|
1227
1414
|
pricing: [
|
|
1228
|
-
{ "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-
|
|
1415
|
+
{ "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."] }
|
|
1229
1416
|
],
|
|
1230
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1417
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1231
1418
|
},
|
|
1232
1419
|
{
|
|
1233
1420
|
canonicalId: "gpt-5.6-sol",
|
|
@@ -1235,9 +1422,10 @@ var MODEL_REGISTRY = [
|
|
|
1235
1422
|
aliases: [],
|
|
1236
1423
|
family: "gpt-5.6",
|
|
1237
1424
|
pricing: [
|
|
1238
|
-
{ "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
|
|
1425
|
+
{ "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."] },
|
|
1426
|
+
{ "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.`] }
|
|
1239
1427
|
],
|
|
1240
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1428
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1241
1429
|
},
|
|
1242
1430
|
{
|
|
1243
1431
|
canonicalId: "gpt-5.6-terra",
|
|
@@ -1245,9 +1433,19 @@ var MODEL_REGISTRY = [
|
|
|
1245
1433
|
aliases: [],
|
|
1246
1434
|
family: "gpt-5.6",
|
|
1247
1435
|
pricing: [
|
|
1248
|
-
{ "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-
|
|
1436
|
+
{ "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."] }
|
|
1437
|
+
],
|
|
1438
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1439
|
+
},
|
|
1440
|
+
{
|
|
1441
|
+
canonicalId: "gpt-6-astra",
|
|
1442
|
+
provider: "openai",
|
|
1443
|
+
aliases: [],
|
|
1444
|
+
family: "gpt-6",
|
|
1445
|
+
pricing: [
|
|
1446
|
+
{ "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.`] }
|
|
1249
1447
|
],
|
|
1250
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1448
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1251
1449
|
},
|
|
1252
1450
|
{
|
|
1253
1451
|
canonicalId: "o1",
|
|
@@ -1255,9 +1453,9 @@ var MODEL_REGISTRY = [
|
|
|
1255
1453
|
aliases: [],
|
|
1256
1454
|
family: "o-series",
|
|
1257
1455
|
pricing: [
|
|
1258
|
-
{ "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-
|
|
1456
|
+
{ "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."] }
|
|
1259
1457
|
],
|
|
1260
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1458
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1261
1459
|
},
|
|
1262
1460
|
{
|
|
1263
1461
|
canonicalId: "o1-pro",
|
|
@@ -1265,9 +1463,9 @@ var MODEL_REGISTRY = [
|
|
|
1265
1463
|
aliases: [],
|
|
1266
1464
|
family: "o-series",
|
|
1267
1465
|
pricing: [
|
|
1268
|
-
{ "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-
|
|
1466
|
+
{ "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.`] }
|
|
1269
1467
|
],
|
|
1270
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1468
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1271
1469
|
},
|
|
1272
1470
|
{
|
|
1273
1471
|
canonicalId: "o3",
|
|
@@ -1275,9 +1473,9 @@ var MODEL_REGISTRY = [
|
|
|
1275
1473
|
aliases: [],
|
|
1276
1474
|
family: "o-series",
|
|
1277
1475
|
pricing: [
|
|
1278
|
-
{ "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-
|
|
1476
|
+
{ "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."] }
|
|
1279
1477
|
],
|
|
1280
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1478
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1281
1479
|
},
|
|
1282
1480
|
{
|
|
1283
1481
|
canonicalId: "o3-mini",
|
|
@@ -1285,9 +1483,9 @@ var MODEL_REGISTRY = [
|
|
|
1285
1483
|
aliases: [],
|
|
1286
1484
|
family: "o-series",
|
|
1287
1485
|
pricing: [
|
|
1288
|
-
{ "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-
|
|
1486
|
+
{ "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."] }
|
|
1289
1487
|
],
|
|
1290
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1488
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1291
1489
|
},
|
|
1292
1490
|
{
|
|
1293
1491
|
canonicalId: "o3-pro",
|
|
@@ -1295,9 +1493,9 @@ var MODEL_REGISTRY = [
|
|
|
1295
1493
|
aliases: [],
|
|
1296
1494
|
family: "o-series",
|
|
1297
1495
|
pricing: [
|
|
1298
|
-
{ "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-
|
|
1496
|
+
{ "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.`] }
|
|
1299
1497
|
],
|
|
1300
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1498
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1301
1499
|
},
|
|
1302
1500
|
{
|
|
1303
1501
|
canonicalId: "o4-mini",
|
|
@@ -1305,9 +1503,9 @@ var MODEL_REGISTRY = [
|
|
|
1305
1503
|
aliases: [],
|
|
1306
1504
|
family: "o-series",
|
|
1307
1505
|
pricing: [
|
|
1308
|
-
{ "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-
|
|
1506
|
+
{ "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."] }
|
|
1309
1507
|
],
|
|
1310
|
-
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-
|
|
1508
|
+
source: { "url": "https://developers.openai.com/api/docs/pricing", "observedAt": "2026-09-07" }
|
|
1311
1509
|
},
|
|
1312
1510
|
{
|
|
1313
1511
|
canonicalId: "anthropic/claude-sonnet-5",
|
|
@@ -1315,9 +1513,9 @@ var MODEL_REGISTRY = [
|
|
|
1315
1513
|
aliases: [],
|
|
1316
1514
|
family: "anthropic-proxy",
|
|
1317
1515
|
pricing: [
|
|
1318
|
-
{ "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-
|
|
1516
|
+
{ "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."] }
|
|
1319
1517
|
],
|
|
1320
|
-
source: { "url": "https://openrouter.ai/anthropic/claude-sonnet-5", "observedAt": "2026-
|
|
1518
|
+
source: { "url": "https://openrouter.ai/anthropic/claude-sonnet-5", "observedAt": "2026-09-07" }
|
|
1321
1519
|
},
|
|
1322
1520
|
{
|
|
1323
1521
|
canonicalId: "google/gemini-3.1-pro-preview",
|
|
@@ -1325,9 +1523,9 @@ var MODEL_REGISTRY = [
|
|
|
1325
1523
|
aliases: [],
|
|
1326
1524
|
family: "google-proxy",
|
|
1327
1525
|
pricing: [
|
|
1328
|
-
{ "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-
|
|
1526
|
+
{ "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."] }
|
|
1329
1527
|
],
|
|
1330
|
-
source: { "url": "https://openrouter.ai/google/gemini-3.1-pro-preview", "observedAt": "2026-
|
|
1528
|
+
source: { "url": "https://openrouter.ai/google/gemini-3.1-pro-preview", "observedAt": "2026-09-07" }
|
|
1331
1529
|
},
|
|
1332
1530
|
{
|
|
1333
1531
|
canonicalId: "meta-llama/llama-3.3-70b-instruct",
|
|
@@ -1335,9 +1533,9 @@ var MODEL_REGISTRY = [
|
|
|
1335
1533
|
aliases: [],
|
|
1336
1534
|
family: "meta-proxy",
|
|
1337
1535
|
pricing: [
|
|
1338
|
-
{ "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-
|
|
1536
|
+
{ "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.'] }
|
|
1339
1537
|
],
|
|
1340
|
-
source: { "url": "https://openrouter.ai/meta-llama/llama-3.3-70b-instruct", "observedAt": "2026-
|
|
1538
|
+
source: { "url": "https://openrouter.ai/meta-llama/llama-3.3-70b-instruct", "observedAt": "2026-09-07" }
|
|
1341
1539
|
},
|
|
1342
1540
|
{
|
|
1343
1541
|
canonicalId: "openai/gpt-5",
|
|
@@ -1345,9 +1543,19 @@ var MODEL_REGISTRY = [
|
|
|
1345
1543
|
aliases: [],
|
|
1346
1544
|
family: "openai-proxy",
|
|
1347
1545
|
pricing: [
|
|
1348
|
-
{ "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-
|
|
1546
|
+
{ "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."] }
|
|
1547
|
+
],
|
|
1548
|
+
source: { "url": "https://openrouter.ai/openai/gpt-5", "observedAt": "2026-09-07" }
|
|
1549
|
+
},
|
|
1550
|
+
{
|
|
1551
|
+
canonicalId: "deepseek-v4-flash-0731",
|
|
1552
|
+
provider: "together",
|
|
1553
|
+
aliases: [],
|
|
1554
|
+
family: "deepseek",
|
|
1555
|
+
pricing: [
|
|
1556
|
+
{ "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."] }
|
|
1349
1557
|
],
|
|
1350
|
-
source: { "url": "https://
|
|
1558
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1351
1559
|
},
|
|
1352
1560
|
{
|
|
1353
1561
|
canonicalId: "deepseek-v4-pro",
|
|
@@ -1355,19 +1563,29 @@ var MODEL_REGISTRY = [
|
|
|
1355
1563
|
aliases: [],
|
|
1356
1564
|
family: "deepseek",
|
|
1357
1565
|
pricing: [
|
|
1358
|
-
{ "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."] }
|
|
1566
|
+
{ "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.'] }
|
|
1359
1567
|
],
|
|
1360
1568
|
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-08-05" }
|
|
1361
1569
|
},
|
|
1570
|
+
{
|
|
1571
|
+
canonicalId: "deepseek-v4-pro-0813",
|
|
1572
|
+
provider: "together",
|
|
1573
|
+
aliases: [],
|
|
1574
|
+
family: "deepseek",
|
|
1575
|
+
pricing: [
|
|
1576
|
+
{ "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."] }
|
|
1577
|
+
],
|
|
1578
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1579
|
+
},
|
|
1362
1580
|
{
|
|
1363
1581
|
canonicalId: "gemma-4-31b",
|
|
1364
1582
|
provider: "together",
|
|
1365
1583
|
aliases: [],
|
|
1366
1584
|
family: "gemma",
|
|
1367
1585
|
pricing: [
|
|
1368
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.39", "output": "0.97", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1586
|
+
{ "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."] }
|
|
1369
1587
|
],
|
|
1370
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1588
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1371
1589
|
},
|
|
1372
1590
|
{
|
|
1373
1591
|
canonicalId: "glm-5.2",
|
|
@@ -1375,9 +1593,29 @@ var MODEL_REGISTRY = [
|
|
|
1375
1593
|
aliases: [],
|
|
1376
1594
|
family: "glm",
|
|
1377
1595
|
pricing: [
|
|
1378
|
-
{ "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-
|
|
1596
|
+
{ "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."] }
|
|
1379
1597
|
],
|
|
1380
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1598
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1599
|
+
},
|
|
1600
|
+
{
|
|
1601
|
+
canonicalId: "glm-5.3",
|
|
1602
|
+
provider: "together",
|
|
1603
|
+
aliases: [],
|
|
1604
|
+
family: "glm",
|
|
1605
|
+
pricing: [
|
|
1606
|
+
{ "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."] }
|
|
1607
|
+
],
|
|
1608
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
canonicalId: "glm-5.3-flash",
|
|
1612
|
+
provider: "together",
|
|
1613
|
+
aliases: [],
|
|
1614
|
+
family: "glm",
|
|
1615
|
+
pricing: [
|
|
1616
|
+
{ "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."] }
|
|
1617
|
+
],
|
|
1618
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1381
1619
|
},
|
|
1382
1620
|
{
|
|
1383
1621
|
canonicalId: "gpt-oss-120b",
|
|
@@ -1385,9 +1623,9 @@ var MODEL_REGISTRY = [
|
|
|
1385
1623
|
aliases: [],
|
|
1386
1624
|
family: "gpt-oss",
|
|
1387
1625
|
pricing: [
|
|
1388
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "0.15", "output": "0.60", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1626
|
+
{ "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."] }
|
|
1389
1627
|
],
|
|
1390
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1628
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1391
1629
|
},
|
|
1392
1630
|
{
|
|
1393
1631
|
canonicalId: "gpt-oss-20b",
|
|
@@ -1395,7 +1633,7 @@ var MODEL_REGISTRY = [
|
|
|
1395
1633
|
aliases: [],
|
|
1396
1634
|
family: "gpt-oss",
|
|
1397
1635
|
pricing: [
|
|
1398
|
-
{ "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.'] }
|
|
1636
|
+
{ "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."] }
|
|
1399
1637
|
],
|
|
1400
1638
|
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-08-05" }
|
|
1401
1639
|
},
|
|
@@ -1405,9 +1643,19 @@ var MODEL_REGISTRY = [
|
|
|
1405
1643
|
aliases: [],
|
|
1406
1644
|
family: "kimi",
|
|
1407
1645
|
pricing: [
|
|
1408
|
-
{ "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-
|
|
1646
|
+
{ "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."] }
|
|
1409
1647
|
],
|
|
1410
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1648
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1649
|
+
},
|
|
1650
|
+
{
|
|
1651
|
+
canonicalId: "llama-3-8b-instruct-lite",
|
|
1652
|
+
provider: "together",
|
|
1653
|
+
aliases: [],
|
|
1654
|
+
family: "llama",
|
|
1655
|
+
pricing: [
|
|
1656
|
+
{ "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."] }
|
|
1657
|
+
],
|
|
1658
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1411
1659
|
},
|
|
1412
1660
|
{
|
|
1413
1661
|
canonicalId: "llama-3.3-70b",
|
|
@@ -1415,9 +1663,9 @@ var MODEL_REGISTRY = [
|
|
|
1415
1663
|
aliases: [],
|
|
1416
1664
|
family: "llama-3.3",
|
|
1417
1665
|
pricing: [
|
|
1418
|
-
{ "effectiveFrom": "2026-01-01", "currency": "USD", "unit": "per-million-tokens", "input": "1.04", "output": "1.04", "sourceUrl": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1666
|
+
{ "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."] }
|
|
1419
1667
|
],
|
|
1420
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1668
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1421
1669
|
},
|
|
1422
1670
|
{
|
|
1423
1671
|
canonicalId: "minimax-m3",
|
|
@@ -1425,9 +1673,19 @@ var MODEL_REGISTRY = [
|
|
|
1425
1673
|
aliases: [],
|
|
1426
1674
|
family: "minimax",
|
|
1427
1675
|
pricing: [
|
|
1428
|
-
{ "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-
|
|
1676
|
+
{ "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."] }
|
|
1429
1677
|
],
|
|
1430
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1678
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1679
|
+
},
|
|
1680
|
+
{
|
|
1681
|
+
canonicalId: "qwen2.5-7b-instruct-turbo",
|
|
1682
|
+
provider: "together",
|
|
1683
|
+
aliases: [],
|
|
1684
|
+
family: "qwen",
|
|
1685
|
+
pricing: [
|
|
1686
|
+
{ "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."] }
|
|
1687
|
+
],
|
|
1688
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1431
1689
|
},
|
|
1432
1690
|
{
|
|
1433
1691
|
canonicalId: "qwen3.5-397b-a17b",
|
|
@@ -1435,9 +1693,29 @@ var MODEL_REGISTRY = [
|
|
|
1435
1693
|
aliases: [],
|
|
1436
1694
|
family: "qwen",
|
|
1437
1695
|
pricing: [
|
|
1438
|
-
{ "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-
|
|
1696
|
+
{ "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."] }
|
|
1439
1697
|
],
|
|
1440
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1698
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1699
|
+
},
|
|
1700
|
+
{
|
|
1701
|
+
canonicalId: "qwen3.5-9b",
|
|
1702
|
+
provider: "together",
|
|
1703
|
+
aliases: [],
|
|
1704
|
+
family: "qwen",
|
|
1705
|
+
pricing: [
|
|
1706
|
+
{ "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."] }
|
|
1707
|
+
],
|
|
1708
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1709
|
+
},
|
|
1710
|
+
{
|
|
1711
|
+
canonicalId: "qwen3.6-plus",
|
|
1712
|
+
provider: "together",
|
|
1713
|
+
aliases: [],
|
|
1714
|
+
family: "qwen",
|
|
1715
|
+
pricing: [
|
|
1716
|
+
{ "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."] }
|
|
1717
|
+
],
|
|
1718
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1441
1719
|
},
|
|
1442
1720
|
{
|
|
1443
1721
|
canonicalId: "qwen3.7-max",
|
|
@@ -1445,9 +1723,39 @@ var MODEL_REGISTRY = [
|
|
|
1445
1723
|
aliases: [],
|
|
1446
1724
|
family: "qwen",
|
|
1447
1725
|
pricing: [
|
|
1448
|
-
{ "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-
|
|
1726
|
+
{ "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."] }
|
|
1449
1727
|
],
|
|
1450
|
-
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-
|
|
1728
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1729
|
+
},
|
|
1730
|
+
{
|
|
1731
|
+
canonicalId: "qwen3.7-plus",
|
|
1732
|
+
provider: "together",
|
|
1733
|
+
aliases: [],
|
|
1734
|
+
family: "qwen",
|
|
1735
|
+
pricing: [
|
|
1736
|
+
{ "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."] }
|
|
1737
|
+
],
|
|
1738
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
canonicalId: "qwen3.8-2.4t-a95b",
|
|
1742
|
+
provider: "together",
|
|
1743
|
+
aliases: [],
|
|
1744
|
+
family: "qwen",
|
|
1745
|
+
pricing: [
|
|
1746
|
+
{ "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."] }
|
|
1747
|
+
],
|
|
1748
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1749
|
+
},
|
|
1750
|
+
{
|
|
1751
|
+
canonicalId: "qwen3.8-flash",
|
|
1752
|
+
provider: "together",
|
|
1753
|
+
aliases: [],
|
|
1754
|
+
family: "qwen",
|
|
1755
|
+
pricing: [
|
|
1756
|
+
{ "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."] }
|
|
1757
|
+
],
|
|
1758
|
+
source: { "url": "https://www.together.ai/pricing", "observedAt": "2026-09-07" }
|
|
1451
1759
|
}
|
|
1452
1760
|
];
|
|
1453
1761
|
|
|
@@ -1507,7 +1815,7 @@ var InvalidRateError = class extends Error {
|
|
|
1507
1815
|
var ZERO = { numerator: 0n, scale: 0 };
|
|
1508
1816
|
var DECIMAL_PATTERN = /^\d+(\.\d+)?$/;
|
|
1509
1817
|
function parseDecimalRate(value, field) {
|
|
1510
|
-
if (!DECIMAL_PATTERN.test(value)) {
|
|
1818
|
+
if (typeof value !== "string" || !DECIMAL_PATTERN.test(value)) {
|
|
1511
1819
|
throw new InvalidRateError(field, value);
|
|
1512
1820
|
}
|
|
1513
1821
|
const dot = value.indexOf(".");
|
|
@@ -1941,6 +2249,59 @@ function createPriceOverride(input) {
|
|
|
1941
2249
|
};
|
|
1942
2250
|
}
|
|
1943
2251
|
|
|
2252
|
+
// src/aggregate.ts
|
|
2253
|
+
function sumExactUsd(values) {
|
|
2254
|
+
const amounts = [];
|
|
2255
|
+
for (const [index, value] of values.entries()) {
|
|
2256
|
+
amounts.push(parseDecimalRate(value, `values[${String(index)}]`));
|
|
2257
|
+
}
|
|
2258
|
+
return formatExact(addExact(amounts));
|
|
2259
|
+
}
|
|
2260
|
+
function modelKey(breakdown) {
|
|
2261
|
+
return `${breakdown.provider}:${breakdown.canonicalModel}`;
|
|
2262
|
+
}
|
|
2263
|
+
function newBucket() {
|
|
2264
|
+
return { count: 0, sum: ZERO, registryVersions: /* @__PURE__ */ new Set() };
|
|
2265
|
+
}
|
|
2266
|
+
function accumulate(bucket, amount, registryVersion) {
|
|
2267
|
+
bucket.count += 1;
|
|
2268
|
+
bucket.sum = addExact([bucket.sum, amount]);
|
|
2269
|
+
bucket.registryVersions.add(registryVersion);
|
|
2270
|
+
}
|
|
2271
|
+
function toTotal(bucket) {
|
|
2272
|
+
return {
|
|
2273
|
+
count: bucket.count,
|
|
2274
|
+
totalUsd: toDisplayNumber(bucket.sum),
|
|
2275
|
+
totalUsdExact: formatExact(bucket.sum),
|
|
2276
|
+
registryVersions: [...bucket.registryVersions].sort()
|
|
2277
|
+
};
|
|
2278
|
+
}
|
|
2279
|
+
function createCostAggregator() {
|
|
2280
|
+
const overall = newBucket();
|
|
2281
|
+
const byModelBuckets = /* @__PURE__ */ new Map();
|
|
2282
|
+
return {
|
|
2283
|
+
add(breakdown) {
|
|
2284
|
+
const amount = parseDecimalRate(breakdown.totalUsdExact, "totalUsdExact");
|
|
2285
|
+
const key = modelKey(breakdown);
|
|
2286
|
+
let bucket = byModelBuckets.get(key);
|
|
2287
|
+
if (bucket === void 0) {
|
|
2288
|
+
bucket = newBucket();
|
|
2289
|
+
byModelBuckets.set(key, bucket);
|
|
2290
|
+
}
|
|
2291
|
+
accumulate(bucket, amount, breakdown.registryVersion);
|
|
2292
|
+
accumulate(overall, amount, breakdown.registryVersion);
|
|
2293
|
+
},
|
|
2294
|
+
total() {
|
|
2295
|
+
return toTotal(overall);
|
|
2296
|
+
},
|
|
2297
|
+
byModel() {
|
|
2298
|
+
const result = /* @__PURE__ */ new Map();
|
|
2299
|
+
for (const [key, bucket] of byModelBuckets) result.set(key, toTotal(bucket));
|
|
2300
|
+
return result;
|
|
2301
|
+
}
|
|
2302
|
+
};
|
|
2303
|
+
}
|
|
2304
|
+
|
|
1944
2305
|
// src/normalize/openai.ts
|
|
1945
2306
|
var KNOWN_TOP_LEVEL = /* @__PURE__ */ new Set([
|
|
1946
2307
|
"prompt_tokens",
|
|
@@ -2139,12 +2500,14 @@ export {
|
|
|
2139
2500
|
REGISTRY_VERSION,
|
|
2140
2501
|
UnknownModelError,
|
|
2141
2502
|
calculateCost,
|
|
2503
|
+
createCostAggregator,
|
|
2142
2504
|
createPriceCalculator,
|
|
2143
2505
|
createPriceOverride,
|
|
2144
2506
|
normalizeAnthropicUsage,
|
|
2145
2507
|
normalizeGoogleUsage,
|
|
2146
2508
|
normalizeOpenAICompatibleUsage,
|
|
2147
2509
|
normalizeOpenAIUsage,
|
|
2148
|
-
resolveModel2 as resolveModel
|
|
2510
|
+
resolveModel2 as resolveModel,
|
|
2511
|
+
sumExactUsd
|
|
2149
2512
|
};
|
|
2150
2513
|
//# sourceMappingURL=index.js.map
|