@agentproto/model-catalog 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/dist/access/index.d.ts +30 -0
  4. package/dist/access/index.mjs +4 -0
  5. package/dist/access/index.mjs.map +1 -0
  6. package/dist/audio/index.d.ts +84 -0
  7. package/dist/audio/index.mjs +3 -0
  8. package/dist/audio/index.mjs.map +1 -0
  9. package/dist/audio-BzVF_wke.d.ts +92 -0
  10. package/dist/base-BNHcMifc.d.ts +109 -0
  11. package/dist/byok/index.d.ts +33 -0
  12. package/dist/byok/index.mjs +3 -0
  13. package/dist/byok/index.mjs.map +1 -0
  14. package/dist/catalog-aQHd559b.d.ts +594 -0
  15. package/dist/chunk-2LWYZOWB.mjs +643 -0
  16. package/dist/chunk-2LWYZOWB.mjs.map +1 -0
  17. package/dist/chunk-CINXNTU3.mjs +134 -0
  18. package/dist/chunk-CINXNTU3.mjs.map +1 -0
  19. package/dist/chunk-F7OEHYUI.mjs +187 -0
  20. package/dist/chunk-F7OEHYUI.mjs.map +1 -0
  21. package/dist/chunk-GH7PB5FB.mjs +183 -0
  22. package/dist/chunk-GH7PB5FB.mjs.map +1 -0
  23. package/dist/chunk-H6JUTF3U.mjs +33 -0
  24. package/dist/chunk-H6JUTF3U.mjs.map +1 -0
  25. package/dist/chunk-HEDDSOZF.mjs +47 -0
  26. package/dist/chunk-HEDDSOZF.mjs.map +1 -0
  27. package/dist/chunk-HRRG2RZO.mjs +116 -0
  28. package/dist/chunk-HRRG2RZO.mjs.map +1 -0
  29. package/dist/chunk-IJZ4XPO2.mjs +606 -0
  30. package/dist/chunk-IJZ4XPO2.mjs.map +1 -0
  31. package/dist/chunk-IORIAFK2.mjs +227 -0
  32. package/dist/chunk-IORIAFK2.mjs.map +1 -0
  33. package/dist/chunk-OHAMH3ZE.mjs +2629 -0
  34. package/dist/chunk-OHAMH3ZE.mjs.map +1 -0
  35. package/dist/chunk-QHELXPSL.mjs +85 -0
  36. package/dist/chunk-QHELXPSL.mjs.map +1 -0
  37. package/dist/chunk-SGJR6ZQH.mjs +1230 -0
  38. package/dist/chunk-SGJR6ZQH.mjs.map +1 -0
  39. package/dist/chunk-WRUWNKDB.mjs +521 -0
  40. package/dist/chunk-WRUWNKDB.mjs.map +1 -0
  41. package/dist/chunk-WTHHXXIK.mjs +366 -0
  42. package/dist/chunk-WTHHXXIK.mjs.map +1 -0
  43. package/dist/chunk-XFDXTFV3.mjs +28 -0
  44. package/dist/chunk-XFDXTFV3.mjs.map +1 -0
  45. package/dist/cost/index.d.ts +114 -0
  46. package/dist/cost/index.mjs +13 -0
  47. package/dist/cost/index.mjs.map +1 -0
  48. package/dist/curation/index.d.ts +98 -0
  49. package/dist/curation/index.mjs +13 -0
  50. package/dist/curation/index.mjs.map +1 -0
  51. package/dist/evaluate-DisH3H7u.d.ts +84 -0
  52. package/dist/image/index.d.ts +79 -0
  53. package/dist/image/index.mjs +3 -0
  54. package/dist/image/index.mjs.map +1 -0
  55. package/dist/index-BICjPG8H.d.ts +132 -0
  56. package/dist/index-D8nL3fPZ.d.ts +171 -0
  57. package/dist/index.d.ts +94 -0
  58. package/dist/index.mjs +33 -0
  59. package/dist/index.mjs.map +1 -0
  60. package/dist/llm/index.d.ts +48 -0
  61. package/dist/llm/index.mjs +4 -0
  62. package/dist/llm/index.mjs.map +1 -0
  63. package/dist/overlay/index.d.ts +67 -0
  64. package/dist/overlay/index.mjs +3 -0
  65. package/dist/overlay/index.mjs.map +1 -0
  66. package/dist/picker/index.d.ts +11 -0
  67. package/dist/picker/index.mjs +26 -0
  68. package/dist/picker/index.mjs.map +1 -0
  69. package/dist/pricing/index.d.ts +106 -0
  70. package/dist/pricing/index.mjs +3 -0
  71. package/dist/pricing/index.mjs.map +1 -0
  72. package/dist/providers/index.d.ts +78 -0
  73. package/dist/providers/index.mjs +237 -0
  74. package/dist/providers/index.mjs.map +1 -0
  75. package/dist/schema/index.d.ts +627 -0
  76. package/dist/schema/index.mjs +4 -0
  77. package/dist/schema/index.mjs.map +1 -0
  78. package/dist/schema/voice.d.ts +66 -0
  79. package/dist/schema/voice.mjs +3 -0
  80. package/dist/schema/voice.mjs.map +1 -0
  81. package/dist/video/index.d.ts +78 -0
  82. package/dist/video/index.mjs +3 -0
  83. package/dist/video/index.mjs.map +1 -0
  84. package/dist/voice/index.d.ts +1300 -0
  85. package/dist/voice/index.mjs +4 -0
  86. package/dist/voice/index.mjs.map +1 -0
  87. package/package.json +137 -0
