@pydantic/genai-prices 0.0.54 → 0.0.56

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.
Files changed (4) hide show
  1. package/dist/cli.js +1852 -1283
  2. package/dist/index.cjs +4 -4
  3. package/dist/index.js +1674 -1105
  4. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import _e from "yargs";
2
+ import he from "yargs";
3
3
  import { format as ke } from "util";
4
- import { resolve as ie, normalize as Ae } from "path";
5
- import { readFileSync as ge, writeFile as Pe, statSync as Te } from "fs";
4
+ import { resolve as ie, normalize as Pe } from "path";
5
+ import { readFileSync as ge, writeFile as Qe, statSync as Te } from "fs";
6
6
  import "assert";
7
7
  import { fileURLToPath as Se } from "url";
8
- function Ce() {
9
- return Ge() ? 0 : 1;
10
- }
11
8
  function Ge() {
12
- return Re() && !process.defaultApp;
9
+ return Ce() ? 0 : 1;
10
+ }
11
+ function Ce() {
12
+ return ze() && !process.defaultApp;
13
13
  }
14
- function Re() {
14
+ function ze() {
15
15
  return !!process.versions.electron;
16
16
  }
17
- function ze(i) {
18
- return i.slice(Ce() + 1);
17
+ function Re(i) {
18
+ return i.slice(Ge() + 1);
19
19
  }
20
20
  /**
21
21
  * @license
@@ -28,24 +28,24 @@ function $(i) {
28
28
  {
29
29
  let u = "", s = !1;
30
30
  const r = i.match(/^-+/);
31
- for (let _ = r ? r[0].length : 0; _ < i.length; _++) {
32
- let h = i.charAt(_);
33
- s && (s = !1, h = h.toUpperCase()), _ !== 0 && (h === "-" || h === "_") ? s = !0 : h !== "-" && h !== "_" && (u += h);
31
+ for (let h = r ? r[0].length : 0; h < i.length; h++) {
32
+ let _ = i.charAt(h);
33
+ s && (s = !1, _ = _.toUpperCase()), h !== 0 && (_ === "-" || _ === "_") ? s = !0 : _ !== "-" && _ !== "_" && (u += _);
34
34
  }
35
35
  return u;
36
36
  }
37
37
  }
38
- function Oe(i, o) {
38
+ function Ee(i, o) {
39
39
  const u = i.toLowerCase();
40
40
  o = o || "-";
41
41
  let s = "";
42
42
  for (let r = 0; r < i.length; r++) {
43
- const _ = u.charAt(r), h = i.charAt(r);
44
- _ !== h && r > 0 ? s += `${o}${u.charAt(r)}` : s += h;
43
+ const h = u.charAt(r), _ = i.charAt(r);
44
+ h !== _ && r > 0 ? s += `${o}${u.charAt(r)}` : s += _;
45
45
  }
46
46
  return s;
47
47
  }
48
- function De(i) {
48
+ function Oe(i) {
49
49
  return i == null ? !1 : typeof i == "number" || /^0x[0-9a-f]+$/i.test(i) ? !0 : /^0[^.]/.test(i) ? !1 : /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(i);
50
50
  }
51
51
  /**
@@ -55,35 +55,35 @@ function De(i) {
55
55
  */
56
56
  function Ne(i) {
57
57
  if (Array.isArray(i))
58
- return i.map((h) => typeof h != "string" ? h + "" : h);
58
+ return i.map((_) => typeof _ != "string" ? _ + "" : _);
59
59
  i = i.trim();
60
60
  let o = 0, u = null, s = null, r = null;
61
- const _ = [];
62
- for (let h = 0; h < i.length; h++) {
63
- if (u = s, s = i.charAt(h), s === " " && !r) {
61
+ const h = [];
62
+ for (let _ = 0; _ < i.length; _++) {
63
+ if (u = s, s = i.charAt(_), s === " " && !r) {
64
64
  u !== " " && o++;
65
65
  continue;
66
66
  }
67
- s === r ? r = null : (s === "'" || s === '"') && !r && (r = s), _[o] || (_[o] = ""), _[o] += s;
67
+ s === r ? r = null : (s === "'" || s === '"') && !r && (r = s), h[o] || (h[o] = ""), h[o] += s;
68
68
  }
69
- return _;
69
+ return h;
70
70
  }
71
71
  /**
72
72
  * @license
73
73
  * Copyright (c) 2016, Contributors
74
74
  * SPDX-License-Identifier: ISC
75
75
  */
76
- var A;
76
+ var P;
77
77
  (function(i) {
78
78
  i.BOOLEAN = "boolean", i.STRING = "string", i.NUMBER = "number", i.ARRAY = "array";
79
- })(A || (A = {}));
79
+ })(P || (P = {}));
80
80
  /**
81
81
  * @license
82
82
  * Copyright (c) 2016, Contributors
83
83
  * SPDX-License-Identifier: ISC
84
84
  */
85
85
  let S;
86
- class Ee {
86
+ class De {
87
87
  constructor(o) {
88
88
  S = o;
89
89
  }
@@ -105,7 +105,7 @@ class Ee {
105
105
  number: void 0,
106
106
  __: void 0,
107
107
  key: void 0
108
- }, u), r = Ne(o), _ = typeof o == "string", h = je(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), k = Object.assign({
108
+ }, u), r = Ne(o), h = typeof o == "string", _ = Fe(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), k = Object.assign({
109
109
  "boolean-negation": !0,
110
110
  "camel-case-expansion": !0,
111
111
  "combine-arrays": !1,
@@ -124,7 +124,7 @@ class Ee {
124
124
  "strip-aliased": !1,
125
125
  "strip-dashed": !1,
126
126
  "unknown-options-as-args": !1
127
- }, s.configuration), q = Object.assign(/* @__PURE__ */ Object.create(null), s.default), I = s.configObjects || [], B = s.envPrefix, y = k["populate--"], L = y ? "--" : "_", C = /* @__PURE__ */ Object.create(null), ne = /* @__PURE__ */ Object.create(null), G = s.__ || S.format, m = {
127
+ }, s.configuration), q = Object.assign(/* @__PURE__ */ Object.create(null), s.default), y = s.configObjects || [], B = s.envPrefix, I = k["populate--"], L = I ? "--" : "_", G = /* @__PURE__ */ Object.create(null), ne = /* @__PURE__ */ Object.create(null), C = s.__ || S.format, m = {
128
128
  aliases: /* @__PURE__ */ Object.create(null),
129
129
  arrays: /* @__PURE__ */ Object.create(null),
130
130
  bools: /* @__PURE__ */ Object.create(null),
@@ -136,7 +136,7 @@ class Ee {
136
136
  nargs: /* @__PURE__ */ Object.create(null),
137
137
  coercions: /* @__PURE__ */ Object.create(null),
138
138
  keys: []
139
- }, P = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + k["negation-prefix"] + "(.+)");
139
+ }, Q = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + k["negation-prefix"] + "(.+)");
140
140
  [].concat(s.array || []).filter(Boolean).forEach(function(e) {
141
141
  const a = typeof e == "object" ? e.key : e, c = Object.keys(e).map(function(n) {
142
142
  return {
@@ -164,114 +164,114 @@ class Ee {
164
164
  m.configs[e] = !0;
165
165
  }) : typeof s.config == "object" && Object.entries(s.config).forEach(([e, a]) => {
166
166
  (typeof a == "boolean" || typeof a == "function") && (m.configs[e] = a);
167
- })), xe(s.key, h, s.default, m.arrays), Object.keys(q).forEach(function(e) {
167
+ })), xe(s.key, _, s.default, m.arrays), Object.keys(q).forEach(function(e) {
168
168
  (m.aliases[e] || []).forEach(function(a) {
169
169
  q[a] = q[e];
170
170
  });
171
171
  });
172
172
  let M = null;
173
- Qe();
174
- let j = [];
175
- const b = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }), se = {};
173
+ Ae();
174
+ let F = [];
175
+ const w = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }), se = {};
176
176
  for (let e = 0; e < r.length; e++) {
177
177
  const a = r[e], c = a.replace(/^-{3,}/, "---");
178
178
  let n, t, l, p, d, v;
179
- if (a !== "--" && /^-/.test(a) && K(a))
179
+ if (a !== "--" && /^-/.test(a) && H(a))
180
180
  U(a);
181
181
  else if (c.match(/^---+(=|$)/)) {
182
182
  U(a);
183
183
  continue;
184
184
  } else if (a.match(/^--.+=/) || !k["short-option-groups"] && a.match(/^-.+=/))
185
- p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1], m.arrays) ? e = F(e, p[1], r, p[2]) : g(p[1], m.nargs) !== !1 ? e = V(e, p[1], r, p[2]) : w(p[1], p[2], !0));
185
+ p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1], m.arrays) ? e = V(e, p[1], r, p[2]) : g(p[1], m.nargs) !== !1 ? e = j(e, p[1], r, p[2]) : b(p[1], p[2], !0));
186
186
  else if (a.match(W) && k["boolean-negation"])
187
- p = a.match(W), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], w(t, g(t, m.arrays) ? [!1] : !1));
187
+ p = a.match(W), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], b(t, g(t, m.arrays) ? [!1] : !1));
188
188
  else if (a.match(/^--.+/) || !k["short-option-groups"] && a.match(/^-[^-]+/))