@@ -0,0 +1,2629 @@
1
+ import { pricingRegistry, CC_USD_RATE } from './chunk-QHELXPSL.mjs';
2
+
3
+ /**
4
+ * @agentproto/model-catalog v0.1.0
5
+ * Unified model catalog: LLM, image, video, audio entries + cost dispatcher + picker.
6
+ * Zod-only OSS core; @agstudio/model-catalog layers billing/access/BYOK on top.
7
+ */
8
+
9
+ // src/llm/openrouter-routes.generated.ts
10
+ var OPENROUTER_ROUTES = {
11
+ "~anthropic/claude-haiku-latest": {
12
+ inputPer1M: 1,
13
+ outputPer1M: 5,
14
+ vendor: "anthropic",
15
+ provider: "openrouter"
16
+ },
17
+ "~anthropic/claude-opus-latest": {
18
+ inputPer1M: 5,
19
+ outputPer1M: 25,
20
+ vendor: "anthropic",
21
+ provider: "openrouter"
22
+ },
23
+ "~anthropic/claude-sonnet-latest": {
24
+ inputPer1M: 3,
25
+ outputPer1M: 15,
26
+ vendor: "anthropic",
27
+ provider: "openrouter"
28
+ },
29
+ "~google/gemini-flash-latest": {
30
+ inputPer1M: 0.5,
31
+ outputPer1M: 3,
32
+ vendor: "google",
33
+ provider: "openrouter"
34
+ },
35
+ "~google/gemini-pro-latest": {
36
+ inputPer1M: 2,
37
+ outputPer1M: 12,
38
+ vendor: "google",
39
+ provider: "openrouter"
40
+ },
41
+ "~moonshotai/kimi-latest": {
42
+ inputPer1M: 0.7448,
43
+ outputPer1M: 4.655,
44
+ vendor: "moonshotai",
45
+ provider: "openrouter"
46
+ },
47
+ "~openai/gpt-latest": {
48
+ inputPer1M: 5,
49
+ outputPer1M: 30,
50
+ vendor: "openai",
51
+ provider: "openrouter"
52
+ },
53
+ "~openai/gpt-mini-latest": {
54
+ inputPer1M: 0.75,
55
+ outputPer1M: 4.5,
56
+ vendor: "openai",
57
+ provider: "openrouter"
58
+ },
59
+ "ai21/jamba-large-1.7": {
60
+ inputPer1M: 2,
61
+ outputPer1M: 8,
62
+ vendor: "ai21",
63
+ provider: "openrouter"
64
+ },
65
+ "aion-labs/aion-1.0": {
66
+ inputPer1M: 4,
67
+ outputPer1M: 8,
68
+ vendor: "aion-labs",
69
+ provider: "openrouter"
70
+ },
71
+ "aion-labs/aion-1.0-mini": {
72
+ inputPer1M: 0.7,
73
+ outputPer1M: 1.4,
74
+ vendor: "aion-labs",
75
+ provider: "openrouter"
76
+ },
77
+ "aion-labs/aion-2.0": {
78
+ inputPer1M: 0.8,
79
+ outputPer1M: 1.6,
80
+ vendor: "aion-labs",
81
+ provider: "openrouter"
82
+ },
83
+ "aion-labs/aion-rp-llama-3.1-8b": {
84
+ inputPer1M: 0.8,
85
+ outputPer1M: 1.6,
86
+ vendor: "aion-labs",
87
+ provider: "openrouter"
88
+ },
89
+ "alfredpros/codellama-7b-instruct-solidity": {
90
+ inputPer1M: 0.8,
91
+ outputPer1M: 1.2,
92
+ vendor: "alfredpros",
93
+ provider: "openrouter"
94
+ },
95
+ "alibaba/tongyi-deepresearch-30b-a3b": {
96
+ inputPer1M: 0.09,
97
+ outputPer1M: 0.45,
98
+ vendor: "alibaba",
99
+ provider: "openrouter"
100
+ },
101
+ "allenai/olmo-3-32b-think": {
102
+ inputPer1M: 0.15,
103
+ outputPer1M: 0.5,
104
+ vendor: "allenai",
105
+ provider: "openrouter"
106
+ },
107
+ "allenai/olmo-3.1-32b-instruct": {
108
+ inputPer1M: 0.2,
109
+ outputPer1M: 0.6,
110
+ vendor: "allenai",
111
+ provider: "openrouter"
112
+ },
113
+ "alpindale/goliath-120b": {
114
+ inputPer1M: 3.75,
115
+ outputPer1M: 7.5,
116
+ vendor: "alpindale",
117
+ provider: "openrouter"
118
+ },
119
+ "amazon/nova-2-lite-v1": {
120
+ inputPer1M: 0.3,
121
+ outputPer1M: 2.5,
122
+ vendor: "amazon",
123
+ provider: "openrouter"
124
+ },
125
+ "amazon/nova-lite-v1": {
126
+ inputPer1M: 0.06,
127
+ outputPer1M: 0.24,
128
+ vendor: "amazon",
129
+ provider: "openrouter"
130
+ },
131
+ "amazon/nova-micro-v1": {
132
+ inputPer1M: 0.035,
133
+ outputPer1M: 0.14,
134
+ vendor: "amazon",
135
+ provider: "openrouter"
136
+ },
137
+ "amazon/nova-premier-v1": {
138
+ inputPer1M: 2.5,
139
+ outputPer1M: 12.5,
140
+ vendor: "amazon",
141
+ provider: "openrouter"
142
+ },
143
+ "amazon/nova-pro-v1": {
144
+ inputPer1M: 0.8,
145
+ outputPer1M: 3.2,
146
+ vendor: "amazon",
147
+ provider: "openrouter"
148
+ },
149
+ "anthracite-org/magnum-v4-72b": {
150
+ inputPer1M: 3,
151
+ outputPer1M: 5,
152
+ vendor: "anthracite-org",
153
+ provider: "openrouter"
154
+ },
155
+ "anthropic/claude-3-haiku": {
156
+ inputPer1M: 0.25,
157
+ outputPer1M: 1.25,
158
+ vendor: "anthropic",
159
+ provider: "openrouter"
160
+ },
161
+ "anthropic/claude-3.5-haiku": {
162
+ inputPer1M: 0.8,
163
+ outputPer1M: 4,
164
+ vendor: "anthropic",
165
+ provider: "openrouter"
166
+ },
167
+ "anthropic/claude-3.7-sonnet": {
168
+ inputPer1M: 3,
169
+ outputPer1M: 15,
170
+ vendor: "anthropic",
171
+ provider: "openrouter"
172
+ },
173
+ "anthropic/claude-3.7-sonnet:thinking": {
174
+ inputPer1M: 3,
175
+ outputPer1M: 15,
176
+ vendor: "anthropic",
177
+ provider: "openrouter"
178
+ },
179
+ "anthropic/claude-haiku-4.5": {
180
+ inputPer1M: 1,
181
+ outputPer1M: 5,
182
+ vendor: "anthropic",
183
+ provider: "openrouter"
184
+ },
185
+ "anthropic/claude-opus-4": {
186
+ inputPer1M: 15,
187
+ outputPer1M: 75,
188
+ vendor: "anthropic",
189
+ provider: "openrouter"
190
+ },
191
+ "anthropic/claude-opus-4.1": {
192
+ inputPer1M: 15,
193
+ outputPer1M: 75,
194
+ vendor: "anthropic",
195
+ provider: "openrouter"
196
+ },
197
+ "anthropic/claude-opus-4.5": {
198
+ inputPer1M: 5,
199
+ outputPer1M: 25,
200
+ vendor: "anthropic",
201
+ provider: "openrouter"
202
+ },
203
+ "anthropic/claude-opus-4.6": {
204
+ inputPer1M: 5,
205
+ outputPer1M: 25,
206
+ vendor: "anthropic",
207
+ provider: "openrouter"
208
+ },
209
+ "anthropic/claude-opus-4.6-fast": {
210
+ inputPer1M: 30,
211
+ outputPer1M: 150,
212
+ vendor: "anthropic",
213
+ provider: "openrouter"
214
+ },
215
+ "anthropic/claude-opus-4.7": {
216
+ inputPer1M: 5,
217
+ outputPer1M: 25,
218
+ vendor: "anthropic",
219
+ provider: "openrouter"
220
+ },
221
+ "anthropic/claude-sonnet-4": {
222
+ inputPer1M: 3,
223
+ outputPer1M: 15,
224
+ vendor: "anthropic",
225
+ provider: "openrouter"
226
+ },
227
+ "anthropic/claude-sonnet-4.5": {
228
+ inputPer1M: 3,
229
+ outputPer1M: 15,
230
+ vendor: "anthropic",
231
+ provider: "openrouter"
232
+ },
233
+ "anthropic/claude-sonnet-4.6": {
234
+ inputPer1M: 3,
235
+ outputPer1M: 15,
236
+ vendor: "anthropic",
237
+ provider: "openrouter"
238
+ },
239
+ "arcee-ai/coder-large": {
240
+ inputPer1M: 0.5,
241
+ outputPer1M: 0.8,
242
+ vendor: "arcee-ai",
243
+ provider: "openrouter"
244
+ },
245
+ "arcee-ai/maestro-reasoning": {
246
+ inputPer1M: 0.9,
247
+ outputPer1M: 3.3,
248
+ vendor: "arcee-ai",
249
+ provider: "openrouter"
250
+ },
251
+ "arcee-ai/spotlight": {
252
+ inputPer1M: 0.18,
253
+ outputPer1M: 0.18,
254
+ vendor: "arcee-ai",
255
+ provider: "openrouter"
256
+ },
257
+ "arcee-ai/trinity-large-preview": {
258
+ inputPer1M: 0.15,
259
+ outputPer1M: 0.45,
260
+ vendor: "arcee-ai",
261
+ provider: "openrouter"
262
+ },
263
+ "arcee-ai/trinity-large-thinking": {
264
+ inputPer1M: 0.22,
265
+ outputPer1M: 0.85,
266
+ vendor: "arcee-ai",
267
+ provider: "openrouter"
268
+ },
269
+ "arcee-ai/trinity-mini": {
270
+ inputPer1M: 0.045,
271
+ outputPer1M: 0.15,
272
+ vendor: "arcee-ai",
273
+ provider: "openrouter"
274
+ },
275
+ "arcee-ai/virtuoso-large": {
276
+ inputPer1M: 0.75,
277
+ outputPer1M: 1.2,
278
+ vendor: "arcee-ai",
279
+ provider: "openrouter"
280
+ },
281
+ "baidu/ernie-4.5-21b-a3b": {
282
+ inputPer1M: 0.07,
283
+ outputPer1M: 0.28,
284
+ vendor: "baidu",
285
+ provider: "openrouter"
286
+ },
287
+ "baidu/ernie-4.5-21b-a3b-thinking": {
288
+ inputPer1M: 0.07,
289
+ outputPer1M: 0.28,
290
+ vendor: "baidu",
291
+ provider: "openrouter"
292
+ },
293
+ "baidu/ernie-4.5-300b-a47b": {
294
+ inputPer1M: 0.28,
295
+ outputPer1M: 1.1,
296
+ vendor: "baidu",
297
+ provider: "openrouter"
298
+ },
299
+ "baidu/ernie-4.5-vl-28b-a3b": {
300
+ inputPer1M: 0.14,
301
+ outputPer1M: 0.56,
302
+ vendor: "baidu",
303
+ provider: "openrouter"
304
+ },
305
+ "baidu/ernie-4.5-vl-424b-a47b": {
306
+ inputPer1M: 0.42,
307
+ outputPer1M: 1.25,
308
+ vendor: "baidu",
309
+ provider: "openrouter"
310
+ },
311
+ "bytedance-seed/seed-1.6": {
312
+ inputPer1M: 0.25,
313
+ outputPer1M: 2,
314
+ vendor: "bytedance-seed",
315
+ provider: "openrouter"
316
+ },
317
+ "bytedance-seed/seed-1.6-flash": {
318
+ inputPer1M: 0.075,
319
+ outputPer1M: 0.3,
320
+ vendor: "bytedance-seed",
321
+ provider: "openrouter"
322
+ },
323
+ "bytedance-seed/seed-2.0-lite": {
324
+ inputPer1M: 0.25,
325
+ outputPer1M: 2,
326
+ vendor: "bytedance-seed",
327
+ provider: "openrouter"
328
+ },
329
+ "bytedance-seed/seed-2.0-mini": {
330
+ inputPer1M: 0.1,
331
+ outputPer1M: 0.4,
332
+ vendor: "bytedance-seed",
333
+ provider: "openrouter"
334
+ },
335
+ "bytedance/ui-tars-1.5-7b": {
336
+ inputPer1M: 0.1,
337
+ outputPer1M: 0.2,
338
+ vendor: "bytedance",
339
+ provider: "openrouter"
340
+ },
341
+ "cohere/command-a": {
342
+ inputPer1M: 2.5,
343
+ outputPer1M: 10,
344
+ vendor: "cohere",
345
+ provider: "openrouter"
346
+ },
347
+ "cohere/command-r-08-2024": {
348
+ inputPer1M: 0.15,
349
+ outputPer1M: 0.6,
350
+ vendor: "cohere",
351
+ provider: "openrouter"
352
+ },
353
+ "cohere/command-r-plus-08-2024": {
354
+ inputPer1M: 2.5,
355
+ outputPer1M: 10,
356
+ vendor: "cohere",
357
+ provider: "openrouter"
358
+ },
359
+ "cohere/command-r7b-12-2024": {
360
+ inputPer1M: 0.0375,
361
+ outputPer1M: 0.15,
362
+ vendor: "cohere",
363
+ provider: "openrouter"
364
+ },
365
+ "deepcogito/cogito-v2.1-671b": {
366
+ inputPer1M: 1.25,
367
+ outputPer1M: 1.25,
368
+ vendor: "deepcogito",
369
+ provider: "openrouter"
370
+ },
371
+ "deepseek/deepseek-chat": {
372
+ inputPer1M: 0.32,
373
+ outputPer1M: 0.89,
374
+ vendor: "deepseek",
375
+ provider: "openrouter"
376
+ },
377
+ "deepseek/deepseek-chat-v3-0324": {
378
+ inputPer1M: 0.2,
379
+ outputPer1M: 0.77,
380
+ vendor: "deepseek",
381
+ provider: "openrouter"
382
+ },
383
+ "deepseek/deepseek-chat-v3.1": {
384
+ inputPer1M: 0.15,
385
+ outputPer1M: 0.75,
386
+ vendor: "deepseek",
387
+ provider: "openrouter"
388
+ },
389
+ "deepseek/deepseek-r1": {
390
+ inputPer1M: 0.7,
391
+ outputPer1M: 2.5,
392
+ vendor: "deepseek",
393
+ provider: "openrouter"
394
+ },
395
+ "deepseek/deepseek-r1-0528": {
396
+ inputPer1M: 0.5,
397
+ outputPer1M: 2.15,
398
+ vendor: "deepseek",
399
+ provider: "openrouter"
400
+ },
401
+ "deepseek/deepseek-r1-distill-llama-70b": {
402
+ inputPer1M: 0.7,
403
+ outputPer1M: 0.8,
404
+ vendor: "deepseek",
405
+ provider: "openrouter"
406
+ },
407
+ "deepseek/deepseek-r1-distill-qwen-32b": {
408
+ inputPer1M: 0.29,
409
+ outputPer1M: 0.29,
410
+ vendor: "deepseek",
411
+ provider: "openrouter"
412
+ },
413
+ "deepseek/deepseek-v3.1-terminus": {
414
+ inputPer1M: 0.21,
415
+ outputPer1M: 0.79,
416
+ vendor: "deepseek",
417
+ provider: "openrouter"
418
+ },
419
+ "deepseek/deepseek-v3.2": {
420
+ inputPer1M: 0.252,
421
+ outputPer1M: 0.378,
422
+ vendor: "deepseek",
423
+ provider: "openrouter"
424
+ },
425
+ "deepseek/deepseek-v3.2-exp": {
426
+ inputPer1M: 0.27,
427
+ outputPer1M: 0.41,
428
+ vendor: "deepseek",
429
+ provider: "openrouter"
430
+ },
431
+ "deepseek/deepseek-v3.2-speciale": {
432
+ inputPer1M: 0.4,
433
+ outputPer1M: 1.2,
434
+ vendor: "deepseek",
435
+ provider: "openrouter"
436
+ },
437
+ "deepseek/deepseek-v4-flash": {
438
+ inputPer1M: 0.14,
439
+ outputPer1M: 0.28,
440
+ vendor: "deepseek",
441
+ provider: "openrouter"
442
+ },
443
+ "deepseek/deepseek-v4-pro": {
444
+ inputPer1M: 0.435,
445
+ outputPer1M: 0.87,
446
+ vendor: "deepseek",
447
+ provider: "openrouter"
448
+ },
449
+ "essentialai/rnj-1-instruct": {
450
+ inputPer1M: 0.15,
451
+ outputPer1M: 0.15,
452
+ vendor: "essentialai",
453
+ provider: "openrouter"
454
+ },
455
+ "google/gemini-2.0-flash-001": {
456
+ inputPer1M: 0.1,
457
+ outputPer1M: 0.4,
458
+ vendor: "google",
459
+ provider: "openrouter"
460
+ },
461
+ "google/gemini-2.0-flash-lite-001": {
462
+ inputPer1M: 0.075,
463
+ outputPer1M: 0.3,
464
+ vendor: "google",
465
+ provider: "openrouter"
466
+ },
467
+ "google/gemini-2.5-flash": {
468
+ inputPer1M: 0.3,
469
+ outputPer1M: 2.5,
470
+ vendor: "google",
471
+ provider: "openrouter"
472
+ },
473
+ "google/gemini-2.5-flash-image": {
474
+ inputPer1M: 0.3,
475
+ outputPer1M: 2.5,
476
+ vendor: "google",
477
+ provider: "openrouter"
478
+ },
479
+ "google/gemini-2.5-flash-lite": {
480
+ inputPer1M: 0.1,
481
+ outputPer1M: 0.4,
482
+ vendor: "google",
483
+ provider: "openrouter"
484
+ },
485
+ "google/gemini-2.5-flash-lite-preview-09-2025": {
486
+ inputPer1M: 0.1,
487
+ outputPer1M: 0.4,
488
+ vendor: "google",
489
+ provider: "openrouter"
490
+ },
491
+ "google/gemini-2.5-pro": {
492
+ inputPer1M: 1.25,
493
+ outputPer1M: 10,
494
+ vendor: "google",
495
+ provider: "openrouter"
496
+ },
497
+ "google/gemini-2.5-pro-preview": {
498
+ inputPer1M: 1.25,
499
+ outputPer1M: 10,
500
+ vendor: "google",
501
+ provider: "openrouter"
502
+ },
503
+ "google/gemini-2.5-pro-preview-05-06": {
504
+ inputPer1M: 1.25,
505
+ outputPer1M: 10,
506
+ vendor: "google",
507
+ provider: "openrouter"
508
+ },
509
+ "google/gemini-3-flash-preview": {
510
+ inputPer1M: 0.5,
511
+ outputPer1M: 3,
512
+ vendor: "google",
513
+ provider: "openrouter"
514
+ },
515
+ "google/gemini-3-pro-image-preview": {
516
+ inputPer1M: 2,
517
+ outputPer1M: 12,
518
+ vendor: "google",
519
+ provider: "openrouter"
520
+ },
521
+ "google/gemini-3.1-flash-image-preview": {
522
+ inputPer1M: 0.5,
523
+ outputPer1M: 3,
524
+ vendor: "google",
525
+ provider: "openrouter"
526
+ },
527
+ "google/gemini-3.1-flash-lite-preview": {
528
+ inputPer1M: 0.25,
529
+ outputPer1M: 1.5,
530
+ vendor: "google",
531
+ provider: "openrouter"
532
+ },
533
+ "google/gemini-3.1-pro-preview": {
534
+ inputPer1M: 2,
535
+ outputPer1M: 12,
536
+ vendor: "google",
537
+ provider: "openrouter"
538
+ },
539
+ "google/gemini-3.1-pro-preview-customtools": {
540
+ inputPer1M: 2,
541
+ outputPer1M: 12,
542
+ vendor: "google",
543
+ provider: "openrouter"
544
+ },
545
+ "google/gemma-2-27b-it": {
546
+ inputPer1M: 0.65,
547
+ outputPer1M: 0.65,
548
+ vendor: "google",
549
+ provider: "openrouter"
550
+ },
551
+ "google/gemma-3-12b-it": {
552
+ inputPer1M: 0.04,
553
+ outputPer1M: 0.13,
554
+ vendor: "google",
555
+ provider: "openrouter"
556
+ },
557
+ "google/gemma-3-27b-it": {
558
+ inputPer1M: 0.08,
559
+ outputPer1M: 0.16,
560
+ vendor: "google",
561
+ provider: "openrouter"
562
+ },
563
+ "google/gemma-3-4b-it": {
564
+ inputPer1M: 0.04,
565
+ outputPer1M: 0.08,
566
+ vendor: "google",
567
+ provider: "openrouter"
568
+ },
569
+ "google/gemma-3n-e4b-it": {
570
+ inputPer1M: 0.06,
571
+ outputPer1M: 0.12,
572
+ vendor: "google",
573
+ provider: "openrouter"
574
+ },
575
+ "google/gemma-4-26b-a4b-it": {
576
+ inputPer1M: 0.06,
577
+ outputPer1M: 0.33,
578
+ vendor: "google",
579
+ provider: "openrouter"
580
+ },
581
+ "google/gemma-4-31b-it": {
582
+ inputPer1M: 0.13,
583
+ outputPer1M: 0.38,
584
+ vendor: "google",
585
+ provider: "openrouter"
586
+ },
587
+ "gryphe/mythomax-l2-13b": {
588
+ inputPer1M: 0.06,
589
+ outputPer1M: 0.06,
590
+ vendor: "gryphe",
591
+ provider: "openrouter"
592
+ },
593
+ "ibm-granite/granite-4.0-h-micro": {
594
+ inputPer1M: 0.017,
595
+ outputPer1M: 0.11,
596
+ vendor: "ibm-granite",
597
+ provider: "openrouter"
598
+ },
599
+ "inception/mercury-2": {
600
+ inputPer1M: 0.25,
601
+ outputPer1M: 0.75,
602
+ vendor: "inception",
603
+ provider: "openrouter"
604
+ },
605
+ "inclusionai/ling-2.6-flash": {
606
+ inputPer1M: 0.08,
607
+ outputPer1M: 0.24,
608
+ vendor: "inclusionai",
609
+ provider: "openrouter"
610
+ },
611
+ "inflection/inflection-3-pi": {
612
+ inputPer1M: 2.5,
613
+ outputPer1M: 10,
614
+ vendor: "inflection",
615
+ provider: "openrouter"
616
+ },
617
+ "inflection/inflection-3-productivity": {
618
+ inputPer1M: 2.5,
619
+ outputPer1M: 10,
620
+ vendor: "inflection",
621
+ provider: "openrouter"
622
+ },
623
+ "kwaipilot/kat-coder-pro-v2": {
624
+ inputPer1M: 0.3,
625
+ outputPer1M: 1.2,
626
+ vendor: "kwaipilot",
627
+ provider: "openrouter"
628
+ },
629
+ "liquid/lfm-2-24b-a2b": {
630
+ inputPer1M: 0.03,
631
+ outputPer1M: 0.12,
632
+ vendor: "liquid",
633
+ provider: "openrouter"
634
+ },
635
+ "mancer/weaver": {
636
+ inputPer1M: 0.75,
637
+ outputPer1M: 1,
638
+ vendor: "mancer",
639
+ provider: "openrouter"
640
+ },
641
+ "meta-llama/llama-3-70b-instruct": {
642
+ inputPer1M: 0.51,
643
+ outputPer1M: 0.74,
644
+ vendor: "meta-llama",
645
+ provider: "openrouter"
646
+ },
647
+ "meta-llama/llama-3-8b-instruct": {
648
+ inputPer1M: 0.03,
649
+ outputPer1M: 0.04,
650
+ vendor: "meta-llama",
651
+ provider: "openrouter"
652
+ },
653
+ "meta-llama/llama-3.1-70b-instruct": {
654
+ inputPer1M: 0.4,
655
+ outputPer1M: 0.4,
656
+ vendor: "meta-llama",
657
+ provider: "openrouter"
658
+ },
659
+ "meta-llama/llama-3.1-8b-instruct": {
660
+ inputPer1M: 0.02,
661
+ outputPer1M: 0.05,
662
+ vendor: "meta-llama",
663
+ provider: "openrouter"
664
+ },
665
+ "meta-llama/llama-3.2-11b-vision-instruct": {
666
+ inputPer1M: 0.245,
667
+ outputPer1M: 0.245,
668
+ vendor: "meta-llama",
669
+ provider: "openrouter"
670
+ },
671
+ "meta-llama/llama-3.2-1b-instruct": {
672
+ inputPer1M: 0.027,
673
+ outputPer1M: 0.2,
674
+ vendor: "meta-llama",
675
+ provider: "openrouter"
676
+ },
677
+ "meta-llama/llama-3.2-3b-instruct": {
678
+ inputPer1M: 0.051,
679
+ outputPer1M: 0.34,
680
+ vendor: "meta-llama",
681
+ provider: "openrouter"
682
+ },
683
+ "meta-llama/llama-3.3-70b-instruct": {
684
+ inputPer1M: 0.1,
685
+ outputPer1M: 0.32,
686
+ vendor: "meta-llama",
687
+ provider: "openrouter"
688
+ },
689
+ "meta-llama/llama-4-maverick": {
690
+ inputPer1M: 0.15,
691
+ outputPer1M: 0.6,
692
+ vendor: "meta-llama",
693
+ provider: "openrouter"
694
+ },
695
+ "meta-llama/llama-4-scout": {
696
+ inputPer1M: 0.08,
697
+ outputPer1M: 0.3,
698
+ vendor: "meta-llama",
699
+ provider: "openrouter"
700
+ },
701
+ "meta-llama/llama-guard-3-8b": {
702
+ inputPer1M: 0.48,
703
+ outputPer1M: 0.03,
704
+ vendor: "meta-llama",
705
+ provider: "openrouter"
706
+ },
707
+ "meta-llama/llama-guard-4-12b": {
708
+ inputPer1M: 0.18,
709
+ outputPer1M: 0.18,
710
+ vendor: "meta-llama",
711
+ provider: "openrouter"
712
+ },
713
+ "microsoft/phi-4": {
714
+ inputPer1M: 0.065,
715
+ outputPer1M: 0.14,
716
+ vendor: "microsoft",
717
+ provider: "openrouter"
718
+ },
719
+ "microsoft/wizardlm-2-8x22b": {
720
+ inputPer1M: 0.62,
721
+ outputPer1M: 0.62,
722
+ vendor: "microsoft",
723
+ provider: "openrouter"
724
+ },
725
+ "minimax/minimax-01": {
726
+ inputPer1M: 0.2,
727
+ outputPer1M: 1.1,
728
+ vendor: "minimax",
729
+ provider: "openrouter"
730
+ },
731
+ "minimax/minimax-m1": {
732
+ inputPer1M: 0.4,
733
+ outputPer1M: 2.2,
734
+ vendor: "minimax",
735
+ provider: "openrouter"
736
+ },
737
+ "minimax/minimax-m2": {
738
+ inputPer1M: 0.255,
739
+ outputPer1M: 1,
740
+ vendor: "minimax",
741
+ provider: "openrouter"
742
+ },
743
+ "minimax/minimax-m2-her": {
744
+ inputPer1M: 0.3,
745
+ outputPer1M: 1.2,
746
+ vendor: "minimax",
747
+ provider: "openrouter"
748
+ },
749
+ "minimax/minimax-m2.1": {
750
+ inputPer1M: 0.29,
751
+ outputPer1M: 0.95,
752
+ vendor: "minimax",
753
+ provider: "openrouter"
754
+ },
755
+ "minimax/minimax-m2.5": {
756
+ inputPer1M: 0.15,
757
+ outputPer1M: 1.15,
758
+ vendor: "minimax",
759
+ provider: "openrouter"
760
+ },
761
+ "minimax/minimax-m2.7": {
762
+ inputPer1M: 0.3,
763
+ outputPer1M: 1.2,
764
+ vendor: "minimax",
765
+ provider: "openrouter"
766
+ },
767
+ "mistralai/codestral-2508": {
768
+ inputPer1M: 0.3,
769
+ outputPer1M: 0.9,
770
+ vendor: "mistralai",
771
+ provider: "openrouter"
772
+ },
773
+ "mistralai/devstral-2512": {
774
+ inputPer1M: 0.4,
775
+ outputPer1M: 2,
776
+ vendor: "mistralai",
777
+ provider: "openrouter"
778
+ },
779
+ "mistralai/devstral-medium": {
780
+ inputPer1M: 0.4,
781
+ outputPer1M: 2,
782
+ vendor: "mistralai",
783
+ provider: "openrouter"
784
+ },
785
+ "mistralai/devstral-small": {
786
+ inputPer1M: 0.1,
787
+ outputPer1M: 0.3,
788
+ vendor: "mistralai",
789
+ provider: "openrouter"
790
+ },
791
+ "mistralai/ministral-14b-2512": {
792
+ inputPer1M: 0.2,
793
+ outputPer1M: 0.2,
794
+ vendor: "mistralai",
795
+ provider: "openrouter"
796
+ },
797
+ "mistralai/ministral-3b-2512": {
798
+ inputPer1M: 0.1,
799
+ outputPer1M: 0.1,
800
+ vendor: "mistralai",
801
+ provider: "openrouter"
802
+ },
803
+ "mistralai/ministral-8b-2512": {
804
+ inputPer1M: 0.15,
805
+ outputPer1M: 0.15,
806
+ vendor: "mistralai",
807
+ provider: "openrouter"
808
+ },
809
+ "mistralai/mistral-7b-instruct-v0.1": {
810
+ inputPer1M: 0.11,
811
+ outputPer1M: 0.19,
812
+ vendor: "mistralai",
813
+ provider: "openrouter"
814
+ },
815
+ "mistralai/mistral-large": {
816
+ inputPer1M: 2,
817
+ outputPer1M: 6,
818
+ vendor: "mistralai",
819
+ provider: "openrouter"
820
+ },
821
+ "mistralai/mistral-large-2407": {
822
+ inputPer1M: 2,
823
+ outputPer1M: 6,
824
+ vendor: "mistralai",
825
+ provider: "openrouter"
826
+ },
827
+ "mistralai/mistral-large-2411": {
828
+ inputPer1M: 2,
829
+ outputPer1M: 6,
830
+ vendor: "mistralai",
831
+ provider: "openrouter"
832
+ },
833
+ "mistralai/mistral-large-2512": {
834
+ inputPer1M: 0.5,
835
+ outputPer1M: 1.5,
836
+ vendor: "mistralai",
837
+ provider: "openrouter"
838
+ },
839
+ "mistralai/mistral-medium-3": {
840
+ inputPer1M: 0.4,
841
+ outputPer1M: 2,
842
+ vendor: "mistralai",
843
+ provider: "openrouter"
844
+ },
845
+ "mistralai/mistral-medium-3.1": {
846
+ inputPer1M: 0.4,
847
+ outputPer1M: 2,
848
+ vendor: "mistralai",
849
+ provider: "openrouter"
850
+ },
851
+ "mistralai/mistral-nemo": {
852
+ inputPer1M: 0.02,
853
+ outputPer1M: 0.03,
854
+ vendor: "mistralai",
855
+ provider: "openrouter"
856
+ },
857
+ "mistralai/mistral-saba": {
858
+ inputPer1M: 0.2,
859
+ outputPer1M: 0.6,
860
+ vendor: "mistralai",
861
+ provider: "openrouter"
862
+ },
863
+ "mistralai/mistral-small-24b-instruct-2501": {
864
+ inputPer1M: 0.05,
865
+ outputPer1M: 0.08,
866
+ vendor: "mistralai",
867
+ provider: "openrouter"
868
+ },
869
+ "mistralai/mistral-small-2603": {
870
+ inputPer1M: 0.15,
871
+ outputPer1M: 0.6,
872
+ vendor: "mistralai",
873
+ provider: "openrouter"
874
+ },
875
+ "mistralai/mistral-small-3.1-24b-instruct": {
876
+ inputPer1M: 0.35,
877
+ outputPer1M: 0.56,
878
+ vendor: "mistralai",
879
+ provider: "openrouter"
880
+ },
881
+ "mistralai/mistral-small-3.2-24b-instruct": {
882
+ inputPer1M: 0.075,
883
+ outputPer1M: 0.2,
884
+ vendor: "mistralai",
885
+ provider: "openrouter"
886
+ },
887
+ "mistralai/mistral-small-creative": {
888
+ inputPer1M: 0.1,
889
+ outputPer1M: 0.3,
890
+ vendor: "mistralai",
891
+ provider: "openrouter"
892
+ },
893
+ "mistralai/mixtral-8x22b-instruct": {
894
+ inputPer1M: 2,
895
+ outputPer1M: 6,
896
+ vendor: "mistralai",
897
+ provider: "openrouter"
898
+ },
899
+ "mistralai/mixtral-8x7b-instruct": {
900
+ inputPer1M: 0.54,
901
+ outputPer1M: 0.54,
902
+ vendor: "mistralai",
903
+ provider: "openrouter"
904
+ },
905
+ "mistralai/pixtral-large-2411": {
906
+ inputPer1M: 2,
907
+ outputPer1M: 6,
908
+ vendor: "mistralai",
909
+ provider: "openrouter"
910
+ },
911
+ "mistralai/voxtral-small-24b-2507": {
912
+ inputPer1M: 0.1,
913
+ outputPer1M: 0.3,
914
+ vendor: "mistralai",
915
+ provider: "openrouter"
916
+ },
917
+ "moonshotai/kimi-k2": {
918
+ inputPer1M: 0.57,
919
+ outputPer1M: 2.3,
920
+ vendor: "moonshotai",
921
+ provider: "openrouter"
922
+ },
923
+ "moonshotai/kimi-k2-0905": {
924
+ inputPer1M: 0.4,
925
+ outputPer1M: 2,
926
+ vendor: "moonshotai",
927
+ provider: "openrouter"
928
+ },
929
+ "moonshotai/kimi-k2-thinking": {
930
+ inputPer1M: 0.6,
931
+ outputPer1M: 2.5,
932
+ vendor: "moonshotai",
933
+ provider: "openrouter"
934
+ },
935
+ "moonshotai/kimi-k2.5": {
936
+ inputPer1M: 0.44,
937
+ outputPer1M: 2,
938
+ vendor: "moonshotai",
939
+ provider: "openrouter"
940
+ },
941
+ "moonshotai/kimi-k2.6": {
942
+ inputPer1M: 0.7448,
943
+ outputPer1M: 4.655,
944
+ vendor: "moonshotai",
945
+ provider: "openrouter"
946
+ },
947
+ "morph/morph-v3-fast": {
948
+ inputPer1M: 0.8,
949
+ outputPer1M: 1.2,
950
+ vendor: "morph",
951
+ provider: "openrouter"
952
+ },
953
+ "morph/morph-v3-large": {
954
+ inputPer1M: 0.9,
955
+ outputPer1M: 1.9,
956
+ vendor: "morph",
957
+ provider: "openrouter"
958
+ },
959
+ "nex-agi/deepseek-v3.1-nex-n1": {
960
+ inputPer1M: 0.135,
961
+ outputPer1M: 0.5,
962
+ vendor: "nex-agi",
963
+ provider: "openrouter"
964
+ },
965
+ "nousresearch/hermes-2-pro-llama-3-8b": {
966
+ inputPer1M: 0.14,
967
+ outputPer1M: 0.14,
968
+ vendor: "nousresearch",
969
+ provider: "openrouter"
970
+ },
971
+ "nousresearch/hermes-3-llama-3.1-405b": {
972
+ inputPer1M: 1,
973
+ outputPer1M: 1,
974
+ vendor: "nousresearch",
975
+ provider: "openrouter"
976
+ },
977
+ "nousresearch/hermes-3-llama-3.1-70b": {
978
+ inputPer1M: 0.3,
979
+ outputPer1M: 0.3,
980
+ vendor: "nousresearch",
981
+ provider: "openrouter"
982
+ },
983
+ "nousresearch/hermes-4-405b": {
984
+ inputPer1M: 1,
985
+ outputPer1M: 3,
986
+ vendor: "nousresearch",
987
+ provider: "openrouter"
988
+ },
989
+ "nousresearch/hermes-4-70b": {
990
+ inputPer1M: 0.13,
991
+ outputPer1M: 0.4,
992
+ vendor: "nousresearch",
993
+ provider: "openrouter"
994
+ },
995
+ "nvidia/llama-3.1-nemotron-70b-instruct": {
996
+ inputPer1M: 1.2,
997
+ outputPer1M: 1.2,
998
+ vendor: "nvidia",
999
+ provider: "openrouter"
1000
+ },
1001
+ "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
1002
+ inputPer1M: 0.1,
1003
+ outputPer1M: 0.4,
1004
+ vendor: "nvidia",
1005
+ provider: "openrouter"
1006
+ },
1007
+ "nvidia/nemotron-3-nano-30b-a3b": {
1008
+ inputPer1M: 0.05,
1009
+ outputPer1M: 0.2,
1010
+ vendor: "nvidia",
1011
+ provider: "openrouter"
1012
+ },
1013
+ "nvidia/nemotron-3-super-120b-a12b": {
1014
+ inputPer1M: 0.09,
1015
+ outputPer1M: 0.45,
1016
+ vendor: "nvidia",
1017
+ provider: "openrouter"
1018
+ },
1019
+ "nvidia/nemotron-nano-12b-v2-vl": {
1020
+ inputPer1M: 0.2,
1021
+ outputPer1M: 0.6,
1022
+ vendor: "nvidia",
1023
+ provider: "openrouter"
1024
+ },
1025
+ "nvidia/nemotron-nano-9b-v2": {
1026
+ inputPer1M: 0.04,
1027
+ outputPer1M: 0.16,
1028
+ vendor: "nvidia",
1029
+ provider: "openrouter"
1030
+ },
1031
+ "openai/gpt-3.5-turbo": {
1032
+ inputPer1M: 0.5,
1033
+ outputPer1M: 1.5,
1034
+ vendor: "openai",
1035
+ provider: "openrouter"
1036
+ },
1037
+ "openai/gpt-3.5-turbo-0613": {
1038
+ inputPer1M: 1,
1039
+ outputPer1M: 2,
1040
+ vendor: "openai",
1041
+ provider: "openrouter"
1042
+ },
1043
+ "openai/gpt-3.5-turbo-16k": {
1044
+ inputPer1M: 3,
1045
+ outputPer1M: 4,
1046
+ vendor: "openai",
1047
+ provider: "openrouter"
1048
+ },
1049
+ "openai/gpt-3.5-turbo-instruct": {
1050
+ inputPer1M: 1.5,
1051
+ outputPer1M: 2,
1052
+ vendor: "openai",
1053
+ provider: "openrouter"
1054
+ },
1055
+ "openai/gpt-4": {
1056
+ inputPer1M: 30,
1057
+ outputPer1M: 60,
1058
+ vendor: "openai",
1059
+ provider: "openrouter"
1060
+ },
1061
+ "openai/gpt-4-0314": {
1062
+ inputPer1M: 30,
1063
+ outputPer1M: 60,
1064
+ vendor: "openai",
1065
+ provider: "openrouter"
1066
+ },
1067
+ "openai/gpt-4-1106-preview": {
1068
+ inputPer1M: 10,
1069
+ outputPer1M: 30,
1070
+ vendor: "openai",
1071
+ provider: "openrouter"
1072
+ },
1073
+ "openai/gpt-4-turbo": {
1074
+ inputPer1M: 10,
1075
+ outputPer1M: 30,
1076
+ vendor: "openai",
1077
+ provider: "openrouter"
1078
+ },
1079
+ "openai/gpt-4-turbo-preview": {
1080
+ inputPer1M: 10,
1081
+ outputPer1M: 30,
1082
+ vendor: "openai",
1083
+ provider: "openrouter"
1084
+ },
1085
+ "openai/gpt-4.1": {
1086
+ inputPer1M: 2,
1087
+ outputPer1M: 8,
1088
+ vendor: "openai",
1089
+ provider: "openrouter"
1090
+ },
1091
+ "openai/gpt-4.1-mini": {
1092
+ inputPer1M: 0.4,
1093
+ outputPer1M: 1.6,
1094
+ vendor: "openai",
1095
+ provider: "openrouter"
1096
+ },
1097
+ "openai/gpt-4.1-nano": {
1098
+ inputPer1M: 0.1,
1099
+ outputPer1M: 0.4,
1100
+ vendor: "openai",
1101
+ provider: "openrouter"
1102
+ },
1103
+ "openai/gpt-4o": {
1104
+ inputPer1M: 2.5,
1105
+ outputPer1M: 10,
1106
+ vendor: "openai",
1107
+ provider: "openrouter"
1108
+ },
1109
+ "openai/gpt-4o-2024-05-13": {
1110
+ inputPer1M: 5,
1111
+ outputPer1M: 15,
1112
+ vendor: "openai",
1113
+ provider: "openrouter"
1114
+ },
1115
+ "openai/gpt-4o-2024-08-06": {
1116
+ inputPer1M: 2.5,
1117
+ outputPer1M: 10,
1118
+ vendor: "openai",
1119
+ provider: "openrouter"
1120
+ },
1121
+ "openai/gpt-4o-2024-11-20": {
1122
+ inputPer1M: 2.5,
1123
+ outputPer1M: 10,
1124
+ vendor: "openai",
1125
+ provider: "openrouter"
1126
+ },
1127
+ "openai/gpt-4o-audio-preview": {
1128
+ inputPer1M: 2.5,
1129
+ outputPer1M: 10,
1130
+ vendor: "openai",
1131
+ provider: "openrouter"
1132
+ },
1133
+ "openai/gpt-4o-mini": {
1134
+ inputPer1M: 0.15,
1135
+ outputPer1M: 0.6,
1136
+ vendor: "openai",
1137
+ provider: "openrouter"
1138
+ },
1139
+ "openai/gpt-4o-mini-2024-07-18": {
1140
+ inputPer1M: 0.15,
1141
+ outputPer1M: 0.6,
1142
+ vendor: "openai",
1143
+ provider: "openrouter"
1144
+ },
1145
+ "openai/gpt-4o-mini-search-preview": {
1146
+ inputPer1M: 0.15,
1147
+ outputPer1M: 0.6,
1148
+ vendor: "openai",
1149
+ provider: "openrouter"
1150
+ },
1151
+ "openai/gpt-4o-search-preview": {
1152
+ inputPer1M: 2.5,
1153
+ outputPer1M: 10,
1154
+ vendor: "openai",
1155
+ provider: "openrouter"
1156
+ },
1157
+ "openai/gpt-5": {
1158
+ inputPer1M: 1.25,
1159
+ outputPer1M: 10,
1160
+ vendor: "openai",
1161
+ provider: "openrouter"
1162
+ },
1163
+ "openai/gpt-5-chat": {
1164
+ inputPer1M: 1.25,
1165
+ outputPer1M: 10,
1166
+ vendor: "openai",
1167
+ provider: "openrouter"
1168
+ },
1169
+ "openai/gpt-5-codex": {
1170
+ inputPer1M: 1.25,
1171
+ outputPer1M: 10,
1172
+ vendor: "openai",
1173
+ provider: "openrouter"
1174
+ },
1175
+ "openai/gpt-5-image": {
1176
+ inputPer1M: 10,
1177
+ outputPer1M: 10,
1178
+ vendor: "openai",
1179
+ provider: "openrouter"
1180
+ },
1181
+ "openai/gpt-5-image-mini": {
1182
+ inputPer1M: 2.5,
1183
+ outputPer1M: 2,
1184
+ vendor: "openai",
1185
+ provider: "openrouter"
1186
+ },
1187
+ "openai/gpt-5-mini": {
1188
+ inputPer1M: 0.25,
1189
+ outputPer1M: 2,
1190
+ vendor: "openai",
1191
+ provider: "openrouter"
1192
+ },
1193
+ "openai/gpt-5-nano": {
1194
+ inputPer1M: 0.05,
1195
+ outputPer1M: 0.4,
1196
+ vendor: "openai",
1197
+ provider: "openrouter"
1198
+ },
1199
+ "openai/gpt-5-pro": {
1200
+ inputPer1M: 15,
1201
+ outputPer1M: 120,
1202
+ vendor: "openai",
1203
+ provider: "openrouter"
1204
+ },
1205
+ "openai/gpt-5.1": {
1206
+ inputPer1M: 1.25,
1207
+ outputPer1M: 10,
1208
+ vendor: "openai",
1209
+ provider: "openrouter"
1210
+ },
1211
+ "openai/gpt-5.1-chat": {
1212
+ inputPer1M: 1.25,
1213
+ outputPer1M: 10,
1214
+ vendor: "openai",
1215
+ provider: "openrouter"
1216
+ },
1217
+ "openai/gpt-5.1-codex": {
1218
+ inputPer1M: 1.25,
1219
+ outputPer1M: 10,
1220
+ vendor: "openai",
1221
+ provider: "openrouter"
1222
+ },
1223
+ "openai/gpt-5.1-codex-max": {
1224
+ inputPer1M: 1.25,
1225
+ outputPer1M: 10,
1226
+ vendor: "openai",
1227
+ provider: "openrouter"
1228
+ },
1229
+ "openai/gpt-5.1-codex-mini": {
1230
+ inputPer1M: 0.25,
1231
+ outputPer1M: 2,
1232
+ vendor: "openai",
1233
+ provider: "openrouter"
1234
+ },
1235
+ "openai/gpt-5.2": {
1236
+ inputPer1M: 1.75,
1237
+ outputPer1M: 14,
1238
+ vendor: "openai",
1239
+ provider: "openrouter"
1240
+ },
1241
+ "openai/gpt-5.2-chat": {
1242
+ inputPer1M: 1.75,
1243
+ outputPer1M: 14,
1244
+ vendor: "openai",
1245
+ provider: "openrouter"
1246
+ },
1247
+ "openai/gpt-5.2-codex": {
1248
+ inputPer1M: 1.75,
1249
+ outputPer1M: 14,
1250
+ vendor: "openai",
1251
+ provider: "openrouter"
1252
+ },
1253
+ "openai/gpt-5.2-pro": {
1254
+ inputPer1M: 21,
1255
+ outputPer1M: 168,
1256
+ vendor: "openai",
1257
+ provider: "openrouter"
1258
+ },
1259
+ "openai/gpt-5.3-chat": {
1260
+ inputPer1M: 1.75,
1261
+ outputPer1M: 14,
1262
+ vendor: "openai",
1263
+ provider: "openrouter"
1264
+ },
1265
+ "openai/gpt-5.3-codex": {
1266
+ inputPer1M: 1.75,
1267
+ outputPer1M: 14,
1268
+ vendor: "openai",
1269
+ provider: "openrouter"
1270
+ },
1271
+ "openai/gpt-5.4": {
1272
+ inputPer1M: 2.5,
1273
+ outputPer1M: 15,
1274
+ vendor: "openai",
1275
+ provider: "openrouter"
1276
+ },
1277
+ "openai/gpt-5.4-image-2": {
1278
+ inputPer1M: 8,
1279
+ outputPer1M: 15,
1280
+ vendor: "openai",
1281
+ provider: "openrouter"
1282
+ },
1283
+ "openai/gpt-5.4-mini": {
1284
+ inputPer1M: 0.75,
1285
+ outputPer1M: 4.5,
1286
+ vendor: "openai",
1287
+ provider: "openrouter"
1288
+ },
1289
+ "openai/gpt-5.4-nano": {
1290
+ inputPer1M: 0.2,
1291
+ outputPer1M: 1.25,
1292
+ vendor: "openai",
1293
+ provider: "openrouter"
1294
+ },
1295
+ "openai/gpt-5.4-pro": {
1296
+ inputPer1M: 30,
1297
+ outputPer1M: 180,
1298
+ vendor: "openai",
1299
+ provider: "openrouter"
1300
+ },
1301
+ "openai/gpt-5.5": {
1302
+ inputPer1M: 5,
1303
+ outputPer1M: 30,
1304
+ vendor: "openai",
1305
+ provider: "openrouter"
1306
+ },
1307
+ "openai/gpt-5.5-pro": {
1308
+ inputPer1M: 30,
1309
+ outputPer1M: 180,
1310
+ vendor: "openai",
1311
+ provider: "openrouter"
1312
+ },
1313
+ "openai/gpt-audio": {
1314
+ inputPer1M: 2.5,
1315
+ outputPer1M: 10,
1316
+ vendor: "openai",
1317
+ provider: "openrouter"
1318
+ },
1319
+ "openai/gpt-audio-mini": {
1320
+ inputPer1M: 0.6,
1321
+ outputPer1M: 2.4,
1322
+ vendor: "openai",
1323
+ provider: "openrouter"
1324
+ },
1325
+ "openai/gpt-oss-120b": {
1326
+ inputPer1M: 0.039,
1327
+ outputPer1M: 0.19,
1328
+ vendor: "openai",
1329
+ provider: "openrouter"
1330
+ },
1331
+ "openai/gpt-oss-20b": {
1332
+ inputPer1M: 0.03,
1333
+ outputPer1M: 0.14,
1334
+ vendor: "openai",
1335
+ provider: "openrouter"
1336
+ },
1337
+ "openai/gpt-oss-safeguard-20b": {
1338
+ inputPer1M: 0.075,
1339
+ outputPer1M: 0.3,
1340
+ vendor: "openai",
1341
+ provider: "openrouter"
1342
+ },
1343
+ "openai/o1": {
1344
+ inputPer1M: 15,
1345
+ outputPer1M: 60,
1346
+ vendor: "openai",
1347
+ provider: "openrouter"
1348
+ },
1349
+ "openai/o1-pro": {
1350
+ inputPer1M: 150,
1351
+ outputPer1M: 600,
1352
+ vendor: "openai",
1353
+ provider: "openrouter"
1354
+ },
1355
+ "openai/o3": {
1356
+ inputPer1M: 2,
1357
+ outputPer1M: 8,
1358
+ vendor: "openai",
1359
+ provider: "openrouter"
1360
+ },
1361
+ "openai/o3-deep-research": {
1362
+ inputPer1M: 10,
1363
+ outputPer1M: 40,
1364
+ vendor: "openai",
1365
+ provider: "openrouter"
1366
+ },
1367
+ "openai/o3-mini": {
1368
+ inputPer1M: 1.1,
1369
+ outputPer1M: 4.4,
1370
+ vendor: "openai",
1371
+ provider: "openrouter"
1372
+ },
1373
+ "openai/o3-mini-high": {
1374
+ inputPer1M: 1.1,
1375
+ outputPer1M: 4.4,
1376
+ vendor: "openai",
1377
+ provider: "openrouter"
1378
+ },
1379
+ "openai/o3-pro": {
1380
+ inputPer1M: 20,
1381
+ outputPer1M: 80,
1382
+ vendor: "openai",
1383
+ provider: "openrouter"
1384
+ },
1385
+ "openai/o4-mini": {
1386
+ inputPer1M: 1.1,
1387
+ outputPer1M: 4.4,
1388
+ vendor: "openai",
1389
+ provider: "openrouter"
1390
+ },
1391
+ "openai/o4-mini-deep-research": {
1392
+ inputPer1M: 2,
1393
+ outputPer1M: 8,
1394
+ vendor: "openai",
1395
+ provider: "openrouter"
1396
+ },
1397
+ "openai/o4-mini-high": {
1398
+ inputPer1M: 1.1,
1399
+ outputPer1M: 4.4,
1400
+ vendor: "openai",
1401
+ provider: "openrouter"
1402
+ },
1403
+ "openrouter/auto": {
1404
+ inputPer1M: -1e6,
1405
+ outputPer1M: -1e6,
1406
+ vendor: "openrouter",
1407
+ provider: "openrouter"
1408
+ },
1409
+ "openrouter/bodybuilder": {
1410
+ inputPer1M: -1e6,
1411
+ outputPer1M: -1e6,
1412
+ vendor: "openrouter",
1413
+ provider: "openrouter"
1414
+ },
1415
+ "openrouter/pareto-code": {
1416
+ inputPer1M: -1e6,
1417
+ outputPer1M: -1e6,
1418
+ vendor: "openrouter",
1419
+ provider: "openrouter"
1420
+ },
1421
+ "perplexity/sonar": {
1422
+ inputPer1M: 1,
1423
+ outputPer1M: 1,
1424
+ vendor: "perplexity",
1425
+ provider: "openrouter"
1426
+ },
1427
+ "perplexity/sonar-deep-research": {
1428
+ inputPer1M: 2,
1429
+ outputPer1M: 8,
1430
+ vendor: "perplexity",
1431
+ provider: "openrouter"
1432
+ },
1433
+ "perplexity/sonar-pro": {
1434
+ inputPer1M: 3,
1435
+ outputPer1M: 15,
1436
+ vendor: "perplexity",
1437
+ provider: "openrouter"
1438
+ },
1439
+ "perplexity/sonar-pro-search": {
1440
+ inputPer1M: 3,
1441
+ outputPer1M: 15,
1442
+ vendor: "perplexity",
1443
+ provider: "openrouter"
1444
+ },
1445
+ "perplexity/sonar-reasoning-pro": {
1446
+ inputPer1M: 2,
1447
+ outputPer1M: 8,
1448
+ vendor: "perplexity",
1449
+ provider: "openrouter"
1450
+ },
1451
+ "prime-intellect/intellect-3": {
1452
+ inputPer1M: 0.2,
1453
+ outputPer1M: 1.1,
1454
+ vendor: "prime-intellect",
1455
+ provider: "openrouter"
1456
+ },
1457
+ "qwen/qwen-2.5-72b-instruct": {
1458
+ inputPer1M: 0.36,
1459
+ outputPer1M: 0.4,
1460
+ vendor: "qwen",
1461
+ provider: "openrouter"
1462
+ },
1463
+ "qwen/qwen-2.5-7b-instruct": {
1464
+ inputPer1M: 0.04,
1465
+ outputPer1M: 0.1,
1466
+ vendor: "qwen",
1467
+ provider: "openrouter"
1468
+ },
1469
+ "qwen/qwen-2.5-coder-32b-instruct": {
1470
+ inputPer1M: 0.66,
1471
+ outputPer1M: 1,
1472
+ vendor: "qwen",
1473
+ provider: "openrouter"
1474
+ },
1475
+ "qwen/qwen-max": {
1476
+ inputPer1M: 1.04,
1477
+ outputPer1M: 4.16,
1478
+ vendor: "qwen",
1479
+ provider: "openrouter"
1480
+ },
1481
+ "qwen/qwen-plus": {
1482
+ inputPer1M: 0.26,
1483
+ outputPer1M: 0.78,
1484
+ vendor: "qwen",
1485
+ provider: "openrouter"
1486
+ },
1487
+ "qwen/qwen-plus-2025-07-28": {
1488
+ inputPer1M: 0.26,
1489
+ outputPer1M: 0.78,
1490
+ vendor: "qwen",
1491
+ provider: "openrouter"
1492
+ },
1493
+ "qwen/qwen-plus-2025-07-28:thinking": {
1494
+ inputPer1M: 0.26,
1495
+ outputPer1M: 0.78,
1496
+ vendor: "qwen",
1497
+ provider: "openrouter"
1498
+ },
1499
+ "qwen/qwen-turbo": {
1500
+ inputPer1M: 0.0325,
1501
+ outputPer1M: 0.13,
1502
+ vendor: "qwen",
1503
+ provider: "openrouter"
1504
+ },
1505
+ "qwen/qwen-vl-max": {
1506
+ inputPer1M: 0.52,
1507
+ outputPer1M: 2.08,
1508
+ vendor: "qwen",
1509
+ provider: "openrouter"
1510
+ },
1511
+ "qwen/qwen-vl-plus": {
1512
+ inputPer1M: 0.1365,
1513
+ outputPer1M: 0.4095,
1514
+ vendor: "qwen",
1515
+ provider: "openrouter"
1516
+ },
1517
+ "qwen/qwen2.5-vl-72b-instruct": {
1518
+ inputPer1M: 0.25,
1519
+ outputPer1M: 0.75,
1520
+ vendor: "qwen",
1521
+ provider: "openrouter"
1522
+ },
1523
+ "qwen/qwen3-14b": {
1524
+ inputPer1M: 0.06,
1525
+ outputPer1M: 0.24,
1526
+ vendor: "qwen",
1527
+ provider: "openrouter"
1528
+ },
1529
+ "qwen/qwen3-235b-a22b": {
1530
+ inputPer1M: 0.455,
1531
+ outputPer1M: 1.82,
1532
+ vendor: "qwen",
1533
+ provider: "openrouter"
1534
+ },
1535
+ "qwen/qwen3-235b-a22b-2507": {
1536
+ inputPer1M: 0.071,
1537
+ outputPer1M: 0.1,
1538
+ vendor: "qwen",
1539
+ provider: "openrouter"
1540
+ },
1541
+ "qwen/qwen3-235b-a22b-thinking-2507": {
1542
+ inputPer1M: 0.1495,
1543
+ outputPer1M: 1.495,
1544
+ vendor: "qwen",
1545
+ provider: "openrouter"
1546
+ },
1547
+ "qwen/qwen3-30b-a3b": {
1548
+ inputPer1M: 0.08,
1549
+ outputPer1M: 0.28,
1550
+ vendor: "qwen",
1551
+ provider: "openrouter"
1552
+ },
1553
+ "qwen/qwen3-30b-a3b-instruct-2507": {
1554
+ inputPer1M: 0.09,
1555
+ outputPer1M: 0.3,
1556
+ vendor: "qwen",
1557
+ provider: "openrouter"
1558
+ },
1559
+ "qwen/qwen3-30b-a3b-thinking-2507": {
1560
+ inputPer1M: 0.08,
1561
+ outputPer1M: 0.4,
1562
+ vendor: "qwen",
1563
+ provider: "openrouter"
1564
+ },
1565
+ "qwen/qwen3-32b": {
1566
+ inputPer1M: 0.08,
1567
+ outputPer1M: 0.24,
1568
+ vendor: "qwen",
1569
+ provider: "openrouter"
1570
+ },
1571
+ "qwen/qwen3-8b": {
1572
+ inputPer1M: 0.05,
1573
+ outputPer1M: 0.4,
1574
+ vendor: "qwen",
1575
+ provider: "openrouter"
1576
+ },
1577
+ "qwen/qwen3-coder": {
1578
+ inputPer1M: 0.22,
1579
+ outputPer1M: 1.8,
1580
+ vendor: "qwen",
1581
+ provider: "openrouter"
1582
+ },
1583
+ "qwen/qwen3-coder-30b-a3b-instruct": {
1584
+ inputPer1M: 0.07,
1585
+ outputPer1M: 0.27,
1586
+ vendor: "qwen",
1587
+ provider: "openrouter"
1588
+ },
1589
+ "qwen/qwen3-coder-flash": {
1590
+ inputPer1M: 0.195,
1591
+ outputPer1M: 0.975,
1592
+ vendor: "qwen",
1593
+ provider: "openrouter"
1594
+ },
1595
+ "qwen/qwen3-coder-next": {
1596
+ inputPer1M: 0.14,
1597
+ outputPer1M: 0.8,
1598
+ vendor: "qwen",
1599
+ provider: "openrouter"
1600
+ },
1601
+ "qwen/qwen3-coder-plus": {
1602
+ inputPer1M: 0.65,
1603
+ outputPer1M: 3.25,
1604
+ vendor: "qwen",
1605
+ provider: "openrouter"
1606
+ },
1607
+ "qwen/qwen3-max": {
1608
+ inputPer1M: 0.78,
1609
+ outputPer1M: 3.9,
1610
+ vendor: "qwen",
1611
+ provider: "openrouter"
1612
+ },
1613
+ "qwen/qwen3-max-thinking": {
1614
+ inputPer1M: 0.78,
1615
+ outputPer1M: 3.9,
1616
+ vendor: "qwen",
1617
+ provider: "openrouter"
1618
+ },
1619
+ "qwen/qwen3-next-80b-a3b-instruct": {
1620
+ inputPer1M: 0.09,
1621
+ outputPer1M: 1.1,
1622
+ vendor: "qwen",
1623
+ provider: "openrouter"
1624
+ },
1625
+ "qwen/qwen3-next-80b-a3b-thinking": {
1626
+ inputPer1M: 0.0975,
1627
+ outputPer1M: 0.78,
1628
+ vendor: "qwen",
1629
+ provider: "openrouter"
1630
+ },
1631
+ "qwen/qwen3-vl-235b-a22b-instruct": {
1632
+ inputPer1M: 0.2,
1633
+ outputPer1M: 0.88,
1634
+ vendor: "qwen",
1635
+ provider: "openrouter"
1636
+ },
1637
+ "qwen/qwen3-vl-235b-a22b-thinking": {
1638
+ inputPer1M: 0.26,
1639
+ outputPer1M: 2.6,
1640
+ vendor: "qwen",
1641
+ provider: "openrouter"
1642
+ },
1643
+ "qwen/qwen3-vl-30b-a3b-instruct": {
1644
+ inputPer1M: 0.13,
1645
+ outputPer1M: 0.52,
1646
+ vendor: "qwen",
1647
+ provider: "openrouter"
1648
+ },
1649
+ "qwen/qwen3-vl-30b-a3b-thinking": {
1650
+ inputPer1M: 0.13,
1651
+ outputPer1M: 1.56,
1652
+ vendor: "qwen",
1653
+ provider: "openrouter"
1654
+ },
1655
+ "qwen/qwen3-vl-32b-instruct": {
1656
+ inputPer1M: 0.104,
1657
+ outputPer1M: 0.416,
1658
+ vendor: "qwen",
1659
+ provider: "openrouter"
1660
+ },
1661
+ "qwen/qwen3-vl-8b-instruct": {
1662
+ inputPer1M: 0.08,
1663
+ outputPer1M: 0.5,
1664
+ vendor: "qwen",
1665
+ provider: "openrouter"
1666
+ },
1667
+ "qwen/qwen3-vl-8b-thinking": {
1668
+ inputPer1M: 0.117,
1669
+ outputPer1M: 1.365,
1670
+ vendor: "qwen",
1671
+ provider: "openrouter"
1672
+ },
1673
+ "qwen/qwen3.5-122b-a10b": {
1674
+ inputPer1M: 0.26,
1675
+ outputPer1M: 2.08,
1676
+ vendor: "qwen",
1677
+ provider: "openrouter"
1678
+ },
1679
+ "qwen/qwen3.5-27b": {
1680
+ inputPer1M: 0.195,
1681
+ outputPer1M: 1.56,
1682
+ vendor: "qwen",
1683
+ provider: "openrouter"
1684
+ },
1685
+ "qwen/qwen3.5-35b-a3b": {
1686
+ inputPer1M: 0.1625,
1687
+ outputPer1M: 1.3,
1688
+ vendor: "qwen",
1689
+ provider: "openrouter"
1690
+ },
1691
+ "qwen/qwen3.5-397b-a17b": {
1692
+ inputPer1M: 0.39,
1693
+ outputPer1M: 2.34,
1694
+ vendor: "qwen",
1695
+ provider: "openrouter"
1696
+ },
1697
+ "qwen/qwen3.5-9b": {
1698
+ inputPer1M: 0.1,
1699
+ outputPer1M: 0.15,
1700
+ vendor: "qwen",
1701
+ provider: "openrouter"
1702
+ },
1703
+ "qwen/qwen3.5-flash-02-23": {
1704
+ inputPer1M: 0.065,
1705
+ outputPer1M: 0.26,
1706
+ vendor: "qwen",
1707
+ provider: "openrouter"
1708
+ },
1709
+ "qwen/qwen3.5-plus-02-15": {
1710
+ inputPer1M: 0.26,
1711
+ outputPer1M: 1.56,
1712
+ vendor: "qwen",
1713
+ provider: "openrouter"
1714
+ },
1715
+ "qwen/qwen3.5-plus-20260420": {
1716
+ inputPer1M: 0.4,
1717
+ outputPer1M: 2.4,
1718
+ vendor: "qwen",
1719
+ provider: "openrouter"
1720
+ },
1721
+ "qwen/qwen3.6-27b": {
1722
+ inputPer1M: 0.325,
1723
+ outputPer1M: 3.25,
1724
+ vendor: "qwen",
1725
+ provider: "openrouter"
1726
+ },
1727
+ "qwen/qwen3.6-35b-a3b": {
1728
+ inputPer1M: 0.1612,
1729
+ outputPer1M: 0.9653,
1730
+ vendor: "qwen",
1731
+ provider: "openrouter"
1732
+ },
1733
+ "qwen/qwen3.6-flash": {
1734
+ inputPer1M: 0.25,
1735
+ outputPer1M: 1.5,
1736
+ vendor: "qwen",
1737
+ provider: "openrouter"
1738
+ },
1739
+ "qwen/qwen3.6-max-preview": {
1740
+ inputPer1M: 1.04,
1741
+ outputPer1M: 6.24,
1742
+ vendor: "qwen",
1743
+ provider: "openrouter"
1744
+ },
1745
+ "qwen/qwen3.6-plus": {
1746
+ inputPer1M: 0.325,
1747
+ outputPer1M: 1.95,
1748
+ vendor: "qwen",
1749
+ provider: "openrouter"
1750
+ },
1751
+ "rekaai/reka-edge": {
1752
+ inputPer1M: 0.1,
1753
+ outputPer1M: 0.1,
1754
+ vendor: "rekaai",
1755
+ provider: "openrouter"
1756
+ },
1757
+ "rekaai/reka-flash-3": {
1758
+ inputPer1M: 0.1,
1759
+ outputPer1M: 0.2,
1760
+ vendor: "rekaai",
1761
+ provider: "openrouter"
1762
+ },
1763
+ "relace/relace-apply-3": {
1764
+ inputPer1M: 0.85,
1765
+ outputPer1M: 1.25,
1766
+ vendor: "relace",
1767
+ provider: "openrouter"
1768
+ },
1769
+ "relace/relace-search": {
1770
+ inputPer1M: 1,
1771
+ outputPer1M: 3,
1772
+ vendor: "relace",
1773
+ provider: "openrouter"
1774
+ },
1775
+ "sao10k/l3-euryale-70b": {
1776
+ inputPer1M: 1.48,
1777
+ outputPer1M: 1.48,
1778
+ vendor: "sao10k",
1779
+ provider: "openrouter"
1780
+ },
1781
+ "sao10k/l3-lunaris-8b": {
1782
+ inputPer1M: 0.04,
1783
+ outputPer1M: 0.05,
1784
+ vendor: "sao10k",
1785
+ provider: "openrouter"
1786
+ },
1787
+ "sao10k/l3.1-70b-hanami-x1": {
1788
+ inputPer1M: 3,
1789
+ outputPer1M: 3,
1790
+ vendor: "sao10k",
1791
+ provider: "openrouter"
1792
+ },
1793
+ "sao10k/l3.1-euryale-70b": {
1794
+ inputPer1M: 0.85,
1795
+ outputPer1M: 0.85,
1796
+ vendor: "sao10k",
1797
+ provider: "openrouter"
1798
+ },
1799
+ "sao10k/l3.3-euryale-70b": {
1800
+ inputPer1M: 0.65,
1801
+ outputPer1M: 0.75,
1802
+ vendor: "sao10k",
1803
+ provider: "openrouter"
1804
+ },
1805
+ "stepfun/step-3.5-flash": {
1806
+ inputPer1M: 0.1,
1807
+ outputPer1M: 0.3,
1808
+ vendor: "stepfun",
1809
+ provider: "openrouter"
1810
+ },
1811
+ "switchpoint/router": {
1812
+ inputPer1M: 0.85,
1813
+ outputPer1M: 3.4,
1814
+ vendor: "switchpoint",
1815
+ provider: "openrouter"
1816
+ },
1817
+ "tencent/hunyuan-a13b-instruct": {
1818
+ inputPer1M: 0.14,
1819
+ outputPer1M: 0.57,
1820
+ vendor: "tencent",
1821
+ provider: "openrouter"
1822
+ },
1823
+ "thedrummer/cydonia-24b-v4.1": {
1824
+ inputPer1M: 0.3,
1825
+ outputPer1M: 0.5,
1826
+ vendor: "thedrummer",
1827
+ provider: "openrouter"
1828
+ },
1829
+ "thedrummer/rocinante-12b": {
1830
+ inputPer1M: 0.17,
1831
+ outputPer1M: 0.43,
1832
+ vendor: "thedrummer",
1833
+ provider: "openrouter"
1834
+ },
1835
+ "thedrummer/skyfall-36b-v2": {
1836
+ inputPer1M: 0.55,
1837
+ outputPer1M: 0.8,
1838
+ vendor: "thedrummer",
1839
+ provider: "openrouter"
1840
+ },
1841
+ "thedrummer/unslopnemo-12b": {
1842
+ inputPer1M: 0.4,
1843
+ outputPer1M: 0.4,
1844
+ vendor: "thedrummer",
1845
+ provider: "openrouter"
1846
+ },
1847
+ "tngtech/deepseek-r1t2-chimera": {
1848
+ inputPer1M: 0.3,
1849
+ outputPer1M: 1.1,
1850
+ vendor: "tngtech",
1851
+ provider: "openrouter"
1852
+ },
1853
+ "undi95/remm-slerp-l2-13b": {
1854
+ inputPer1M: 0.45,
1855
+ outputPer1M: 0.65,
1856
+ vendor: "undi95",
1857
+ provider: "openrouter"
1858
+ },
1859
+ "upstage/solar-pro-3": {
1860
+ inputPer1M: 0.15,
1861
+ outputPer1M: 0.6,
1862
+ vendor: "upstage",
1863
+ provider: "openrouter"
1864
+ },
1865
+ "writer/palmyra-x5": {
1866
+ inputPer1M: 0.6,
1867
+ outputPer1M: 6,
1868
+ vendor: "writer",
1869
+ provider: "openrouter"
1870
+ },
1871
+ "x-ai/grok-3": {
1872
+ inputPer1M: 3,
1873
+ outputPer1M: 15,
1874
+ vendor: "x-ai",
1875
+ provider: "openrouter"
1876
+ },
1877
+ "x-ai/grok-3-beta": {
1878
+ inputPer1M: 3,
1879
+ outputPer1M: 15,
1880
+ vendor: "x-ai",
1881
+ provider: "openrouter"
1882
+ },
1883
+ "x-ai/grok-3-mini": {
1884
+ inputPer1M: 0.3,
1885
+ outputPer1M: 0.5,
1886
+ vendor: "x-ai",
1887
+ provider: "openrouter"
1888
+ },
1889
+ "x-ai/grok-3-mini-beta": {
1890
+ inputPer1M: 0.3,
1891
+ outputPer1M: 0.5,
1892
+ vendor: "x-ai",
1893
+ provider: "openrouter"
1894
+ },
1895
+ "x-ai/grok-4": {
1896
+ inputPer1M: 3,
1897
+ outputPer1M: 15,
1898
+ vendor: "x-ai",
1899
+ provider: "openrouter"
1900
+ },
1901
+ "x-ai/grok-4-fast": {
1902
+ inputPer1M: 0.2,
1903
+ outputPer1M: 0.5,
1904
+ vendor: "x-ai",
1905
+ provider: "openrouter"
1906
+ },
1907
+ "x-ai/grok-4.1-fast": {
1908
+ inputPer1M: 0.2,
1909
+ outputPer1M: 0.5,
1910
+ vendor: "x-ai",
1911
+ provider: "openrouter"
1912
+ },
1913
+ "x-ai/grok-4.20": {
1914
+ inputPer1M: 2,
1915
+ outputPer1M: 6,
1916
+ vendor: "x-ai",
1917
+ provider: "openrouter"
1918
+ },
1919
+ "x-ai/grok-4.20-multi-agent": {
1920
+ inputPer1M: 2,
1921
+ outputPer1M: 6,
1922
+ vendor: "x-ai",
1923
+ provider: "openrouter"
1924
+ },
1925
+ "x-ai/grok-code-fast-1": {
1926
+ inputPer1M: 0.2,
1927
+ outputPer1M: 1.5,
1928
+ vendor: "x-ai",
1929
+ provider: "openrouter"
1930
+ },
1931
+ "xiaomi/mimo-v2-flash": {
1932
+ inputPer1M: 0.09,
1933
+ outputPer1M: 0.29,
1934
+ vendor: "xiaomi",
1935
+ provider: "openrouter"
1936
+ },
1937
+ "xiaomi/mimo-v2-omni": {
1938
+ inputPer1M: 0.4,
1939
+ outputPer1M: 2,
1940
+ vendor: "xiaomi",
1941
+ provider: "openrouter"
1942
+ },
1943
+ "xiaomi/mimo-v2-pro": {
1944
+ inputPer1M: 1,
1945
+ outputPer1M: 3,
1946
+ vendor: "xiaomi",
1947
+ provider: "openrouter"
1948
+ },
1949
+ "xiaomi/mimo-v2.5": {
1950
+ inputPer1M: 0.4,
1951
+ outputPer1M: 2,
1952
+ vendor: "xiaomi",
1953
+ provider: "openrouter"
1954
+ },
1955
+ "xiaomi/mimo-v2.5-pro": {
1956
+ inputPer1M: 1,
1957
+ outputPer1M: 3,
1958
+ vendor: "xiaomi",
1959
+ provider: "openrouter"
1960
+ },
1961
+ "z-ai/glm-4-32b": {
1962
+ inputPer1M: 0.1,
1963
+ outputPer1M: 0.1,
1964
+ vendor: "z-ai",
1965
+ provider: "openrouter"
1966
+ },
1967
+ "z-ai/glm-4.5": {
1968
+ inputPer1M: 0.6,
1969
+ outputPer1M: 2.2,
1970
+ vendor: "z-ai",
1971
+ provider: "openrouter"
1972
+ },
1973
+ "z-ai/glm-4.5-air": {
1974
+ inputPer1M: 0.13,
1975
+ outputPer1M: 0.85,
1976
+ vendor: "z-ai",
1977
+ provider: "openrouter"
1978
+ },
1979
+ "z-ai/glm-4.5v": {
1980
+ inputPer1M: 0.6,
1981
+ outputPer1M: 1.8,
1982
+ vendor: "z-ai",
1983
+ provider: "openrouter"
1984
+ },
1985
+ "z-ai/glm-4.6": {
1986
+ inputPer1M: 0.39,
1987
+ outputPer1M: 1.9,
1988
+ vendor: "z-ai",
1989
+ provider: "openrouter"
1990
+ },
1991
+ "z-ai/glm-4.6v": {
1992
+ inputPer1M: 0.3,
1993
+ outputPer1M: 0.9,
1994
+ vendor: "z-ai",
1995
+ provider: "openrouter"
1996
+ },
1997
+ "z-ai/glm-4.7": {
1998
+ inputPer1M: 0.38,
1999
+ outputPer1M: 1.74,
2000
+ vendor: "z-ai",
2001
+ provider: "openrouter"
2002
+ },
2003
+ "z-ai/glm-4.7-flash": {
2004
+ inputPer1M: 0.06,
2005
+ outputPer1M: 0.4,
2006
+ vendor: "z-ai",
2007
+ provider: "openrouter"
2008
+ },
2009
+ "z-ai/glm-5": {
2010
+ inputPer1M: 0.6,
2011
+ outputPer1M: 2.08,
2012
+ vendor: "z-ai",
2013
+ provider: "openrouter"
2014
+ },
2015
+ "z-ai/glm-5-turbo": {
2016
+ inputPer1M: 1.2,
2017
+ outputPer1M: 4,
2018
+ vendor: "z-ai",
2019
+ provider: "openrouter"
2020
+ },
2021
+ "z-ai/glm-5.1": {
2022
+ inputPer1M: 1.05,
2023
+ outputPer1M: 3.5,
2024
+ vendor: "z-ai",
2025
+ provider: "openrouter"
2026
+ },
2027
+ "z-ai/glm-5v-turbo": {
2028
+ inputPer1M: 1.2,
2029
+ outputPer1M: 4,
2030
+ vendor: "z-ai",
2031
+ provider: "openrouter"
2032
+ }
2033
+ };
2034
+
2035
+ // src/llm/catalog.ts
2036
+ var LLM_PRICING_CATALOG = {
2037
+ // ── Anthropic ──────────────────────────────────────────────────────────
2038
+ // Catalog keys MUST be valid Anthropic model ids — `resolveAlias` returns
2039
+ // the catalog key as the API model id, and Anthropic 404s on anything
2040
+ // that isn't a real published id (e.g. the bare `claude-sonnet-4`
2041
+ // collapsed every Sonnet 4.x request through to a not_found_error).
2042
+ "claude-opus-4-5": {
2043
+ inputPer1M: 15,
2044
+ outputPer1M: 75,
2045
+ cacheReadMultiplier: 0.1,
2046
+ cacheWriteMultiplier: 1.25,
2047
+ vendor: "anthropic",
2048
+ provider: "anthropic"
2049
+ },
2050
+ "claude-sonnet-4-5": {
2051
+ inputPer1M: 3,
2052
+ outputPer1M: 15,
2053
+ cacheReadMultiplier: 0.1,
2054
+ cacheWriteMultiplier: 1.25,
2055
+ vendor: "anthropic",
2056
+ provider: "anthropic"
2057
+ },
2058
+ "claude-haiku-4-5": {
2059
+ inputPer1M: 0.8,
2060
+ outputPer1M: 4,
2061
+ cacheReadMultiplier: 0.1,
2062
+ cacheWriteMultiplier: 1.25,
2063
+ vendor: "anthropic",
2064
+ provider: "anthropic"
2065
+ },
2066
+ // ── Google ─────────────────────────────────────────────────────────────
2067
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2068
+ // — Flash text/image/video input $0.30/1M, output $2.50/1M, context-cache
2069
+ // $0.03/1M (audio input is $1.00/1M — not modeled). Cross-checked against
2070
+ // https://pricepertoken.com/pricing-page/model/google-gemini-2.5-flash.
2071
+ "gemini-2.5-flash": {
2072
+ inputPer1M: 0.3,
2073
+ outputPer1M: 2.5,
2074
+ // Context-cache $0.03/1M = 0.1× input (implicit caching, no write surcharge).
2075
+ cacheReadMultiplier: 0.1,
2076
+ vendor: "google",
2077
+ provider: "google"
2078
+ },
2079
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2080
+ // — Pro ≤200k prompts: input $1.25/1M, output $10.00/1M, context-cache
2081
+ // $0.125/1M. (>200k tiers: $2.50 in / $15.00 out — not modeled.)
2082
+ "gemini-2.5-pro": {
2083
+ inputPer1M: 1.25,
2084
+ outputPer1M: 10,
2085
+ // Context-cache $0.125/1M = 0.1× input (≤200k tier).
2086
+ cacheReadMultiplier: 0.1,
2087
+ vendor: "google",
2088
+ provider: "google"
2089
+ },
2090
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2091
+ // — Gemini 3.5 Flash input $1.50/1M, output $9.00/1M, context-cache
2092
+ // $0.15/1M. Cross-checked against https://devtk.ai/en/models/gemini-3-5-flash.
2093
+ "gemini-3.5-flash": {
2094
+ inputPer1M: 1.5,
2095
+ outputPer1M: 9,
2096
+ // Context-cache $0.15/1M = 0.1× input.
2097
+ cacheReadMultiplier: 0.1,
2098
+ vendor: "google",
2099
+ provider: "google"
2100
+ },
2101
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2102
+ // — Flash-Lite text/image/video input $0.10/1M, output $0.40/1M, cache $0.01.
2103
+ "gemini-2.5-flash-lite": {
2104
+ inputPer1M: 0.1,
2105
+ outputPer1M: 0.4,
2106
+ // Context-cache $0.01/1M = 0.1× input.
2107
+ cacheReadMultiplier: 0.1,
2108
+ vendor: "google",
2109
+ provider: "google"
2110
+ },
2111
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2112
+ // — Gemini 3.1 Pro Preview ≤200k prompts: input $2.00/1M, output $12.00/1M,
2113
+ // context-cache $0.20/1M. (>200k tiers: $4.00 in / $18.00 out — not modeled.)
2114
+ "gemini-3.1-pro-preview": {
2115
+ inputPer1M: 2,
2116
+ outputPer1M: 12,
2117
+ // Context-cache $0.20/1M = 0.1× input (≤200k tier).
2118
+ cacheReadMultiplier: 0.1,
2119
+ vendor: "google",
2120
+ provider: "google"
2121
+ },
2122
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2123
+ // — Gemini 3 Flash Preview text/image/video input $0.50/1M, output $3.00/1M,
2124
+ // context-cache $0.05/1M.
2125
+ "gemini-3-flash-preview": {
2126
+ inputPer1M: 0.5,
2127
+ outputPer1M: 3,
2128
+ // Context-cache $0.05/1M = 0.1× input.
2129
+ cacheReadMultiplier: 0.1,
2130
+ vendor: "google",
2131
+ provider: "google"
2132
+ },
2133
+ // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)
2134
+ // — Gemini 3.1 Flash-Lite text/image/video input $0.25/1M, output $1.50/1M,
2135
+ // context-cache $0.025/1M.
2136
+ "gemini-3.1-flash-lite": {
2137
+ inputPer1M: 0.25,
2138
+ outputPer1M: 1.5,
2139
+ // Context-cache $0.025/1M = 0.1× input.
2140
+ cacheReadMultiplier: 0.1,
2141
+ vendor: "google",
2142
+ provider: "google"
2143
+ },
2144
+ // ── OpenAI ─────────────────────────────────────────────────────────────
2145
+ // All OpenAI cacheReadMultiplier = 0.1 (cached input billed at 10% of base,
2146
+ // matching the per-model cached-input rates on the pricing table). No cache-
2147
+ // write premium (OpenAI prompt caching is automatic, no write surcharge).
2148
+ // Source: https://pricepertoken.com/pricing-page/provider/openai
2149
+ // (mirrors openai.com/api/pricing; fetched 2026-05-29 — openai.com 403s WebFetch).
2150
+ "gpt-5.5": {
2151
+ // $5.00 in / $0.50 cached / $30.00 out per 1M.
2152
+ inputPer1M: 5,
2153
+ outputPer1M: 30,
2154
+ cacheReadMultiplier: 0.1,
2155
+ vendor: "openai",
2156
+ provider: "openai"
2157
+ },
2158
+ "gpt-5.5-pro": {
2159
+ // $30.00 in / $180.00 out per 1M. No cached tier on pro.
2160
+ inputPer1M: 30,
2161
+ outputPer1M: 180,
2162
+ vendor: "openai",
2163
+ provider: "openai"
2164
+ },
2165
+ "gpt-5.4": {
2166
+ // $2.50 in / $0.25 cached / $15.00 out per 1M (production workhorse).
2167
+ inputPer1M: 2.5,
2168
+ outputPer1M: 15,
2169
+ cacheReadMultiplier: 0.1,
2170
+ vendor: "openai",
2171
+ provider: "openai"
2172
+ },
2173
+ "gpt-5.4-mini": {
2174
+ // $0.75 in / $0.075 cached / $4.50 out per 1M.
2175
+ inputPer1M: 0.75,
2176
+ outputPer1M: 4.5,
2177
+ cacheReadMultiplier: 0.1,
2178
+ vendor: "openai",
2179
+ provider: "openai"
2180
+ },
2181
+ "gpt-5.4-nano": {
2182
+ // $0.20 in / $0.02 cached / $1.25 out per 1M.
2183
+ inputPer1M: 0.2,
2184
+ outputPer1M: 1.25,
2185
+ cacheReadMultiplier: 0.1,
2186
+ vendor: "openai",
2187
+ provider: "openai"
2188
+ },
2189
+ "gpt-5.4-pro": {
2190
+ // $30.00 in / $180.00 out per 1M. No cached tier on pro.
2191
+ inputPer1M: 30,
2192
+ outputPer1M: 180,
2193
+ vendor: "openai",
2194
+ provider: "openai"
2195
+ },
2196
+ "gpt-5.2": {
2197
+ // $1.75 in / $0.175 cached / $14.00 out per 1M.
2198
+ inputPer1M: 1.75,
2199
+ outputPer1M: 14,
2200
+ cacheReadMultiplier: 0.1,
2201
+ vendor: "openai",
2202
+ provider: "openai"
2203
+ },
2204
+ "gpt-5.1": {
2205
+ // $1.25 in / $0.125 cached / $10.00 out per 1M.
2206
+ inputPer1M: 1.25,
2207
+ outputPer1M: 10,
2208
+ cacheReadMultiplier: 0.1,
2209
+ vendor: "openai",
2210
+ provider: "openai"
2211
+ },
2212
+ "gpt-5": {
2213
+ // $1.25 in / $0.125 cached / $10.00 out per 1M (base GPT-5).
2214
+ inputPer1M: 1.25,
2215
+ outputPer1M: 10,
2216
+ cacheReadMultiplier: 0.1,
2217
+ vendor: "openai",
2218
+ provider: "openai"
2219
+ },
2220
+ "gpt-4.1": {
2221
+ inputPer1M: 2,
2222
+ outputPer1M: 8,
2223
+ vendor: "openai",
2224
+ provider: "openai"
2225
+ },
2226
+ "gpt-4.1-mini": {
2227
+ inputPer1M: 0.4,
2228
+ outputPer1M: 1.6,
2229
+ vendor: "openai",
2230
+ provider: "openai"
2231
+ },
2232
+ // Source: pricepertoken.com/pricing-page/provider/openai (fetched 2026-05-29)
2233
+ // — gpt-4.1-nano $0.10 in / $0.025 cached / $0.40 out per 1M.
2234
+ "gpt-4.1-nano": {
2235
+ inputPer1M: 0.1,
2236
+ outputPer1M: 0.4,
2237
+ cacheReadMultiplier: 0.25,
2238
+ vendor: "openai",
2239
+ provider: "openai"
2240
+ },
2241
+ "gpt-4o": {
2242
+ inputPer1M: 2.5,
2243
+ outputPer1M: 10,
2244
+ vendor: "openai",
2245
+ provider: "openai"
2246
+ },
2247
+ "gpt-4o-mini": {
2248
+ inputPer1M: 0.15,
2249
+ outputPer1M: 0.6,
2250
+ vendor: "openai",
2251
+ provider: "openai"
2252
+ },
2253
+ // ── OpenAI o-series (reasoning) ─────────────────────────────────────────
2254
+ // Source: pricepertoken.com/pricing-page/provider/openai (fetched 2026-05-29).
2255
+ o3: {
2256
+ // $2.00 in / $8.00 out per 1M.
2257
+ inputPer1M: 2,
2258
+ outputPer1M: 8,
2259
+ vendor: "openai",
2260
+ provider: "openai"
2261
+ },
2262
+ "o4-mini": {
2263
+ // $0.55 in / $0.275 cached / $2.20 out per 1M.
2264
+ inputPer1M: 0.55,
2265
+ outputPer1M: 2.2,
2266
+ cacheReadMultiplier: 0.5,
2267
+ vendor: "openai",
2268
+ provider: "openai"
2269
+ },
2270
+ "o3-mini": {
2271
+ // $0.55 in / $2.20 out per 1M (no cache discount listed).
2272
+ inputPer1M: 0.55,
2273
+ outputPer1M: 2.2,
2274
+ vendor: "openai",
2275
+ provider: "openai"
2276
+ },
2277
+ o1: {
2278
+ // $15.00 in / $7.50 cached / $60.00 out per 1M.
2279
+ inputPer1M: 15,
2280
+ outputPer1M: 60,
2281
+ cacheReadMultiplier: 0.5,
2282
+ vendor: "openai",
2283
+ provider: "openai"
2284
+ },
2285
+ "o1-mini": {
2286
+ // $0.55 in / $2.20 out per 1M.
2287
+ inputPer1M: 0.55,
2288
+ outputPer1M: 2.2,
2289
+ vendor: "openai",
2290
+ provider: "openai"
2291
+ },
2292
+ // ── MiniMax (direct SDK) ───────────────────────────────────────────────
2293
+ // Bare ids match what the MiniMax SDK expects on the wire (PascalCase
2294
+ // with optional minor version). OpenRouter equivalents under
2295
+ // `minimax/minimax-m2*` are separate entries auto-imported below; the
2296
+ // runtime connector picks which one to call based on the guild's
2297
+ // installed connectors.
2298
+ "MiniMax-M2": {
2299
+ inputPer1M: 0.2,
2300
+ outputPer1M: 1,
2301
+ cacheReadMultiplier: 0.15,
2302
+ cacheWriteMultiplier: 1.875,
2303
+ vendor: "minimax",
2304
+ provider: "minimax"
2305
+ },
2306
+ "M2-her": {
2307
+ inputPer1M: 0.2,
2308
+ outputPer1M: 1,
2309
+ cacheReadMultiplier: 0.15,
2310
+ cacheWriteMultiplier: 1.875,
2311
+ vendor: "minimax",
2312
+ provider: "minimax"
2313
+ },
2314
+ "MiniMax-M2.1": {
2315
+ inputPer1M: 0.3,
2316
+ outputPer1M: 1.2,
2317
+ cacheReadMultiplier: 0.1,
2318
+ cacheWriteMultiplier: 1.25,
2319
+ vendor: "minimax",
2320
+ provider: "minimax"
2321
+ },
2322
+ "MiniMax-M2.5": {
2323
+ inputPer1M: 0.3,
2324
+ outputPer1M: 1.2,
2325
+ cacheReadMultiplier: 0.1,
2326
+ cacheWriteMultiplier: 1.25,
2327
+ vendor: "minimax",
2328
+ provider: "minimax"
2329
+ },
2330
+ "MiniMax-M2.7": {
2331
+ inputPer1M: 0.3,
2332
+ outputPer1M: 1.2,
2333
+ vendor: "minimax",
2334
+ provider: "minimax"
2335
+ },
2336
+ // ── Moonshot (direct SDK) ─────────────────────────────────────────────
2337
+ "kimi-k2.6": {
2338
+ inputPer1M: 0.95,
2339
+ outputPer1M: 4,
2340
+ cacheReadMultiplier: 0.17,
2341
+ vendor: "moonshot",
2342
+ provider: "moonshot"
2343
+ },
2344
+ "kimi-k2.5": {
2345
+ inputPer1M: 0.6,
2346
+ outputPer1M: 3,
2347
+ cacheReadMultiplier: 0.17,
2348
+ vendor: "moonshot",
2349
+ provider: "moonshot"
2350
+ },
2351
+ "kimi-k2-0905-preview": {
2352
+ inputPer1M: 0.6,
2353
+ outputPer1M: 2.5,
2354
+ cacheReadMultiplier: 0.25,
2355
+ vendor: "moonshot",
2356
+ provider: "moonshot"
2357
+ },
2358
+ "kimi-k2-turbo-preview": {
2359
+ inputPer1M: 1.15,
2360
+ outputPer1M: 8,
2361
+ cacheReadMultiplier: 0.13,
2362
+ vendor: "moonshot",
2363
+ provider: "moonshot"
2364
+ },
2365
+ "kimi-k2-thinking": {
2366
+ inputPer1M: 0.6,
2367
+ outputPer1M: 2.5,
2368
+ cacheReadMultiplier: 0.25,
2369
+ vendor: "moonshot",
2370
+ provider: "moonshot"
2371
+ },
2372
+ "kimi-k2-thinking-turbo": {
2373
+ inputPer1M: 1.15,
2374
+ outputPer1M: 8,
2375
+ cacheReadMultiplier: 0.13,
2376
+ vendor: "moonshot",
2377
+ provider: "moonshot"
2378
+ },
2379
+ // ── Mistral (direct SDK) ──────────────────────────────────────────────
2380
+ "mistral-large-latest": {
2381
+ inputPer1M: 0.5,
2382
+ outputPer1M: 1.5,
2383
+ vendor: "mistral",
2384
+ provider: "mistral"
2385
+ },
2386
+ "mistral-small-creative-latest": {
2387
+ inputPer1M: 0.1,
2388
+ outputPer1M: 0.3,
2389
+ vendor: "mistral",
2390
+ provider: "mistral"
2391
+ },
2392
+ "mistral-small-2501": {
2393
+ inputPer1M: 0.05,
2394
+ outputPer1M: 0.08,
2395
+ vendor: "mistral",
2396
+ provider: "mistral"
2397
+ },
2398
+ "mistral-small-latest": {
2399
+ inputPer1M: 0.06,
2400
+ outputPer1M: 0.18,
2401
+ cacheReadMultiplier: 0.5,
2402
+ vendor: "mistral",
2403
+ provider: "mistral"
2404
+ },
2405
+ // ── OpenRouter routes — generated by `scripts/catalog-sync` from
2406
+ // https://openrouter.ai/api/v1/models. Re-run
2407
+ // `pnpm --filter @agentproto/catalog-sync sync:openrouter`
2408
+ // to refresh.
2409
+ ...OPENROUTER_ROUTES
2410
+ };
2411
+ var MODEL_ALIASES = {
2412
+ // Anthropic — alias targets must be real Anthropic model ids since
2413
+ // `resolveAlias` feeds the result straight to the SDK.
2414
+ "claude-opus-4-6": "claude-opus-4-5",
2415
+ "claude-sonnet-4-6": "claude-sonnet-4-5",
2416
+ "claude-4-opus": "claude-opus-4-5",
2417
+ "claude-4-sonnet": "claude-sonnet-4-5",
2418
+ "claude-3-5-haiku": "claude-haiku-4-5",
2419
+ "claude-haiku-4-5-20251001": "claude-haiku-4-5",
2420
+ // Back-compat: configs persisted under the old (invalid) catalog keys
2421
+ // route to the renamed canonical keys instead of 404'ing at Anthropic.
2422
+ "claude-opus-4": "claude-opus-4-5",
2423
+ "claude-sonnet-4": "claude-sonnet-4-5",
2424
+ "claude-haiku-3.5": "claude-haiku-4-5",
2425
+ // Google — slash-prefixed forms collapse to the direct catalog keys.
2426
+ // Bare `gemini-3.1-pro-preview` / `gemini-3-flash-preview` /
2427
+ // `gemini-2.5-flash-lite` / `gemini-3.1-flash-lite` are now real catalog
2428
+ // entries with their own verified pricing (direct match wins over alias).
2429
+ "gemini-3.1-flash-lite-preview": "gemini-3.1-flash-lite",
2430
+ "google/gemini-3.1-pro-preview": "gemini-3.1-pro-preview",
2431
+ "google/gemini-3.5-flash": "gemini-3.5-flash",
2432
+ "google/gemini-3-flash-preview": "gemini-3-flash-preview",
2433
+ "google/gemini-3.1-flash-lite": "gemini-3.1-flash-lite",
2434
+ "google/gemini-2.5-flash": "gemini-2.5-flash",
2435
+ "google/gemini-2.5-flash-lite": "gemini-2.5-flash-lite",
2436
+ "google/gemini-2.5-pro": "gemini-2.5-pro",
2437
+ // OpenAI
2438
+ "openai/gpt-4.1": "gpt-4.1",
2439
+ "openai/gpt-4.1-mini": "gpt-4.1-mini",
2440
+ "openai/gpt-4.1-nano": "gpt-4.1-nano",
2441
+ "openai/gpt-5": "gpt-5",
2442
+ "openai/gpt-5.1": "gpt-5.1",
2443
+ "openai/gpt-5.2": "gpt-5.2",
2444
+ "openai/gpt-5.4": "gpt-5.4",
2445
+ "openai/gpt-5.4-mini": "gpt-5.4-mini",
2446
+ "openai/gpt-5.4-nano": "gpt-5.4-nano",
2447
+ "openai/gpt-5.5": "gpt-5.5",
2448
+ "openai/o3": "o3",
2449
+ "openai/o4-mini": "o4-mini",
2450
+ "openai/o3-mini": "o3-mini",
2451
+ "openai/o1": "o1",
2452
+ "openai/o1-mini": "o1-mini",
2453
+ // MiniMax — lowercase / OpenRouter forms collapse to direct.
2454
+ "minimax-m2": "MiniMax-M2",
2455
+ "minimax-m2.1": "MiniMax-M2.1",
2456
+ "minimax-m2.5": "MiniMax-M2.5",
2457
+ "minimax-m2.7": "MiniMax-M2.7",
2458
+ // Moonshot — friendly version aliases.
2459
+ "kimi-k2": "kimi-k2.5",
2460
+ "moonshotai/kimi-k2.5": "kimi-k2.5",
2461
+ "moonshotai/kimi-k2.6": "kimi-k2.6",
2462
+ // Mistral
2463
+ "mistralai/mistral-large-latest": "mistral-large-latest",
2464
+ "mistralai/mistral-small-latest": "mistral-small-latest"
2465
+ };
2466
+ var PRICING_BY_ID = LLM_PRICING_CATALOG;
2467
+ var ALIAS_BY_ID = MODEL_ALIASES;
2468
+ function resolvePricing(modelId) {
2469
+ if (PRICING_BY_ID[modelId]) return PRICING_BY_ID[modelId];
2470
+ const alias = ALIAS_BY_ID[modelId];
2471
+ if (alias && PRICING_BY_ID[alias]) return PRICING_BY_ID[alias];
2472
+ for (const key of Object.keys(PRICING_BY_ID)) {
2473
+ if (modelId.includes(key)) return PRICING_BY_ID[key];
2474
+ }
2475
+ return void 0;
2476
+ }
2477
+ function resolveAlias(modelId) {
2478
+ if (PRICING_BY_ID[modelId]) return modelId;
2479
+ const alias = ALIAS_BY_ID[modelId];
2480
+ if (alias && PRICING_BY_ID[alias]) return alias;
2481
+ for (const key of Object.keys(PRICING_BY_ID)) {
2482
+ if (modelId.includes(key)) return key;
2483
+ }
2484
+ return modelId;
2485
+ }
2486
+ function getModelProvider(modelId) {
2487
+ return resolvePricing(modelId)?.provider;
2488
+ }
2489
+ function resolveModelRoute(modelId) {
2490
+ const pricing = resolvePricing(modelId);
2491
+ if (!pricing) return void 0;
2492
+ return {
2493
+ canonicalId: resolveAlias(modelId),
2494
+ provider: pricing.provider,
2495
+ vendor: pricing.vendor,
2496
+ pricing
2497
+ };
2498
+ }
2499
+ var DEFAULT_PRICING = {
2500
+ inputPer1M: 0.15,
2501
+ outputPer1M: 0.6
2502
+ };
2503
+ var ENV_MARKUP_OVERRIDE = process.env.LLM_PRICING_MARKUP ? Number(process.env.LLM_PRICING_MARKUP) : void 0;
2504
+ var MIN_CREDITS_PER_TURN_CC = 1;
2505
+ function calculateLLMCreditCost(modelId, inputOrUsage, outputTokensOrOpts) {
2506
+ const usage = typeof inputOrUsage === "number" ? {
2507
+ inputTokens: inputOrUsage,
2508
+ outputTokens: typeof outputTokensOrOpts === "number" ? outputTokensOrOpts : 0
2509
+ } : inputOrUsage;
2510
+ const opts = typeof outputTokensOrOpts === "object" && outputTokensOrOpts !== null ? outputTokensOrOpts : {};
2511
+ const resolved = resolvePricing(modelId);
2512
+ const pricing = resolved ?? DEFAULT_PRICING;
2513
+ const isFallback = !resolved;
2514
+ const cacheRead = pricing.cacheReadMultiplier ?? 1;
2515
+ const cacheWrite = pricing.cacheWriteMultiplier ?? 1;
2516
+ const cacheReadIn = Math.max(0, usage.cacheReadInputTokens ?? 0);
2517
+ const cacheCreateIn = Math.max(0, usage.cacheCreationInputTokens ?? 0);
2518
+ const inputUsd = usage.inputTokens / 1e6 * pricing.inputPer1M;
2519
+ const cacheReadUsd = cacheReadIn / 1e6 * pricing.inputPer1M * cacheRead;
2520
+ const cacheWriteUsd = cacheCreateIn / 1e6 * pricing.inputPer1M * cacheWrite;
2521
+ const outputUsd = usage.outputTokens / 1e6 * pricing.outputPer1M;
2522
+ const productionCost = inputUsd + cacheReadUsd + cacheWriteUsd + outputUsd;
2523
+ const markup = opts.markupOverride ?? ENV_MARKUP_OVERRIDE ?? pricingRegistry.getMarkup("text", opts.appId);
2524
+ const formulaInputCredits = Math.ceil(inputUsd * markup / CC_USD_RATE);
2525
+ const formulaCacheReadCredits = Math.ceil(
2526
+ cacheReadUsd * markup / CC_USD_RATE
2527
+ );
2528
+ const formulaCacheWriteCredits = Math.ceil(
2529
+ cacheWriteUsd * markup / CC_USD_RATE
2530
+ );
2531
+ const formulaOutputCredits = Math.ceil(outputUsd * markup / CC_USD_RATE);
2532
+ const formulaSubtotal = formulaInputCredits + formulaCacheReadCredits + formulaCacheWriteCredits + formulaOutputCredits;
2533
+ const calculatedCredits = Math.max(formulaSubtotal, MIN_CREDITS_PER_TURN_CC);
2534
+ const inputOverrideCc = pricing.overrideCreditInputPer1M;
2535
+ const outputOverrideCc = pricing.overrideCreditOutputPer1M;
2536
+ const hasOverride = inputOverrideCc !== void 0 || outputOverrideCc !== void 0;
2537
+ const inputCredits = inputOverrideCc !== void 0 ? Math.ceil(usage.inputTokens / 1e6 * inputOverrideCc) : formulaInputCredits;
2538
+ const cacheReadCredits = inputOverrideCc !== void 0 ? Math.ceil(cacheReadIn / 1e6 * inputOverrideCc * cacheRead) : formulaCacheReadCredits;
2539
+ const cacheWriteCredits = inputOverrideCc !== void 0 ? Math.ceil(cacheCreateIn / 1e6 * inputOverrideCc * cacheWrite) : formulaCacheWriteCredits;
2540
+ const outputCredits = outputOverrideCc !== void 0 ? Math.ceil(usage.outputTokens / 1e6 * outputOverrideCc) : formulaOutputCredits;
2541
+ const subtotal = inputCredits + cacheReadCredits + cacheWriteCredits + outputCredits;
2542
+ const credits = Math.max(subtotal, MIN_CREDITS_PER_TURN_CC);
2543
+ return {
2544
+ credits,
2545
+ calculatedCredits,
2546
+ inputCredits,
2547
+ outputCredits,
2548
+ cacheReadCredits,
2549
+ cacheWriteCredits,
2550
+ productionCost,
2551
+ pricing,
2552
+ isFallback,
2553
+ markup,
2554
+ hasOverride
2555
+ };
2556
+ }
2557
+ function getCacheStats(modelId, usage, opts) {
2558
+ const result = calculateLLMCreditCost(modelId, usage, opts);
2559
+ const cacheRead = result.pricing.cacheReadMultiplier ?? 1;
2560
+ const cacheWrite = result.pricing.cacheWriteMultiplier ?? 1;
2561
+ const cacheSupported = result.pricing.cacheReadMultiplier !== void 0 || result.pricing.cacheWriteMultiplier !== void 0;
2562
+ const rawInput = Math.max(0, usage.inputTokens);
2563
+ const cacheReadIn = Math.max(0, usage.cacheReadInputTokens ?? 0);
2564
+ const cacheWriteIn = Math.max(0, usage.cacheCreationInputTokens ?? 0);
2565
+ const totalInput = rawInput + cacheReadIn + cacheWriteIn;
2566
+ const cacheHitRate = totalInput === 0 ? null : (cacheReadIn + cacheWriteIn) / totalInput;
2567
+ const uncachedCacheReadUsd = cacheReadIn / 1e6 * result.pricing.inputPer1M;
2568
+ const uncachedCacheWriteUsd = cacheWriteIn / 1e6 * result.pricing.inputPer1M;
2569
+ const actualCacheReadUsd = uncachedCacheReadUsd * cacheRead;
2570
+ const actualCacheWriteUsd = uncachedCacheWriteUsd * cacheWrite;
2571
+ const providerCostSavedUsd = uncachedCacheReadUsd - actualCacheReadUsd + (uncachedCacheWriteUsd - actualCacheWriteUsd);
2572
+ const inputRateCc = result.pricing.overrideCreditInputPer1M ?? Math.ceil(result.pricing.inputPer1M * result.markup / CC_USD_RATE);
2573
+ const uncachedCacheReadCredits = cacheReadIn / 1e6 * inputRateCc;
2574
+ const uncachedCacheWriteCredits = cacheWriteIn / 1e6 * inputRateCc;
2575
+ const creditsSaved = uncachedCacheReadCredits - result.cacheReadCredits + (uncachedCacheWriteCredits - result.cacheWriteCredits);
2576
+ return {
2577
+ cacheHitRate,
2578
+ providerCostSavedUsd,
2579
+ creditsSaved,
2580
+ cacheSupported
2581
+ };
2582
+ }
2583
+
2584
+ // src/llm/defaults.ts
2585
+ var WORKFLOW_FAST_MODEL = "claude-sonnet-4-6";
2586
+ var WORKFLOW_PREMIUM_MODEL = "claude-opus-4-6";
2587
+ var WORKFLOW_TINY_MODEL = "claude-haiku-4-5-20251001";
2588
+ var OPERATOR_AGENT_MODELS = [
2589
+ "claude-opus-4-5",
2590
+ "claude-sonnet-4-5",
2591
+ "gemini-3.1-pro-preview"
2592
+ ];
2593
+ var OPERATOR_DEFAULT_PREMIUM = "claude-opus-4-5";
2594
+ var OPERATOR_DEFAULT_STANDARD = "claude-sonnet-4-5";
2595
+ var OPERATOR_DEFAULT_GEMINI = "gemini-3.1-pro-preview";
2596
+ var LLM_TIERS = {
2597
+ /** Cheap-and-quick. Single-model fallback. */
2598
+ nano: ["mistral-small-creative-latest"],
2599
+ /** Low-cost, agentic-capable. Direct alt-providers. */
2600
+ mini: [
2601
+ "MiniMax-M2.5",
2602
+ "MiniMax-M2.1",
2603
+ "MiniMax-M2",
2604
+ "mistral-large-latest"
2605
+ ],
2606
+ /** Medium cost, fast inference + good general perf. OpenRouter-routed. */
2607
+ lite: [
2608
+ "x-ai/grok-4-fast",
2609
+ "xiaomi/mimo-v2-flash",
2610
+ "google/gemini-3-flash-preview"
2611
+ ],
2612
+ /** High quality, premium features. Mix of direct + OpenRouter. */
2613
+ plus: [
2614
+ "claude-sonnet-4-5",
2615
+ "gpt-4o",
2616
+ "kimi-k2.5",
2617
+ "deepseek/deepseek-v3.2"
2618
+ ],
2619
+ /** Top-tier, best performance. */
2620
+ pro: [
2621
+ "claude-opus-4-5",
2622
+ "google/gemini-3.1-pro-preview",
2623
+ "kimi-k2-thinking"
2624
+ ]
2625
+ };
2626
+
2627
+ export { DEFAULT_PRICING, LLM_PRICING_CATALOG, LLM_TIERS, MODEL_ALIASES, OPERATOR_AGENT_MODELS, OPERATOR_DEFAULT_GEMINI, OPERATOR_DEFAULT_PREMIUM, OPERATOR_DEFAULT_STANDARD, WORKFLOW_FAST_MODEL, WORKFLOW_PREMIUM_MODEL, WORKFLOW_TINY_MODEL, calculateLLMCreditCost, getCacheStats, getModelProvider, resolveAlias, resolveModelRoute, resolvePricing };
2628
+ //# sourceMappingURL=chunk-OHAMH3ZE.mjs.map
2629
+ //# sourceMappingURL=chunk-OHAMH3ZE.mjs.map