189
- p = a.match(/^--?(.+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], g(t, m.arrays) ? e = F(e, t, r) : g(t, m.nargs) !== !1 ? e = V(e, t, r) : (d = r[e + 1], d !== void 0 && (!d.match(/^-/) || d.match(P)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (w(t, d), e++) : w(t, z(t))));
189
+ p = a.match(/^--?(.+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], g(t, m.arrays) ? e = V(e, t, r) : g(t, m.nargs) !== !1 ? e = j(e, t, r) : (d = r[e + 1], d !== void 0 && (!d.match(/^-/) || d.match(Q)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, R(t))));
190
190
  else if (a.match(/^-.\..+=/))
191
- p = a.match(/^-([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && w(p[1], p[2]);
192
- else if (a.match(/^-.\..+/) && !a.match(P))
193
- d = r[e + 1], p = a.match(/^-(.\..+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], d !== void 0 && !d.match(/^-/) && !g(t, m.bools) && !g(t, m.counts) ? (w(t, d), e++) : w(t, z(t)));
194
- else if (a.match(/^-[^-]+/) && !a.match(P)) {
191
+ p = a.match(/^-([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && b(p[1], p[2]);
192
+ else if (a.match(/^-.\..+/) && !a.match(Q))
193
+ d = r[e + 1], p = a.match(/^-(.\..+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], d !== void 0 && !d.match(/^-/) && !g(t, m.bools) && !g(t, m.counts) ? (b(t, d), e++) : b(t, R(t)));
194
+ else if (a.match(/^-[^-]+/) && !a.match(Q)) {
195
195
  l = a.slice(1, -1).split(""), n = !1;
196
196
  for (let x = 0; x < l.length; x++) {
197
197
  if (d = a.slice(x + 2), l[x + 1] && l[x + 1] === "=") {
198
- v = a.slice(x + 3), t = l[x], g(t, m.arrays) ? e = F(e, t, r, v) : g(t, m.nargs) !== !1 ? e = V(e, t, r, v) : w(t, v), n = !0;
198
+ v = a.slice(x + 3), t = l[x], g(t, m.arrays) ? e = V(e, t, r, v) : g(t, m.nargs) !== !1 ? e = j(e, t, r, v) : b(t, v), n = !0;
199
199
  break;
200
200
  }
201
201
  if (d === "-") {
202
- w(l[x], d);
202
+ b(l[x], d);
203
203
  continue;
204
204
  }
205
205
  if (/[A-Za-z]/.test(l[x]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(d) && g(d, m.bools) === !1) {
206
- w(l[x], d), n = !0;
206
+ b(l[x], d), n = !0;
207
207
  break;
208
208
  }
209
209
  if (l[x + 1] && l[x + 1].match(/\W/)) {
210
- w(l[x], d), n = !0;
210
+ b(l[x], d), n = !0;
211
211
  break;
212
212
  } else
213
- w(l[x], z(l[x]));
213
+ b(l[x], R(l[x]));
214
214
  }
215
- t = a.slice(-1)[0], !n && t !== "-" && (g(t, m.arrays) ? e = F(e, t, r) : g(t, m.nargs) !== !1 ? e = V(e, t, r) : (d = r[e + 1], d !== void 0 && (!/^(-|--)[^-]/.test(d) || d.match(P)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (w(t, d), e++) : w(t, z(t))));
216
- } else if (a.match(/^-[0-9]$/) && a.match(P) && g(a.slice(1), m.bools))
217
- t = a.slice(1), w(t, z(t));
215
+ t = a.slice(-1)[0], !n && t !== "-" && (g(t, m.arrays) ? e = V(e, t, r) : g(t, m.nargs) !== !1 ? e = j(e, t, r) : (d = r[e + 1], d !== void 0 && (!/^(-|--)[^-]/.test(d) || d.match(Q)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, R(t))));
216
+ } else if (a.match(/^-[0-9]$/) && a.match(Q) && g(a.slice(1), m.bools))
217
+ t = a.slice(1), b(t, R(t));
218
218
  else if (a === "--") {
219
- j = r.slice(e + 1);
219
+ F = r.slice(e + 1);
220
220
  break;
221
221
  } else if (k["halt-at-non-option"]) {
222
- j = r.slice(e);
222
+ F = r.slice(e);
223
223
  break;
224
224
  } else
225
225
  U(a);
226
226
  }
227
- me(b, !0), me(b, !1), fe(b), we(), ue(b, m.aliases, q, !0), be(b), k["set-placeholder-key"] && ve(b), Object.keys(m.counts).forEach(function(e) {
228
- O(b, e.split(".")) || w(e, 0);
229
- }), y && j.length && (b[L] = []), j.forEach(function(e) {
230
- b[L].push(e);
231
- }), k["camel-case-expansion"] && k["strip-dashed"] && Object.keys(b).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
232
- delete b[e];
233
- }), k["strip-aliased"] && [].concat(...Object.keys(h).map((e) => h[e])).forEach((e) => {
234
- k["camel-case-expansion"] && e.includes("-") && delete b[e.split(".").map((a) => $(a)).join(".")], delete b[e];
227
+ me(w, !0), me(w, !1), fe(w), be(), ue(w, m.aliases, q, !0), we(w), k["set-placeholder-key"] && ve(w), Object.keys(m.counts).forEach(function(e) {
228
+ E(w, e.split(".")) || b(e, 0);
229
+ }), I && F.length && (w[L] = []), F.forEach(function(e) {
230
+ w[L].push(e);
231
+ }), k["camel-case-expansion"] && k["strip-dashed"] && Object.keys(w).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
232
+ delete w[e];
233
+ }), k["strip-aliased"] && [].concat(...Object.keys(_).map((e) => _[e])).forEach((e) => {
234
+ k["camel-case-expansion"] && e.includes("-") && delete w[e.split(".").map((a) => $(a)).join(".")], delete w[e];
235
235
  });
236
236
  function U(e) {
237
- const a = H("_", e);
238
- (typeof a == "string" || typeof a == "number") && b._.push(a);
237
+ const a = K("_", e);
238
+ (typeof a == "string" || typeof a == "number") && w._.push(a);
239
239
  }
240
- function V(e, a, c, n) {
240
+ function j(e, a, c, n) {
241
241
  let t, l = g(a, m.nargs);
242
242
  if (l = typeof l != "number" || isNaN(l) ? 1 : l, l === 0)
243
- return T(n) || (M = Error(G("Argument unexpected for: %s", a))), w(a, z(a)), e;
243
+ return T(n) || (M = Error(C("Argument unexpected for: %s", a))), b(a, R(a)), e;
244
244
  let p = T(n) ? 0 : 1;
245
245
  if (k["nargs-eats-options"])
246
- c.length - (e + 1) + p < l && (M = Error(G("Not enough arguments following: %s", a))), p = l;
246
+ c.length - (e + 1) + p < l && (M = Error(C("Not enough arguments following: %s", a))), p = l;
247
247
  else {
248
- for (t = e + 1; t < c.length && (!c[t].match(/^-[^0-9]/) || c[t].match(P) || K(c[t])); t++)
248
+ for (t = e + 1; t < c.length && (!c[t].match(/^-[^0-9]/) || c[t].match(Q) || H(c[t])); t++)
249
249
  p++;
250
- p < l && (M = Error(G("Not enough arguments following: %s", a)));
250
+ p < l && (M = Error(C("Not enough arguments following: %s", a)));
251
251
  }
252
252
  let d = Math.min(p, l);
253
- for (!T(n) && d > 0 && (w(a, n), d--), t = e + 1; t < d + e + 1; t++)
254
- w(a, c[t]);
253
+ for (!T(n) && d > 0 && (b(a, n), d--), t = e + 1; t < d + e + 1; t++)
254
+ b(a, c[t]);
255
255
  return e + d;
256
256
  }
257
- function F(e, a, c, n) {
257
+ function V(e, a, c, n) {
258
258
  let t = [], l = n || c[e + 1];
259
259
  const p = g(a, m.nargs);
260
260
  if (g(a, m.bools) && !/^(true|false)$/.test(l))
261
261
  t.push(!0);
262
- else if (T(l) || T(n) && /^-/.test(l) && !P.test(l) && !K(l)) {
262
+ else if (T(l) || T(n) && /^-/.test(l) && !Q.test(l) && !H(l)) {
263
263
  if (q[a] !== void 0) {
264
264
  const d = q[a];
265
265
  t = Array.isArray(d) ? d : [d];
266
266
  }
267
267
  } else {
268
268
  T(n) || t.push(Y(a, n, !0));
269
- for (let d = e + 1; d < c.length && !(!k["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !P.test(l) && !K(l))); d++)
270
- e = d, t.push(Y(a, l, _));
269
+ for (let d = e + 1; d < c.length && !(!k["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !Q.test(l) && !H(l))); d++)
270
+ e = d, t.push(Y(a, l, h));
271
271
  }
272
- return typeof p == "number" && (p && t.length < p || isNaN(p) && t.length === 0) && (M = Error(G("Not enough arguments following: %s", a))), w(a, t), e;
272
+ return typeof p == "number" && (p && t.length < p || isNaN(p) && t.length === 0) && (M = Error(C("Not enough arguments following: %s", a))), b(a, t), e;
273
273
  }
274
- function w(e, a, c = _) {
274
+ function b(e, a, c = h) {
275
275
  if (/-/.test(e) && k["camel-case-expansion"]) {
276
276
  const l = e.split(".").map(function(p) {
277
277
  return $(p);
@@ -279,13 +279,13 @@ class Ee {
279
279
  re(e, l);
280
280
  }
281
281
  const n = Y(e, a, c), t = e.split(".");
282
- D(b, t, n), m.aliases[e] && m.aliases[e].forEach(function(l) {
282
+ O(w, t, n), m.aliases[e] && m.aliases[e].forEach(function(l) {
283
283
  const p = l.split(".");
284
- D(b, p, n);
284
+ O(w, p, n);
285
285
  }), t.length > 1 && k["dot-notation"] && (m.aliases[t[0]] || []).forEach(function(l) {
286
286
  let p = l.split(".");
287
287
  const d = [].concat(t);
288
- d.shift(), p = p.concat(d), (m.aliases[e] || []).includes(p.join(".")) || D(b, p, n);
288
+ d.shift(), p = p.concat(d), (m.aliases[e] || []).includes(p.join(".")) || O(w, p, n);
289
289
  }), g(e, m.normalize) && !g(e, m.arrays) && [e].concat(m.aliases[e] || []).forEach(function(p) {
290
290
  Object.defineProperty(se, p, {
291
291
  enumerable: !0,
@@ -299,17 +299,17 @@ class Ee {
299
299
  });
300
300
  }
301
301
  function re(e, a) {
302
- m.aliases[e] && m.aliases[e].length || (m.aliases[e] = [a], C[a] = !0), m.aliases[a] && m.aliases[a].length || re(a, e);
302
+ m.aliases[e] && m.aliases[e].length || (m.aliases[e] = [a], G[a] = !0), m.aliases[a] && m.aliases[a].length || re(a, e);
303
303
  }
304
304
  function Y(e, a, c) {
305
- c && (a = Ve(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
305
+ c && (a = je(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
306
306
  let n = Array.isArray(a) ? a.map(function(t) {
307
- return H(e, t);
308
- }) : H(e, a);
307
+ return K(e, t);
308
+ }) : K(e, a);
309
309
  return g(e, m.counts) && (T(n) || typeof n == "boolean") && (n = Z()), g(e, m.normalize) && g(e, m.arrays) && (Array.isArray(a) ? n = a.map((t) => S.normalize(t)) : n = S.normalize(a)), n;
310
310
  }
311
- function H(e, a) {
312
- return !k["parse-positional-numbers"] && e === "_" || !g(e, m.strings) && !g(e, m.bools) && !Array.isArray(a) && (De(a) && k["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !T(a) && g(e, m.numbers)) && (a = Number(a)), a;
311
+ function K(e, a) {
312
+ return !k["parse-positional-numbers"] && e === "_" || !g(e, m.strings) && !g(e, m.bools) && !Array.isArray(a) && (Oe(a) && k["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !T(a) && g(e, m.numbers)) && (a = Number(a)), a;
313
313
  }
314
314
  function fe(e) {
315
315
  const a = /* @__PURE__ */ Object.create(null);
@@ -333,18 +333,18 @@ class Ee {
333
333
  t = S.require(l);
334
334
  J(t);
335
335
  } catch (t) {
336
- t.name === "PermissionDenied" ? M = t : e[c] && (M = Error(G("Invalid JSON config file: %s", n)));
336
+ t.name === "PermissionDenied" ? M = t : e[c] && (M = Error(C("Invalid JSON config file: %s", n)));
337
337
  }
338
338
  });
339
339
  }
340
340
  function J(e, a) {
341
341
  Object.keys(e).forEach(function(c) {
342
342
  const n = e[c], t = a ? a + "." + c : c;
343
- typeof n == "object" && n !== null && !Array.isArray(n) && k["dot-notation"] ? J(n, t) : (!O(b, t.split(".")) || g(t, m.arrays) && k["combine-arrays"]) && w(t, n);
343
+ typeof n == "object" && n !== null && !Array.isArray(n) && k["dot-notation"] ? J(n, t) : (!E(w, t.split(".")) || g(t, m.arrays) && k["combine-arrays"]) && b(t, n);
344
344
  });
345
345
  }
346
- function we() {
347
- typeof I < "u" && I.forEach(function(e) {
346
+ function be() {
347
+ typeof y < "u" && y.forEach(function(e) {
348
348
  J(e);
349
349
  });
350
350
  }
@@ -357,17 +357,17 @@ class Ee {
357
357
  const l = t.split("__").map(function(p, d) {
358
358
  return d === 0 && (p = p.substring(c.length)), $(p);
359
359
  });
360
- (a && m.configs[l.join(".")] || !a) && !O(e, l) && w(l.join("."), n[t]);
360
+ (a && m.configs[l.join(".")] || !a) && !E(e, l) && b(l.join("."), n[t]);
361
361
  }
362
362
  });
363
363
  }
364
- function be(e) {
364
+ function we(e) {
365
365
  let a;
366
366
  const c = /* @__PURE__ */ new Set();
367
367
  Object.keys(e).forEach(function(n) {
368
368
  if (!c.has(n) && (a = g(n, m.coercions), typeof a == "function"))
369
369
  try {
370
- const t = H(n, a(e[n]));
370
+ const t = K(n, a(e[n]));
371
371
  [].concat(m.aliases[n] || [], n).forEach((l) => {
372
372
  c.add(l), e[l] = t;
373
373
  });
@@ -383,12 +383,12 @@ class Ee {
383
383
  }
384
384
  function ue(e, a, c, n = !1) {
385
385
  Object.keys(c).forEach(function(t) {
386
- O(e, t.split(".")) || (D(e, t.split("."), c[t]), n && (ne[t] = !0), (a[t] || []).forEach(function(l) {
387
- O(e, l.split(".")) || D(e, l.split("."), c[t]);
386
+ E(e, t.split(".")) || (O(e, t.split("."), c[t]), n && (ne[t] = !0), (a[t] || []).forEach(function(l) {
387
+ E(e, l.split(".")) || O(e, l.split("."), c[t]);
388
388
  }));
389
389
  });
390
390
  }
391
- function O(e, a) {
391
+ function E(e, a) {
392
392
  let c = e;
393
393
  k["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(t) {
394
394
  c = c[t] || {};
@@ -396,7 +396,7 @@ class Ee {
396
396
  const n = a[a.length - 1];
397
397
  return typeof c != "object" ? !1 : n in c;
398
398
  }
399
- function D(e, a, c) {
399
+ function O(e, a, c) {
400
400
  let n = e;
401
401
  k["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(v) {
402
402
  v = pe(v), typeof n == "object" && n[v] === void 0 && (n[v] = {}), typeof n[v] != "object" || Array.isArray(n[v]) ? (Array.isArray(n[v]) ? n[v].push({}) : n[v] = [n[v], {}], n = n[v][n[v].length - 1]) : n = n[v];
@@ -408,15 +408,15 @@ class Ee {
408
408
  function xe(...e) {
409
409
  e.forEach(function(a) {
410
410
  Object.keys(a || {}).forEach(function(c) {
411
- m.aliases[c] || (m.aliases[c] = [].concat(h[c] || []), m.aliases[c].concat(c).forEach(function(n) {
411
+ m.aliases[c] || (m.aliases[c] = [].concat(_[c] || []), m.aliases[c].concat(c).forEach(function(n) {
412
412
  if (/-/.test(n) && k["camel-case-expansion"]) {
413
413
  const t = $(n);
414
- t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), C[t] = !0);
414
+ t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
415
415
  }
416
416
  }), m.aliases[c].concat(c).forEach(function(n) {
417
417
  if (n.length > 1 && /[A-Z]/.test(n) && k["camel-case-expansion"]) {
418
- const t = Oe(n, "-");
419
- t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), C[t] = !0);
418
+ const t = Ee(n, "-");
419
+ t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
420
420
  }
421
421
  }), m.aliases[c].forEach(function(n) {
422
422
  m.aliases[n] = [c].concat(m.aliases[c].filter(function(t) {
@@ -442,8 +442,8 @@ class Ee {
442
442
  return t && ce(t[1]);
443
443
  });
444
444
  }
445
- function Ie(e) {
446
- if (e.match(P) || !e.match(/^-[^-]+/))
445
+ function ye(e) {
446
+ if (e.match(Q) || !e.match(/^-[^-]+/))
447
447
  return !1;
448
448
  let a = !0, c;
449
449
  const n = e.slice(1).split("");
@@ -457,44 +457,44 @@ class Ee {
457
457
  }
458
458
  return a;
459
459
  }
460
- function K(e) {
461
- return k["unknown-options-as-args"] && ye(e);
460
+ function H(e) {
461
+ return k["unknown-options-as-args"] && Ie(e);
462
462
  }
463
- function ye(e) {
464
- return e = e.replace(/^-{3,}/, "--"), e.match(P) || Ie(e) ? !1 : !Be(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
463
+ function Ie(e) {
464
+ return e = e.replace(/^-{3,}/, "--"), e.match(Q) || ye(e) ? !1 : !Be(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
465
465
  }
466
- function z(e) {
466
+ function R(e) {
467
467
  return !g(e, m.bools) && !g(e, m.counts) && `${e}` in q ? q[e] : Le(Me(e));
468
468
  }
469
469
  function Le(e) {
470
470
  return {
471
- [A.BOOLEAN]: !0,
472
- [A.STRING]: "",
473
- [A.NUMBER]: void 0,
474
- [A.ARRAY]: []
471
+ [P.BOOLEAN]: !0,
472
+ [P.STRING]: "",
473
+ [P.NUMBER]: void 0,
474
+ [P.ARRAY]: []
475
475
  }[e];
476
476
  }
477
477
  function Me(e) {
478
- let a = A.BOOLEAN;
479
- return g(e, m.strings) ? a = A.STRING : g(e, m.numbers) ? a = A.NUMBER : g(e, m.bools) ? a = A.BOOLEAN : g(e, m.arrays) && (a = A.ARRAY), a;
478
+ let a = P.BOOLEAN;
479
+ return g(e, m.strings) ? a = P.STRING : g(e, m.numbers) ? a = P.NUMBER : g(e, m.bools) ? a = P.BOOLEAN : g(e, m.arrays) && (a = P.ARRAY), a;
480
480
  }
481
481
  function T(e) {
482
482
  return e === void 0;
483
483
  }
484
- function Qe() {
485
- Object.keys(m.counts).find((e) => g(e, m.arrays) ? (M = Error(G("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, m.nargs) ? (M = Error(G("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
484
+ function Ae() {
485
+ Object.keys(m.counts).find((e) => g(e, m.arrays) ? (M = Error(C("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, m.nargs) ? (M = Error(C("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
486
486
  }
487
487
  return {
488
488
  aliases: Object.assign({}, m.aliases),
489
- argv: Object.assign(se, b),
489
+ argv: Object.assign(se, w),
490
490
  configuration: k,
491
491
  defaulted: Object.assign({}, ne),
492
492
  error: M,
493
- newAliases: Object.assign({}, C)
493
+ newAliases: Object.assign({}, G)
494
494
  };
495
495
  }
496
496
  }
497
- function je(i) {
497
+ function Fe(i) {
498
498
  const o = [], u = /* @__PURE__ */ Object.create(null);
499
499
  let s = !0;
500
500
  for (Object.keys(i).forEach(function(r) {
@@ -502,20 +502,20 @@ function je(i) {
502
502
  }); s; ) {
503
503
  s = !1;
504
504
  for (let r = 0; r < o.length; r++)
505
- for (let _ = r + 1; _ < o.length; _++)
505
+ for (let h = r + 1; h < o.length; h++)
506
506
  if (o[r].filter(function(k) {
507
- return o[_].indexOf(k) !== -1;
507
+ return o[h].indexOf(k) !== -1;
508
508
  }).length) {
509
- o[r] = o[r].concat(o[_]), o.splice(_, 1), s = !0;
509
+ o[r] = o[r].concat(o[h]), o.splice(h, 1), s = !0;
510
510
  break;
511
511
  }
512
512
  }
513
513
  return o.forEach(function(r) {
514
- r = r.filter(function(h, k, q) {
515
- return q.indexOf(h) === k;
514
+ r = r.filter(function(_, k, q) {
515
+ return q.indexOf(_) === k;
516
516
  });
517
- const _ = r.pop();
518
- _ !== void 0 && typeof _ == "string" && (u[_] = r);
517
+ const h = r.pop();
518
+ h !== void 0 && typeof h == "string" && (u[h] = r);
519
519
  }), u;
520
520
  }
521
521
  function Z(i) {
@@ -524,7 +524,7 @@ function Z(i) {
524
524
  function pe(i) {
525
525
  return i === "__proto__" ? "___proto___" : i;
526
526
  }
527
- function Ve(i) {
527
+ function je(i) {
528
528
  return typeof i == "string" && (i[0] === "'" || i[0] === '"') && i[i.length - 1] === i[0] ? i.substring(1, i.length - 1) : i;
529
529
  }
530
530
  /**
@@ -539,12 +539,12 @@ var X, ee, te;
539
539
  const le = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12, de = (ee = (X = process == null ? void 0 : process.versions) === null || X === void 0 ? void 0 : X.node) !== null && ee !== void 0 ? ee : (te = process == null ? void 0 : process.version) === null || te === void 0 ? void 0 : te.slice(1);
540
540
  if (de && Number(de.match(/^([^.]+)/)[1]) < le)
541
541
  throw Error(`yargs parser supports a minimum Node.js version of ${le}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
542
- const Fe = process ? process.env : {};
543
- new Ee({
542
+ const Ve = process ? process.env : {};
543
+ new De({
544
544
  cwd: process.cwd,
545
- env: () => Fe,
545
+ env: () => Ve,
546
546
  format: ke,
547
- normalize: Ae,
547
+ normalize: Pe,
548
548
  resolve: ie,
549
549
  // TODO: figure out a way to combine ESM and CJS coverage, such that
550
550
  // we can exercise all the lines below:
@@ -556,10 +556,10 @@ new Ee({
556
556
  throw Error("only .json config files are supported in ESM");
557
557
  }
558
558
  });
559
- const He = {
559
+ const Ke = {
560
560
  fs: {
561
561
  readFileSync: ge,
562
- writeFile: Pe
562
+ writeFile: Qe
563
563
  },
564
564
  format: ke,
565
565
  resolve: ie,
@@ -571,8 +571,8 @@ const He = {
571
571
  }
572
572
  }
573
573
  };
574
- let Q;
575
- class Ke {
574
+ let A;
575
+ class He {
576
576
  constructor(o) {
577
577
  o = o || {}, this.directory = o.directory || "./locales", this.updateFiles = typeof o.updateFiles == "boolean" ? o.updateFiles : !0, this.locale = o.locale || "en", this.fallbackToLanguage = typeof o.fallbackToLanguage == "boolean" ? o.fallbackToLanguage : !0, this.cache = /* @__PURE__ */ Object.create(null), this.writeQueue = [];
578
578
  }
@@ -587,24 +587,24 @@ class Ke {
587
587
  directory: this.directory,
588
588
  locale: this.locale,
589
589
  cb: s
590
- })) : s(), Q.format.apply(Q.format, [this.cache[this.locale][u] || u].concat(o));
590
+ })) : s(), A.format.apply(A.format, [this.cache[this.locale][u] || u].concat(o));
591
591
  }
592
592
  __n() {
593
593
  const o = Array.prototype.slice.call(arguments), u = o.shift(), s = o.shift(), r = o.shift();
594
- let _ = function() {
594
+ let h = function() {
595
595
  };
596
- typeof o[o.length - 1] == "function" && (_ = o.pop()), this.cache[this.locale] || this._readLocaleFile();
597
- let h = r === 1 ? u : s;
598
- this.cache[this.locale][u] && (h = this.cache[this.locale][u][r === 1 ? "one" : "other"]), !this.cache[this.locale][u] && this.updateFiles ? (this.cache[this.locale][u] = {
596
+ typeof o[o.length - 1] == "function" && (h = o.pop()), this.cache[this.locale] || this._readLocaleFile();
597
+ let _ = r === 1 ? u : s;
598
+ this.cache[this.locale][u] && (_ = this.cache[this.locale][u][r === 1 ? "one" : "other"]), !this.cache[this.locale][u] && this.updateFiles ? (this.cache[this.locale][u] = {
599
599
  one: u,
600
600
  other: s
601
601
  }, this._enqueueWrite({
602
602
  directory: this.directory,
603
603
  locale: this.locale,
604
- cb: _
605
- })) : _();
606
- const k = [h];
607
- return ~h.indexOf("%d") && k.push(r), Q.format.apply(Q.format, k.concat(o));
604
+ cb: h
605
+ })) : h();
606
+ const k = [_];
607
+ return ~_.indexOf("%d") && k.push(r), A.format.apply(A.format, k.concat(o));
608
608
  }
609
609
  setLocale(o) {
610
610
  this.locale = o;
@@ -619,25 +619,25 @@ class Ke {
619
619
  }
620
620
  _taggedLiteral(o, ...u) {
621
621
  let s = "";
622
- return o.forEach(function(r, _) {
623
- const h = u[_ + 1];
624
- s += r, typeof h < "u" && (s += "%s");
622
+ return o.forEach(function(r, h) {
623
+ const _ = u[h + 1];
624
+ s += r, typeof _ < "u" && (s += "%s");
625
625
  }), this.__.apply(this, [s].concat([].slice.call(u, 1)));
626
626
  }
627
627
  _enqueueWrite(o) {
628
628
  this.writeQueue.push(o), this.writeQueue.length === 1 && this._processWriteQueue();
629
629
  }
630
630
  _processWriteQueue() {
631
- const o = this, u = this.writeQueue[0], s = u.directory, r = u.locale, _ = u.cb, h = this._resolveLocaleFile(s, r), k = JSON.stringify(this.cache[r], null, 2);
632
- Q.fs.writeFile(h, k, "utf-8", function(q) {
633
- o.writeQueue.shift(), o.writeQueue.length > 0 && o._processWriteQueue(), _(q);
631
+ const o = this, u = this.writeQueue[0], s = u.directory, r = u.locale, h = u.cb, _ = this._resolveLocaleFile(s, r), k = JSON.stringify(this.cache[r], null, 2);
632
+ A.fs.writeFile(_, k, "utf-8", function(q) {
633
+ o.writeQueue.shift(), o.writeQueue.length > 0 && o._processWriteQueue(), h(q);
634
634
  });
635
635
  }
636
636
  _readLocaleFile() {
637
637
  let o = {};
638
638
  const u = this._resolveLocaleFile(this.directory, this.locale);
639
639
  try {
640
- Q.fs.readFileSync && (o = JSON.parse(Q.fs.readFileSync(u, "utf-8")));
640
+ A.fs.readFileSync && (o = JSON.parse(A.fs.readFileSync(u, "utf-8")));
641
641
  } catch (s) {
642
642
  if (s instanceof SyntaxError && (s.message = "syntax error in " + u), s.code === "ENOENT")
643
643
  o = {};
@@ -647,20 +647,20 @@ class Ke {
647
647
  this.cache[this.locale] = o;
648
648
  }
649
649
  _resolveLocaleFile(o, u) {
650
- let s = Q.resolve(o, "./", u + ".json");
650
+ let s = A.resolve(o, "./", u + ".json");
651
651
  if (this.fallbackToLanguage && !this._fileExistsSync(s) && ~u.lastIndexOf("_")) {
652
- const r = Q.resolve(o, "./", u.split("_")[0] + ".json");
652
+ const r = A.resolve(o, "./", u.split("_")[0] + ".json");
653
653
  this._fileExistsSync(r) && (s = r);
654
654
  }
655
655
  return s;
656
656
  }
657
657
  _fileExistsSync(o) {
658
- return Q.exists(o);
658
+ return A.exists(o);
659
659
  }
660
660
  }
661
661
  function $e(i, o) {
662
- Q = o;
663
- const u = new Ke(i);
662
+ A = o;
663
+ const u = new He(i);
664
664
  return {
665
665
  __: u.__.bind(u),
666
666
  __n: u.__n.bind(u),
@@ -670,7 +670,7 @@ function $e(i, o) {
670
670
  locale: u.locale
671
671
  };
672
672
  }
673
- const We = (i) => $e(i, He);
673
+ const We = (i) => $e(i, Ke);
674
674
  let N;
675
675
  try {
676
676
  N = Se(import.meta.url);
@@ -1021,44 +1021,60 @@ const oe = [
1021
1021
  ]
1022
1022
  },
1023
1023
  context_window: 2e5,
1024
- prices: {
1025
- input_mtok: {
1026
- base: 5,
1027
- tiers: [
1028
- {
1029
- start: 2e5,
1030
- price: 10
1031
- }
1032
- ]
1033
- },
1034
- cache_write_mtok: {
1035
- base: 6.25,
1036
- tiers: [
1037
- {
1038
- start: 2e5,
1039
- price: 12.5
1040
- }
1041
- ]
1042
- },
1043
- cache_read_mtok: {
1044
- base: 0.5,
1045
- tiers: [
1046
- {
1047
- start: 2e5,
1048
- price: 1
1024
+ prices: [
1025
+ {
1026
+ prices: {
1027
+ input_mtok: {
1028
+ base: 5,
1029
+ tiers: [
1030
+ {
1031
+ start: 2e5,
1032
+ price: 10
1033
+ }
1034
+ ]
1035
+ },
1036
+ cache_write_mtok: {
1037
+ base: 6.25,
1038
+ tiers: [
1039
+ {
1040
+ start: 2e5,
1041
+ price: 12.5
1042
+ }
1043
+ ]
1044
+ },
1045
+ cache_read_mtok: {
1046
+ base: 0.5,
1047
+ tiers: [
1048
+ {
1049
+ start: 2e5,
1050
+ price: 1
1051
+ }
1052
+ ]
1053
+ },
1054
+ output_mtok: {
1055
+ base: 25,
1056
+ tiers: [
1057
+ {
1058
+ start: 2e5,
1059
+ price: 37.5
1060
+ }
1061
+ ]
1049
1062
  }
1050
- ]
1063
+ }
1051
1064
  },
1052
- output_mtok: {
1053
- base: 25,
1054
- tiers: [
1055
- {
1056
- start: 2e5,
1057
- price: 37.5
1058
- }
1059
- ]
1065
+ {
1066
+ constraint: {
1067
+ start_date: "2026-03-13",
1068
+ type: "start_date"
1069
+ },
1070
+ prices: {
1071
+ input_mtok: 5,
1072
+ cache_write_mtok: 6.25,
1073
+ cache_read_mtok: 0.5,
1074
+ output_mtok: 25
1075
+ }
1060
1076
  }
1061
- }
1077
+ ]
1062
1078
  },
1063
1079
  {
1064
1080
  id: "claude-sonnet-4-0",
@@ -1160,44 +1176,60 @@ const oe = [
1160
1176
  ]
1161
1177
  },
1162
1178
  context_window: 1e6,
1163
- prices: {
1164
- input_mtok: {
1165
- base: 3,
1166
- tiers: [
1167
- {
1168
- start: 2e5,
1169
- price: 6
1170
- }
1171
- ]
1172
- },
1173
- cache_write_mtok: {
1174
- base: 3.75,
1175
- tiers: [
1176
- {
1177
- start: 2e5,
1178
- price: 7.5
1179
- }
1180
- ]
1181
- },
1182
- cache_read_mtok: {
1183
- base: 0.3,
1184
- tiers: [
1185
- {
1186
- start: 2e5,
1187
- price: 0.6
1179
+ prices: [
1180
+ {
1181
+ prices: {
1182
+ input_mtok: {
1183
+ base: 3,
1184
+ tiers: [
1185
+ {
1186
+ start: 2e5,
1187
+ price: 6
1188
+ }
1189
+ ]
1190
+ },
1191
+ cache_write_mtok: {
1192
+ base: 3.75,
1193
+ tiers: [
1194
+ {
1195
+ start: 2e5,
1196
+ price: 7.5
1197
+ }
1198
+ ]
1199
+ },
1200
+ cache_read_mtok: {
1201
+ base: 0.3,
1202
+ tiers: [
1203
+ {
1204
+ start: 2e5,
1205
+ price: 0.6
1206
+ }
1207
+ ]
1208
+ },
1209
+ output_mtok: {
1210
+ base: 15,
1211
+ tiers: [
1212
+ {
1213
+ start: 2e5,
1214
+ price: 22.5
1215
+ }
1216
+ ]
1188
1217
  }
1189
- ]
1218
+ }
1190
1219
  },
1191
- output_mtok: {
1192
- base: 15,
1193
- tiers: [
1194
- {
1195
- start: 2e5,
1196
- price: 22.5
1197
- }
1198
- ]
1220
+ {
1221
+ constraint: {
1222
+ start_date: "2026-03-13",
1223
+ type: "start_date"
1224
+ },
1225
+ prices: {
1226
+ input_mtok: 3,
1227
+ cache_write_mtok: 3.75,
1228
+ cache_read_mtok: 0.3,
1229
+ output_mtok: 15
1230
+ }
1199
1231
  }
1200
- }
1232
+ ]
1201
1233
  },
1202
1234
  {
1203
1235
  id: "claude-v1",
@@ -1330,7 +1362,7 @@ const oe = [
1330
1362
  name: "Nova Lite",
1331
1363
  description: "Amazon Nova Lite 1.0 is a very low-cost multimodal model from Amazon that focused on fast processing of image, video, and text inputs to generate text output. Amazon Nova Lite can handle real-time customer interactions, document analysis, and visual question-answering tasks with high accuracy.",
1332
1364
  match: {
1333
- contains: "amazon.nova-lite-v1"
1365
+ contains: "amazon.nova-lite"
1334
1366
  },
1335
1367
  prices: {
1336
1368
  input_mtok: 0.06,
@@ -1343,7 +1375,7 @@ const oe = [
1343
1375
  name: "Nova Micro",
1344
1376
  description: "Amazon Nova Micro 1.0 is a text-only model that delivers the lowest latency responses in the Amazon Nova family of models at a very low cost. With a context length of 128K tokens and optimized for speed and cost, Amazon Nova Micro excels at tasks such as text summarization, translation, content classification, interactive chat, and brainstorming. It has simple mathematical reasoning and coding abilities.",
1345
1377
  match: {
1346
- contains: "amazon.nova-micro-v1"
1378
+ contains: "amazon.nova-micro"
1347
1379
  },
1348
1380
  prices: {
1349
1381
  input_mtok: 0.035,
@@ -1355,7 +1387,7 @@ const oe = [
1355
1387
  id: "amazon.nova-premier-v1:0",
1356
1388
  name: "Nova Premier",
1357
1389
  match: {
1358
- contains: "amazon.nova-premier-v1"
1390
+ contains: "amazon.nova-premier"
1359
1391
  },
1360
1392
  prices: {
1361
1393
  input_mtok: 2.5,
@@ -1368,7 +1400,7 @@ const oe = [
1368
1400
  name: "Nova Pro",
1369
1401
  description: "Amazon Nova Pro 1.0 is a capable multimodal model from Amazon focused on providing a combination of accuracy, speed, and cost for a wide range of tasks. As of December 2024, it achieves state-of-the-art performance on key benchmarks including visual question answering (TextVQA) and video understanding (VATEX).",
1370
1402
  match: {
1371
- contains: "amazon.nova-pro-v1"
1403
+ contains: "amazon.nova-pro"
1372
1404
  },
1373
1405
  prices: {
1374
1406
  input_mtok: 0.8,
@@ -1380,7 +1412,7 @@ const oe = [
1380
1412
  id: "amazon.nova-sonic-v1:0",
1381
1413
  name: "Nova Sonic",
1382
1414
  match: {
1383
- contains: "amazon.nova-sonic-v1"
1415
+ contains: "amazon.nova-sonic"
1384
1416
  },
1385
1417
  prices: {
1386
1418
  input_mtok: 0.06,
@@ -1393,7 +1425,7 @@ const oe = [
1393
1425
  id: "amazon.titan-embed-text-v1",
1394
1426
  name: "Titan Embeddings G1 - Text",
1395
1427
  match: {
1396
- contains: "amazon.titan-embed-text-v1"
1428
+ contains: "amazon.titan-embed-text"
1397
1429
  },
1398
1430
  prices: {
1399
1431
  input_mtok: 0.1
@@ -1425,7 +1457,7 @@ const oe = [
1425
1457
  id: "deepseek.r1-v1:0",
1426
1458
  name: "DeepSeek-R1",
1427
1459
  match: {
1428
- contains: "deepseek.r1-v1"
1460
+ contains: "deepseek.r1"
1429
1461
  },
1430
1462
  prices: {
1431
1463
  input_mtok: 1.35,
@@ -1435,7 +1467,7 @@ const oe = [
1435
1467
  {
1436
1468
  id: "global.anthropic.claude-haiku-4-5-20251001-v1:0",
1437
1469
  match: {
1438
- starts_with: "global.anthropic.claude-haiku-4-5-20251001-v1"
1470
+ contains: "global.anthropic.claude-haiku-4-5-20251001"
1439
1471
  },
1440
1472
  prices: {
1441
1473
  input_mtok: 1,
@@ -1444,10 +1476,66 @@ const oe = [
1444
1476
  output_mtok: 5
1445
1477
  }
1446
1478
  },
1479
+ {
1480
+ id: "global.anthropic.claude-opus-4-5-v1:0",
1481
+ match: {
1482
+ contains: "global.anthropic.claude-opus-4-5"
1483
+ },
1484
+ prices: {
1485
+ input_mtok: 5,
1486
+ cache_write_mtok: 6.25,
1487
+ cache_read_mtok: 0.5,
1488
+ output_mtok: 25
1489
+ }
1490
+ },
1491
+ {
1492
+ id: "global.anthropic.claude-opus-4-6-v1:0",
1493
+ match: {
1494
+ contains: "global.anthropic.claude-opus-4-6"
1495
+ },
1496
+ prices: {
1497
+ input_mtok: {
1498
+ base: 5,
1499
+ tiers: [
1500
+ {
1501
+ start: 2e5,
1502
+ price: 10
1503
+ }
1504
+ ]
1505
+ },
1506
+ cache_write_mtok: {
1507
+ base: 6.25,
1508
+ tiers: [
1509
+ {
1510
+ start: 2e5,
1511
+ price: 12.5
1512
+ }
1513
+ ]
1514
+ },
1515
+ cache_read_mtok: {
1516
+ base: 0.5,
1517
+ tiers: [
1518
+ {
1519
+ start: 2e5,
1520
+ price: 1
1521
+ }
1522
+ ]
1523
+ },
1524
+ output_mtok: {
1525
+ base: 25,
1526
+ tiers: [
1527
+ {
1528
+ start: 2e5,
1529
+ price: 37.5
1530
+ }
1531
+ ]
1532
+ }
1533
+ }
1534
+ },
1447
1535
  {
1448
1536
  id: "global.anthropic.claude-sonnet-4-20250514-v1:0",
1449
1537
  match: {
1450
- starts_with: "global.anthropic.claude-sonnet-4-20250514-v1"
1538
+ contains: "global.anthropic.claude-sonnet-4-20250514"
1451
1539
  },
1452
1540
  prices: {
1453
1541
  input_mtok: 3,
@@ -1459,7 +1547,7 @@ const oe = [
1459
1547
  {
1460
1548
  id: "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
1461
1549
  match: {
1462
- starts_with: "global.anthropic.claude-sonnet-4-5-20250929-v1"
1550
+ contains: "global.anthropic.claude-sonnet-4-5-20250929"
1463
1551
  },
1464
1552
  prices: {
1465
1553
  input_mtok: 3,
@@ -1468,11 +1556,55 @@ const oe = [
1468
1556
  output_mtok: 15
1469
1557
  }
1470
1558
  },
1559
+ {
1560
+ id: "global.anthropic.claude-sonnet-4-6-v1:0",
1561
+ match: {
1562
+ contains: "global.anthropic.claude-sonnet-4-6"
1563
+ },
1564
+ prices: {
1565
+ input_mtok: {
1566
+ base: 3,
1567
+ tiers: [
1568
+ {
1569
+ start: 2e5,
1570
+ price: 6
1571
+ }
1572
+ ]
1573
+ },
1574
+ cache_write_mtok: {
1575
+ base: 3.75,
1576
+ tiers: [
1577
+ {
1578
+ start: 2e5,
1579
+ price: 7.5
1580
+ }
1581
+ ]
1582
+ },
1583
+ cache_read_mtok: {
1584
+ base: 0.3,
1585
+ tiers: [
1586
+ {
1587
+ start: 2e5,
1588
+ price: 0.6
1589
+ }
1590
+ ]
1591
+ },
1592
+ output_mtok: {
1593
+ base: 15,
1594
+ tiers: [
1595
+ {
1596
+ start: 2e5,
1597
+ price: 22.5
1598
+ }
1599
+ ]
1600
+ }
1601
+ }
1602
+ },
1471
1603
  {
1472
1604
  id: "meta.llama3-1-70b-instruct-v1:0",
1473
1605
  name: "Llama 3.1 70B Instruct",
1474
1606
  match: {
1475
- contains: "meta.llama3-1-70b-instruct-v1"
1607
+ contains: "meta.llama3-1-70b-instruct"
1476
1608
  },
1477
1609
  prices: {
1478
1610
  input_mtok: 0.72,
@@ -1483,7 +1615,7 @@ const oe = [
1483
1615
  id: "meta.llama3-1-8b-instruct-v1:0",
1484
1616
  name: "Llama 3.1 8B Instruct",
1485
1617
  match: {
1486
- contains: "meta.llama3-1-8b-instruct-v1"
1618
+ contains: "meta.llama3-1-8b-instruct"
1487
1619
  },
1488
1620
  prices: {
1489
1621
  input_mtok: 0.22,
@@ -1494,7 +1626,7 @@ const oe = [
1494
1626
  id: "meta.llama3-2-11b-instruct-v1:0",
1495
1627
  name: "Llama 3.2 11B Instruct",
1496
1628
  match: {
1497
- contains: "meta.llama3-2-11b-instruct-v1"
1629
+ contains: "meta.llama3-2-11b-instruct"
1498
1630
  },
1499
1631
  prices: {
1500
1632
  input_mtok: 0.16,
@@ -1505,7 +1637,7 @@ const oe = [
1505
1637
  id: "meta.llama3-2-1b-instruct-v1:0",
1506
1638
  name: "Llama 3.2 1B Instruct",
1507
1639
  match: {
1508
- contains: "meta.llama3-2-1b-instruct-v1"
1640
+ contains: "meta.llama3-2-1b-instruct"
1509
1641
  },
1510
1642
  prices: {
1511
1643
  input_mtok: 0.1,
@@ -1516,7 +1648,7 @@ const oe = [
1516
1648
  id: "meta.llama3-2-3b-instruct-v1:0",
1517
1649
  name: "Llama 3.2 3B Instruct",
1518
1650
  match: {
1519
- contains: "meta.llama3-2-3b-instruct-v1"
1651
+ contains: "meta.llama3-2-3b-instruct"
1520
1652
  },
1521
1653
  prices: {
1522
1654
  input_mtok: 0.15,
@@ -1527,7 +1659,7 @@ const oe = [
1527
1659
  id: "meta.llama3-2-90b-instruct-v1:0",
1528
1660
  name: "Llama 3.2 90B Instruct",
1529
1661
  match: {
1530
- contains: "meta.llama3-2-90b-instruct-v1"
1662
+ contains: "meta.llama3-2-90b-instruct"
1531
1663
  },
1532
1664
  prices: {
1533
1665
  input_mtok: 0.72,
@@ -1538,7 +1670,7 @@ const oe = [
1538
1670
  id: "meta.llama3-3-70b-instruct-v1:0",
1539
1671
  name: "Llama 3.3 70B Instruct",
1540
1672
  match: {
1541
- contains: "meta.llama3-3-70b-instruct-v1"
1673
+ contains: "meta.llama3-3-70b-instruct"
1542
1674
  },
1543
1675
  prices: {
1544
1676
  input_mtok: 0.72,
@@ -1549,7 +1681,7 @@ const oe = [
1549
1681
  id: "meta.llama3-70b-instruct-v1:0",
1550
1682
  name: "Llama 3 70B Instruct",
1551
1683
  match: {
1552
- contains: "meta.llama3-70b-instruct-v1"
1684
+ contains: "meta.llama3-70b-instruct"
1553
1685
  },
1554
1686
  prices: {
1555
1687
  input_mtok: 2.65,
@@ -1560,7 +1692,7 @@ const oe = [
1560
1692
  id: "meta.llama3-8b-instruct-v1:0",
1561
1693
  name: "Llama 3 8B Instruct",
1562
1694
  match: {
1563
- contains: "meta.llama3-8b-instruct-v1"
1695
+ contains: "meta.llama3-8b-instruct"
1564
1696
  },
1565
1697
  prices: {
1566
1698
  input_mtok: 0.3,
@@ -1571,7 +1703,7 @@ const oe = [
1571
1703
  id: "meta.llama4-maverick-17b-instruct-v1:0",
1572
1704
  name: "Llama 4 Maverick 17B Instruct",
1573
1705
  match: {
1574
- contains: "meta.llama4-maverick-17b-instruct-v1"
1706
+ contains: "meta.llama4-maverick-17b-instruct"
1575
1707
  },
1576
1708
  prices: {
1577
1709
  input_mtok: 0.24,
@@ -1582,7 +1714,7 @@ const oe = [
1582
1714
  id: "meta.llama4-scout-17b-instruct-v1:0",
1583
1715
  name: "Llama 4 Scout 17B Instruct",
1584
1716
  match: {
1585
- contains: "meta.llama4-scout-17b-instruct-v1"
1717
+ contains: "meta.llama4-scout-17b-instruct"
1586
1718
  },
1587
1719
  prices: {
1588
1720
  input_mtok: 0.17,
@@ -1604,7 +1736,7 @@ const oe = [
1604
1736
  id: "mistral.mistral-large-2402-v1:0",
1605
1737
  name: "Mistral Large (24.02)",
1606
1738
  match: {
1607
- contains: "mistral.mistral-large-2402-v1"
1739
+ contains: "mistral.mistral-large-2402"
1608
1740
  },
1609
1741
  prices: {
1610
1742
  input_mtok: 4,
@@ -1615,7 +1747,7 @@ const oe = [
1615
1747
  id: "mistral.mistral-small-2402-v1:0",
1616
1748
  name: "Mistral Small (24.02)",
1617
1749
  match: {
1618
- contains: "mistral.mistral-small-2402-v1"
1750
+ contains: "mistral.mistral-small-2402"
1619
1751
  },
1620
1752
  prices: {
1621
1753
  input_mtok: 1,
@@ -1637,7 +1769,7 @@ const oe = [
1637
1769
  id: "mistral.pixtral-large-2502-v1:0",
1638
1770
  name: "Pixtral Large (25.02)",
1639
1771
  match: {
1640
- contains: "mistral.pixtral-large-2502-v1"
1772
+ contains: "mistral.pixtral-large-2502"
1641
1773
  },
1642
1774
  prices: {
1643
1775
  input_mtok: 2,
@@ -1670,7 +1802,7 @@ const oe = [
1670
1802
  id: "qwen.qwen3-32b-v1:0",
1671
1803
  name: "Qwen3 32B (dense)",
1672
1804
  match: {
1673
- contains: "qwen.qwen3-32b-v1"
1805
+ contains: "qwen.qwen3-32b"
1674
1806
  },
1675
1807
  prices: {
1676
1808
  input_mtok: 0.15,
@@ -1681,7 +1813,7 @@ const oe = [
1681
1813
  id: "qwen.qwen3-coder-30b-a3b-v1:0",
1682
1814
  name: "Qwen3-Coder-30B-A3B-Instruct",
1683
1815
  match: {
1684
- contains: "qwen.qwen3-coder-30b-a3b-v1"
1816
+ contains: "qwen.qwen3-coder-30b-a3b"
1685
1817
  },
1686
1818
  prices: {
1687
1819
  input_mtok: 0.15,
@@ -1692,36 +1824,28 @@ const oe = [
1692
1824
  id: "qwen.qwen3-coder-480b-a35b-v1:0",
1693
1825
  name: "Qwen3-Coder-480B-A35B-Instruct",
1694
1826
  match: {
1695
- contains: "qwen.qwen3-coder-480b-a35b-v1"
1827
+ contains: "qwen.qwen3-coder-480b-a35b"
1696
1828
  },
1697
1829
  prices: {
1698
1830
  input_mtok: 0.45,
1699
1831
  output_mtok: 1.8
1700
1832
  }
1701
1833
  },
1834
+ {
1835
+ id: "qwen.qwen3-vl-235b-a22b-v1:0",
1836
+ name: "Qwen3-VL-235B-A22B-Instruct",
1837
+ match: {
1838
+ contains: "qwen.qwen3-vl-235b-a22b"
1839
+ },
1840
+ prices: {
1841
+ input_mtok: 0.53,
1842
+ output_mtok: 2.66
1843
+ }
1844
+ },
1702
1845
  {
1703
1846
  id: "regional.anthropic.claude-3-5-haiku-20241022-v1:0",
1704
1847
  match: {
1705
- or: [
1706
- {
1707
- starts_with: "us.anthropic.claude-3-5-haiku-20241022-v1"
1708
- },
1709
- {
1710
- starts_with: "au.anthropic.claude-3-5-haiku-20241022-v1"
1711
- },
1712
- {
1713
- starts_with: "apac.anthropic.claude-3-5-haiku-20241022-v1"
1714
- },
1715
- {
1716
- starts_with: "eu.anthropic.claude-3-5-haiku-20241022-v1"
1717
- },
1718
- {
1719
- starts_with: "us-gov.anthropic.claude-3-5-haiku-20241022-v1"
1720
- },
1721
- {
1722
- starts_with: "jp.anthropic.claude-3-5-haiku-20241022-v1"
1723
- }
1724
- ]
1848
+ contains: "claude-3-5-haiku-20241022"
1725
1849
  },
1726
1850
  prices: {
1727
1851
  input_mtok: 0.8,
@@ -1733,26 +1857,7 @@ const oe = [
1733
1857
  {
1734
1858
  id: "regional.anthropic.claude-3-5-sonnet-20240620-v1:0",
1735
1859
  match: {
1736
- or: [
1737
- {
1738
- starts_with: "us.anthropic.claude-3-5-sonnet-20240620-v1"
1739
- },
1740
- {
1741
- starts_with: "au.anthropic.claude-3-5-sonnet-20240620-v1"
1742
- },
1743
- {
1744
- starts_with: "apac.anthropic.claude-3-5-sonnet-20240620-v1"
1745
- },
1746
- {
1747
- starts_with: "eu.anthropic.claude-3-5-sonnet-20240620-v1"
1748
- },
1749
- {
1750
- starts_with: "us-gov.anthropic.claude-3-5-sonnet-20240620-v1"
1751
- },
1752
- {
1753
- starts_with: "jp.anthropic.claude-3-5-sonnet-20240620-v1"
1754
- }
1755
- ]
1860
+ contains: "claude-3-5-sonnet-20240620"
1756
1861
  },
1757
1862
  prices: {
1758
1863
  input_mtok: 3,
@@ -1764,26 +1869,7 @@ const oe = [
1764
1869
  {
1765
1870
  id: "regional.anthropic.claude-3-5-sonnet-20241022-v2:0",
1766
1871
  match: {
1767
- or: [
1768
- {
1769
- starts_with: "us.anthropic.claude-3-5-sonnet-20241022-v2"
1770
- },
1771
- {
1772
- starts_with: "au.anthropic.claude-3-5-sonnet-20241022-v2"
1773
- },
1774
- {
1775
- starts_with: "apac.anthropic.claude-3-5-sonnet-20241022-v2"
1776
- },
1777
- {
1778
- starts_with: "eu.anthropic.claude-3-5-sonnet-20241022-v2"
1779
- },
1780
- {
1781
- starts_with: "us-gov.anthropic.claude-3-5-sonnet-20241022-v2"
1782
- },
1783
- {
1784
- starts_with: "jp.anthropic.claude-3-5-sonnet-20241022-v2"
1785
- }
1786
- ]
1872
+ contains: "claude-3-5-sonnet-20241022"
1787
1873
  },
1788
1874
  prices: {
1789
1875
  input_mtok: 3,
@@ -1795,26 +1881,7 @@ const oe = [
1795
1881
  {
1796
1882
  id: "regional.anthropic.claude-3-7-sonnet-20250219-v1:0",
1797
1883
  match: {
1798
- or: [
1799
- {
1800
- starts_with: "us.anthropic.claude-3-7-sonnet-20250219-v1"
1801
- },
1802
- {
1803
- starts_with: "au.anthropic.claude-3-7-sonnet-20250219-v1"
1804
- },
1805
- {
1806
- starts_with: "apac.anthropic.claude-3-7-sonnet-20250219-v1"
1807
- },
1808
- {
1809
- starts_with: "eu.anthropic.claude-3-7-sonnet-20250219-v1"
1810
- },
1811
- {
1812
- starts_with: "us-gov.anthropic.claude-3-7-sonnet-20250219-v1"
1813
- },
1814
- {
1815
- starts_with: "jp.anthropic.claude-3-7-sonnet-20250219-v1"
1816
- }
1817
- ]
1884
+ contains: "claude-3-7-sonnet-20250219"
1818
1885
  },
1819
1886
  prices: {
1820
1887
  input_mtok: 3,
@@ -1825,246 +1892,394 @@ const oe = [
1825
1892
  },
1826
1893
  {
1827
1894
  id: "regional.anthropic.claude-3-haiku-20240307-v1:0",
1895
+ match: {
1896
+ contains: "claude-3-haiku-20240307"
1897
+ },
1898
+ prices: {
1899
+ input_mtok: 0.25,
1900
+ output_mtok: 1.25
1901
+ }
1902
+ },
1903
+ {
1904
+ id: "regional.anthropic.claude-3-opus-20240229-v1:0",
1905
+ match: {
1906
+ contains: "claude-3-opus-20240229"
1907
+ },
1908
+ prices: {
1909
+ input_mtok: 15,
1910
+ output_mtok: 75
1911
+ }
1912
+ },
1913
+ {
1914
+ id: "regional.anthropic.claude-3-sonnet-20240229-v1:0",
1915
+ match: {
1916
+ contains: "claude-3-sonnet-20240229"
1917
+ },
1918
+ prices: {
1919
+ input_mtok: 3,
1920
+ cache_write_mtok: 3.75,
1921
+ cache_read_mtok: 0.3,
1922
+ output_mtok: 15
1923
+ }
1924
+ },
1925
+ {
1926
+ id: "regional.anthropic.claude-haiku-4-5-20251001-v1:0",
1828
1927
  match: {
1829
1928
  or: [
1830
1929
  {
1831
- starts_with: "us.anthropic.claude-3-haiku-20240307-v1"
1930
+ starts_with: "anthropic.claude-haiku-4-5-20251001"
1931
+ },
1932
+ {
1933
+ starts_with: "claude-haiku-4-5-20251001"
1934
+ },
1935
+ {
1936
+ contains: "us.anthropic.claude-haiku-4-5-20251001"
1832
1937
  },
1833
1938
  {
1834
- starts_with: "au.anthropic.claude-3-haiku-20240307-v1"
1939
+ contains: "au.anthropic.claude-haiku-4-5-20251001"
1835
1940
  },
1836
1941
  {
1837
- starts_with: "apac.anthropic.claude-3-haiku-20240307-v1"
1942
+ contains: "apac.anthropic.claude-haiku-4-5-20251001"
1838
1943
  },
1839
1944
  {
1840
- starts_with: "eu.anthropic.claude-3-haiku-20240307-v1"
1945
+ contains: "eu.anthropic.claude-haiku-4-5-20251001"
1841
1946
  },
1842
1947
  {
1843
- starts_with: "us-gov.anthropic.claude-3-haiku-20240307-v1"
1948
+ contains: "us-gov.anthropic.claude-haiku-4-5-20251001"
1844
1949
  },
1845
1950
  {
1846
- starts_with: "jp.anthropic.claude-3-haiku-20240307-v1"
1951
+ contains: "jp.anthropic.claude-haiku-4-5-20251001"
1847
1952
  }
1848
1953
  ]
1849
1954
  },
1850
1955
  prices: {
1851
- input_mtok: 0.25,
1852
- output_mtok: 1.25
1956
+ input_mtok: 1.1,
1957
+ cache_write_mtok: 1.375,
1958
+ cache_read_mtok: 0.11,
1959
+ output_mtok: 5.5
1853
1960
  }
1854
1961
  },
1855
1962
  {
1856
- id: "regional.anthropic.claude-3-opus-20240229-v1:0",
1963
+ id: "regional.anthropic.claude-opus-4-1-20250805-v1:0",
1857
1964
  match: {
1858
1965
  or: [
1859
1966
  {
1860
- starts_with: "us.anthropic.claude-3-opus-20240229-v1"
1967
+ starts_with: "anthropic.claude-opus-4-1-20250805"
1968
+ },
1969
+ {
1970
+ starts_with: "claude-opus-4-1-20250805"
1971
+ },
1972
+ {
1973
+ contains: "us.anthropic.claude-opus-4-1-20250805"
1861
1974
  },
1862
1975
  {
1863
- starts_with: "au.anthropic.claude-3-opus-20240229-v1"
1976
+ contains: "au.anthropic.claude-opus-4-1-20250805"
1864
1977
  },
1865
1978
  {
1866
- starts_with: "apac.anthropic.claude-3-opus-20240229-v1"
1979
+ contains: "apac.anthropic.claude-opus-4-1-20250805"
1867
1980
  },
1868
1981
  {
1869
- starts_with: "eu.anthropic.claude-3-opus-20240229-v1"
1982
+ contains: "eu.anthropic.claude-opus-4-1-20250805"
1870
1983
  },
1871
1984
  {
1872
- starts_with: "us-gov.anthropic.claude-3-opus-20240229-v1"
1985
+ contains: "us-gov.anthropic.claude-opus-4-1-20250805"
1873
1986
  },
1874
1987
  {
1875
- starts_with: "jp.anthropic.claude-3-opus-20240229-v1"
1988
+ contains: "jp.anthropic.claude-opus-4-1-20250805"
1876
1989
  }
1877
1990
  ]
1878
1991
  },
1879
1992
  prices: {
1880
1993
  input_mtok: 15,
1994
+ cache_write_mtok: 18.75,
1995
+ cache_read_mtok: 1.5,
1881
1996
  output_mtok: 75
1882
1997
  }
1883
1998
  },
1884
1999
  {
1885
- id: "regional.anthropic.claude-3-sonnet-20240229-v1:0",
2000
+ id: "regional.anthropic.claude-opus-4-20250514-v1:0",
1886
2001
  match: {
1887
2002
  or: [
1888
2003
  {
1889
- starts_with: "us.anthropic.claude-3-sonnet-20240229-v1"
2004
+ starts_with: "anthropic.claude-opus-4-20250514"
2005
+ },
2006
+ {
2007
+ starts_with: "claude-opus-4-20250514"
2008
+ },
2009
+ {
2010
+ contains: "us.anthropic.claude-opus-4-20250514"
1890
2011
  },
1891
2012
  {
1892
- starts_with: "au.anthropic.claude-3-sonnet-20240229-v1"
2013
+ contains: "au.anthropic.claude-opus-4-20250514"
1893
2014
  },
1894
2015
  {
1895
- starts_with: "apac.anthropic.claude-3-sonnet-20240229-v1"
2016
+ contains: "apac.anthropic.claude-opus-4-20250514"
1896
2017
  },
1897
2018
  {
1898
- starts_with: "eu.anthropic.claude-3-sonnet-20240229-v1"
2019
+ contains: "eu.anthropic.claude-opus-4-20250514"
1899
2020
  },
1900
2021
  {
1901
- starts_with: "us-gov.anthropic.claude-3-sonnet-20240229-v1"
2022
+ contains: "us-gov.anthropic.claude-opus-4-20250514"
1902
2023
  },
1903
2024
  {
1904
- starts_with: "jp.anthropic.claude-3-sonnet-20240229-v1"
2025
+ contains: "jp.anthropic.claude-opus-4-20250514"
1905
2026
  }
1906
2027
  ]
1907
2028
  },
1908
2029
  prices: {
1909
- input_mtok: 3,
1910
- cache_write_mtok: 3.75,
1911
- cache_read_mtok: 0.3,
1912
- output_mtok: 15
2030
+ input_mtok: 15,
2031
+ cache_write_mtok: 18.75,
2032
+ cache_read_mtok: 1.5,
2033
+ output_mtok: 75
1913
2034
  }
1914
2035
  },
1915
2036
  {
1916
- id: "regional.anthropic.claude-haiku-4-5-20251001-v1:0",
2037
+ id: "regional.anthropic.claude-opus-4-5-v1:0",
1917
2038
  match: {
1918
2039
  or: [
1919
2040
  {
1920
- starts_with: "us.anthropic.claude-haiku-4-5-20251001-v1"
2041
+ starts_with: "anthropic.claude-opus-4-5"
2042
+ },
2043
+ {
2044
+ starts_with: "claude-opus-4-5"
2045
+ },
2046
+ {
2047
+ contains: "us.anthropic.claude-opus-4-5"
1921
2048
  },
1922
2049
  {
1923
- starts_with: "au.anthropic.claude-haiku-4-5-20251001-v1"
2050
+ contains: "au.anthropic.claude-opus-4-5"
1924
2051
  },
1925
2052
  {
1926
- starts_with: "apac.anthropic.claude-haiku-4-5-20251001-v1"
2053
+ contains: "apac.anthropic.claude-opus-4-5"
1927
2054
  },
1928
2055
  {
1929
- starts_with: "eu.anthropic.claude-haiku-4-5-20251001-v1"
2056
+ contains: "eu.anthropic.claude-opus-4-5"
1930
2057
  },
1931
2058
  {
1932
- starts_with: "us-gov.anthropic.claude-haiku-4-5-20251001-v1"
2059
+ contains: "us-gov.anthropic.claude-opus-4-5"
1933
2060
  },
1934
2061
  {
1935
- starts_with: "jp.anthropic.claude-haiku-4-5-20251001-v1"
2062
+ contains: "jp.anthropic.claude-opus-4-5"
1936
2063
  }
1937
2064
  ]
1938
2065
  },
1939
2066
  prices: {
1940
- input_mtok: 1.1,
1941
- cache_write_mtok: 1.375,
1942
- cache_read_mtok: 0.11,
1943
- output_mtok: 5.5
2067
+ input_mtok: 5.5,
2068
+ cache_write_mtok: 6.875,
2069
+ cache_read_mtok: 0.55,
2070
+ output_mtok: 27.5
1944
2071
  }
1945
2072
  },
1946
2073
  {
1947
- id: "regional.anthropic.claude-opus-4-1-20250805-v1:0",
2074
+ id: "regional.anthropic.claude-opus-4-6-v1:0",
1948
2075
  match: {
1949
2076
  or: [
1950
2077
  {
1951
- starts_with: "us.anthropic.claude-opus-4-1-20250805-v1"
2078
+ starts_with: "anthropic.claude-opus-4-6"
2079
+ },
2080
+ {
2081
+ starts_with: "claude-opus-4-6"
2082
+ },
2083
+ {
2084
+ contains: "us.anthropic.claude-opus-4-6"
1952
2085
  },
1953
2086
  {
1954
- starts_with: "au.anthropic.claude-opus-4-1-20250805-v1"
2087
+ contains: "au.anthropic.claude-opus-4-6"
1955
2088
  },
1956
2089
  {
1957
- starts_with: "apac.anthropic.claude-opus-4-1-20250805-v1"
2090
+ contains: "apac.anthropic.claude-opus-4-6"
1958
2091
  },
1959
2092
  {
1960
- starts_with: "eu.anthropic.claude-opus-4-1-20250805-v1"
2093
+ contains: "eu.anthropic.claude-opus-4-6"
1961
2094
  },
1962
2095
  {
1963
- starts_with: "us-gov.anthropic.claude-opus-4-1-20250805-v1"
2096
+ contains: "us-gov.anthropic.claude-opus-4-6"
1964
2097
  },
1965
2098
  {
1966
- starts_with: "jp.anthropic.claude-opus-4-1-20250805-v1"
2099
+ contains: "jp.anthropic.claude-opus-4-6"
1967
2100
  }
1968
2101
  ]
1969
2102
  },
1970
2103
  prices: {
1971
- input_mtok: 15,
1972
- cache_write_mtok: 18.75,
1973
- cache_read_mtok: 1.5,
1974
- output_mtok: 75
2104
+ input_mtok: {
2105
+ base: 5.5,
2106
+ tiers: [
2107
+ {
2108
+ start: 2e5,
2109
+ price: 11
2110
+ }
2111
+ ]
2112
+ },
2113
+ cache_write_mtok: {
2114
+ base: 6.875,
2115
+ tiers: [
2116
+ {
2117
+ start: 2e5,
2118
+ price: 13.75
2119
+ }
2120
+ ]
2121
+ },
2122
+ cache_read_mtok: {
2123
+ base: 0.55,
2124
+ tiers: [
2125
+ {
2126
+ start: 2e5,
2127
+ price: 1.1
2128
+ }
2129
+ ]
2130
+ },
2131
+ output_mtok: {
2132
+ base: 27.5,
2133
+ tiers: [
2134
+ {
2135
+ start: 2e5,
2136
+ price: 41.25
2137
+ }
2138
+ ]
2139
+ }
1975
2140
  }
1976
2141
  },
1977
2142
  {
1978
- id: "regional.anthropic.claude-opus-4-20250514-v1:0",
2143
+ id: "regional.anthropic.claude-sonnet-4-20250514-v1:0",
1979
2144
  match: {
1980
2145
  or: [
1981
2146
  {
1982
- starts_with: "us.anthropic.claude-opus-4-20250514-v1"
2147
+ starts_with: "anthropic.claude-sonnet-4-20250514"
2148
+ },
2149
+ {
2150
+ starts_with: "claude-sonnet-4-20250514"
2151
+ },
2152
+ {
2153
+ contains: "us.anthropic.claude-sonnet-4-20250514"
1983
2154
  },
1984
2155
  {
1985
- starts_with: "au.anthropic.claude-opus-4-20250514-v1"
2156
+ contains: "au.anthropic.claude-sonnet-4-20250514"
1986
2157
  },
1987
2158
  {
1988
- starts_with: "apac.anthropic.claude-opus-4-20250514-v1"
2159
+ contains: "apac.anthropic.claude-sonnet-4-20250514"
1989
2160
  },
1990
2161
  {
1991
- starts_with: "eu.anthropic.claude-opus-4-20250514-v1"
2162
+ contains: "eu.anthropic.claude-sonnet-4-20250514"
1992
2163
  },
1993
2164
  {
1994
- starts_with: "us-gov.anthropic.claude-opus-4-20250514-v1"
2165
+ contains: "us-gov.anthropic.claude-sonnet-4-20250514"
1995
2166
  },
1996
2167
  {
1997
- starts_with: "jp.anthropic.claude-opus-4-20250514-v1"
2168
+ contains: "jp.anthropic.claude-sonnet-4-20250514"
1998
2169
  }
1999
2170
  ]
2000
2171
  },
2001
2172
  prices: {
2002
- input_mtok: 15,
2003
- cache_write_mtok: 18.75,
2004
- cache_read_mtok: 1.5,
2005
- output_mtok: 75
2173
+ input_mtok: 3,
2174
+ cache_write_mtok: 3.75,
2175
+ cache_read_mtok: 0.3,
2176
+ output_mtok: 15
2006
2177
  }
2007
2178
  },
2008
2179
  {
2009
- id: "regional.anthropic.claude-sonnet-4-20250514-v1:0",
2180
+ id: "regional.anthropic.claude-sonnet-4-5-20250929-v1:0",
2010
2181
  match: {
2011
2182
  or: [
2012
2183
  {
2013
- starts_with: "us.anthropic.claude-sonnet-4-20250514-v1"
2184
+ starts_with: "anthropic.claude-sonnet-4-5-20250929"
2185
+ },
2186
+ {
2187
+ starts_with: "claude-sonnet-4-5-20250929"
2014
2188
  },
2015
2189
  {
2016
- starts_with: "au.anthropic.claude-sonnet-4-20250514-v1"
2190
+ contains: "us.anthropic.claude-sonnet-4-5-20250929"
2017
2191
  },
2018
2192
  {
2019
- starts_with: "apac.anthropic.claude-sonnet-4-20250514-v1"
2193
+ contains: "au.anthropic.claude-sonnet-4-5-20250929"
2020
2194
  },
2021
2195
  {
2022
- starts_with: "eu.anthropic.claude-sonnet-4-20250514-v1"
2196
+ contains: "apac.anthropic.claude-sonnet-4-5-20250929"
2023
2197
  },
2024
2198
  {
2025
- starts_with: "us-gov.anthropic.claude-sonnet-4-20250514-v1"
2199
+ contains: "eu.anthropic.claude-sonnet-4-5-20250929"
2026
2200
  },
2027
2201
  {
2028
- starts_with: "jp.anthropic.claude-sonnet-4-20250514-v1"
2202
+ contains: "us-gov.anthropic.claude-sonnet-4-5-20250929"
2203
+ },
2204
+ {
2205
+ contains: "jp.anthropic.claude-sonnet-4-5-20250929"
2029
2206
  }
2030
2207
  ]
2031
2208
  },
2032
2209
  prices: {
2033
- input_mtok: 3,
2034
- cache_write_mtok: 3.75,
2035
- cache_read_mtok: 0.3,
2036
- output_mtok: 15
2210
+ input_mtok: 3.3,
2211
+ cache_write_mtok: 4.125,
2212
+ cache_read_mtok: 0.33,
2213
+ output_mtok: 16.5
2037
2214
  }
2038
2215
  },
2039
2216
  {
2040
- id: "regional.anthropic.claude-sonnet-4-5-20250929-v1:0",
2217
+ id: "regional.anthropic.claude-sonnet-4-6-v1:0",
2041
2218
  match: {
2042
2219
  or: [
2043
2220
  {
2044
- starts_with: "us.anthropic.claude-sonnet-4-5-20250929-v1"
2221
+ starts_with: "anthropic.claude-sonnet-4-6"
2222
+ },
2223
+ {
2224
+ starts_with: "claude-sonnet-4-6"
2225
+ },
2226
+ {
2227
+ contains: "us.anthropic.claude-sonnet-4-6"
2045
2228
  },
2046
2229
  {
2047
- starts_with: "au.anthropic.claude-sonnet-4-5-20250929-v1"
2230
+ contains: "au.anthropic.claude-sonnet-4-6"
2048
2231
  },
2049
2232
  {
2050
- starts_with: "apac.anthropic.claude-sonnet-4-5-20250929-v1"
2233
+ contains: "apac.anthropic.claude-sonnet-4-6"
2051
2234
  },
2052
2235
  {
2053
- starts_with: "eu.anthropic.claude-sonnet-4-5-20250929-v1"
2236
+ contains: "eu.anthropic.claude-sonnet-4-6"
2054
2237
  },
2055
2238
  {
2056
- starts_with: "us-gov.anthropic.claude-sonnet-4-5-20250929-v1"
2239
+ contains: "us-gov.anthropic.claude-sonnet-4-6"
2057
2240
  },
2058
2241
  {
2059
- starts_with: "jp.anthropic.claude-sonnet-4-5-20250929-v1"
2242
+ contains: "jp.anthropic.claude-sonnet-4-6"
2060
2243
  }
2061
2244
  ]
2062
2245
  },
2063
2246
  prices: {
2064
- input_mtok: 3.3,
2065
- cache_write_mtok: 4.125,
2066
- cache_read_mtok: 0.33,
2067
- output_mtok: 16.5
2247
+ input_mtok: {
2248
+ base: 3.3,
2249
+ tiers: [
2250
+ {
2251
+ start: 2e5,
2252
+ price: 6.6
2253
+ }
2254
+ ]
2255
+ },
2256
+ cache_write_mtok: {
2257
+ base: 4.125,
2258
+ tiers: [
2259
+ {
2260
+ start: 2e5,
2261
+ price: 8.25
2262
+ }
2263
+ ]
2264
+ },
2265
+ cache_read_mtok: {
2266
+ base: 0.33,
2267
+ tiers: [
2268
+ {
2269
+ start: 2e5,
2270
+ price: 0.66
2271
+ }
2272
+ ]
2273
+ },
2274
+ output_mtok: {
2275
+ base: 16.5,
2276
+ tiers: [
2277
+ {
2278
+ start: 2e5,
2279
+ price: 24.75
2280
+ }
2281
+ ]
2282
+ }
2068
2283
  }
2069
2284
  }
2070
2285
  ]
@@ -3800,6 +4015,74 @@ Compared to other leading proprietary and open-weights models Command A delivers
3800
4015
  }
3801
4016
  }
3802
4017
  },
4018
+ {
4019
+ id: "gemini-3.1-flash-image-preview",
4020
+ name: "Gemini 3.1 Flash Image Preview",
4021
+ description: "Google's latest image generation model (Nano Banana 2) optimized for fast, high-quality image generation. Supports multiple output resolutions from 512px to 4K, with text and thinking output priced separately from image output tokens.",
4022
+ match: {
4023
+ starts_with: "gemini-3.1-flash-image-preview"
4024
+ },
4025
+ context_window: 1e6,
4026
+ price_comments: "See https://ai.google.dev/gemini-api/docs/pricing. Image output is priced at $60 per 1M tokens. Preview model - pricing may change.",
4027
+ prices: {
4028
+ input_mtok: 0.5,
4029
+ output_mtok: 60
4030
+ }
4031
+ },
4032
+ {
4033
+ id: "gemini-3.1-flash-lite-preview",
4034
+ name: "Gemini 3.1 Flash Lite Preview",
4035
+ description: "Google's fastest and most cost-efficient Gemini 3 series model, built for intelligence at scale. Optimized for high-volume, low-latency applications while maintaining strong multimodal capabilities.",
4036
+ match: {
4037
+ starts_with: "gemini-3.1-flash-lite-preview"
4038
+ },
4039
+ context_window: 1e6,
4040
+ price_comments: "See https://ai.google.dev/gemini-api/docs/pricing. Preview model - pricing may change before becoming stable.",
4041
+ prices: {
4042
+ input_mtok: 0.25,
4043
+ cache_read_mtok: 0.025,
4044
+ output_mtok: 1.5,
4045
+ input_audio_mtok: 0.5,
4046
+ cache_audio_read_mtok: 0.05
4047
+ }
4048
+ },
4049
+ {
4050
+ id: "gemini-3.1-pro-preview",
4051
+ name: "Gemini 3.1 Pro Preview",
4052
+ description: "The latest performance, intelligence, and usability improvements to the best model family in the world for multimodal understanding, agentic capabilities, and vibe-coding.",
4053
+ match: {
4054
+ starts_with: "gemini-3.1-pro-preview"
4055
+ },
4056
+ prices: {
4057
+ input_mtok: {
4058
+ base: 2,
4059
+ tiers: [
4060
+ {
4061
+ start: 2e5,
4062
+ price: 4
4063
+ }
4064
+ ]
4065
+ },
4066
+ cache_read_mtok: {
4067
+ base: 0.2,
4068
+ tiers: [
4069
+ {
4070
+ start: 2e5,
4071
+ price: 0.4
4072
+ }
4073
+ ]
4074
+ },
4075
+ output_mtok: {
4076
+ base: 12,
4077
+ tiers: [
4078
+ {
4079
+ start: 2e5,
4080
+ price: 18
4081
+ }
4082
+ ]
4083
+ }
4084
+ }
4085
+ },
3803
4086
  {
3804
4087
  id: "gemini-embedding-001",
3805
4088
  match: {
@@ -4409,93 +4692,21 @@ Compared to other leading proprietary and open-weights models Command A delivers
4409
4692
  ],
4410
4693
  models: [
4411
4694
  {
4412
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
4413
- name: "Qwen3-235B-A22B-Instruct-2507",
4695
+ id: "meta-llama/Llama-3.1-8B-Instruct",
4696
+ name: "Llama-3.1-8B-Instruct",
4414
4697
  match: {
4415
4698
  or: [
4416
4699
  {
4417
- equals: "qwen/qwen3-235b-a22b-instruct-2507"
4700
+ equals: "meta-llama/llama-3.1-8b-instruct"
4418
4701
  },
4419
4702
  {
4420
- equals: "qwen/qwen3-235b-a22b-instruct-2507-fast"
4703
+ equals: "meta-llama/llama-3.1-8b-instruct-fast"
4421
4704
  }
4422
4705
  ]
4423
4706
  },
4424
4707
  prices: {
4425
- input_mtok: 0.6,
4426
- output_mtok: 1.2
4427
- }
4428
- },
4429
- {
4430
- id: "Qwen/Qwen3-32B",
4431
- name: "Qwen3-32B",
4432
- match: {
4433
- or: [
4434
- {
4435
- equals: "qwen/qwen3-32b"
4436
- },
4437
- {
4438
- equals: "qwen/qwen3-32b-fast"
4439
- }
4440
- ]
4441
- },
4442
- prices: {
4443
- input_mtok: 0.4,
4444
- output_mtok: 0.8
4445
- }
4446
- },
4447
- {
4448
- id: "meta-llama/Llama-3.1-8B-Instruct",
4449
- name: "Llama-3.1-8B-Instruct",
4450
- match: {
4451
- or: [
4452
- {
4453
- equals: "meta-llama/llama-3.1-8b-instruct"
4454
- },
4455
- {
4456
- equals: "meta-llama/llama-3.1-8b-instruct-fast"
4457
- }
4458
- ]
4459
- },
4460
- prices: {
4461
- input_mtok: 0.1,
4462
- output_mtok: 0.1
4463
- }
4464
- },
4465
- {
4466
- id: "meta-llama/Llama-3.3-70B-Instruct",
4467
- name: "Llama-3.3-70B-Instruct",
4468
- match: {
4469
- or: [
4470
- {
4471
- equals: "meta-llama/llama-3.3-70b-instruct"
4472
- },
4473
- {
4474
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
4475
- }
4476
- ]
4477
- },
4478
- prices: {
4479
- input_mtok: 0.85,
4480
- output_mtok: 1.2
4481
- }
4482
- },
4483
- {
4484
- id: "openai/gpt-oss-120b",
4485
- name: "gpt-oss-120b",
4486
- match: {
4487
- or: [
4488
- {
4489
- equals: "openai/gpt-oss-120b"
4490
- },
4491
- {
4492
- equals: "openai/gpt-oss-120b-fast"
4493
- }
4494
- ]
4495
- },
4496
- prices: {
4497
- input_mtok: 0.25,
4498
- output_mtok: 0.69
4708
+ input_mtok: 0.1,
4709
+ output_mtok: 0.1
4499
4710
  }
4500
4711
  }
4501
4712
  ]
@@ -4550,132 +4761,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
4550
4761
  }
4551
4762
  ],
4552
4763
  models: [
4553
- {
4554
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
4555
- name: "Qwen2.5-VL-32B-Instruct",
4556
- match: {
4557
- or: [
4558
- {
4559
- equals: "qwen/qwen2.5-vl-32b-instruct"
4560
- },
4561
- {
4562
- equals: "qwen/qwen2.5-vl-32b-instruct-fast"
4563
- }
4564
- ]
4565
- },
4566
- context_window: 128e3,
4567
- prices: {
4568
- input_mtok: 0.22,
4569
- output_mtok: 0.88
4570
- }
4571
- },
4572
- {
4573
- id: "Qwen/Qwen3-235B-A22B",
4574
- name: "Qwen3-235B-A22B",
4575
- match: {
4576
- or: [
4577
- {
4578
- equals: "qwen/qwen3-235b-a22b"
4579
- },
4580
- {
4581
- equals: "qwen/qwen3-235b-a22b-fast"
4582
- },
4583
- {
4584
- equals: "qwen/qwen3-235b-a22b-instruct-2507"
4585
- },
4586
- {
4587
- equals: "qwen/qwen3-235b-a22b-instruct-2507-fast"
4588
- },
4589
- {
4590
- equals: "qwen/qwen3-235b-a22b-thinking-2507"
4591
- },
4592
- {
4593
- equals: "qwen/qwen3-235b-a22b-thinking-2507-fast"
4594
- }
4595
- ]
4596
- },
4597
- context_window: 131072,
4598
- prices: {
4599
- input_mtok: 0.22,
4600
- output_mtok: 0.88
4601
- }
4602
- },
4603
- {
4604
- id: "Qwen/Qwen3-30B-A3B",
4605
- name: "Qwen3-30B-A3B",
4606
- match: {
4607
- or: [
4608
- {
4609
- equals: "qwen/qwen3-30b-a3b"
4610
- },
4611
- {
4612
- equals: "qwen/qwen3-30b-a3b-fast"
4613
- }
4614
- ]
4615
- },
4616
- context_window: 131072,
4617
- prices: {
4618
- input_mtok: 0.15,
4619
- output_mtok: 0.6
4620
- }
4621
- },
4622
- {
4623
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
4624
- name: "Qwen3-Coder-480B-A35B-Instruct",
4625
- match: {
4626
- or: [
4627
- {
4628
- equals: "qwen/qwen3-coder-480b-a35b-instruct"
4629
- },
4630
- {
4631
- equals: "qwen/qwen3-coder-480b-a35b-instruct-fast"
4632
- }
4633
- ]
4634
- },
4635
- context_window: 262144,
4636
- prices: {
4637
- input_mtok: 0.45,
4638
- output_mtok: 1.8
4639
- }
4640
- },
4641
- {
4642
- id: "deepseek-ai/DeepSeek-R1-0528",
4643
- name: "DeepSeek-R1-0528",
4644
- match: {
4645
- or: [
4646
- {
4647
- equals: "deepseek-ai/deepseek-r1-0528"
4648
- },
4649
- {
4650
- equals: "deepseek-ai/deepseek-r1-0528-fast"
4651
- }
4652
- ]
4653
- },
4654
- context_window: 163840,
4655
- prices: {
4656
- input_mtok: 3,
4657
- output_mtok: 8
4658
- }
4659
- },
4660
- {
4661
- id: "deepseek-ai/DeepSeek-V3-0324",
4662
- name: "DeepSeek-V3-0324",
4663
- match: {
4664
- or: [
4665
- {
4666
- equals: "deepseek-ai/deepseek-v3-0324"
4667
- },
4668
- {
4669
- equals: "deepseek-ai/deepseek-v3-0324-fast"
4670
- }
4671
- ]
4672
- },
4673
- context_window: 163840,
4674
- prices: {
4675
- input_mtok: 0.9,
4676
- output_mtok: 0.9
4677
- }
4678
- },
4679
4764
  {
4680
4765
  id: "meta-llama/Llama-3.3-70B-Instruct",
4681
4766
  name: "Llama-3.3-70B-Instruct",
@@ -4715,22 +4800,22 @@ Compared to other leading proprietary and open-weights models Command A delivers
4715
4800
  }
4716
4801
  },
4717
4802
  {
4718
- id: "zai-org/GLM-4.5",
4719
- name: "GLM-4.5",
4803
+ id: "openai/gpt-oss-20b",
4804
+ name: "gpt-oss-20b",
4720
4805
  match: {
4721
4806
  or: [
4722
4807
  {
4723
- equals: "zai-org/glm-4.5"
4808
+ equals: "openai/gpt-oss-20b"
4724
4809
  },
4725
4810
  {
4726
- equals: "zai-org/glm-4.5-fast"
4811
+ equals: "openai/gpt-oss-20b-fast"
4727
4812
  }
4728
4813
  ]
4729
4814
  },
4730
4815
  context_window: 131072,
4731
4816
  prices: {
4732
- input_mtok: 0.55,
4733
- output_mtok: 2.19
4817
+ input_mtok: 0.05,
4818
+ output_mtok: 0.2
4734
4819
  }
4735
4820
  }
4736
4821
  ]
@@ -4823,6 +4908,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
4823
4908
  output_mtok: 0.79
4824
4909
  }
4825
4910
  },
4911
+ {
4912
+ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
4913
+ name: "Llama-4-Scout-17B-16E-Instruct",
4914
+ match: {
4915
+ or: [
4916
+ {
4917
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct"
4918
+ },
4919
+ {
4920
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct-fast"
4921
+ }
4922
+ ]
4923
+ },
4924
+ context_window: 131072,
4925
+ prices: {
4926
+ input_mtok: 0.11,
4927
+ output_mtok: 0.34
4928
+ }
4929
+ },
4826
4930
  {
4827
4931
  id: "openai/gpt-oss-120b",
4828
4932
  name: "gpt-oss-120b",
@@ -4841,6 +4945,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
4841
4945
  input_mtok: 0.15,
4842
4946
  output_mtok: 0.75
4843
4947
  }
4948
+ },
4949
+ {
4950
+ id: "openai/gpt-oss-20b",
4951
+ name: "gpt-oss-20b",
4952
+ match: {
4953
+ or: [
4954
+ {
4955
+ equals: "openai/gpt-oss-20b"
4956
+ },
4957
+ {
4958
+ equals: "openai/gpt-oss-20b-fast"
4959
+ }
4960
+ ]
4961
+ },
4962
+ context_window: 131072,
4963
+ prices: {
4964
+ input_mtok: 0.1,
4965
+ output_mtok: 0.5
4966
+ }
4844
4967
  }
4845
4968
  ]
4846
4969
  },
@@ -4893,64 +5016,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
4893
5016
  ]
4894
5017
  }
4895
5018
  ],
4896
- models: [
4897
- {
4898
- id: "Qwen/QwQ-32B",
4899
- name: "QwQ-32B",
4900
- match: {
4901
- or: [
4902
- {
4903
- equals: "qwen/qwq-32b"
4904
- },
4905
- {
4906
- equals: "qwen/qwq-32b-fast"
4907
- }
4908
- ]
4909
- },
4910
- context_window: 131072,
4911
- prices: {
4912
- input_mtok: 0.4,
4913
- output_mtok: 0.4
4914
- }
4915
- },
4916
- {
4917
- id: "Qwen/Qwen2.5-72B-Instruct",
4918
- name: "Qwen2.5-72B-Instruct",
4919
- match: {
4920
- or: [
4921
- {
4922
- equals: "qwen/qwen2.5-72b-instruct"
4923
- },
4924
- {
4925
- equals: "qwen/qwen2.5-72b-instruct-fast"
4926
- }
4927
- ]
4928
- },
4929
- context_window: 131072,
4930
- prices: {
4931
- input_mtok: 0.4,
4932
- output_mtok: 0.4
4933
- }
4934
- },
4935
- {
4936
- id: "Qwen/Qwen2.5-Coder-32B-Instruct",
4937
- name: "Qwen2.5-Coder-32B-Instruct",
4938
- match: {
4939
- or: [
4940
- {
4941
- equals: "qwen/qwen2.5-coder-32b-instruct"
4942
- },
4943
- {
4944
- equals: "qwen/qwen2.5-coder-32b-instruct-fast"
4945
- }
4946
- ]
4947
- },
4948
- context_window: 32768,
4949
- prices: {
4950
- input_mtok: 0.2,
4951
- output_mtok: 0.2
4952
- }
4953
- },
5019
+ models: [
4954
5020
  {
4955
5021
  id: "Qwen/Qwen2.5-VL-72B-Instruct",
4956
5022
  name: "Qwen2.5-VL-72B-Instruct",
@@ -5122,44 +5188,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
5122
5188
  output_mtok: 1.25
5123
5189
  }
5124
5190
  },
5125
- {
5126
- id: "meta-llama/Llama-3.1-8B-Instruct",
5127
- name: "Llama-3.1-8B-Instruct",
5128
- match: {
5129
- or: [
5130
- {
5131
- equals: "meta-llama/llama-3.1-8b-instruct"
5132
- },
5133
- {
5134
- equals: "meta-llama/llama-3.1-8b-instruct-fast"
5135
- }
5136
- ]
5137
- },
5138
- context_window: 131072,
5139
- prices: {
5140
- input_mtok: 0.1,
5141
- output_mtok: 0.1
5142
- }
5143
- },
5144
- {
5145
- id: "meta-llama/Llama-3.2-3B-Instruct",
5146
- name: "Llama-3.2-3B-Instruct",
5147
- match: {
5148
- or: [
5149
- {
5150
- equals: "meta-llama/llama-3.2-3b-instruct"
5151
- },
5152
- {
5153
- equals: "meta-llama/llama-3.2-3b-instruct-fast"
5154
- }
5155
- ]
5156
- },
5157
- context_window: 131072,
5158
- prices: {
5159
- input_mtok: 0.1,
5160
- output_mtok: 0.1
5161
- }
5162
- },
5163
5191
  {
5164
5192
  id: "meta-llama/Llama-3.3-70B-Instruct",
5165
5193
  name: "Llama-3.3-70B-Instruct",
@@ -5180,41 +5208,41 @@ Compared to other leading proprietary and open-weights models Command A delivers
5180
5208
  }
5181
5209
  },
5182
5210
  {
5183
- id: "meta-llama/Meta-Llama-3-70B-Instruct",
5184
- name: "Meta-Llama-3-70B-Instruct",
5211
+ id: "openai/gpt-oss-120b",
5212
+ name: "gpt-oss-120b",
5185
5213
  match: {
5186
5214
  or: [
5187
5215
  {
5188
- equals: "meta-llama/meta-llama-3-70b-instruct"
5216
+ equals: "openai/gpt-oss-120b"
5189
5217
  },
5190
5218
  {
5191
- equals: "meta-llama/meta-llama-3-70b-instruct-fast"
5219
+ equals: "openai/gpt-oss-120b-fast"
5192
5220
  }
5193
5221
  ]
5194
5222
  },
5195
- context_window: 8192,
5223
+ context_window: 131072,
5196
5224
  prices: {
5197
- input_mtok: 0.4,
5198
- output_mtok: 0.4
5225
+ input_mtok: 0.3,
5226
+ output_mtok: 0.3
5199
5227
  }
5200
5228
  },
5201
5229
  {
5202
- id: "openai/gpt-oss-120b",
5203
- name: "gpt-oss-120b",
5230
+ id: "openai/gpt-oss-20b",
5231
+ name: "gpt-oss-20b",
5204
5232
  match: {
5205
5233
  or: [
5206
5234
  {
5207
- equals: "openai/gpt-oss-120b"
5235
+ equals: "openai/gpt-oss-20b"
5208
5236
  },
5209
5237
  {
5210
- equals: "openai/gpt-oss-120b-fast"
5238
+ equals: "openai/gpt-oss-20b-fast"
5211
5239
  }
5212
5240
  ]
5213
5241
  },
5214
5242
  context_window: 131072,
5215
5243
  prices: {
5216
- input_mtok: 0.3,
5217
- output_mtok: 0.3
5244
+ input_mtok: 0.1,
5245
+ output_mtok: 0.1
5218
5246
  }
5219
5247
  }
5220
5248
  ]
@@ -5830,8 +5858,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5830
5858
  },
5831
5859
  context_window: 1e6,
5832
5860
  prices: {
5833
- input_mtok: 0.44,
5834
- output_mtok: 1.76
5861
+ input_mtok: 0.55,
5862
+ output_mtok: 2.2
5835
5863
  }
5836
5864
  },
5837
5865
  {
@@ -5844,6 +5872,18 @@ Compared to other leading proprietary and open-weights models Command A delivers
5844
5872
  },
5845
5873
  {
5846
5874
  equals: "minimaxai/minimax-m2-fast"
5875
+ },
5876
+ {
5877
+ equals: "minimaxai/minimax-m2.1"
5878
+ },
5879
+ {
5880
+ equals: "minimaxai/minimax-m2.1-fast"
5881
+ },
5882
+ {
5883
+ equals: "minimaxai/minimax-m2.5"
5884
+ },
5885
+ {
5886
+ equals: "minimaxai/minimax-m2.5-fast"
5847
5887
  }
5848
5888
  ]
5849
5889
  },
@@ -5887,8 +5927,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5887
5927
  },
5888
5928
  context_window: 32e3,
5889
5929
  prices: {
5890
- input_mtok: 0.304,
5891
- output_mtok: 0.32
5930
+ input_mtok: 0.38,
5931
+ output_mtok: 0.4
5892
5932
  }
5893
5933
  },
5894
5934
  {
@@ -5906,8 +5946,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5906
5946
  },
5907
5947
  context_window: 40960,
5908
5948
  prices: {
5909
- input_mtok: 0.16,
5910
- output_mtok: 0.64
5949
+ input_mtok: 0.2,
5950
+ output_mtok: 0.8
5911
5951
  }
5912
5952
  },
5913
5953
  {
@@ -5925,8 +5965,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5925
5965
  },
5926
5966
  context_window: 131072,
5927
5967
  prices: {
5928
- input_mtok: 0.072,
5929
- output_mtok: 0.464
5968
+ input_mtok: 0.09,
5969
+ output_mtok: 0.58
5930
5970
  }
5931
5971
  },
5932
5972
  {
@@ -5944,8 +5984,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5944
5984
  },
5945
5985
  context_window: 131072,
5946
5986
  prices: {
5947
- input_mtok: 0.24,
5948
- output_mtok: 2.4
5987
+ input_mtok: 0.3,
5988
+ output_mtok: 3
5949
5989
  }
5950
5990
  },
5951
5991
  {
@@ -5963,8 +6003,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5963
6003
  },
5964
6004
  context_window: 40960,
5965
6005
  prices: {
5966
- input_mtok: 0.072,
5967
- output_mtok: 0.36
6006
+ input_mtok: 0.09,
6007
+ output_mtok: 0.45
5968
6008
  }
5969
6009
  },
5970
6010
  {
@@ -5982,8 +6022,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
5982
6022
  },
5983
6023
  context_window: 40960,
5984
6024
  prices: {
5985
- input_mtok: 0.08,
5986
- output_mtok: 0.36
6025
+ input_mtok: 0.1,
6026
+ output_mtok: 0.45
5987
6027
  }
5988
6028
  },
5989
6029
  {
@@ -6005,6 +6045,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
6005
6045
  output_mtok: 1.3
6006
6046
  }
6007
6047
  },
6048
+ {
6049
+ id: "Qwen/Qwen3-Coder-Next",
6050
+ name: "Qwen3-Coder-Next",
6051
+ match: {
6052
+ or: [
6053
+ {
6054
+ equals: "qwen/qwen3-coder-next"
6055
+ },
6056
+ {
6057
+ equals: "qwen/qwen3-coder-next-fast"
6058
+ }
6059
+ ]
6060
+ },
6061
+ context_window: 262144,
6062
+ prices: {
6063
+ input_mtok: 0.2,
6064
+ output_mtok: 1.5
6065
+ }
6066
+ },
6008
6067
  {
6009
6068
  id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
6010
6069
  name: "Qwen3-Next-80B-A3B-Instruct",
@@ -6020,8 +6079,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6020
6079
  },
6021
6080
  context_window: 131072,
6022
6081
  prices: {
6023
- input_mtok: 0.12,
6024
- output_mtok: 1.2
6082
+ input_mtok: 0.15,
6083
+ output_mtok: 1.5
6025
6084
  }
6026
6085
  },
6027
6086
  {
@@ -6039,8 +6098,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6039
6098
  },
6040
6099
  context_window: 131072,
6041
6100
  prices: {
6042
- input_mtok: 0.12,
6043
- output_mtok: 1.2
6101
+ input_mtok: 0.15,
6102
+ output_mtok: 1.5
6044
6103
  }
6045
6104
  },
6046
6105
  {
@@ -6058,8 +6117,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6058
6117
  },
6059
6118
  context_window: 131072,
6060
6119
  prices: {
6061
- input_mtok: 0.24,
6062
- output_mtok: 1.2
6120
+ input_mtok: 0.3,
6121
+ output_mtok: 1.5
6063
6122
  }
6064
6123
  },
6065
6124
  {
@@ -6077,8 +6136,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6077
6136
  },
6078
6137
  context_window: 131072,
6079
6138
  prices: {
6080
- input_mtok: 0.784,
6081
- output_mtok: 3.16
6139
+ input_mtok: 0.98,
6140
+ output_mtok: 3.95
6082
6141
  }
6083
6142
  },
6084
6143
  {
@@ -6096,8 +6155,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6096
6155
  },
6097
6156
  context_window: 131072,
6098
6157
  prices: {
6099
- input_mtok: 0.16,
6100
- output_mtok: 0.56
6158
+ input_mtok: 0.2,
6159
+ output_mtok: 0.7
6101
6160
  }
6102
6161
  },
6103
6162
  {
@@ -6115,8 +6174,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6115
6174
  },
6116
6175
  context_window: 131072,
6117
6176
  prices: {
6118
- input_mtok: 0.16,
6119
- output_mtok: 0.8
6177
+ input_mtok: 0.2,
6178
+ output_mtok: 1
6120
6179
  }
6121
6180
  },
6122
6181
  {
@@ -6134,318 +6193,318 @@ Compared to other leading proprietary and open-weights models Command A delivers
6134
6193
  },
6135
6194
  context_window: 131072,
6136
6195
  prices: {
6137
- input_mtok: 0.064,
6138
- output_mtok: 0.4
6196
+ input_mtok: 0.08,
6197
+ output_mtok: 0.5
6139
6198
  }
6140
6199
  },
6141
6200
  {
6142
- id: "Sao10K/L3-70B-Euryale-v2.1",
6143
- name: "L3-70B-Euryale-v2.1",
6201
+ id: "Qwen/Qwen3.5-122B-A10B",
6202
+ name: "Qwen3.5-122B-A10B",
6144
6203
  match: {
6145
6204
  or: [
6146
6205
  {
6147
- equals: "sao10k/l3-70b-euryale-v2.1"
6206
+ equals: "qwen/qwen3.5-122b-a10b"
6148
6207
  },
6149
6208
  {
6150
- equals: "sao10k/l3-70b-euryale-v2.1-fast"
6209
+ equals: "qwen/qwen3.5-122b-a10b-fast"
6151
6210
  }
6152
6211
  ]
6153
6212
  },
6154
- context_window: 8192,
6213
+ context_window: 262144,
6155
6214
  prices: {
6156
- input_mtok: 1.48,
6157
- output_mtok: 1.48
6215
+ input_mtok: 0.4,
6216
+ output_mtok: 3.2
6158
6217
  }
6159
6218
  },
6160
6219
  {
6161
- id: "Sao10K/L3-8B-Lunaris-v1",
6162
- name: "L3-8B-Lunaris-v1",
6220
+ id: "Qwen/Qwen3.5-27B",
6221
+ name: "Qwen3.5-27B",
6163
6222
  match: {
6164
6223
  or: [
6165
6224
  {
6166
- equals: "sao10k/l3-8b-lunaris-v1"
6225
+ equals: "qwen/qwen3.5-27b"
6167
6226
  },
6168
6227
  {
6169
- equals: "sao10k/l3-8b-lunaris-v1-fast"
6228
+ equals: "qwen/qwen3.5-27b-fast"
6170
6229
  }
6171
6230
  ]
6172
6231
  },
6173
- context_window: 8192,
6232
+ context_window: 262144,
6174
6233
  prices: {
6175
- input_mtok: 0.05,
6176
- output_mtok: 0.05
6234
+ input_mtok: 0.3,
6235
+ output_mtok: 2.4
6177
6236
  }
6178
6237
  },
6179
6238
  {
6180
- id: "Sao10K/L3-8B-Stheno-v3.2",
6181
- name: "L3-8B-Stheno-v3.2",
6239
+ id: "Qwen/Qwen3.5-35B-A3B",
6240
+ name: "Qwen3.5-35B-A3B",
6182
6241
  match: {
6183
6242
  or: [
6184
6243
  {
6185
- equals: "sao10k/l3-8b-stheno-v3.2"
6244
+ equals: "qwen/qwen3.5-35b-a3b"
6186
6245
  },
6187
6246
  {
6188
- equals: "sao10k/l3-8b-stheno-v3.2-fast"
6247
+ equals: "qwen/qwen3.5-35b-a3b-fast"
6189
6248
  }
6190
6249
  ]
6191
6250
  },
6192
- context_window: 8192,
6251
+ context_window: 262144,
6193
6252
  prices: {
6194
- input_mtok: 0.05,
6195
- output_mtok: 0.05
6253
+ input_mtok: 0.25,
6254
+ output_mtok: 2
6196
6255
  }
6197
6256
  },
6198
6257
  {
6199
- id: "XiaomiMiMo/MiMo-V2-Flash",
6200
- name: "MiMo-V2-Flash",
6258
+ id: "Qwen/Qwen3.5-397B-A17B",
6259
+ name: "Qwen3.5-397B-A17B",
6201
6260
  match: {
6202
6261
  or: [
6203
6262
  {
6204
- equals: "xiaomimimo/mimo-v2-flash"
6263
+ equals: "qwen/qwen3.5-397b-a17b"
6205
6264
  },
6206
6265
  {
6207
- equals: "xiaomimimo/mimo-v2-flash-fast"
6266
+ equals: "qwen/qwen3.5-397b-a17b-fast"
6208
6267
  }
6209
6268
  ]
6210
6269
  },
6211
6270
  context_window: 262144,
6212
6271
  prices: {
6213
- input_mtok: 0.098,
6214
- output_mtok: 0.293
6272
+ input_mtok: 0.6,
6273
+ output_mtok: 3.6
6215
6274
  }
6216
6275
  },
6217
6276
  {
6218
- id: "alpindale/WizardLM-2-8x22B",
6219
- name: "WizardLM-2-8x22B",
6277
+ id: "Sao10K/L3-70B-Euryale-v2.1",
6278
+ name: "L3-70B-Euryale-v2.1",
6220
6279
  match: {
6221
6280
  or: [
6222
6281
  {
6223
- equals: "alpindale/wizardlm-2-8x22b"
6282
+ equals: "sao10k/l3-70b-euryale-v2.1"
6224
6283
  },
6225
6284
  {
6226
- equals: "alpindale/wizardlm-2-8x22b-fast"
6285
+ equals: "sao10k/l3-70b-euryale-v2.1-fast"
6227
6286
  }
6228
6287
  ]
6229
6288
  },
6230
- context_window: 65535,
6289
+ context_window: 8192,
6231
6290
  prices: {
6232
- input_mtok: 0.496,
6233
- output_mtok: 0.496
6291
+ input_mtok: 1.48,
6292
+ output_mtok: 1.48
6234
6293
  }
6235
6294
  },
6236
6295
  {
6237
- id: "baichuan-inc/Baichuan-M2-32B",
6238
- name: "Baichuan-M2-32B",
6296
+ id: "Sao10K/L3-8B-Lunaris-v1",
6297
+ name: "L3-8B-Lunaris-v1",
6239
6298
  match: {
6240
6299
  or: [
6241
6300
  {
6242
- equals: "baichuan-inc/baichuan-m2-32b"
6301
+ equals: "sao10k/l3-8b-lunaris-v1"
6243
6302
  },
6244
6303
  {
6245
- equals: "baichuan-inc/baichuan-m2-32b-fast"
6304
+ equals: "sao10k/l3-8b-lunaris-v1-fast"
6246
6305
  }
6247
6306
  ]
6248
6307
  },
6249
- context_window: 131072,
6308
+ context_window: 8192,
6250
6309
  prices: {
6251
- input_mtok: 0.056,
6252
- output_mtok: 0.056
6310
+ input_mtok: 0.05,
6311
+ output_mtok: 0.05
6253
6312
  }
6254
6313
  },
6255
6314
  {
6256
- id: "baidu/ERNIE-4.5-21B-A3B-PT",
6257
- name: "ERNIE-4.5-21B-A3B-PT",
6315
+ id: "Sao10K/L3-8B-Stheno-v3.2",
6316
+ name: "L3-8B-Stheno-v3.2",
6258
6317
  match: {
6259
6318
  or: [
6260
6319
  {
6261
- equals: "baidu/ernie-4.5-21b-a3b-pt"
6320
+ equals: "sao10k/l3-8b-stheno-v3.2"
6262
6321
  },
6263
6322
  {
6264
- equals: "baidu/ernie-4.5-21b-a3b-pt-fast"
6323
+ equals: "sao10k/l3-8b-stheno-v3.2-fast"
6265
6324
  }
6266
6325
  ]
6267
6326
  },
6268
- context_window: 12e4,
6327
+ context_window: 8192,
6269
6328
  prices: {
6270
- input_mtok: 0.056,
6271
- output_mtok: 0.224
6329
+ input_mtok: 0.05,
6330
+ output_mtok: 0.05
6272
6331
  }
6273
6332
  },
6274
6333
  {
6275
- id: "baidu/ERNIE-4.5-300B-A47B-Base-PT",
6276
- name: "ERNIE-4.5-300B-A47B-Base-PT",
6334
+ id: "XiaomiMiMo/MiMo-V2-Flash",
6335
+ name: "MiMo-V2-Flash",
6277
6336
  match: {
6278
6337
  or: [
6279
6338
  {
6280
- equals: "baidu/ernie-4.5-300b-a47b-base-pt"
6339
+ equals: "xiaomimimo/mimo-v2-flash"
6281
6340
  },
6282
6341
  {
6283
- equals: "baidu/ernie-4.5-300b-a47b-base-pt-fast"
6342
+ equals: "xiaomimimo/mimo-v2-flash-fast"
6284
6343
  }
6285
6344
  ]
6286
6345
  },
6287
- context_window: 123e3,
6346
+ context_window: 262144,
6288
6347
  prices: {
6289
- input_mtok: 0.224,
6290
- output_mtok: 0.88
6348
+ input_mtok: 0.1,
6349
+ output_mtok: 0.3
6291
6350
  }
6292
6351
  },
6293
6352
  {
6294
- id: "baidu/ERNIE-4.5-VL-28B-A3B-PT",
6295
- name: "ERNIE-4.5-VL-28B-A3B-PT",
6353
+ id: "alpindale/WizardLM-2-8x22B",
6354
+ name: "WizardLM-2-8x22B",
6296
6355
  match: {
6297
6356
  or: [
6298
6357
  {
6299
- equals: "baidu/ernie-4.5-vl-28b-a3b-pt"
6358
+ equals: "alpindale/wizardlm-2-8x22b"
6300
6359
  },
6301
6360
  {
6302
- equals: "baidu/ernie-4.5-vl-28b-a3b-pt-fast"
6361
+ equals: "alpindale/wizardlm-2-8x22b-fast"
6303
6362
  }
6304
6363
  ]
6305
6364
  },
6306
- context_window: 3e4,
6365
+ context_window: 65535,
6307
6366
  prices: {
6308
- input_mtok: 0.112,
6309
- output_mtok: 0.448
6367
+ input_mtok: 0.62,
6368
+ output_mtok: 0.62
6310
6369
  }
6311
6370
  },
6312
6371
  {
6313
- id: "baidu/ERNIE-4.5-VL-424B-A47B-Base-PT",
6314
- name: "ERNIE-4.5-VL-424B-A47B-Base-PT",
6372
+ id: "baidu/ERNIE-4.5-21B-A3B-PT",
6373
+ name: "ERNIE-4.5-21B-A3B-PT",
6315
6374
  match: {
6316
6375
  or: [
6317
6376
  {
6318
- equals: "baidu/ernie-4.5-vl-424b-a47b-base-pt"
6377
+ equals: "baidu/ernie-4.5-21b-a3b-pt"
6319
6378
  },
6320
6379
  {
6321
- equals: "baidu/ernie-4.5-vl-424b-a47b-base-pt-fast"
6380
+ equals: "baidu/ernie-4.5-21b-a3b-pt-fast"
6322
6381
  }
6323
6382
  ]
6324
6383
  },
6325
- context_window: 123e3,
6384
+ context_window: 12e4,
6326
6385
  prices: {
6327
- input_mtok: 0.336,
6328
- output_mtok: 1
6386
+ input_mtok: 0.07,
6387
+ output_mtok: 0.28
6329
6388
  }
6330
6389
  },
6331
6390
  {
6332
- id: "deepseek-ai/DeepSeek-Prover-V2-671B",
6333
- name: "DeepSeek-Prover-V2-671B",
6391
+ id: "baidu/ERNIE-4.5-300B-A47B-Base-PT",
6392
+ name: "ERNIE-4.5-300B-A47B-Base-PT",
6334
6393
  match: {
6335
6394
  or: [
6336
6395
  {
6337
- equals: "deepseek-ai/deepseek-prover-v2-671b"
6396
+ equals: "baidu/ernie-4.5-300b-a47b-base-pt"
6338
6397
  },
6339
6398
  {
6340
- equals: "deepseek-ai/deepseek-prover-v2-671b-fast"
6399
+ equals: "baidu/ernie-4.5-300b-a47b-base-pt-fast"
6341
6400
  }
6342
6401
  ]
6343
6402
  },
6344
- context_window: 16e4,
6403
+ context_window: 123e3,
6345
6404
  prices: {
6346
- input_mtok: 0.56,
6347
- output_mtok: 2
6405
+ input_mtok: 0.28,
6406
+ output_mtok: 1.1
6348
6407
  }
6349
6408
  },
6350
6409
  {
6351
- id: "deepseek-ai/DeepSeek-R1",
6352
- name: "DeepSeek-R1",
6410
+ id: "baidu/ERNIE-4.5-VL-28B-A3B-PT",
6411
+ name: "ERNIE-4.5-VL-28B-A3B-PT",
6353
6412
  match: {
6354
6413
  or: [
6355
6414
  {
6356
- equals: "deepseek-ai/deepseek-r1"
6357
- },
6358
- {
6359
- equals: "deepseek-ai/deepseek-r1-fast"
6360
- },
6361
- {
6362
- equals: "deepseek-ai/deepseek-r1-0528"
6415
+ equals: "baidu/ernie-4.5-vl-28b-a3b-pt"
6363
6416
  },
6364
6417
  {
6365
- equals: "deepseek-ai/deepseek-r1-0528-fast"
6418
+ equals: "baidu/ernie-4.5-vl-28b-a3b-pt-fast"
6366
6419
  }
6367
6420
  ]
6368
6421
  },
6369
- context_window: 64e3,
6422
+ context_window: 3e4,
6370
6423
  prices: {
6371
- input_mtok: 0.56,
6372
- output_mtok: 2
6424
+ input_mtok: 0.14,
6425
+ output_mtok: 0.56
6373
6426
  }
6374
6427
  },
6375
6428
  {
6376
- id: "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",
6377
- name: "DeepSeek-R1-0528-Qwen3-8B",
6429
+ id: "baidu/ERNIE-4.5-VL-424B-A47B-Base-PT",
6430
+ name: "ERNIE-4.5-VL-424B-A47B-Base-PT",
6378
6431
  match: {
6379
6432
  or: [
6380
6433
  {
6381
- equals: "deepseek-ai/deepseek-r1-0528-qwen3-8b"
6434
+ equals: "baidu/ernie-4.5-vl-424b-a47b-base-pt"
6382
6435
  },
6383
6436
  {
6384
- equals: "deepseek-ai/deepseek-r1-0528-qwen3-8b-fast"
6437
+ equals: "baidu/ernie-4.5-vl-424b-a47b-base-pt-fast"
6385
6438
  }
6386
6439
  ]
6387
6440
  },
6388
- context_window: 128e3,
6441
+ context_window: 123e3,
6389
6442
  prices: {
6390
- input_mtok: 0.048,
6391
- output_mtok: 0.072
6443
+ input_mtok: 0.42,
6444
+ output_mtok: 1.25
6392
6445
  }
6393
6446
  },
6394
6447
  {
6395
- id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
6396
- name: "DeepSeek-R1-Distill-Llama-70B",
6448
+ id: "deepseek-ai/DeepSeek-Prover-V2-671B",
6449
+ name: "DeepSeek-Prover-V2-671B",
6397
6450
  match: {
6398
6451
  or: [
6399
6452
  {
6400
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b"
6453
+ equals: "deepseek-ai/deepseek-prover-v2-671b"
6401
6454
  },
6402
6455
  {
6403
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b-fast"
6456
+ equals: "deepseek-ai/deepseek-prover-v2-671b-fast"
6404
6457
  }
6405
6458
  ]
6406
6459
  },
6407
- context_window: 8192,
6460
+ context_window: 16e4,
6408
6461
  prices: {
6409
- input_mtok: 0.64,
6410
- output_mtok: 0.64
6462
+ input_mtok: 0.7,
6463
+ output_mtok: 2.5
6411
6464
  }
6412
6465
  },
6413
6466
  {
6414
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
6415
- name: "DeepSeek-R1-Distill-Qwen-14B",
6467
+ id: "deepseek-ai/DeepSeek-R1",
6468
+ name: "DeepSeek-R1",
6416
6469
  match: {
6417
6470
  or: [
6418
6471
  {
6419
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b"
6472
+ equals: "deepseek-ai/deepseek-r1"
6473
+ },
6474
+ {
6475
+ equals: "deepseek-ai/deepseek-r1-fast"
6476
+ },
6477
+ {
6478
+ equals: "deepseek-ai/deepseek-r1-0528"
6420
6479
  },
6421
6480
  {
6422
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b-fast"
6481
+ equals: "deepseek-ai/deepseek-r1-0528-fast"
6423
6482
  }
6424
6483
  ]
6425
6484
  },
6426
- context_window: 32768,
6485
+ context_window: 64e3,
6427
6486
  prices: {
6428
- input_mtok: 0.12,
6429
- output_mtok: 0.12
6487
+ input_mtok: 0.7,
6488
+ output_mtok: 2.5
6430
6489
  }
6431
6490
  },
6432
6491
  {
6433
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
6434
- name: "DeepSeek-R1-Distill-Qwen-32B",
6492
+ id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
6493
+ name: "DeepSeek-R1-Distill-Llama-70B",
6435
6494
  match: {
6436
6495
  or: [
6437
6496
  {
6438
- equals: "deepseek-ai/deepseek-r1-distill-qwen-32b"
6497
+ equals: "deepseek-ai/deepseek-r1-distill-llama-70b"
6439
6498
  },
6440
6499
  {
6441
- equals: "deepseek-ai/deepseek-r1-distill-qwen-32b-fast"
6500
+ equals: "deepseek-ai/deepseek-r1-distill-llama-70b-fast"
6442
6501
  }
6443
6502
  ]
6444
6503
  },
6445
- context_window: 64e3,
6504
+ context_window: 8192,
6446
6505
  prices: {
6447
- input_mtok: 0.24,
6448
- output_mtok: 0.24
6506
+ input_mtok: 0.8,
6507
+ output_mtok: 0.8
6449
6508
  }
6450
6509
  },
6451
6510
  {
@@ -6463,8 +6522,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6463
6522
  },
6464
6523
  context_window: 64e3,
6465
6524
  prices: {
6466
- input_mtok: 0.32,
6467
- output_mtok: 1.04
6525
+ input_mtok: 0.4,
6526
+ output_mtok: 1.3
6468
6527
  }
6469
6528
  },
6470
6529
  {
@@ -6482,8 +6541,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6482
6541
  },
6483
6542
  context_window: 163840,
6484
6543
  prices: {
6485
- input_mtok: 0.216,
6486
- output_mtok: 0.896
6544
+ input_mtok: 0.27,
6545
+ output_mtok: 1.12
6487
6546
  }
6488
6547
  },
6489
6548
  {
@@ -6507,8 +6566,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6507
6566
  },
6508
6567
  context_window: 131072,
6509
6568
  prices: {
6510
- input_mtok: 0.216,
6511
- output_mtok: 0.8
6569
+ input_mtok: 0.27,
6570
+ output_mtok: 1
6512
6571
  }
6513
6572
  },
6514
6573
  {
@@ -6545,8 +6604,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6545
6604
  },
6546
6605
  context_window: 163840,
6547
6606
  prices: {
6548
- input_mtok: 0.216,
6549
- output_mtok: 0.328
6607
+ input_mtok: 0.27,
6608
+ output_mtok: 0.41
6550
6609
  }
6551
6610
  },
6552
6611
  {
@@ -6569,41 +6628,60 @@ Compared to other leading proprietary and open-weights models Command A delivers
6569
6628
  }
6570
6629
  },
6571
6630
  {
6572
- id: "meta-llama/Llama-3.2-3B-Instruct",
6573
- name: "Llama-3.2-3B-Instruct",
6631
+ id: "meta-llama/Llama-3.3-70B-Instruct",
6632
+ name: "Llama-3.3-70B-Instruct",
6633
+ match: {
6634
+ or: [
6635
+ {
6636
+ equals: "meta-llama/llama-3.3-70b-instruct"
6637
+ },
6638
+ {
6639
+ equals: "meta-llama/llama-3.3-70b-instruct-fast"
6640
+ }
6641
+ ]
6642
+ },
6643
+ context_window: 131072,
6644
+ prices: {
6645
+ input_mtok: 0.135,
6646
+ output_mtok: 0.4
6647
+ }
6648
+ },
6649
+ {
6650
+ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
6651
+ name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
6574
6652
  match: {
6575
6653
  or: [
6576
6654
  {
6577
- equals: "meta-llama/llama-3.2-3b-instruct"
6655
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
6578
6656
  },
6579
6657
  {
6580
- equals: "meta-llama/llama-3.2-3b-instruct-fast"
6658
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8-fast"
6581
6659
  }
6582
6660
  ]
6583
6661
  },
6584
- context_window: 32768,
6662
+ context_window: 1048576,
6585
6663
  prices: {
6586
- input_mtok: 0.024,
6587
- output_mtok: 0.04
6664
+ input_mtok: 0.27,
6665
+ output_mtok: 0.85
6588
6666
  }
6589
6667
  },
6590
6668
  {
6591
- id: "meta-llama/Llama-3.3-70B-Instruct",
6592
- name: "Llama-3.3-70B-Instruct",
6669
+ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
6670
+ name: "Llama-4-Scout-17B-16E-Instruct",
6593
6671
  match: {
6594
6672
  or: [
6595
6673
  {
6596
- equals: "meta-llama/llama-3.3-70b-instruct"
6674
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct"
6597
6675
  },
6598
6676
  {
6599
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
6677
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct-fast"
6600
6678
  }
6601
6679
  ]
6602
6680
  },
6603
6681
  context_window: 131072,
6604
6682
  prices: {
6605
- input_mtok: 0.108,
6606
- output_mtok: 0.32
6683
+ input_mtok: 0.18,
6684
+ output_mtok: 0.59
6607
6685
  }
6608
6686
  },
6609
6687
  {
@@ -6640,8 +6718,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6640
6718
  },
6641
6719
  context_window: 8192,
6642
6720
  prices: {
6643
- input_mtok: 0.032,
6644
- output_mtok: 0.032
6721
+ input_mtok: 0.04,
6722
+ output_mtok: 0.04
6645
6723
  }
6646
6724
  },
6647
6725
  {
@@ -6659,8 +6737,27 @@ Compared to other leading proprietary and open-weights models Command A delivers
6659
6737
  },
6660
6738
  context_window: 131072,
6661
6739
  prices: {
6662
- input_mtok: 0.456,
6663
- output_mtok: 1.84
6740
+ input_mtok: 0.57,
6741
+ output_mtok: 2.3
6742
+ }
6743
+ },
6744
+ {
6745
+ id: "moonshotai/Kimi-K2-Instruct-0905",
6746
+ name: "Kimi-K2-Instruct-0905",
6747
+ match: {
6748
+ or: [
6749
+ {
6750
+ equals: "moonshotai/kimi-k2-instruct-0905"
6751
+ },
6752
+ {
6753
+ equals: "moonshotai/kimi-k2-instruct-0905-fast"
6754
+ }
6755
+ ]
6756
+ },
6757
+ context_window: 262144,
6758
+ prices: {
6759
+ input_mtok: 0.6,
6760
+ output_mtok: 2.5
6664
6761
  }
6665
6762
  },
6666
6763
  {
@@ -6678,8 +6775,27 @@ Compared to other leading proprietary and open-weights models Command A delivers
6678
6775
  },
6679
6776
  context_window: 262144,
6680
6777
  prices: {
6681
- input_mtok: 0.48,
6682
- output_mtok: 2
6778
+ input_mtok: 0.6,
6779
+ output_mtok: 2.5
6780
+ }
6781
+ },
6782
+ {
6783
+ id: "moonshotai/Kimi-K2.5",
6784
+ name: "Kimi-K2.5",
6785
+ match: {
6786
+ or: [
6787
+ {
6788
+ equals: "moonshotai/kimi-k2.5"
6789
+ },
6790
+ {
6791
+ equals: "moonshotai/kimi-k2.5-fast"
6792
+ }
6793
+ ]
6794
+ },
6795
+ context_window: 262144,
6796
+ prices: {
6797
+ input_mtok: 0.6,
6798
+ output_mtok: 3
6683
6799
  }
6684
6800
  },
6685
6801
  {
@@ -6696,9 +6812,28 @@ Compared to other leading proprietary and open-weights models Command A delivers
6696
6812
  ]
6697
6813
  },
6698
6814
  context_window: 131072,
6815
+ prices: {
6816
+ input_mtok: 0.05,
6817
+ output_mtok: 0.25
6818
+ }
6819
+ },
6820
+ {
6821
+ id: "openai/gpt-oss-20b",
6822
+ name: "gpt-oss-20b",
6823
+ match: {
6824
+ or: [
6825
+ {
6826
+ equals: "openai/gpt-oss-20b"
6827
+ },
6828
+ {
6829
+ equals: "openai/gpt-oss-20b-fast"
6830
+ }
6831
+ ]
6832
+ },
6833
+ context_window: 131072,
6699
6834
  prices: {
6700
6835
  input_mtok: 0.04,
6701
- output_mtok: 0.2
6836
+ output_mtok: 0.15
6702
6837
  }
6703
6838
  },
6704
6839
  {
@@ -6721,22 +6856,22 @@ Compared to other leading proprietary and open-weights models Command A delivers
6721
6856
  }
6722
6857
  },
6723
6858
  {
6724
- id: "zai-org/GLM-4.1V-9B-Thinking",
6725
- name: "GLM-4.1V-9B-Thinking",
6859
+ id: "zai-org/GLM-4-32B-0414",
6860
+ name: "GLM-4-32B-0414",
6726
6861
  match: {
6727
6862
  or: [
6728
6863
  {
6729
- equals: "zai-org/glm-4.1v-9b-thinking"
6864
+ equals: "zai-org/glm-4-32b-0414"
6730
6865
  },
6731
6866
  {
6732
- equals: "zai-org/glm-4.1v-9b-thinking-fast"
6867
+ equals: "zai-org/glm-4-32b-0414-fast"
6733
6868
  }
6734
6869
  ]
6735
6870
  },
6736
- context_window: 65536,
6871
+ context_window: 32e3,
6737
6872
  prices: {
6738
- input_mtok: 0.028,
6739
- output_mtok: 0.1104
6873
+ input_mtok: 0.55,
6874
+ output_mtok: 1.66
6740
6875
  }
6741
6876
  },
6742
6877
  {
@@ -6754,8 +6889,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6754
6889
  },
6755
6890
  context_window: 131072,
6756
6891
  prices: {
6757
- input_mtok: 0.48,
6758
- output_mtok: 1.76
6892
+ input_mtok: 0.6,
6893
+ output_mtok: 2.2
6759
6894
  }
6760
6895
  },
6761
6896
  {
@@ -6773,8 +6908,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6773
6908
  },
6774
6909
  context_window: 131072,
6775
6910
  prices: {
6776
- input_mtok: 0.104,
6777
- output_mtok: 0.68
6911
+ input_mtok: 0.13,
6912
+ output_mtok: 0.85
6778
6913
  }
6779
6914
  },
6780
6915
  {
@@ -6792,8 +6927,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6792
6927
  },
6793
6928
  context_window: 65536,
6794
6929
  prices: {
6795
- input_mtok: 0.48,
6796
- output_mtok: 1.44
6930
+ input_mtok: 0.6,
6931
+ output_mtok: 1.8
6797
6932
  }
6798
6933
  },
6799
6934
  {
@@ -6811,8 +6946,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6811
6946
  },
6812
6947
  context_window: 204800,
6813
6948
  prices: {
6814
- input_mtok: 0.44,
6815
- output_mtok: 1.76
6949
+ input_mtok: 0.55,
6950
+ output_mtok: 2.2
6816
6951
  }
6817
6952
  },
6818
6953
  {
@@ -6833,6 +6968,63 @@ Compared to other leading proprietary and open-weights models Command A delivers
6833
6968
  input_mtok: 0.3,
6834
6969
  output_mtok: 0.9
6835
6970
  }
6971
+ },
6972
+ {
6973
+ id: "zai-org/GLM-4.7",
6974
+ name: "GLM-4.7",
6975
+ match: {
6976
+ or: [
6977
+ {
6978
+ equals: "zai-org/glm-4.7"
6979
+ },
6980
+ {
6981
+ equals: "zai-org/glm-4.7-fast"
6982
+ }
6983
+ ]
6984
+ },
6985
+ context_window: 204800,
6986
+ prices: {
6987
+ input_mtok: 0.6,
6988
+ output_mtok: 2.2
6989
+ }
6990
+ },
6991
+ {
6992
+ id: "zai-org/GLM-4.7-Flash",
6993
+ name: "GLM-4.7-Flash",
6994
+ match: {
6995
+ or: [
6996
+ {
6997
+ equals: "zai-org/glm-4.7-flash"
6998
+ },
6999
+ {
7000
+ equals: "zai-org/glm-4.7-flash-fast"
7001
+ }
7002
+ ]
7003
+ },
7004
+ context_window: 2e5,
7005
+ prices: {
7006
+ input_mtok: 0.07,
7007
+ output_mtok: 0.4
7008
+ }
7009
+ },
7010
+ {
7011
+ id: "zai-org/GLM-5",
7012
+ name: "GLM-5",
7013
+ match: {
7014
+ or: [
7015
+ {
7016
+ equals: "zai-org/glm-5"
7017
+ },
7018
+ {
7019
+ equals: "zai-org/glm-5-fast"
7020
+ }
7021
+ ]
7022
+ },
7023
+ context_window: 202800,
7024
+ prices: {
7025
+ input_mtok: 1,
7026
+ output_mtok: 3.2
7027
+ }
6836
7028
  }
6837
7029
  ]
6838
7030
  },
@@ -7139,25 +7331,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
7139
7331
  output_mtok: 0.1
7140
7332
  }
7141
7333
  },
7142
- {
7143
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
7144
- name: "DeepSeek-R1-Distill-Qwen-14B",
7145
- match: {
7146
- or: [
7147
- {
7148
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b"
7149
- },
7150
- {
7151
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b-fast"
7152
- }
7153
- ]
7154
- },
7155
- context_window: 131072,
7156
- prices: {
7157
- input_mtok: 0.2,
7158
- output_mtok: 0.2
7159
- }
7160
- },
7161
7334
  {
7162
7335
  id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
7163
7336
  name: "DeepSeek-R1-Distill-Qwen-32B",
@@ -7221,36 +7394,74 @@ Compared to other leading proprietary and open-weights models Command A delivers
7221
7394
  match: {
7222
7395
  or: [
7223
7396
  {
7224
- equals: "meta-llama/llama-3.3-70b-instruct"
7397
+ equals: "meta-llama/llama-3.3-70b-instruct"
7398
+ },
7399
+ {
7400
+ equals: "meta-llama/llama-3.3-70b-instruct-fast"
7401
+ }
7402
+ ]
7403
+ },
7404
+ context_window: 131072,
7405
+ prices: {
7406
+ input_mtok: 0.4,
7407
+ output_mtok: 0.4
7408
+ }
7409
+ },
7410
+ {
7411
+ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
7412
+ name: "Llama-4-Scout-17B-16E-Instruct",
7413
+ match: {
7414
+ or: [
7415
+ {
7416
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct"
7417
+ },
7418
+ {
7419
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct-fast"
7420
+ }
7421
+ ]
7422
+ },
7423
+ context_window: 89e4,
7424
+ prices: {
7425
+ input_mtok: 0.09,
7426
+ output_mtok: 0.29
7427
+ }
7428
+ },
7429
+ {
7430
+ id: "openai/gpt-oss-120b",
7431
+ name: "gpt-oss-120b",
7432
+ match: {
7433
+ or: [
7434
+ {
7435
+ equals: "openai/gpt-oss-120b"
7225
7436
  },
7226
7437
  {
7227
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
7438
+ equals: "openai/gpt-oss-120b-fast"
7228
7439
  }
7229
7440
  ]
7230
7441
  },
7231
7442
  context_window: 131072,
7232
7443
  prices: {
7233
- input_mtok: 0.4,
7444
+ input_mtok: 0.1,
7234
7445
  output_mtok: 0.4
7235
7446
  }
7236
7447
  },
7237
7448
  {
7238
- id: "openai/gpt-oss-120b",
7239
- name: "gpt-oss-120b",
7449
+ id: "openai/gpt-oss-20b",
7450
+ name: "gpt-oss-20b",
7240
7451
  match: {
7241
7452
  or: [
7242
7453
  {
7243
- equals: "openai/gpt-oss-120b"
7454
+ equals: "openai/gpt-oss-20b"
7244
7455
  },
7245
7456
  {
7246
- equals: "openai/gpt-oss-120b-fast"
7457
+ equals: "openai/gpt-oss-20b-fast"
7247
7458
  }
7248
7459
  ]
7249
7460
  },
7250
7461
  context_window: 131072,
7251
7462
  prices: {
7252
- input_mtok: 0.1,
7253
- output_mtok: 0.4
7463
+ input_mtok: 0.05,
7464
+ output_mtok: 0.2
7254
7465
  }
7255
7466
  }
7256
7467
  ]
@@ -7362,25 +7573,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
7362
7573
  output_mtok: 0.26
7363
7574
  }
7364
7575
  },
7365
- {
7366
- id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
7367
- name: "DeepSeek-R1-Distill-Llama-70B",
7368
- match: {
7369
- or: [
7370
- {
7371
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b"
7372
- },
7373
- {
7374
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b-fast"
7375
- }
7376
- ]
7377
- },
7378
- context_window: 131072,
7379
- prices: {
7380
- input_mtok: 0.74,
7381
- output_mtok: 0.74
7382
- }
7383
- },
7384
7576
  {
7385
7577
  id: "meta-llama/Llama-3.1-8B-Instruct",
7386
7578
  name: "Llama-3.1-8B-Instruct",
@@ -7437,6 +7629,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
7437
7629
  input_mtok: 0.09,
7438
7630
  output_mtok: 0.47
7439
7631
  }
7632
+ },
7633
+ {
7634
+ id: "openai/gpt-oss-20b",
7635
+ name: "gpt-oss-20b",
7636
+ match: {
7637
+ or: [
7638
+ {
7639
+ equals: "openai/gpt-oss-20b"
7640
+ },
7641
+ {
7642
+ equals: "openai/gpt-oss-20b-fast"
7643
+ }
7644
+ ]
7645
+ },
7646
+ context_window: 131072,
7647
+ prices: {
7648
+ input_mtok: 0.05,
7649
+ output_mtok: 0.18
7650
+ }
7440
7651
  }
7441
7652
  ]
7442
7653
  },
@@ -7503,7 +7714,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7503
7714
  }
7504
7715
  ]
7505
7716
  },
7506
- prices: {}
7717
+ prices: {
7718
+ input_mtok: 0.2,
7719
+ output_mtok: 0.4
7720
+ }
7507
7721
  },
7508
7722
  {
7509
7723
  id: "aisingapore/Qwen-SEA-LION-v4-32B-IT",
@@ -7518,7 +7732,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7518
7732
  }
7519
7733
  ]
7520
7734
  },
7521
- prices: {}
7735
+ prices: {
7736
+ input_mtok: 0.25,
7737
+ output_mtok: 0.5
7738
+ }
7522
7739
  },
7523
7740
  {
7524
7741
  id: "allenai/Olmo-3-7B-Instruct",
@@ -7533,22 +7750,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7533
7750
  }
7534
7751
  ]
7535
7752
  },
7536
- prices: {}
7537
- },
7538
- {
7539
- id: "allenai/Olmo-3-7B-Think",
7540
- name: "Olmo-3-7B-Think",
7541
- match: {
7542
- or: [
7543
- {
7544
- equals: "allenai/olmo-3-7b-think"
7545
- },
7546
- {
7547
- equals: "allenai/olmo-3-7b-think-fast"
7548
- }
7549
- ]
7550
- },
7551
- prices: {}
7753
+ prices: {
7754
+ input_mtok: 0.1,
7755
+ output_mtok: 0.2
7756
+ }
7552
7757
  },
7553
7758
  {
7554
7759
  id: "allenai/Olmo-3.1-32B-Instruct",
@@ -7563,22 +7768,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7563
7768
  }
7564
7769
  ]
7565
7770
  },
7566
- prices: {}
7567
- },
7568
- {
7569
- id: "allenai/Olmo-3.1-32B-Think",
7570
- name: "Olmo-3.1-32B-Think",
7571
- match: {
7572
- or: [
7573
- {
7574
- equals: "allenai/olmo-3.1-32b-think"
7575
- },
7576
- {
7577
- equals: "allenai/olmo-3.1-32b-think-fast"
7578
- }
7579
- ]
7580
- },
7581
- prices: {}
7771
+ prices: {
7772
+ input_mtok: 0.2,
7773
+ output_mtok: 0.6
7774
+ }
7582
7775
  },
7583
7776
  {
7584
7777
  id: "dicta-il/DictaLM-3.0-24B-Thinking",
@@ -7593,7 +7786,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7593
7786
  }
7594
7787
  ]
7595
7788
  },
7596
- prices: {}
7789
+ prices: {
7790
+ input_mtok: 0.2,
7791
+ output_mtok: 0.4
7792
+ }
7597
7793
  },
7598
7794
  {
7599
7795
  id: "swiss-ai/Apertus-70B-Instruct-2509",
@@ -7608,7 +7804,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7608
7804
  }
7609
7805
  ]
7610
7806
  },
7611
- prices: {}
7807
+ prices: {
7808
+ input_mtok: 0.82,
7809
+ output_mtok: 2.92
7810
+ }
7612
7811
  },
7613
7812
  {
7614
7813
  id: "swiss-ai/Apertus-8B-Instruct-2509",
@@ -7623,7 +7822,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7623
7822
  }
7624
7823
  ]
7625
7824
  },
7626
- prices: {}
7825
+ prices: {
7826
+ input_mtok: 0.1,
7827
+ output_mtok: 0.2
7828
+ }
7627
7829
  },
7628
7830
  {
7629
7831
  id: "utter-project/EuroLLM-22B-Instruct-2512",
@@ -7638,7 +7840,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7638
7840
  }
7639
7841
  ]
7640
7842
  },
7641
- prices: {}
7843
+ prices: {
7844
+ input_mtok: 0.1,
7845
+ output_mtok: 0.2
7846
+ }
7642
7847
  }
7643
7848
  ]
7644
7849
  },
@@ -7915,25 +8120,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
7915
8120
  output_mtok: 0.15
7916
8121
  }
7917
8122
  },
7918
- {
7919
- id: "Qwen/Qwen2.5-72B-Instruct",
7920
- name: "Qwen2.5-72B-Instruct",
7921
- match: {
7922
- or: [
7923
- {
7924
- equals: "qwen/qwen2.5-72b-instruct"
7925
- },
7926
- {
7927
- equals: "qwen/qwen2.5-72b-instruct-fast"
7928
- }
7929
- ]
7930
- },
7931
- context_window: 131072,
7932
- prices: {
7933
- input_mtok: 1.2,
7934
- output_mtok: 1.2
7935
- }
7936
- },
7937
8123
  {
7938
8124
  id: "Qwen/Qwen2.5-7B-Instruct",
7939
8125
  name: "Qwen2.5-7B-Instruct",
@@ -7954,22 +8140,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7954
8140
  }
7955
8141
  },
7956
8142
  {
7957
- id: "Qwen/Qwen3-235B-A22B",
7958
- name: "Qwen3-235B-A22B",
8143
+ id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
8144
+ name: "Qwen3-235B-A22B-Instruct-2507",
7959
8145
  match: {
7960
8146
  or: [
7961
- {
7962
- equals: "qwen/qwen3-235b-a22b"
7963
- },
7964
- {
7965
- equals: "qwen/qwen3-235b-a22b-fast"
7966
- },
7967
- {
7968
- equals: "qwen/qwen3-235b-a22b-fp8"
7969
- },
7970
- {
7971
- equals: "qwen/qwen3-235b-a22b-fp8-fast"
7972
- },
7973
8147
  {
7974
8148
  equals: "qwen/qwen3-235b-a22b-instruct-2507"
7975
8149
  },
@@ -7978,7 +8152,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
7978
8152
  }
7979
8153
  ]
7980
8154
  },
7981
- context_window: 40960,
8155
+ context_window: 262144,
7982
8156
  prices: {
7983
8157
  input_mtok: 0.2,
7984
8158
  output_mtok: 0.6
@@ -8009,6 +8183,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
8009
8183
  output_mtok: 2
8010
8184
  }
8011
8185
  },
8186
+ {
8187
+ id: "Qwen/Qwen3-Coder-Next-FP8",
8188
+ name: "Qwen3-Coder-Next-FP8",
8189
+ match: {
8190
+ or: [
8191
+ {
8192
+ equals: "qwen/qwen3-coder-next-fp8"
8193
+ },
8194
+ {
8195
+ equals: "qwen/qwen3-coder-next-fp8-fast"
8196
+ }
8197
+ ]
8198
+ },
8199
+ context_window: 262144,
8200
+ prices: {
8201
+ input_mtok: 0.5,
8202
+ output_mtok: 1.2
8203
+ }
8204
+ },
8012
8205
  {
8013
8206
  id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
8014
8207
  name: "Qwen3-Next-80B-A3B-Instruct",
@@ -8029,41 +8222,60 @@ Compared to other leading proprietary and open-weights models Command A delivers
8029
8222
  }
8030
8223
  },
8031
8224
  {
8032
- id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
8033
- name: "Qwen3-Next-80B-A3B-Thinking",
8225
+ id: "Qwen/Qwen3-VL-8B-Instruct",
8226
+ name: "Qwen3-VL-8B-Instruct",
8034
8227
  match: {
8035
8228
  or: [
8036
8229
  {
8037
- equals: "qwen/qwen3-next-80b-a3b-thinking"
8230
+ equals: "qwen/qwen3-vl-8b-instruct"
8038
8231
  },
8039
8232
  {
8040
- equals: "qwen/qwen3-next-80b-a3b-thinking-fast"
8233
+ equals: "qwen/qwen3-vl-8b-instruct-fast"
8041
8234
  }
8042
8235
  ]
8043
8236
  },
8044
8237
  context_window: 262144,
8045
8238
  prices: {
8046
- input_mtok: 0.15,
8047
- output_mtok: 1.5
8239
+ input_mtok: 0.18000000000000002,
8240
+ output_mtok: 0.68
8048
8241
  }
8049
8242
  },
8050
8243
  {
8051
- id: "Qwen/Qwen3-VL-32B-Instruct",
8052
- name: "Qwen3-VL-32B-Instruct",
8244
+ id: "Qwen/Qwen3.5-397B-A17B",
8245
+ name: "Qwen3.5-397B-A17B",
8053
8246
  match: {
8054
8247
  or: [
8055
8248
  {
8056
- equals: "qwen/qwen3-vl-32b-instruct"
8249
+ equals: "qwen/qwen3.5-397b-a17b"
8057
8250
  },
8058
8251
  {
8059
- equals: "qwen/qwen3-vl-32b-instruct-fast"
8252
+ equals: "qwen/qwen3.5-397b-a17b-fast"
8060
8253
  }
8061
8254
  ]
8062
8255
  },
8063
8256
  context_window: 262144,
8064
8257
  prices: {
8065
- input_mtok: 0.5,
8066
- output_mtok: 1.5
8258
+ input_mtok: 0.6,
8259
+ output_mtok: 3.6
8260
+ }
8261
+ },
8262
+ {
8263
+ id: "Qwen/Qwen3.5-9B",
8264
+ name: "Qwen3.5-9B",
8265
+ match: {
8266
+ or: [
8267
+ {
8268
+ equals: "qwen/qwen3.5-9b"
8269
+ },
8270
+ {
8271
+ equals: "qwen/qwen3.5-9b-fast"
8272
+ }
8273
+ ]
8274
+ },
8275
+ context_window: 262144,
8276
+ prices: {
8277
+ input_mtok: 0.1,
8278
+ output_mtok: 0.15
8067
8279
  }
8068
8280
  },
8069
8281
  {
@@ -8107,44 +8319,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
8107
8319
  output_mtok: 1.25
8108
8320
  }
8109
8321
  },
8110
- {
8111
- id: "deepcogito/cogito-v2-preview-llama-405B",
8112
- name: "cogito-v2-preview-llama-405B",
8113
- match: {
8114
- or: [
8115
- {
8116
- equals: "deepcogito/cogito-v2-preview-llama-405b"
8117
- },
8118
- {
8119
- equals: "deepcogito/cogito-v2-preview-llama-405b-fast"
8120
- }
8121
- ]
8122
- },
8123
- context_window: 32768,
8124
- prices: {
8125
- input_mtok: 3.5,
8126
- output_mtok: 3.5
8127
- }
8128
- },
8129
- {
8130
- id: "deepcogito/cogito-v2-preview-llama-70B",
8131
- name: "cogito-v2-preview-llama-70B",
8132
- match: {
8133
- or: [
8134
- {
8135
- equals: "deepcogito/cogito-v2-preview-llama-70b"
8136
- },
8137
- {
8138
- equals: "deepcogito/cogito-v2-preview-llama-70b-fast"
8139
- }
8140
- ]
8141
- },
8142
- context_window: 32768,
8143
- prices: {
8144
- input_mtok: 0.88,
8145
- output_mtok: 0.88
8146
- }
8147
- },
8148
8322
  {
8149
8323
  id: "deepseek-ai/DeepSeek-R1",
8150
8324
  name: "DeepSeek-R1",
@@ -8191,185 +8365,217 @@ Compared to other leading proprietary and open-weights models Command A delivers
8191
8365
  },
8192
8366
  context_window: 131072,
8193
8367
  prices: {
8194
- input_mtok: 1.25,
8195
- output_mtok: 1.25
8368
+ input_mtok: 1.25,
8369
+ output_mtok: 1.25
8370
+ }
8371
+ },
8372
+ {
8373
+ id: "deepseek-ai/DeepSeek-V3.1",
8374
+ name: "DeepSeek-V3.1",
8375
+ match: {
8376
+ or: [
8377
+ {
8378
+ equals: "deepseek-ai/deepseek-v3.1"
8379
+ },
8380
+ {
8381
+ equals: "deepseek-ai/deepseek-v3.1-fast"
8382
+ }
8383
+ ]
8384
+ },
8385
+ context_window: 131072,
8386
+ prices: {
8387
+ input_mtok: 0.6,
8388
+ output_mtok: 1.7
8389
+ }
8390
+ },
8391
+ {
8392
+ id: "google/gemma-3n-E4B-it",
8393
+ name: "gemma-3n-E4B-it",
8394
+ match: {
8395
+ or: [
8396
+ {
8397
+ equals: "google/gemma-3n-e4b-it"
8398
+ },
8399
+ {
8400
+ equals: "google/gemma-3n-e4b-it-fast"
8401
+ }
8402
+ ]
8403
+ },
8404
+ context_window: 32768,
8405
+ prices: {
8406
+ input_mtok: 0.02,
8407
+ output_mtok: 0.04
8196
8408
  }
8197
8409
  },
8198
8410
  {
8199
- id: "deepseek-ai/DeepSeek-V3.1",
8200
- name: "DeepSeek-V3.1",
8411
+ id: "meta-llama/Llama-3.3-70B-Instruct",
8412
+ name: "Llama-3.3-70B-Instruct",
8201
8413
  match: {
8202
8414
  or: [
8203
8415
  {
8204
- equals: "deepseek-ai/deepseek-v3.1"
8416
+ equals: "meta-llama/llama-3.3-70b-instruct"
8205
8417
  },
8206
8418
  {
8207
- equals: "deepseek-ai/deepseek-v3.1-fast"
8419
+ equals: "meta-llama/llama-3.3-70b-instruct-fast"
8208
8420
  }
8209
8421
  ]
8210
8422
  },
8211
8423
  context_window: 131072,
8212
8424
  prices: {
8213
- input_mtok: 0.6,
8214
- output_mtok: 1.7
8425
+ input_mtok: 0.88,
8426
+ output_mtok: 0.88
8215
8427
  }
8216
8428
  },
8217
8429
  {
8218
- id: "marin-community/marin-8b-instruct",
8219
- name: "marin-8b-instruct",
8430
+ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
8431
+ name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
8220
8432
  match: {
8221
8433
  or: [
8222
8434
  {
8223
- equals: "marin-community/marin-8b-instruct"
8435
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
8224
8436
  },
8225
8437
  {
8226
- equals: "marin-community/marin-8b-instruct-fast"
8438
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8-fast"
8227
8439
  }
8228
8440
  ]
8229
8441
  },
8230
- context_window: 4096,
8442
+ context_window: 1048576,
8231
8443
  prices: {
8232
- input_mtok: 0.18000000000000002,
8233
- output_mtok: 0.18000000000000002
8444
+ input_mtok: 0.27,
8445
+ output_mtok: 0.85
8234
8446
  }
8235
8447
  },
8236
8448
  {
8237
- id: "meta-llama/Llama-3.2-3B-Instruct",
8238
- name: "Llama-3.2-3B-Instruct",
8449
+ id: "moonshotai/Kimi-K2.5",
8450
+ name: "Kimi-K2.5",
8239
8451
  match: {
8240
8452
  or: [
8241
8453
  {
8242
- equals: "meta-llama/llama-3.2-3b-instruct"
8454
+ equals: "moonshotai/kimi-k2.5"
8243
8455
  },
8244
8456
  {
8245
- equals: "meta-llama/llama-3.2-3b-instruct-fast"
8457
+ equals: "moonshotai/kimi-k2.5-fast"
8246
8458
  }
8247
8459
  ]
8248
8460
  },
8249
- context_window: 131072,
8461
+ context_window: 262144,
8250
8462
  prices: {
8251
- input_mtok: 0.060000000000000005,
8252
- output_mtok: 0.060000000000000005
8463
+ input_mtok: 0.5,
8464
+ output_mtok: 2.8
8253
8465
  }
8254
8466
  },
8255
8467
  {
8256
- id: "meta-llama/Llama-3.3-70B-Instruct",
8257
- name: "Llama-3.3-70B-Instruct",
8468
+ id: "openai/gpt-oss-120b",
8469
+ name: "gpt-oss-120b",
8258
8470
  match: {
8259
8471
  or: [
8260
8472
  {
8261
- equals: "meta-llama/llama-3.3-70b-instruct"
8473
+ equals: "openai/gpt-oss-120b"
8262
8474
  },
8263
8475
  {
8264
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
8476
+ equals: "openai/gpt-oss-120b-fast"
8265
8477
  }
8266
8478
  ]
8267
8479
  },
8268
8480
  context_window: 131072,
8269
8481
  prices: {
8270
- input_mtok: 0.88,
8271
- output_mtok: 0.88
8482
+ input_mtok: 0.15,
8483
+ output_mtok: 0.6
8272
8484
  }
8273
8485
  },
8274
8486
  {
8275
- id: "meta-llama/Meta-Llama-3-70B-Instruct",
8276
- name: "Meta-Llama-3-70B-Instruct",
8487
+ id: "openai/gpt-oss-20b",
8488
+ name: "gpt-oss-20b",
8277
8489
  match: {
8278
8490
  or: [
8279
8491
  {
8280
- equals: "meta-llama/meta-llama-3-70b-instruct"
8492
+ equals: "openai/gpt-oss-20b"
8281
8493
  },
8282
8494
  {
8283
- equals: "meta-llama/meta-llama-3-70b-instruct-fast"
8495
+ equals: "openai/gpt-oss-20b-fast"
8284
8496
  }
8285
8497
  ]
8286
8498
  },
8287
- context_window: 8192,
8499
+ context_window: 131072,
8288
8500
  prices: {
8289
- input_mtok: 0.88,
8290
- output_mtok: 0.88
8501
+ input_mtok: 0.05,
8502
+ output_mtok: 0.2
8291
8503
  }
8292
8504
  },
8293
8505
  {
8294
- id: "moonshotai/Kimi-K2-Instruct",
8295
- name: "Kimi-K2-Instruct",
8506
+ id: "zai-org/GLM-4.5-Air-FP8",
8507
+ name: "GLM-4.5-Air-FP8",
8296
8508
  match: {
8297
8509
  or: [
8298
8510
  {
8299
- equals: "moonshotai/kimi-k2-instruct"
8300
- },
8301
- {
8302
- equals: "moonshotai/kimi-k2-instruct-fast"
8303
- },
8304
- {
8305
- equals: "moonshotai/kimi-k2-instruct-0905"
8511
+ equals: "zai-org/glm-4.5-air-fp8"
8306
8512
  },
8307
8513
  {
8308
- equals: "moonshotai/kimi-k2-instruct-0905-fast"
8514
+ equals: "zai-org/glm-4.5-air-fp8-fast"
8309
8515
  }
8310
8516
  ]
8311
8517
  },
8312
8518
  context_window: 131072,
8313
8519
  prices: {
8314
- input_mtok: 1,
8315
- output_mtok: 3
8520
+ input_mtok: 0.2,
8521
+ output_mtok: 1.1
8316
8522
  }
8317
8523
  },
8318
8524
  {
8319
- id: "moonshotai/Kimi-K2-Thinking",
8320
- name: "Kimi-K2-Thinking",
8525
+ id: "zai-org/GLM-4.6",
8526
+ name: "GLM-4.6",
8321
8527
  match: {
8322
8528
  or: [
8323
8529
  {
8324
- equals: "moonshotai/kimi-k2-thinking"
8530
+ equals: "zai-org/glm-4.6"
8325
8531
  },
8326
8532
  {
8327
- equals: "moonshotai/kimi-k2-thinking-fast"
8533
+ equals: "zai-org/glm-4.6-fast"
8328
8534
  }
8329
8535
  ]
8330
8536
  },
8331
- context_window: 262144,
8537
+ context_window: 202752,
8332
8538
  prices: {
8333
- input_mtok: 1.2,
8334
- output_mtok: 4
8539
+ input_mtok: 0.6,
8540
+ output_mtok: 2.2
8335
8541
  }
8336
8542
  },
8337
8543
  {
8338
- id: "openai/gpt-oss-120b",
8339
- name: "gpt-oss-120b",
8544
+ id: "zai-org/GLM-4.7-FP8",
8545
+ name: "GLM-4.7-FP8",
8340
8546
  match: {
8341
8547
  or: [
8342
8548
  {
8343
- equals: "openai/gpt-oss-120b"
8549
+ equals: "zai-org/glm-4.7-fp8"
8344
8550
  },
8345
8551
  {
8346
- equals: "openai/gpt-oss-120b-fast"
8552
+ equals: "zai-org/glm-4.7-fp8-fast"
8347
8553
  }
8348
8554
  ]
8349
8555
  },
8350
- context_window: 131072,
8556
+ context_window: 202752,
8351
8557
  prices: {
8352
- input_mtok: 0.15,
8353
- output_mtok: 0.6
8558
+ input_mtok: 0.45,
8559
+ output_mtok: 2
8354
8560
  }
8355
8561
  },
8356
8562
  {
8357
- id: "zai-org/GLM-4.5-Air-FP8",
8358
- name: "GLM-4.5-Air-FP8",
8563
+ id: "zai-org/GLM-5",
8564
+ name: "GLM-5",
8359
8565
  match: {
8360
8566
  or: [
8361
8567
  {
8362
- equals: "zai-org/glm-4.5-air-fp8"
8568
+ equals: "zai-org/glm-5"
8363
8569
  },
8364
8570
  {
8365
- equals: "zai-org/glm-4.5-air-fp8-fast"
8571
+ equals: "zai-org/glm-5-fast"
8366
8572
  }
8367
8573
  ]
8368
8574
  },
8369
- context_window: 131072,
8575
+ context_window: 202752,
8370
8576
  prices: {
8371
- input_mtok: 0.2,
8372
- output_mtok: 1.1
8577
+ input_mtok: 1,
8578
+ output_mtok: 3.2
8373
8579
  }
8374
8580
  }
8375
8581
  ]
@@ -8657,74 +8863,260 @@ Compared to other leading proprietary and open-weights models Command A delivers
8657
8863
  deprecated: !0
8658
8864
  },
8659
8865
  {
8660
- id: "mixtral-8x22b-instruct",
8661
- name: "Mixtral 8x22B Instruct",
8662
- description: `Mistral's official instruct fine-tuned version of Mixtral 8x22B. It uses 39B active parameters out of 141B, offering unparalleled cost efficiency for its size. Its strengths include:
8663
- - strong math, coding, and reasoning
8664
- - large context length (64k)
8665
- - fluency in English, French, Italian, German, and Spanish`,
8866
+ id: "mixtral-8x22b-instruct",
8867
+ name: "Mixtral 8x22B Instruct",
8868
+ description: `Mistral's official instruct fine-tuned version of Mixtral 8x22B. It uses 39B active parameters out of 141B, offering unparalleled cost efficiency for its size. Its strengths include:
8869
+ - strong math, coding, and reasoning
8870
+ - large context length (64k)
8871
+ - fluency in English, French, Italian, German, and Spanish`,
8872
+ match: {
8873
+ equals: "mixtral-8x22b-instruct"
8874
+ },
8875
+ prices: {
8876
+ input_mtok: 0.9,
8877
+ output_mtok: 0.9
8878
+ }
8879
+ },
8880
+ {
8881
+ id: "mixtral-8x7b",
8882
+ name: "Mixtral 8x7B",
8883
+ match: {
8884
+ or: [
8885
+ {
8886
+ starts_with: "mixtral-8x7b"
8887
+ },
8888
+ {
8889
+ equals: "open-mixtral-8x7b"
8890
+ }
8891
+ ]
8892
+ },
8893
+ prices: {
8894
+ input_mtok: 0.7,
8895
+ output_mtok: 0.7
8896
+ }
8897
+ },
8898
+ {
8899
+ id: "pixtral-12b",
8900
+ name: "Pixtral 12B",
8901
+ description: "The first multi-modal, text+image-to-text model from Mistral AI. Its weights were launched via torrent: https://x.com/mistralai/status/1833758285167722836.",
8902
+ match: {
8903
+ or: [
8904
+ {
8905
+ equals: "pixtral-12b"
8906
+ },
8907
+ {
8908
+ equals: "pixtral-12b-latest"
8909
+ }
8910
+ ]
8911
+ },
8912
+ prices: {
8913
+ input_mtok: 0.15,
8914
+ output_mtok: 0.15
8915
+ }
8916
+ },
8917
+ {
8918
+ id: "pixtral-large",
8919
+ name: "Pixtral Large 2411",
8920
+ description: "Pixtral Large is a 124B parameter, open-weight, multimodal model built on top of Mistral Large 2. The model is able to understand documents, charts and natural images.",
8921
+ match: {
8922
+ or: [
8923
+ {
8924
+ equals: "pixtral-large-latest"
8925
+ },
8926
+ {
8927
+ equals: "pixtral-large-2411"
8928
+ }
8929
+ ]
8930
+ },
8931
+ prices: {
8932
+ input_mtok: 2,
8933
+ output_mtok: 6
8934
+ }
8935
+ }
8936
+ ]
8937
+ },
8938
+ {
8939
+ id: "moonshotai",
8940
+ name: "MoonshotAi",
8941
+ pricing_urls: ["https://platform.moonshot.ai/docs/pricing/chat#product-pricing"],
8942
+ api_pattern: "https://api\\.moonshot\\.",
8943
+ model_match: {
8944
+ or: [
8945
+ {
8946
+ starts_with: "kimi"
8947
+ },
8948
+ {
8949
+ starts_with: "moonshot"
8950
+ }
8951
+ ]
8952
+ },
8953
+ provider_match: {
8954
+ contains: "moonshot"
8955
+ },
8956
+ extractors: [
8957
+ {
8958
+ api_flavor: "chat",
8959
+ root: "usage",
8960
+ model_path: "model",
8961
+ mappings: [
8962
+ {
8963
+ path: "prompt_tokens",
8964
+ dest: "input_tokens",
8965
+ required: !0
8966
+ },
8967
+ {
8968
+ path: ["prompt_tokens_details", "cached_tokens"],
8969
+ dest: "cache_read_tokens",
8970
+ required: !1
8971
+ },
8972
+ {
8973
+ path: "completion_tokens",
8974
+ dest: "output_tokens",
8975
+ required: !0
8976
+ }
8977
+ ]
8978
+ }
8979
+ ],
8980
+ models: [
8981
+ {
8982
+ id: "kimi-k2-0711-preview",
8983
+ name: "Kimi K2 0711 Preview",
8984
+ description: "MoE foundation model with exceptional coding and agent capabilities, featuring 1 trillion total parameters and 32 billion activated parameters.",
8985
+ match: {
8986
+ equals: "kimi-k2-0711-preview"
8987
+ },
8988
+ context_window: 131072,
8989
+ prices: {
8990
+ input_mtok: 0.6,
8991
+ cache_read_mtok: 0.15,
8992
+ output_mtok: 2.5
8993
+ }
8994
+ },
8995
+ {
8996
+ id: "kimi-k2-0905-preview",
8997
+ name: "Kimi K2 0905 Preview",
8998
+ description: "Based on kimi-k2-0711-preview, with enhanced agentic coding abilities, improved frontend code quality and practicality, and better context understanding. MoE foundation model with 1 trillion total parameters and 32 billion activated parameters.",
8999
+ match: {
9000
+ equals: "kimi-k2-0905-preview"
9001
+ },
9002
+ context_window: 262144,
9003
+ prices: {
9004
+ input_mtok: 0.6,
9005
+ cache_read_mtok: 0.15,
9006
+ output_mtok: 2.5
9007
+ }
9008
+ },
9009
+ {
9010
+ id: "kimi-k2-thinking",
9011
+ name: "Kimi K2 Thinking",
9012
+ description: "A thinking model with general agentic and reasoning capabilities, specializing in deep reasoning tasks.",
9013
+ match: {
9014
+ equals: "kimi-k2-thinking"
9015
+ },
9016
+ context_window: 262144,
9017
+ prices: {
9018
+ input_mtok: 0.6,
9019
+ cache_read_mtok: 0.15,
9020
+ output_mtok: 2.5
9021
+ }
9022
+ },
9023
+ {
9024
+ id: "kimi-k2-thinking-turbo",
9025
+ name: "Kimi K2 Thinking Turbo",
9026
+ description: "High-speed version of kimi-k2-thinking, suitable for scenarios requiring both deep reasoning and extremely fast responses.",
9027
+ match: {
9028
+ equals: "kimi-k2-thinking-turbo"
9029
+ },
9030
+ context_window: 262144,
9031
+ prices: {
9032
+ input_mtok: 1.15,
9033
+ cache_read_mtok: 0.15,
9034
+ output_mtok: 8
9035
+ }
9036
+ },
9037
+ {
9038
+ id: "kimi-k2-turbo-preview",
9039
+ name: "Kimi K2 Turbo Preview",
9040
+ description: "High-speed version of kimi-k2, always aligned with the latest kimi-k2. Same model parameters as kimi-k2, output speed up to 60 tokens/sec (max 100 tokens/sec).",
9041
+ match: {
9042
+ starts_with: "kimi-k2-turbo"
9043
+ },
9044
+ context_window: 262144,
9045
+ prices: {
9046
+ input_mtok: 1.15,
9047
+ cache_read_mtok: 0.15,
9048
+ output_mtok: 8
9049
+ }
9050
+ },
9051
+ {
9052
+ id: "kimi-k2.5",
9053
+ name: "Kimi K2.5",
9054
+ description: "Kimi's most versatile model featuring a native multimodal architecture that supports both visual and text input, thinking and non-thinking modes, and dialogue and agent tasks. Supports automatic context caching, ToolCalls, JSON Mode, Partial Mode, and internet search.",
8666
9055
  match: {
8667
- equals: "mixtral-8x22b-instruct"
9056
+ starts_with: "kimi-k2.5"
8668
9057
  },
9058
+ context_window: 262144,
8669
9059
  prices: {
8670
- input_mtok: 0.9,
8671
- output_mtok: 0.9
9060
+ input_mtok: 0.6,
9061
+ cache_read_mtok: 0.1,
9062
+ output_mtok: 3
8672
9063
  }
8673
9064
  },
8674
9065
  {
8675
- id: "mixtral-8x7b",
8676
- name: "Mixtral 8x7B",
9066
+ id: "moonshot-v1-128k",
9067
+ name: "Moonshot V1 128K",
8677
9068
  match: {
8678
9069
  or: [
8679
9070
  {
8680
- starts_with: "mixtral-8x7b"
9071
+ equals: "moonshot-v1-128k"
8681
9072
  },
8682
9073
  {
8683
- equals: "open-mixtral-8x7b"
9074
+ equals: "moonshot-v1-128k-vision-preview"
8684
9075
  }
8685
9076
  ]
8686
9077
  },
9078
+ context_window: 131072,
8687
9079
  prices: {
8688
- input_mtok: 0.7,
8689
- output_mtok: 0.7
9080
+ input_mtok: 2,
9081
+ output_mtok: 5
8690
9082
  }
8691
9083
  },
8692
9084
  {
8693
- id: "pixtral-12b",
8694
- name: "Pixtral 12B",
8695
- description: "The first multi-modal, text+image-to-text model from Mistral AI. Its weights were launched via torrent: https://x.com/mistralai/status/1833758285167722836.",
9085
+ id: "moonshot-v1-32k",
9086
+ name: "Moonshot V1 32K",
8696
9087
  match: {
8697
9088
  or: [
8698
9089
  {
8699
- equals: "pixtral-12b"
9090
+ equals: "moonshot-v1-32k"
8700
9091
  },
8701
9092
  {
8702
- equals: "pixtral-12b-latest"
9093
+ equals: "moonshot-v1-32k-vision-preview"
8703
9094
  }
8704
9095
  ]
8705
9096
  },
9097
+ context_window: 32768,
8706
9098
  prices: {
8707
- input_mtok: 0.15,
8708
- output_mtok: 0.15
9099
+ input_mtok: 1,
9100
+ output_mtok: 3
8709
9101
  }
8710
9102
  },
8711
9103
  {
8712
- id: "pixtral-large",
8713
- name: "Pixtral Large 2411",
8714
- description: "Pixtral Large is a 124B parameter, open-weight, multimodal model built on top of Mistral Large 2. The model is able to understand documents, charts and natural images.",
9104
+ id: "moonshot-v1-8k",
9105
+ name: "Moonshot V1 8K",
8715
9106
  match: {
8716
9107
  or: [
8717
9108
  {
8718
- equals: "pixtral-large-latest"
9109
+ equals: "moonshot-v1-8k"
8719
9110
  },
8720
9111
  {
8721
- equals: "pixtral-large-2411"
9112
+ equals: "moonshot-v1-8k-vision-preview"
8722
9113
  }
8723
9114
  ]
8724
9115
  },
9116
+ context_window: 8192,
8725
9117
  prices: {
8726
- input_mtok: 2,
8727
- output_mtok: 6
9118
+ input_mtok: 0.2,
9119
+ output_mtok: 2
8728
9120
  }
8729
9121
  }
8730
9122
  ]
@@ -10045,6 +10437,174 @@ Compared to other leading proprietary and open-weights models Command A delivers
10045
10437
  output_mtok: 168
10046
10438
  }
10047
10439
  },
10440
+ {
10441
+ id: "gpt-5.3-codex",
10442
+ name: "GPT-5.3-Codex",
10443
+ description: "The most capable agentic coding model",
10444
+ match: {
10445
+ or: [
10446
+ {
10447
+ equals: "gpt-5.3-codex"
10448
+ },
10449
+ {
10450
+ equals: "gpt-5-3-codex"
10451
+ }
10452
+ ]
10453
+ },
10454
+ context_window: 4e5,
10455
+ prices: {
10456
+ input_mtok: 1.75,
10457
+ cache_read_mtok: 0.175,
10458
+ output_mtok: 14
10459
+ }
10460
+ },
10461
+ {
10462
+ id: "gpt-5.4",
10463
+ name: "GPT-5.4",
10464
+ description: "OpenAI's most capable model with a 1.05M token context window.",
10465
+ match: {
10466
+ or: [
10467
+ {
10468
+ equals: "gpt-5.4"
10469
+ },
10470
+ {
10471
+ equals: "gpt-5.4-2026-03-05"
10472
+ },
10473
+ {
10474
+ equals: "gpt-5-4"
10475
+ },
10476
+ {
10477
+ equals: "gpt-5-4-2026-03-05"
10478
+ }
10479
+ ]
10480
+ },
10481
+ context_window: 105e4,
10482
+ prices: {
10483
+ input_mtok: {
10484
+ base: 2.5,
10485
+ tiers: [
10486
+ {
10487
+ start: 272e3,
10488
+ price: 5
10489
+ }
10490
+ ]
10491
+ },
10492
+ cache_read_mtok: {
10493
+ base: 0.25,
10494
+ tiers: [
10495
+ {
10496
+ start: 272e3,
10497
+ price: 0.5
10498
+ }
10499
+ ]
10500
+ },
10501
+ output_mtok: {
10502
+ base: 15,
10503
+ tiers: [
10504
+ {
10505
+ start: 272e3,
10506
+ price: 22.5
10507
+ }
10508
+ ]
10509
+ }
10510
+ }
10511
+ },
10512
+ {
10513
+ id: "gpt-5.4-mini",
10514
+ name: "GPT-5.4 mini",
10515
+ description: "Our strongest mini model yet for coding, computer use, and subagents.",
10516
+ match: {
10517
+ or: [
10518
+ {
10519
+ equals: "gpt-5.4-mini"
10520
+ },
10521
+ {
10522
+ equals: "gpt-5.4-mini-2026-03-17"
10523
+ },
10524
+ {
10525
+ equals: "gpt-5-4-mini"
10526
+ },
10527
+ {
10528
+ equals: "gpt-5-4-mini-2026-03-17"
10529
+ }
10530
+ ]
10531
+ },
10532
+ context_window: 4e5,
10533
+ prices: {
10534
+ input_mtok: 0.75,
10535
+ cache_read_mtok: 0.075,
10536
+ output_mtok: 4.5
10537
+ }
10538
+ },
10539
+ {
10540
+ id: "gpt-5.4-nano",
10541
+ name: "GPT-5.4 nano",
10542
+ description: "Our cheapest GPT-5.4-class model for simple high-volume tasks.",
10543
+ match: {
10544
+ or: [
10545
+ {
10546
+ equals: "gpt-5.4-nano"
10547
+ },
10548
+ {
10549
+ equals: "gpt-5.4-nano-2026-03-17"
10550
+ },
10551
+ {
10552
+ equals: "gpt-5-4-nano"
10553
+ },
10554
+ {
10555
+ equals: "gpt-5-4-nano-2026-03-17"
10556
+ }
10557
+ ]
10558
+ },
10559
+ context_window: 4e5,
10560
+ prices: {
10561
+ input_mtok: 0.2,
10562
+ cache_read_mtok: 0.02,
10563
+ output_mtok: 1.25
10564
+ }
10565
+ },
10566
+ {
10567
+ id: "gpt-5.4-pro",
10568
+ name: "GPT-5.4 Pro",
10569
+ description: "Version of GPT-5.4 that produces smarter and more precise responses.",
10570
+ match: {
10571
+ or: [
10572
+ {
10573
+ equals: "gpt-5.4-pro"
10574
+ },
10575
+ {
10576
+ equals: "gpt-5.4-pro-2026-03-05"
10577
+ },
10578
+ {
10579
+ equals: "gpt-5-4-pro"
10580
+ },
10581
+ {
10582
+ equals: "gpt-5-4-pro-2026-03-05"
10583
+ }
10584
+ ]
10585
+ },
10586
+ context_window: 105e4,
10587
+ prices: {
10588
+ input_mtok: {
10589
+ base: 30,
10590
+ tiers: [
10591
+ {
10592
+ start: 272e3,
10593
+ price: 60
10594
+ }
10595
+ ]
10596
+ },
10597
+ output_mtok: {
10598
+ base: 180,
10599
+ tiers: [
10600
+ {
10601
+ start: 272e3,
10602
+ price: 270
10603
+ }
10604
+ ]
10605
+ }
10606
+ }
10607
+ },
10048
10608
  {
10049
10609
  id: "gpt-realtime",
10050
10610
  match: {
@@ -10891,6 +11451,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
10891
11451
  }
10892
11452
  }
10893
11453
  },
11454
+ {
11455
+ id: "anthropic/claude-sonnet-4.6",
11456
+ match: {
11457
+ or: [
11458
+ {
11459
+ equals: "anthropic/claude-sonnet-4.6"
11460
+ },
11461
+ {
11462
+ equals: "anthropic/claude-sonnet-4.6:beta"
11463
+ }
11464
+ ]
11465
+ },
11466
+ prices: {
11467
+ input_mtok: 3,
11468
+ cache_write_mtok: 3.75,
11469
+ cache_read_mtok: 0.3,
11470
+ output_mtok: 15
11471
+ }
11472
+ },
10894
11473
  {
10895
11474
  id: "anubis-pro-105b-v1",
10896
11475
  name: "Anubis Pro 105B V1",
@@ -15983,7 +16562,14 @@ Compared to other leading proprietary and open-weights models Command A delivers
15983
16562
  id: "qwen/qwen3-max",
15984
16563
  name: "Qwen 3 Max",
15985
16564
  match: {
15986
- equals: "qwen/qwen3-max"
16565
+ or: [
16566
+ {
16567
+ equals: "qwen/qwen3-max"
16568
+ },
16569
+ {
16570
+ equals: "qwen/qwen3-max-thinking"
16571
+ }
16572
+ ]
15987
16573
  },
15988
16574
  prices: {
15989
16575
  input_mtok: 1.2,
@@ -16157,6 +16743,17 @@ Compared to other leading proprietary and open-weights models Command A delivers
16157
16743
  },
16158
16744
  prices: {}
16159
16745
  },
16746
+ {
16747
+ id: "qwen3.5-plus-02-15",
16748
+ name: "Qwen3.5 plus-02-15",
16749
+ match: {
16750
+ equals: "qwen3.5-plus-02-15"
16751
+ },
16752
+ prices: {
16753
+ input_mtok: 0.4,
16754
+ output_mtok: 2.4
16755
+ }
16756
+ },
16160
16757
  {
16161
16758
  id: "qwerky-72b:free",
16162
16759
  name: "Qwerky 72B (free)",
@@ -16851,25 +17448,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
16851
17448
  output_mtok: 0.11
16852
17449
  }
16853
17450
  },
16854
- {
16855
- id: "Meta-Llama-3_1-70B-Instruct",
16856
- name: "Meta-Llama-3_1-70B-Instruct",
16857
- match: {
16858
- or: [
16859
- {
16860
- equals: "Meta-Llama-3_1-70B-Instruct"
16861
- },
16862
- {
16863
- equals: "meta-llama-3_1-70b-instruct"
16864
- }
16865
- ]
16866
- },
16867
- context_window: 131072,
16868
- prices: {
16869
- input_mtok: 0.74,
16870
- output_mtok: 0.74
16871
- }
16872
- },
16873
17451
  {
16874
17452
  id: "Meta-Llama-3_3-70B-Instruct",
16875
17453
  name: "Meta-Llama-3_3-70B-Instruct",
@@ -16965,25 +17543,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
16965
17543
  output_mtok: 0.7
16966
17544
  }
16967
17545
  },
16968
- {
16969
- id: "Qwen2.5-Coder-32B-Instruct",
16970
- name: "Qwen2.5-Coder-32B-Instruct",
16971
- match: {
16972
- or: [
16973
- {
16974
- equals: "Qwen2.5-Coder-32B-Instruct"
16975
- },
16976
- {
16977
- equals: "qwen2.5-coder-32b-instruct"
16978
- }
16979
- ]
16980
- },
16981
- context_window: 32768,
16982
- prices: {
16983
- input_mtok: 0.96,
16984
- output_mtok: 0.96
16985
- }
16986
- },
16987
17546
  {
16988
17547
  id: "Qwen2.5-VL-72B-Instruct",
16989
17548
  name: "Qwen2.5-VL-72B-Instruct",
@@ -17097,18 +17656,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
17097
17656
  input_mtok: 0.05,
17098
17657
  output_mtok: 0.18
17099
17658
  }
17100
- },
17101
- {
17102
- id: "llava-next-mistral-7b",
17103
- name: "llava-next-mistral-7b",
17104
- match: {
17105
- equals: "llava-next-mistral-7b"
17106
- },
17107
- context_window: 32768,
17108
- prices: {
17109
- input_mtok: 0.32,
17110
- output_mtok: 0.32
17111
- }
17112
17659
  }
17113
17660
  ]
17114
17661
  },
@@ -18030,6 +18577,28 @@ Compared to other leading proprietary and open-weights models Command A delivers
18030
18577
  equals: "xai"
18031
18578
  },
18032
18579
  extractors: [
18580
+ {
18581
+ api_flavor: "default",
18582
+ root: "usage",
18583
+ model_path: "model",
18584
+ mappings: [
18585
+ {
18586
+ path: "prompt_tokens",
18587
+ dest: "input_tokens",
18588
+ required: !0
18589
+ },
18590
+ {
18591
+ path: "cached_prompt_text_tokens",
18592
+ dest: "cache_read_tokens",
18593
+ required: !1
18594
+ },
18595
+ {
18596
+ path: "completion_tokens",
18597
+ dest: "output_tokens",
18598
+ required: !0
18599
+ }
18600
+ ]
18601
+ },
18033
18602
  {
18034
18603
  api_flavor: "chat",
18035
18604
  root: "usage",
@@ -18350,31 +18919,31 @@ function Ye(i, o, u) {
18350
18919
  u > r.start && (s = r.price);
18351
18920
  return s * o / 1e6;
18352
18921
  }
18353
- function R(i, o, u, s) {
18922
+ function z(i, o, u, s) {
18354
18923
  return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ye(i, o, s);
18355
18924
  }
18356
18925
  function Je(i, o) {
18357
18926
  let u = 0, s = 0;
18358
- const r = i.input_tokens ?? 0, _ = i.cache_read_tokens ?? 0, h = i.cache_write_tokens ?? 0, k = i.cache_audio_read_tokens ?? 0, q = i.output_audio_tokens ?? 0;
18359
- let I = i.input_audio_tokens ?? 0;
18360
- if (I -= k, I < 0)
18927
+ const r = i.input_tokens ?? 0, h = i.cache_read_tokens ?? 0, _ = i.cache_write_tokens ?? 0, k = i.cache_audio_read_tokens ?? 0, q = i.output_audio_tokens ?? 0;
18928
+ let y = i.input_audio_tokens ?? 0;
18929
+ if (y -= k, y < 0)
18361
18930
  throw new Error("cache_audio_read_tokens cannot be greater than input_audio_tokens");
18362
18931
  let B = i.input_tokens ?? 0;
18363
- if (B -= _, B -= h, B -= I, B < 0)
18932
+ if (B -= h, B -= _, B -= y, B < 0)
18364
18933
  throw new Error("Uncached text input tokens cannot be negative");
18365
- let y = _;
18366
- if (y -= k, y < 0)
18934
+ let I = h;
18935
+ if (I -= k, I < 0)
18367
18936
  throw new Error("cache_audio_read_tokens cannot be greater than cache_read_tokens");
18368
- u += R(o.input_mtok, B, "input_mtok", r), u += R(o.cache_read_mtok, y, "cache_read_mtok", r), u += R(o.cache_write_mtok, h, "cache_write_mtok", r), u += R(o.input_audio_mtok, I, "input_audio_mtok", r), u += R(o.cache_audio_read_mtok, k, "cache_audio_read_mtok", r);
18937
+ u += z(o.input_mtok, B, "input_mtok", r), u += z(o.cache_read_mtok, I, "cache_read_mtok", r), u += z(o.cache_write_mtok, _, "cache_write_mtok", r), u += z(o.input_audio_mtok, y, "input_audio_mtok", r), u += z(o.cache_audio_read_mtok, k, "cache_audio_read_mtok", r);
18369
18938
  let L = i.output_tokens ?? 0;
18370
18939
  if (L -= q, L < 0)
18371
18940
  throw new Error("output_audio_tokens cannot be greater than output_tokens");
18372
- s += R(o.output_mtok, L, "output_mtok", r), s += R(o.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
18373
- let C = u + s;
18374
- return o.requests_kcount !== void 0 && (C += o.requests_kcount / 1e3), {
18941
+ s += z(o.output_mtok, L, "output_mtok", r), s += z(o.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
18942
+ let G = u + s;
18943
+ return o.requests_kcount !== void 0 && (G += o.requests_kcount / 1e3), {
18375
18944
  input_price: u,
18376
18945
  output_price: s,
18377
- total_price: C
18946
+ total_price: G
18378
18947
  };
18379
18948
  }
18380
18949
  function Ze(i, o) {
@@ -18388,24 +18957,24 @@ function Ze(i, o) {
18388
18957
  if (o >= new Date(r.start_date))
18389
18958
  return s.prices;
18390
18959
  } else {
18391
- const _ = o.toISOString().slice(11, 19), h = r.start_time, k = r.end_time;
18392
- if (k < h) {
18393
- if (_ >= h || _ < k)
18960
+ const h = o.toISOString().slice(11, 19), _ = r.start_time, k = r.end_time;
18961
+ if (k < _) {
18962
+ if (h >= _ || h < k)
18394
18963
  return s.prices;
18395
- } else if (_ >= h && _ < k)
18964
+ } else if (h >= _ && h < k)
18396
18965
  return s.prices;
18397
18966
  }
18398
18967
  }
18399
18968
  return i.prices[0].prices;
18400
18969
  }
18401
- function E(i, o) {
18402
- return "or" in i ? i.or.some((u) => E(u, o)) : "and" in i ? i.and.every((u) => E(u, o)) : "equals" in i ? o === i.equals : "starts_with" in i ? o.startsWith(i.starts_with) : "ends_with" in i ? o.endsWith(i.ends_with) : "contains" in i ? o.includes(i.contains) : "regex" in i ? new RegExp(i.regex).test(o) : !1;
18970
+ function D(i, o) {
18971
+ return "or" in i ? i.or.some((u) => D(u, o)) : "and" in i ? i.and.every((u) => D(u, o)) : "equals" in i ? o === i.equals : "starts_with" in i ? o.startsWith(i.starts_with) : "ends_with" in i ? o.endsWith(i.ends_with) : "contains" in i ? o.includes(i.contains) : "regex" in i ? new RegExp(i.regex).test(o) : !1;
18403
18972
  }
18404
18973
  function Xe(i, o) {
18405
18974
  const u = o.toLowerCase().trim(), s = i.find((r) => r.id === u);
18406
- return s || i.find((r) => r.provider_match && E(r.provider_match, u));
18975
+ return s || i.find((r) => r.provider_match && D(r.provider_match, u));
18407
18976
  }
18408
- function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18977
+ function _e(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18409
18978
  if (s) {
18410
18979
  const r = Xe(i, s);
18411
18980
  if (r || s.toLowerCase() !== "litellm")
@@ -18414,20 +18983,20 @@ function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18414
18983
  if (u)
18415
18984
  return i.find((r) => new RegExp(r.api_pattern).test(u));
18416
18985
  if (o)
18417
- return i.find((r) => r.model_match && E(r.model_match, o));
18986
+ return i.find((r) => r.model_match && D(r.model_match, o));
18418
18987
  }
18419
18988
  function et(i, o) {
18420
- return i.find((u) => E(u.match, o));
18989
+ return i.find((u) => D(u.match, o));
18421
18990
  }
18422
18991
  function qe(i, o, u) {
18423
18992
  const s = et(i.models, o);
18424
18993
  if (s) return s;
18425
18994
  if (i.fallback_model_providers && u)
18426
18995
  for (const r of i.fallback_model_providers) {
18427
- const _ = u.find((h) => h.id === r);
18428
- if (_) {
18429
- const h = qe(_, o);
18430
- if (h) return h;
18996
+ const h = u.find((_) => _.id === r);
18997
+ if (h) {
18998
+ const _ = qe(h, o);
18999
+ if (_) return _;
18431
19000
  }
18432
19001
  }
18433
19002
  }
@@ -18436,23 +19005,23 @@ Promise.resolve(oe);
18436
19005
  function tt(i, o, u) {
18437
19006
  let s = o.toLowerCase().trim(), r = u?.providerId;
18438
19007
  if (r && r.toLowerCase() === "litellm" && s.includes("/")) {
18439
- const B = s.indexOf("/"), y = s.slice(0, B), L = s.slice(B + 1);
18440
- y && L && he(ae, { providerId: y }) && (r = y, s = L);
19008
+ const B = s.indexOf("/"), I = s.slice(0, B), L = s.slice(B + 1);
19009
+ I && L && _e(ae, { providerId: I }) && (r = I, s = L);
18441
19010
  }
18442
- const _ = u?.provider ?? he(ae, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: r });
18443
- if (!_) return null;
18444
- const h = qe(_, s, ae);
19011
+ const h = u?.provider ?? _e(ae, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: r });
18445
19012
  if (!h) return null;
18446
- const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Ze(h, k), I = Je(i, q);
19013
+ const _ = qe(h, s, ae);
19014
+ if (!_) return null;
19015
+ const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Ze(_, k), y = Je(i, q);
18447
19016
  return {
18448
19017
  auto_update_timestamp: void 0,
18449
- model: h,
19018
+ model: _,
18450
19019
  model_price: q,
18451
- provider: _,
18452
- ...I
19020
+ provider: h,
19021
+ ...y
18453
19022
  };
18454
19023
  }
18455
- const f = _e(ze(process.argv)).scriptName("genai-prices").command(
19024
+ const f = he(Re(process.argv)).scriptName("genai-prices").command(
18456
19025
  "list [provider]",
18457
19026
  "List providers and models",
18458
19027
  (i) => i.positional("provider", { describe: "Provider ID to filter", type: "string" })
@@ -18490,33 +19059,33 @@ function at() {
18490
19059
  requests: f.requests !== void 0 ? Number(f.requests) : void 0
18491
19060
  }, s = f.timestamp ? new Date(String(f.timestamp)) : void 0;
18492
19061
  let r = !1;
18493
- for (const _ of o) {
18494
- let h, k = _;
18495
- k.includes(":") && ([h, k] = k.split(":", 2));
19062
+ for (const h of o) {
19063
+ let _, k = h;
19064
+ k.includes(":") && ([_, k] = k.split(":", 2));
18496
19065
  try {
18497
- const q = tt(u, k, { providerId: h, timestamp: s });
19066
+ const q = tt(u, k, { providerId: _, timestamp: s });
18498
19067
  if (!q) {
18499
- r = !0, console.error(`No price found for model ${_}`);
19068
+ r = !0, console.error(`No price found for model ${h}`);
18500
19069
  continue;
18501
19070
  }
18502
- const I = q.model.context_window, B = [
19071
+ const y = q.model.context_window, B = [
18503
19072
  ["Provider", q.provider.name],
18504
19073
  ["Model", q.model.name ?? q.model.id],
18505
19074
  ["Model Prices", JSON.stringify(q.model_price)],
18506
- ["Context Window", I !== void 0 ? I.toLocaleString() : void 0],
19075
+ ["Context Window", y !== void 0 ? y.toLocaleString() : void 0],
18507
19076
  ["Total Price", `$${q.total_price}`],
18508
19077
  ["Input Price", `$${q.input_price}`],
18509
19078
  ["Output Price", `$${q.output_price}`]
18510
19079
  ];
18511
- for (const [y, L] of B)
18512
- L !== void 0 && console.log(`${y.padStart(14)}: ${L}`);
19080
+ for (const [I, L] of B)
19081
+ L !== void 0 && console.log(`${I.padStart(14)}: ${L}`);
18513
19082
  console.log("");
18514
19083
  } catch (q) {
18515
- r = !0, q instanceof Error && console.error(`Error for model ${_}:`, q.message);
19084
+ r = !0, q instanceof Error && console.error(`Error for model ${h}:`, q.message);
18516
19085
  }
18517
19086
  }
18518
19087
  process.exit(r ? 1 : 0);
18519
19088
  }
18520
- _e().showHelp(), process.exit(1);
19089
+ he().showHelp(), process.exit(1);
18521
19090
  }
18522
19091
  at();