llm_cost_tracker 0.14.0 → 0.14.1

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/README.md +1 -1
  4. data/app/controllers/llm_cost_tracker/application_controller.rb +16 -3
  5. data/app/controllers/llm_cost_tracker/pricing_controller.rb +2 -2
  6. data/app/controllers/llm_cost_tracker/tags_controller.rb +5 -4
  7. data/app/helpers/llm_cost_tracker/application_helper.rb +1 -1
  8. data/app/helpers/llm_cost_tracker/dashboard_query_helper.rb +5 -0
  9. data/app/models/llm_cost_tracker/call.rb +1 -1
  10. data/app/services/llm_cost_tracker/dashboard/filter.rb +24 -21
  11. data/app/services/llm_cost_tracker/dashboard/params.rb +10 -0
  12. data/app/views/llm_cost_tracker/tags/show.html.erb +3 -0
  13. data/config/routes.rb +6 -1
  14. data/lib/llm_cost_tracker/budget/per_tag.rb +8 -4
  15. data/lib/llm_cost_tracker/capture/event_window.rb +99 -0
  16. data/lib/llm_cost_tracker/capture/sse.rb +108 -32
  17. data/lib/llm_cost_tracker/capture/stream_collector.rb +17 -56
  18. data/lib/llm_cost_tracker/capture/stream_tap.rb +57 -0
  19. data/lib/llm_cost_tracker/capture/stream_tracker.rb +5 -35
  20. data/lib/llm_cost_tracker/doctor/price_check.rb +1 -0
  21. data/lib/llm_cost_tracker/errors.rb +13 -0
  22. data/lib/llm_cost_tracker/generators/llm_cost_tracker/templates/initializer.rb.erb +6 -6
  23. data/lib/llm_cost_tracker/ingestion/batch.rb +37 -8
  24. data/lib/llm_cost_tracker/integrations/anthropic.rb +7 -1
  25. data/lib/llm_cost_tracker/integrations/base.rb +17 -1
  26. data/lib/llm_cost_tracker/integrations/openai/batch_capture.rb +6 -1
  27. data/lib/llm_cost_tracker/integrations/ruby_llm.rb +53 -18
  28. data/lib/llm_cost_tracker/ledger/isolation.rb +30 -0
  29. data/lib/llm_cost_tracker/ledger/period/totals.rb +2 -1
  30. data/lib/llm_cost_tracker/ledger/rollups.rb +12 -4
  31. data/lib/llm_cost_tracker/ledger/storable.rb +16 -0
  32. data/lib/llm_cost_tracker/ledger/store.rb +12 -11
  33. data/lib/llm_cost_tracker/ledger.rb +1 -0
  34. data/lib/llm_cost_tracker/logging.rb +3 -1
  35. data/lib/llm_cost_tracker/middleware/faraday.rb +32 -43
  36. data/lib/llm_cost_tracker/parsers.rb +5 -1
  37. data/lib/llm_cost_tracker/prices.json +878 -139
  38. data/lib/llm_cost_tracker/pricing/registry.rb +12 -1
  39. data/lib/llm_cost_tracker/pricing/sync/change_printer.rb +6 -1
  40. data/lib/llm_cost_tracker/pricing/sync/snapshot_guard.rb +47 -0
  41. data/lib/llm_cost_tracker/pricing/sync.rb +30 -13
  42. data/lib/llm_cost_tracker/providers/azure/parser.rb +19 -0
  43. data/lib/llm_cost_tracker/providers/gemini/parser.rb +4 -0
  44. data/lib/llm_cost_tracker/providers/openai/response_parser.rb +5 -1
  45. data/lib/llm_cost_tracker/providers/openai/usage_extractor.rb +10 -5
  46. data/lib/llm_cost_tracker/providers/openai_compatible/parser.rb +4 -0
  47. data/lib/llm_cost_tracker/redaction.rb +32 -0
  48. data/lib/llm_cost_tracker/tags/sanitizer.rb +10 -36
  49. data/lib/llm_cost_tracker/tracker.rb +3 -4
  50. data/lib/llm_cost_tracker/version.rb +1 -1
  51. data/lib/llm_cost_tracker.rb +4 -2
  52. data/lib/tasks/llm_cost_tracker.rake +6 -4
  53. metadata +16 -4
@@ -16,10 +16,16 @@
16
16
  "https://developers.openai.com/api/docs/models/gpt-5.4-pro",
17
17
  "https://developers.openai.com/api/docs/models/gpt-5.5",
18
18
  "https://developers.openai.com/api/docs/models/gpt-5.5-pro",
19
+ "https://developers.openai.com/api/docs/models/gpt-5.6-luna",
20
+ "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
21
+ "https://developers.openai.com/api/docs/models/gpt-5.6-terra",
22
+ "https://developers.openai.com/api/docs/models/gpt-6-astra",
23
+ "https://developers.openai.com/api/docs/models/gpt-6-sol",
24
+ "https://developers.openai.com/api/docs/models/gpt-6-luna",
19
25
  "https://openrouter.ai/api/v1/models"
20
26
  ],
21
27
  "unit": "1M tokens",
22
- "updated_at": "2026-08-26"
28
+ "updated_at": "2026-09-24"
23
29
  },
24
30
  "models": {
25
31
  "anthropic/claude-fable-5": {
@@ -38,6 +44,22 @@
38
44
  "input": 10.0,
39
45
  "output": 50.0
40
46
  },
47
+ "anthropic/claude-fable-5-1": {
48
+ "batch_input": 5.0,
49
+ "batch_output": 25.0,
50
+ "cache_read_input": 0.25,
51
+ "cache_write_extended_input": 20.0,
52
+ "cache_write_input": 12.5,
53
+ "data_residency_batch_input": 5.5,
54
+ "data_residency_batch_output": 27.5,
55
+ "data_residency_cache_read_input": 0.275,
56
+ "data_residency_cache_write_extended_input": 22.0,
57
+ "data_residency_cache_write_input": 13.75,
58
+ "data_residency_input": 11.0,
59
+ "data_residency_output": 55.0,
60
+ "input": 10.0,
61
+ "output": 50.0
62
+ },
41
63
  "anthropic/claude-haiku-3": {
42
64
  "batch_input": 0.125,
43
65
  "batch_output": 0.625,
@@ -72,6 +94,22 @@
72
94
  "input": 10.0,
73
95
  "output": 50.0
74
96
  },
97
+ "anthropic/claude-mythos-5-1": {
98
+ "batch_input": 5.0,
99
+ "batch_output": 25.0,
100
+ "cache_read_input": 0.25,
101
+ "cache_write_extended_input": 20.0,
102
+ "cache_write_input": 12.5,
103
+ "data_residency_batch_input": 5.5,
104
+ "data_residency_batch_output": 27.5,
105
+ "data_residency_cache_read_input": 0.275,
106
+ "data_residency_cache_write_extended_input": 22.0,
107
+ "data_residency_cache_write_input": 13.75,
108
+ "data_residency_input": 11.0,
109
+ "data_residency_output": 55.0,
110
+ "input": 10.0,
111
+ "output": 50.0
112
+ },
75
113
  "anthropic/claude-opus-4-5": {
76
114
  "batch_input": 2.5,
77
115
  "batch_output": 12.5,
@@ -165,6 +203,32 @@
165
203
  "input": 5.0,
166
204
  "output": 25.0
167
205
  },
206
+ "anthropic/claude-opus-5-5": {
207
+ "batch_input": 2.0,
208
+ "batch_output": 10.0,
209
+ "cache_read_input": 0.2,
210
+ "cache_write_extended_input": 8.0,
211
+ "cache_write_input": 5.0,
212
+ "data_residency_batch_input": 2.2,
213
+ "data_residency_batch_output": 11.0,
214
+ "data_residency_cache_read_input": 0.22,
215
+ "data_residency_cache_write_extended_input": 8.8,
216
+ "data_residency_cache_write_input": 5.5,
217
+ "data_residency_input": 4.4,
218
+ "data_residency_output": 22.0,
219
+ "fast_cache_read_input": 0.4,
220
+ "fast_cache_write_extended_input": 16.0,
221
+ "fast_cache_write_input": 10.0,
222
+ "fast_data_residency_cache_read_input": 0.44,
223
+ "fast_data_residency_cache_write_extended_input": 17.6,
224
+ "fast_data_residency_cache_write_input": 11.0,
225
+ "fast_data_residency_input": 8.8,
226
+ "fast_data_residency_output": 44.0,
227
+ "fast_input": 8.0,
228
+ "fast_output": 40.0,
229
+ "input": 4.0,
230
+ "output": 20.0
231
+ },
168
232
  "anthropic/claude-sonnet-4-5": {
169
233
  "batch_input": 1.5,
170
234
  "batch_output": 7.5,
@@ -497,6 +561,21 @@
497
561
  "priority_input": 1.35,
498
562
  "priority_output": 6.75
499
563
  },
564
+ "gemini/gemini-3.8-flash": {
565
+ "batch_cache_read_input": 0.0375,
566
+ "batch_input": 0.375,
567
+ "batch_output": 1.875,
568
+ "cache_read_input": 0.075,
569
+ "flex_cache_read_input": 0.0375,
570
+ "flex_input": 0.375,
571
+ "flex_output": 1.875,
572
+ "grounding_request": 14.0,
573
+ "input": 0.75,
574
+ "output": 3.75,
575
+ "priority_cache_read_input": 0.135,
576
+ "priority_input": 1.35,
577
+ "priority_output": 6.75
578
+ },
500
579
  "groq/meta-llama/llama-prompt-guard-2-22m": {
501
580
  "flex_input": 0.03,
502
581
  "flex_output": 0.03,
@@ -546,13 +625,13 @@
546
625
  "on_demand_output": 0.3,
547
626
  "output": 0.3
548
627
  },
549
- "groq/qwen/qwen3.6-27b": {
550
- "flex_input": 0.6,
551
- "flex_output": 3.0,
552
- "input": 0.6,
553
- "on_demand_input": 0.6,
554
- "on_demand_output": 3.0,
555
- "output": 3.0
628
+ "groq/qwen/qwen3.8-27b": {
629
+ "flex_input": 0.8,
630
+ "flex_output": 4.0,
631
+ "input": 0.8,
632
+ "on_demand_input": 0.8,
633
+ "on_demand_output": 4.0,
634
+ "output": 4.0
556
635
  },
557
636
  "openai/chatgpt-image-latest": {
558
637
  "batch_cache_read_input": 0.63,
@@ -1218,6 +1297,255 @@
1218
1297
  "priority_input": 4.0,
1219
1298
  "priority_output": 24.0
1220
1299
  },
1300
+ "openai/gpt-6-astra": {
1301
+ "_context_price_threshold_tokens": 272000,
1302
+ "above_context_batch_cache_read_input": 1.0,
1303
+ "above_context_batch_cache_write_input": 12.5,
1304
+ "above_context_batch_data_residency_cache_read_input": 1.1,
1305
+ "above_context_batch_data_residency_cache_write_input": 13.75,
1306
+ "above_context_batch_data_residency_input": 11.0,
1307
+ "above_context_batch_data_residency_output": 41.25,
1308
+ "above_context_batch_input": 10.0,
1309
+ "above_context_batch_output": 37.5,
1310
+ "above_context_cache_read_input": 2.0,
1311
+ "above_context_cache_write_input": 25.0,
1312
+ "above_context_data_residency_cache_read_input": 2.2,
1313
+ "above_context_data_residency_cache_write_input": 27.5,
1314
+ "above_context_data_residency_input": 22.0,
1315
+ "above_context_data_residency_output": 82.5,
1316
+ "above_context_fast_cache_read_input": 4.0,
1317
+ "above_context_fast_cache_write_input": 50.0,
1318
+ "above_context_fast_data_residency_cache_read_input": 4.4,
1319
+ "above_context_fast_data_residency_cache_write_input": 55.0,
1320
+ "above_context_fast_data_residency_input": 44.0,
1321
+ "above_context_fast_data_residency_output": 165.0,
1322
+ "above_context_fast_input": 40.0,
1323
+ "above_context_fast_output": 150.0,
1324
+ "above_context_flex_cache_read_input": 1.0,
1325
+ "above_context_flex_cache_write_input": 12.5,
1326
+ "above_context_flex_data_residency_cache_read_input": 1.1,
1327
+ "above_context_flex_data_residency_cache_write_input": 13.75,
1328
+ "above_context_flex_data_residency_input": 11.0,
1329
+ "above_context_flex_data_residency_output": 41.25,
1330
+ "above_context_flex_input": 10.0,
1331
+ "above_context_flex_output": 37.5,
1332
+ "above_context_input": 20.0,
1333
+ "above_context_output": 75.0,
1334
+ "above_context_priority_cache_read_input": 4.0,
1335
+ "above_context_priority_cache_write_input": 50.0,
1336
+ "above_context_priority_data_residency_cache_read_input": 4.4,
1337
+ "above_context_priority_data_residency_cache_write_input": 55.0,
1338
+ "above_context_priority_data_residency_input": 44.0,
1339
+ "above_context_priority_data_residency_output": 165.0,
1340
+ "above_context_priority_input": 40.0,
1341
+ "above_context_priority_output": 150.0,
1342
+ "batch_cache_read_input": 0.5,
1343
+ "batch_cache_write_input": 6.25,
1344
+ "batch_data_residency_cache_read_input": 0.55,
1345
+ "batch_data_residency_cache_write_input": 6.875,
1346
+ "batch_data_residency_input": 5.5,
1347
+ "batch_data_residency_output": 27.5,
1348
+ "batch_input": 5.0,
1349
+ "batch_output": 25.0,
1350
+ "cache_read_input": 1.0,
1351
+ "cache_write_input": 12.5,
1352
+ "data_residency_cache_read_input": 1.1,
1353
+ "data_residency_cache_write_input": 13.75,
1354
+ "data_residency_input": 11.0,
1355
+ "data_residency_output": 55.0,
1356
+ "fast_cache_read_input": 2.0,
1357
+ "fast_cache_write_input": 25.0,
1358
+ "fast_data_residency_cache_read_input": 2.2,
1359
+ "fast_data_residency_cache_write_input": 27.5,
1360
+ "fast_data_residency_input": 22.0,
1361
+ "fast_data_residency_output": 110.0,
1362
+ "fast_input": 20.0,
1363
+ "fast_output": 100.0,
1364
+ "flex_cache_read_input": 0.5,
1365
+ "flex_cache_write_input": 6.25,
1366
+ "flex_data_residency_cache_read_input": 0.55,
1367
+ "flex_data_residency_cache_write_input": 6.875,
1368
+ "flex_data_residency_input": 5.5,
1369
+ "flex_data_residency_output": 27.5,
1370
+ "flex_input": 5.0,
1371
+ "flex_output": 25.0,
1372
+ "input": 10.0,
1373
+ "output": 50.0,
1374
+ "priority_cache_read_input": 2.0,
1375
+ "priority_cache_write_input": 25.0,
1376
+ "priority_data_residency_cache_read_input": 2.2,
1377
+ "priority_data_residency_cache_write_input": 27.5,
1378
+ "priority_data_residency_input": 22.0,
1379
+ "priority_data_residency_output": 110.0,
1380
+ "priority_input": 20.0,
1381
+ "priority_output": 100.0
1382
+ },
1383
+ "openai/gpt-6-luna": {
1384
+ "_context_price_threshold_tokens": 272000,
1385
+ "above_context_batch_cache_read_input": 0.01,
1386
+ "above_context_batch_cache_write_input": 0.125,
1387
+ "above_context_batch_data_residency_cache_read_input": 0.011,
1388
+ "above_context_batch_data_residency_cache_write_input": 0.1375,
1389
+ "above_context_batch_data_residency_input": 0.11,
1390
+ "above_context_batch_data_residency_output": 0.4125,
1391
+ "above_context_batch_input": 0.1,
1392
+ "above_context_batch_output": 0.375,
1393
+ "above_context_cache_read_input": 0.02,
1394
+ "above_context_cache_write_input": 0.25,
1395
+ "above_context_data_residency_cache_read_input": 0.022,
1396
+ "above_context_data_residency_cache_write_input": 0.275,
1397
+ "above_context_data_residency_input": 0.22,
1398
+ "above_context_data_residency_output": 0.825,
1399
+ "above_context_fast_cache_read_input": 0.04,
1400
+ "above_context_fast_cache_write_input": 0.5,
1401
+ "above_context_fast_data_residency_cache_read_input": 0.044,
1402
+ "above_context_fast_data_residency_cache_write_input": 0.55,
1403
+ "above_context_fast_data_residency_input": 0.44,
1404
+ "above_context_fast_data_residency_output": 1.65,
1405
+ "above_context_fast_input": 0.4,
1406
+ "above_context_fast_output": 1.5,
1407
+ "above_context_flex_cache_read_input": 0.01,
1408
+ "above_context_flex_cache_write_input": 0.125,
1409
+ "above_context_flex_data_residency_cache_read_input": 0.011,
1410
+ "above_context_flex_data_residency_cache_write_input": 0.1375,
1411
+ "above_context_flex_data_residency_input": 0.11,
1412
+ "above_context_flex_data_residency_output": 0.4125,
1413
+ "above_context_flex_input": 0.1,
1414
+ "above_context_flex_output": 0.375,
1415
+ "above_context_input": 0.2,
1416
+ "above_context_output": 0.75,
1417
+ "above_context_priority_cache_read_input": 0.04,
1418
+ "above_context_priority_cache_write_input": 0.5,
1419
+ "above_context_priority_data_residency_cache_read_input": 0.044,
1420
+ "above_context_priority_data_residency_cache_write_input": 0.55,
1421
+ "above_context_priority_data_residency_input": 0.44,
1422
+ "above_context_priority_data_residency_output": 1.65,
1423
+ "above_context_priority_input": 0.4,
1424
+ "above_context_priority_output": 1.5,
1425
+ "batch_cache_read_input": 0.005,
1426
+ "batch_cache_write_input": 0.0625,
1427
+ "batch_data_residency_cache_read_input": 0.0055,
1428
+ "batch_data_residency_cache_write_input": 0.06875,
1429
+ "batch_data_residency_input": 0.055,
1430
+ "batch_data_residency_output": 0.275,
1431
+ "batch_input": 0.05,
1432
+ "batch_output": 0.25,
1433
+ "cache_read_input": 0.01,
1434
+ "cache_write_input": 0.125,
1435
+ "data_residency_cache_read_input": 0.011,
1436
+ "data_residency_cache_write_input": 0.1375,
1437
+ "data_residency_input": 0.11,
1438
+ "data_residency_output": 0.55,
1439
+ "fast_cache_read_input": 0.02,
1440
+ "fast_cache_write_input": 0.25,
1441
+ "fast_data_residency_cache_read_input": 0.022,
1442
+ "fast_data_residency_cache_write_input": 0.275,
1443
+ "fast_data_residency_input": 0.22,
1444
+ "fast_data_residency_output": 1.1,
1445
+ "fast_input": 0.2,
1446
+ "fast_output": 1.0,
1447
+ "flex_cache_read_input": 0.005,
1448
+ "flex_cache_write_input": 0.0625,
1449
+ "flex_data_residency_cache_read_input": 0.0055,
1450
+ "flex_data_residency_cache_write_input": 0.06875,
1451
+ "flex_data_residency_input": 0.055,
1452
+ "flex_data_residency_output": 0.275,
1453
+ "flex_input": 0.05,
1454
+ "flex_output": 0.25,
1455
+ "input": 0.1,
1456
+ "output": 0.5,
1457
+ "priority_cache_read_input": 0.02,
1458
+ "priority_cache_write_input": 0.25,
1459
+ "priority_data_residency_cache_read_input": 0.022,
1460
+ "priority_data_residency_cache_write_input": 0.275,
1461
+ "priority_data_residency_input": 0.22,
1462
+ "priority_data_residency_output": 1.1,
1463
+ "priority_input": 0.2,
1464
+ "priority_output": 1.0
1465
+ },
1466
+ "openai/gpt-6-sol": {
1467
+ "_context_price_threshold_tokens": 272000,
1468
+ "above_context_batch_cache_read_input": 0.2,
1469
+ "above_context_batch_cache_write_input": 2.5,
1470
+ "above_context_batch_data_residency_cache_read_input": 0.22,
1471
+ "above_context_batch_data_residency_cache_write_input": 2.75,
1472
+ "above_context_batch_data_residency_input": 2.2,
1473
+ "above_context_batch_data_residency_output": 8.25,
1474
+ "above_context_batch_input": 2.0,
1475
+ "above_context_batch_output": 7.5,
1476
+ "above_context_cache_read_input": 0.4,
1477
+ "above_context_cache_write_input": 5.0,
1478
+ "above_context_data_residency_cache_read_input": 0.44,
1479
+ "above_context_data_residency_cache_write_input": 5.5,
1480
+ "above_context_data_residency_input": 4.4,
1481
+ "above_context_data_residency_output": 16.5,
1482
+ "above_context_fast_cache_read_input": 0.8,
1483
+ "above_context_fast_cache_write_input": 10.0,
1484
+ "above_context_fast_data_residency_cache_read_input": 0.88,
1485
+ "above_context_fast_data_residency_cache_write_input": 11.0,
1486
+ "above_context_fast_data_residency_input": 8.8,
1487
+ "above_context_fast_data_residency_output": 33.0,
1488
+ "above_context_fast_input": 8.0,
1489
+ "above_context_fast_output": 30.0,
1490
+ "above_context_flex_cache_read_input": 0.2,
1491
+ "above_context_flex_cache_write_input": 2.5,
1492
+ "above_context_flex_data_residency_cache_read_input": 0.22,
1493
+ "above_context_flex_data_residency_cache_write_input": 2.75,
1494
+ "above_context_flex_data_residency_input": 2.2,
1495
+ "above_context_flex_data_residency_output": 8.25,
1496
+ "above_context_flex_input": 2.0,
1497
+ "above_context_flex_output": 7.5,
1498
+ "above_context_input": 4.0,
1499
+ "above_context_output": 15.0,
1500
+ "above_context_priority_cache_read_input": 0.8,
1501
+ "above_context_priority_cache_write_input": 10.0,
1502
+ "above_context_priority_data_residency_cache_read_input": 0.88,
1503
+ "above_context_priority_data_residency_cache_write_input": 11.0,
1504
+ "above_context_priority_data_residency_input": 8.8,
1505
+ "above_context_priority_data_residency_output": 33.0,
1506
+ "above_context_priority_input": 8.0,
1507
+ "above_context_priority_output": 30.0,
1508
+ "batch_cache_read_input": 0.1,
1509
+ "batch_cache_write_input": 1.25,
1510
+ "batch_data_residency_cache_read_input": 0.11,
1511
+ "batch_data_residency_cache_write_input": 1.375,
1512
+ "batch_data_residency_input": 1.1,
1513
+ "batch_data_residency_output": 5.5,
1514
+ "batch_input": 1.0,
1515
+ "batch_output": 5.0,
1516
+ "cache_read_input": 0.2,
1517
+ "cache_write_input": 2.5,
1518
+ "data_residency_cache_read_input": 0.22,
1519
+ "data_residency_cache_write_input": 2.75,
1520
+ "data_residency_input": 2.2,
1521
+ "data_residency_output": 11.0,
1522
+ "fast_cache_read_input": 0.4,
1523
+ "fast_cache_write_input": 5.0,
1524
+ "fast_data_residency_cache_read_input": 0.44,
1525
+ "fast_data_residency_cache_write_input": 5.5,
1526
+ "fast_data_residency_input": 4.4,
1527
+ "fast_data_residency_output": 22.0,
1528
+ "fast_input": 4.0,
1529
+ "fast_output": 20.0,
1530
+ "flex_cache_read_input": 0.1,
1531
+ "flex_cache_write_input": 1.25,
1532
+ "flex_data_residency_cache_read_input": 0.11,
1533
+ "flex_data_residency_cache_write_input": 1.375,
1534
+ "flex_data_residency_input": 1.1,
1535
+ "flex_data_residency_output": 5.5,
1536
+ "flex_input": 1.0,
1537
+ "flex_output": 5.0,
1538
+ "input": 2.0,
1539
+ "output": 10.0,
1540
+ "priority_cache_read_input": 0.4,
1541
+ "priority_cache_write_input": 5.0,
1542
+ "priority_data_residency_cache_read_input": 0.44,
1543
+ "priority_data_residency_cache_write_input": 5.5,
1544
+ "priority_data_residency_input": 4.4,
1545
+ "priority_data_residency_output": 22.0,
1546
+ "priority_input": 4.0,
1547
+ "priority_output": 20.0
1548
+ },
1221
1549
  "openai/gpt-audio": {
1222
1550
  "audio_input": 32.0,
1223
1551
  "audio_output": 64.0,
@@ -1441,6 +1769,16 @@
1441
1769
  "input": 0.7,
1442
1770
  "output": 1.4
1443
1771
  },
1772
+ "openrouter/aion-labs/aion-3.5": {
1773
+ "cache_read_input": 0.75,
1774
+ "input": 3.0,
1775
+ "output": 6.0
1776
+ },
1777
+ "openrouter/aion-labs/aion-3.5-mini": {
1778
+ "cache_read_input": 0.18,
1779
+ "input": 0.7,
1780
+ "output": 1.4
1781
+ },
1444
1782
  "openrouter/aion-labs/aion-rp-llama-3.1-8b": {
1445
1783
  "input": 0.8,
1446
1784
  "output": 1.6
@@ -1475,7 +1813,7 @@
1475
1813
  "output": 3.2
1476
1814
  },
1477
1815
  "openrouter/anthracite-org/magnum-v4-72b": {
1478
- "input": 3.0,
1816
+ "input": 2.5,
1479
1817
  "output": 5.0
1480
1818
  },
1481
1819
  "openrouter/anthropic/claude-3-haiku": {
@@ -1496,6 +1834,18 @@
1496
1834
  "input": 10.0,
1497
1835
  "output": 50.0
1498
1836
  },
1837
+ "openrouter/anthropic/claude-fable-5.1": {
1838
+ "cache_read_input": 0.25,
1839
+ "cache_write_input": 12.5,
1840
+ "input": 10.0,
1841
+ "output": 50.0
1842
+ },
1843
+ "openrouter/anthropic/claude-fable-5.1:batch": {
1844
+ "cache_read_input": 0.125,
1845
+ "cache_write_input": 6.25,
1846
+ "input": 5.0,
1847
+ "output": 25.0
1848
+ },
1499
1849
  "openrouter/anthropic/claude-fable-5:batch": {
1500
1850
  "cache_read_input": 0.5,
1501
1851
  "cache_write_input": 6.25,
@@ -1610,6 +1960,18 @@
1610
1960
  "input": 10.0,
1611
1961
  "output": 50.0
1612
1962
  },
1963
+ "openrouter/anthropic/claude-opus-5.5": {
1964
+ "cache_read_input": 0.2,
1965
+ "cache_write_input": 5.0,
1966
+ "input": 4.0,
1967
+ "output": 20.0
1968
+ },
1969
+ "openrouter/anthropic/claude-opus-5.5:batch": {
1970
+ "cache_read_input": 0.1,
1971
+ "cache_write_input": 2.5,
1972
+ "input": 2.0,
1973
+ "output": 10.0
1974
+ },
1613
1975
  "openrouter/anthropic/claude-opus-5:batch": {
1614
1976
  "cache_read_input": 0.25,
1615
1977
  "cache_write_input": 3.125,
@@ -1672,8 +2034,8 @@
1672
2034
  },
1673
2035
  "openrouter/arcee-ai/trinity-large-thinking": {
1674
2036
  "cache_read_input": 0.06,
1675
- "input": 0.22,
1676
- "output": 0.85
2037
+ "input": 0.25,
2038
+ "output": 0.8
1677
2039
  },
1678
2040
  "openrouter/arcee-ai/trinity-mini": {
1679
2041
  "input": 0.045,
@@ -1744,6 +2106,11 @@
1744
2106
  "input": 2.5,
1745
2107
  "output": 10.0
1746
2108
  },
2109
+ "openrouter/cohere/command-a-plus": {
2110
+ "cache_read_input": 0.15,
2111
+ "input": 0.3,
2112
+ "output": 1.5
2113
+ },
1747
2114
  "openrouter/cohere/command-r-08-2024": {
1748
2115
  "input": 0.15,
1749
2116
  "output": 0.6
@@ -1761,17 +2128,17 @@
1761
2128
  "output": 1.25
1762
2129
  },
1763
2130
  "openrouter/deepseek/deepseek-chat": {
1764
- "input": 0.2574,
1765
- "output": 1.0287
2131
+ "input": 0.32,
2132
+ "output": 0.89
1766
2133
  },
1767
2134
  "openrouter/deepseek/deepseek-chat-v3-0324": {
1768
2135
  "input": 0.25,
1769
2136
  "output": 1.0
1770
2137
  },
1771
2138
  "openrouter/deepseek/deepseek-chat-v3.1": {
1772
- "cache_read_input": 0.55,
1773
- "input": 0.55,
1774
- "output": 1.65
2139
+ "cache_read_input": 0.13,
2140
+ "input": 0.25,
2141
+ "output": 0.95
1775
2142
  },
1776
2143
  "openrouter/deepseek/deepseek-r1": {
1777
2144
  "input": 0.7,
@@ -1796,9 +2163,9 @@
1796
2163
  "output": 1.0
1797
2164
  },
1798
2165
  "openrouter/deepseek/deepseek-v3.2": {
1799
- "cache_read_input": 0.13,
1800
- "input": 0.26,
1801
- "output": 0.38
2166
+ "cache_read_input": 0.1345,
2167
+ "input": 0.269,
2168
+ "output": 0.4
1802
2169
  },
1803
2170
  "openrouter/deepseek/deepseek-v3.2-exp": {
1804
2171
  "input": 0.27,
@@ -1815,29 +2182,59 @@
1815
2182
  "output": 0.177212
1816
2183
  },
1817
2184
  "openrouter/deepseek/deepseek-v4-flash-0731": {
1818
- "cache_read_input": 0.012,
1819
- "input": 0.06,
1820
- "output": 0.12
2185
+ "cache_read_input": 0.016,
2186
+ "input": 0.03,
2187
+ "output": 0.32
2188
+ },
2189
+ "openrouter/deepseek/deepseek-v4-flash-0731:batch": {
2190
+ "cache_read_input": 0.0035,
2191
+ "input": 0.11,
2192
+ "output": 0.33
1821
2193
  },
1822
2194
  "openrouter/deepseek/deepseek-v4-flash-vision-exp": {
1823
- "cache_read_input": 0.014,
1824
- "input": 0.44,
1825
- "output": 1.32
2195
+ "cache_read_input": 0.007,
2196
+ "input": 0.22,
2197
+ "output": 0.66
2198
+ },
2199
+ "openrouter/deepseek/deepseek-v4-flash-vision-exp:batch": {
2200
+ "cache_read_input": 0.0035,
2201
+ "input": 0.11,
2202
+ "output": 0.33
1826
2203
  },
1827
2204
  "openrouter/deepseek/deepseek-v4-pro": {
1828
- "cache_read_input": 0.0725,
1829
- "input": 0.87,
1830
- "output": 1.74
2205
+ "cache_read_input": 0.0783,
2206
+ "input": 0.9396,
2207
+ "output": 1.8792
1831
2208
  },
1832
2209
  "openrouter/deepseek/deepseek-v4-pro-0813": {
1833
- "cache_read_input": 0.0374,
1834
- "input": 1.122,
1835
- "output": 3.366
2210
+ "cache_read_input": 0.0154,
2211
+ "input": 0.462,
2212
+ "output": 1.386
2213
+ },
2214
+ "openrouter/deepseek/deepseek-v4-pro-0813:batch": {
2215
+ "cache_read_input": 0.022,
2216
+ "input": 0.66,
2217
+ "output": 1.98
2218
+ },
2219
+ "openrouter/deepseek/deepseek-v4.1-flash": {
2220
+ "cache_read_input": 0.0042,
2221
+ "input": 0.14,
2222
+ "output": 0.42
2223
+ },
2224
+ "openrouter/deepseek/deepseek-v4.1-flash:batch": {
2225
+ "cache_read_input": 0.00336,
2226
+ "input": 0.112,
2227
+ "output": 0.336
1836
2228
  },
1837
2229
  "openrouter/essentialai/rnj-1-instruct": {
1838
2230
  "input": 0.15,
1839
2231
  "output": 0.15
1840
2232
  },
2233
+ "openrouter/fireworks/ember-1": {
2234
+ "cache_read_input": 0.3,
2235
+ "input": 3.0,
2236
+ "output": 15.0
2237
+ },
1841
2238
  "openrouter/google/gemini-2.0-flash-001": {
1842
2239
  "audio_input": 0.7,
1843
2240
  "cache_read_input": 0.025,
@@ -2063,20 +2460,36 @@
2063
2460
  "output": 1.875
2064
2461
  },
2065
2462
  "openrouter/google/gemini-3.7-flash": {
2463
+ "audio_input": 0.75,
2464
+ "cache_read_input": 0.075,
2465
+ "cache_write_input": 0.041667,
2466
+ "image_input": 0.75,
2467
+ "input": 0.75,
2468
+ "output": 3.75
2469
+ },
2470
+ "openrouter/google/gemini-3.7-flash:batch": {
2066
2471
  "audio_input": 0.375,
2067
2472
  "cache_read_input": 0.0375,
2068
- "cache_write_input": 0.020833,
2473
+ "cache_write_input": 0.041667,
2069
2474
  "image_input": 0.375,
2070
2475
  "input": 0.375,
2071
2476
  "output": 1.875
2072
2477
  },
2073
- "openrouter/google/gemini-3.7-flash:batch": {
2074
- "audio_input": 0.1875,
2075
- "cache_read_input": 0.01875,
2076
- "cache_write_input": 0.020833,
2077
- "image_input": 0.1875,
2078
- "input": 0.1875,
2079
- "output": 0.9375
2478
+ "openrouter/google/gemini-3.8-flash": {
2479
+ "audio_input": 0.75,
2480
+ "cache_read_input": 0.075,
2481
+ "cache_write_input": 0.041667,
2482
+ "image_input": 0.75,
2483
+ "input": 0.75,
2484
+ "output": 3.75
2485
+ },
2486
+ "openrouter/google/gemini-3.8-flash:batch": {
2487
+ "audio_input": 0.375,
2488
+ "cache_read_input": 0.0375,
2489
+ "cache_write_input": 0.041667,
2490
+ "image_input": 0.375,
2491
+ "input": 0.375,
2492
+ "output": 1.875
2080
2493
  },
2081
2494
  "openrouter/google/gemma-2-27b-it": {
2082
2495
  "input": 0.65,
@@ -2100,17 +2513,22 @@
2100
2513
  "output": 0.12
2101
2514
  },
2102
2515
  "openrouter/google/gemma-4-26b-a4b-it": {
2103
- "input": 0.07,
2104
- "output": 0.34
2516
+ "cache_read_input": 0.05,
2517
+ "input": 0.09,
2518
+ "output": 0.3
2105
2519
  },
2106
2520
  "openrouter/google/gemma-4-31b-it": {
2107
2521
  "cache_read_input": 0.05,
2108
2522
  "input": 0.09,
2109
2523
  "output": 0.34
2110
2524
  },
2525
+ "openrouter/google/gemma-4-31b-it:batch": {
2526
+ "input": 0.39,
2527
+ "output": 0.97
2528
+ },
2111
2529
  "openrouter/gryphe/mythomax-l2-13b": {
2112
- "input": 0.06,
2113
- "output": 0.06
2530
+ "input": 0.08,
2531
+ "output": 0.11
2114
2532
  },
2115
2533
  "openrouter/ibm-granite/granite-4.0-h-micro": {
2116
2534
  "input": 0.017,
@@ -2121,11 +2539,26 @@
2121
2539
  "input": 0.05,
2122
2540
  "output": 0.1
2123
2541
  },
2542
+ "openrouter/ibm-granite/granite-4.2-8b": {
2543
+ "cache_read_input": 0.015,
2544
+ "input": 0.06,
2545
+ "output": 0.25
2546
+ },
2124
2547
  "openrouter/inception/mercury-2": {
2125
2548
  "cache_read_input": 0.025,
2126
2549
  "input": 0.25,
2127
2550
  "output": 0.75
2128
2551
  },
2552
+ "openrouter/inception/mercury-2.5": {
2553
+ "cache_read_input": 0.004,
2554
+ "input": 0.04,
2555
+ "output": 0.15
2556
+ },
2557
+ "openrouter/inception/mercury-2.5-preview": {
2558
+ "cache_read_input": 0.004,
2559
+ "input": 0.04,
2560
+ "output": 0.15
2561
+ },
2129
2562
  "openrouter/inclusionai/ling-2.6-1t": {
2130
2563
  "cache_read_input": 0.015,
2131
2564
  "input": 0.075,
@@ -2141,11 +2574,31 @@
2141
2574
  "input": 0.021,
2142
2575
  "output": 0.063
2143
2576
  },
2577
+ "openrouter/inclusionai/ling-3.0-flash-fin": {
2578
+ "cache_read_input": 0.012,
2579
+ "input": 0.06,
2580
+ "output": 0.18
2581
+ },
2582
+ "openrouter/inclusionai/ling-3.0-flash-vl": {
2583
+ "cache_read_input": 0.012,
2584
+ "input": 0.06,
2585
+ "output": 0.18
2586
+ },
2144
2587
  "openrouter/inclusionai/ring-2.6-1t": {
2145
2588
  "cache_read_input": 0.015,
2146
2589
  "input": 0.075,
2147
2590
  "output": 0.625
2148
2591
  },
2592
+ "openrouter/inference-net/schematron-v2-small": {
2593
+ "cache_read_input": 0.05,
2594
+ "input": 0.05,
2595
+ "output": 0.23
2596
+ },
2597
+ "openrouter/inference-net/schematron-v2-turbo": {
2598
+ "cache_read_input": 0.03,
2599
+ "input": 0.03,
2600
+ "output": 0.15
2601
+ },
2149
2602
  "openrouter/inflection/inflection-3-pi": {
2150
2603
  "input": 2.5,
2151
2604
  "output": 10.0
@@ -2174,7 +2627,7 @@
2174
2627
  "output": 0.12
2175
2628
  },
2176
2629
  "openrouter/mancer/weaver": {
2177
- "input": 0.5,
2630
+ "input": 0.4,
2178
2631
  "output": 0.75
2179
2632
  },
2180
2633
  "openrouter/meituan/longcat-2.0": {
@@ -2212,18 +2665,16 @@
2212
2665
  "output": 0.33
2213
2666
  },
2214
2667
  "openrouter/meta-llama/llama-3.3-70b-instruct": {
2215
- "cache_read_input": 0.71,
2216
- "input": 0.71,
2217
- "output": 0.71
2668
+ "input": 0.1,
2669
+ "output": 0.32
2218
2670
  },
2219
2671
  "openrouter/meta-llama/llama-4-maverick": {
2220
- "input": 0.2,
2221
- "output": 0.8
2672
+ "input": 0.1875,
2673
+ "output": 0.6525
2222
2674
  },
2223
2675
  "openrouter/meta-llama/llama-4-scout": {
2224
- "cache_read_input": 0.055,
2225
- "input": 0.11,
2226
- "output": 0.34
2676
+ "input": 0.1,
2677
+ "output": 0.3
2227
2678
  },
2228
2679
  "openrouter/meta-llama/llama-guard-3-8b": {
2229
2680
  "input": 0.484,
@@ -2235,8 +2686,13 @@
2235
2686
  },
2236
2687
  "openrouter/meta/muse-glimmer-30b": {
2237
2688
  "cache_read_input": 0.04,
2238
- "input": 0.35,
2239
- "output": 1.5
2689
+ "input": 0.3,
2690
+ "output": 1.2
2691
+ },
2692
+ "openrouter/meta/muse-glimmer-30b:batch": {
2693
+ "cache_read_input": 0.02,
2694
+ "input": 0.175,
2695
+ "output": 0.75
2240
2696
  },
2241
2697
  "openrouter/meta/muse-spark-1.1": {
2242
2698
  "cache_read_input": 0.15,
@@ -2253,6 +2709,16 @@
2253
2709
  "input": 0.1,
2254
2710
  "output": 0.2
2255
2711
  },
2712
+ "openrouter/meta/muse-spark-1.3": {
2713
+ "cache_read_input": 0.15,
2714
+ "input": 1.25,
2715
+ "output": 4.25
2716
+ },
2717
+ "openrouter/meta/muse-spark-1.3-contributor": {
2718
+ "cache_read_input": 0.002,
2719
+ "input": 0.1,
2720
+ "output": 0.2
2721
+ },
2256
2722
  "openrouter/microsoft/phi-4": {
2257
2723
  "input": 0.07,
2258
2724
  "output": 0.14
@@ -2271,12 +2737,12 @@
2271
2737
  "output": 1.1
2272
2738
  },
2273
2739
  "openrouter/minimax/minimax-m1": {
2274
- "input": 0.55,
2740
+ "input": 0.4,
2275
2741
  "output": 2.2
2276
2742
  },
2277
2743
  "openrouter/minimax/minimax-m2": {
2278
- "input": 0.255,
2279
- "output": 1.02
2744
+ "input": 0.3,
2745
+ "output": 1.2
2280
2746
  },
2281
2747
  "openrouter/minimax/minimax-m2-her": {
2282
2748
  "cache_read_input": 0.03,
@@ -2313,10 +2779,15 @@
2313
2779
  "input": 0.3,
2314
2780
  "output": 0.9
2315
2781
  },
2782
+ "openrouter/mistralai/codestral-2508:batch": {
2783
+ "cache_read_input": 0.015,
2784
+ "input": 0.15,
2785
+ "output": 0.45
2786
+ },
2316
2787
  "openrouter/mistralai/devstral-2512": {
2317
- "cache_read_input": 0.044,
2318
- "input": 0.44,
2319
- "output": 2.2
2788
+ "cache_read_input": 0.04,
2789
+ "input": 0.4,
2790
+ "output": 2.0
2320
2791
  },
2321
2792
  "openrouter/mistralai/devstral-medium": {
2322
2793
  "cache_read_input": 0.04,
@@ -2347,6 +2818,11 @@
2347
2818
  "input": 0.15,
2348
2819
  "output": 0.15
2349
2820
  },
2821
+ "openrouter/mistralai/ministral-8b-2512:batch": {
2822
+ "cache_read_input": 0.0075,
2823
+ "input": 0.075,
2824
+ "output": 0.075
2825
+ },
2350
2826
  "openrouter/mistralai/mistral-7b-instruct-v0.1": {
2351
2827
  "input": 0.11,
2352
2828
  "output": 0.19
@@ -2371,6 +2847,11 @@
2371
2847
  "input": 0.5,
2372
2848
  "output": 1.5
2373
2849
  },
2850
+ "openrouter/mistralai/mistral-large-2512:batch": {
2851
+ "cache_read_input": 0.025,
2852
+ "input": 0.25,
2853
+ "output": 0.75
2854
+ },
2374
2855
  "openrouter/mistralai/mistral-medium-3": {
2375
2856
  "cache_read_input": 0.04,
2376
2857
  "input": 0.4,
@@ -2380,11 +2861,20 @@
2380
2861
  "input": 1.5,
2381
2862
  "output": 7.5
2382
2863
  },
2864
+ "openrouter/mistralai/mistral-medium-3-5:batch": {
2865
+ "input": 0.75,
2866
+ "output": 3.75
2867
+ },
2383
2868
  "openrouter/mistralai/mistral-medium-3.1": {
2384
2869
  "cache_read_input": 0.04,
2385
2870
  "input": 0.4,
2386
2871
  "output": 2.0
2387
2872
  },
2873
+ "openrouter/mistralai/mistral-medium-3.1:batch": {
2874
+ "cache_read_input": 0.02,
2875
+ "input": 0.2,
2876
+ "output": 1.0
2877
+ },
2388
2878
  "openrouter/mistralai/mistral-nemo": {
2389
2879
  "input": 0.019,
2390
2880
  "output": 0.03
@@ -2403,13 +2893,18 @@
2403
2893
  "input": 0.15,
2404
2894
  "output": 0.6
2405
2895
  },
2896
+ "openrouter/mistralai/mistral-small-2603:batch": {
2897
+ "cache_read_input": 0.0075,
2898
+ "input": 0.075,
2899
+ "output": 0.3
2900
+ },
2406
2901
  "openrouter/mistralai/mistral-small-3.1-24b-instruct": {
2407
2902
  "input": 0.351,
2408
2903
  "output": 0.555
2409
2904
  },
2410
2905
  "openrouter/mistralai/mistral-small-3.2-24b-instruct": {
2411
- "input": 0.075,
2412
- "output": 0.2
2906
+ "input": 0.09375,
2907
+ "output": 0.25
2413
2908
  },
2414
2909
  "openrouter/mistralai/mixtral-8x22b-instruct": {
2415
2910
  "cache_read_input": 0.2,
@@ -2441,9 +2936,9 @@
2441
2936
  "output": 2.5
2442
2937
  },
2443
2938
  "openrouter/moonshotai/kimi-k2.5": {
2444
- "cache_read_input": 0.1,
2445
- "input": 0.6,
2446
- "output": 3.0
2939
+ "cache_read_input": 0.07,
2940
+ "input": 0.45,
2941
+ "output": 2.25
2447
2942
  },
2448
2943
  "openrouter/moonshotai/kimi-k2.6": {
2449
2944
  "cache_read_input": 0.16,
@@ -2451,9 +2946,9 @@
2451
2946
  "output": 4.0
2452
2947
  },
2453
2948
  "openrouter/moonshotai/kimi-k2.7-code": {
2454
- "cache_read_input": 0.19,
2455
- "input": 0.67,
2456
- "output": 3.4
2949
+ "cache_read_input": 0.18,
2950
+ "input": 0.6562,
2951
+ "output": 3.3
2457
2952
  },
2458
2953
  "openrouter/moonshotai/kimi-k2.7-code:batch": {
2459
2954
  "cache_read_input": 0.19,
@@ -2465,6 +2960,11 @@
2465
2960
  "input": 3.0,
2466
2961
  "output": 15.0
2467
2962
  },
2963
+ "openrouter/moonshotai/kimi-k3:batch": {
2964
+ "cache_read_input": 0.228,
2965
+ "input": 2.28,
2966
+ "output": 11.4
2967
+ },
2468
2968
  "openrouter/morph/morph-v3-fast": {
2469
2969
  "input": 0.8,
2470
2970
  "output": 1.2
@@ -2517,19 +3017,23 @@
2517
3017
  "output": 0.2
2518
3018
  },
2519
3019
  "openrouter/nvidia/nemotron-3-super-120b-a12b": {
2520
- "input": 0.085,
2521
- "output": 0.4
3020
+ "input": 0.08,
3021
+ "output": 0.45
2522
3022
  },
2523
3023
  "openrouter/nvidia/nemotron-3-ultra-550b-a55b": {
2524
- "cache_read_input": 0.2,
3024
+ "cache_read_input": 0.12,
2525
3025
  "input": 0.6,
2526
- "output": 3.6
3026
+ "output": 2.4
2527
3027
  },
2528
3028
  "openrouter/nvidia/nemotron-3-ultra-550b-a55b:batch": {
2529
3029
  "cache_read_input": 0.2,
2530
3030
  "input": 0.6,
2531
3031
  "output": 3.6
2532
3032
  },
3033
+ "openrouter/nvidia/nemotron-3.5-content-safety": {
3034
+ "input": 0.2,
3035
+ "output": 0.2
3036
+ },
2533
3037
  "openrouter/nvidia/nemotron-3.5-lightning": {
2534
3038
  "cache_read_input": 0.04,
2535
3039
  "input": 0.08,
@@ -2925,6 +3429,78 @@
2925
3429
  "input": 0.625,
2926
3430
  "output": 5.0
2927
3431
  },
3432
+ "openrouter/openai/gpt-6-astra": {
3433
+ "cache_read_input": 1.0,
3434
+ "cache_write_input": 12.5,
3435
+ "input": 10.0,
3436
+ "output": 50.0
3437
+ },
3438
+ "openrouter/openai/gpt-6-astra-pro": {
3439
+ "cache_read_input": 1.0,
3440
+ "cache_write_input": 12.5,
3441
+ "input": 10.0,
3442
+ "output": 50.0
3443
+ },
3444
+ "openrouter/openai/gpt-6-astra-pro:batch": {
3445
+ "cache_read_input": 0.5,
3446
+ "cache_write_input": 6.25,
3447
+ "input": 5.0,
3448
+ "output": 25.0
3449
+ },
3450
+ "openrouter/openai/gpt-6-astra:batch": {
3451
+ "cache_read_input": 0.5,
3452
+ "cache_write_input": 6.25,
3453
+ "input": 5.0,
3454
+ "output": 25.0
3455
+ },
3456
+ "openrouter/openai/gpt-6-luna": {
3457
+ "cache_read_input": 0.01,
3458
+ "cache_write_input": 0.125,
3459
+ "input": 0.1,
3460
+ "output": 0.5
3461
+ },
3462
+ "openrouter/openai/gpt-6-luna-pro": {
3463
+ "cache_read_input": 0.01,
3464
+ "cache_write_input": 0.125,
3465
+ "input": 0.1,
3466
+ "output": 0.5
3467
+ },
3468
+ "openrouter/openai/gpt-6-luna-pro:batch": {
3469
+ "cache_read_input": 0.005,
3470
+ "cache_write_input": 0.0625,
3471
+ "input": 0.05,
3472
+ "output": 0.25
3473
+ },
3474
+ "openrouter/openai/gpt-6-luna:batch": {
3475
+ "cache_read_input": 0.005,
3476
+ "cache_write_input": 0.0625,
3477
+ "input": 0.05,
3478
+ "output": 0.25
3479
+ },
3480
+ "openrouter/openai/gpt-6-sol": {
3481
+ "cache_read_input": 0.2,
3482
+ "cache_write_input": 2.5,
3483
+ "input": 2.0,
3484
+ "output": 10.0
3485
+ },
3486
+ "openrouter/openai/gpt-6-sol-pro": {
3487
+ "cache_read_input": 0.2,
3488
+ "cache_write_input": 2.5,
3489
+ "input": 2.0,
3490
+ "output": 10.0
3491
+ },
3492
+ "openrouter/openai/gpt-6-sol-pro:batch": {
3493
+ "cache_read_input": 0.1,
3494
+ "cache_write_input": 1.25,
3495
+ "input": 1.0,
3496
+ "output": 5.0
3497
+ },
3498
+ "openrouter/openai/gpt-6-sol:batch": {
3499
+ "cache_read_input": 0.1,
3500
+ "cache_write_input": 1.25,
3501
+ "input": 1.0,
3502
+ "output": 5.0
3503
+ },
2928
3504
  "openrouter/openai/gpt-audio": {
2929
3505
  "audio_input": 32.0,
2930
3506
  "input": 2.5,
@@ -2941,13 +3517,21 @@
2941
3517
  "output": 30.0
2942
3518
  },
2943
3519
  "openrouter/openai/gpt-oss-120b": {
2944
- "input": 0.037,
2945
- "output": 0.17
3520
+ "cache_read_input": 0.075,
3521
+ "input": 0.15,
3522
+ "output": 0.6
3523
+ },
3524
+ "openrouter/openai/gpt-oss-120b:batch": {
3525
+ "input": 0.0296,
3526
+ "output": 0.136
2946
3527
  },
2947
3528
  "openrouter/openai/gpt-oss-20b": {
2948
- "cache_read_input": 0.03,
2949
- "input": 0.03,
2950
- "output": 0.13
3529
+ "input": 0.018,
3530
+ "output": 0.09
3531
+ },
3532
+ "openrouter/openai/gpt-oss-20b:batch": {
3533
+ "input": 0.024,
3534
+ "output": 0.112
2951
3535
  },
2952
3536
  "openrouter/openai/gpt-oss-safeguard-20b": {
2953
3537
  "cache_read_input": 0.0375,
@@ -3088,6 +3672,10 @@
3088
3672
  "input": 0.2,
3089
3673
  "output": 1.1
3090
3674
  },
3675
+ "openrouter/prism-ml/ternary-bonsai-2-27b": {
3676
+ "input": 0.075,
3677
+ "output": 0.5
3678
+ },
3091
3679
  "openrouter/qwen/qwen-2.5-72b-instruct": {
3092
3680
  "input": 0.36,
3093
3681
  "output": 0.4
@@ -3115,8 +3703,9 @@
3115
3703
  "output": 0.78
3116
3704
  },
3117
3705
  "openrouter/qwen/qwen2.5-vl-72b-instruct": {
3118
- "input": 0.25,
3119
- "output": 0.75
3706
+ "cache_read_input": 0.4,
3707
+ "input": 0.8,
3708
+ "output": 1.0
3120
3709
  },
3121
3710
  "openrouter/qwen/qwen3-14b": {
3122
3711
  "input": 0.12,
@@ -3127,8 +3716,9 @@
3127
3716
  "output": 1.82
3128
3717
  },
3129
3718
  "openrouter/qwen/qwen3-235b-a22b-2507": {
3130
- "input": 0.09,
3131
- "output": 0.55
3719
+ "cache_read_input": 0.0175,
3720
+ "input": 0.0875,
3721
+ "output": 0.35
3132
3722
  },
3133
3723
  "openrouter/qwen/qwen3-235b-a22b-thinking-2507": {
3134
3724
  "input": 0.23,
@@ -3139,8 +3729,8 @@
3139
3729
  "output": 0.5
3140
3730
  },
3141
3731
  "openrouter/qwen/qwen3-30b-a3b-instruct-2507": {
3142
- "input": 0.04815,
3143
- "output": 0.19305
3732
+ "input": 0.1,
3733
+ "output": 0.3
3144
3734
  },
3145
3735
  "openrouter/qwen/qwen3-30b-a3b-thinking-2507": {
3146
3736
  "input": 0.2,
@@ -3237,18 +3827,23 @@
3237
3827
  "output": 1.56
3238
3828
  },
3239
3829
  "openrouter/qwen/qwen3.5-35b-a3b": {
3240
- "cache_read_input": 0.25,
3241
- "input": 0.25,
3830
+ "cache_read_input": 0.15625,
3831
+ "input": 0.3125,
3242
3832
  "output": 1.25
3243
3833
  },
3244
3834
  "openrouter/qwen/qwen3.5-397b-a17b": {
3245
- "input": 0.39,
3246
- "output": 2.34
3835
+ "cache_read_input": 0.225,
3836
+ "input": 0.55,
3837
+ "output": 3.5
3247
3838
  },
3248
3839
  "openrouter/qwen/qwen3.5-9b": {
3249
3840
  "input": 0.1,
3250
3841
  "output": 0.15
3251
3842
  },
3843
+ "openrouter/qwen/qwen3.5-9b:batch": {
3844
+ "input": 0.17,
3845
+ "output": 0.25
3846
+ },
3252
3847
  "openrouter/qwen/qwen3.5-flash-02-23": {
3253
3848
  "input": 0.065,
3254
3849
  "output": 0.26
@@ -3263,13 +3858,13 @@
3263
3858
  "output": 1.8
3264
3859
  },
3265
3860
  "openrouter/qwen/qwen3.6-27b": {
3266
- "cache_read_input": 0.12,
3267
- "input": 0.6,
3268
- "output": 3.6
3861
+ "cache_read_input": 0.15,
3862
+ "input": 0.32,
3863
+ "output": 2.7
3269
3864
  },
3270
3865
  "openrouter/qwen/qwen3.6-35b-a3b": {
3271
3866
  "cache_read_input": 0.05,
3272
- "input": 0.14,
3867
+ "input": 0.15,
3273
3868
  "output": 1.0
3274
3869
  },
3275
3870
  "openrouter/qwen/qwen3.6-flash": {
@@ -3310,11 +3905,21 @@
3310
3905
  "input": 2.0,
3311
3906
  "output": 6.0
3312
3907
  },
3908
+ "openrouter/qwen/qwen3.8-2.4t-a95b:batch": {
3909
+ "cache_read_input": 0.25,
3910
+ "input": 2.0,
3911
+ "output": 6.0
3912
+ },
3313
3913
  "openrouter/qwen/qwen3.8-27b": {
3314
3914
  "cache_read_input": 0.085,
3315
- "cache_write_input": 0.53125,
3316
- "input": 0.425,
3317
- "output": 2.55
3915
+ "input": 0.42,
3916
+ "output": 3.0
3917
+ },
3918
+ "openrouter/qwen/qwen3.8-flash": {
3919
+ "cache_read_input": 0.016,
3920
+ "cache_write_input": 0.2,
3921
+ "input": 0.15,
3922
+ "output": 0.47
3318
3923
  },
3319
3924
  "openrouter/qwen/qwen3.8-max": {
3320
3925
  "cache_read_input": 0.25,
@@ -3322,6 +3927,22 @@
3322
3927
  "input": 2.0,
3323
3928
  "output": 6.0
3324
3929
  },
3930
+ "openrouter/qwen/qwen3.8-max-0902": {
3931
+ "cache_read_input": 0.25,
3932
+ "cache_write_input": 2.5,
3933
+ "input": 2.0,
3934
+ "output": 6.0
3935
+ },
3936
+ "openrouter/qwen/qwen3.8-max-prime": {
3937
+ "cache_read_input": 0.5,
3938
+ "input": 4.0,
3939
+ "output": 12.0
3940
+ },
3941
+ "openrouter/qwen/qwen3.8-omni-flash": {
3942
+ "cache_read_input": 0.016,
3943
+ "input": 0.15,
3944
+ "output": 0.47
3945
+ },
3325
3946
  "openrouter/rekaai/reka-edge": {
3326
3947
  "input": 0.1,
3327
3948
  "output": 0.1
@@ -3338,11 +3959,21 @@
3338
3959
  "input": 1.0,
3339
3960
  "output": 3.0
3340
3961
  },
3962
+ "openrouter/sakana/fugu-max": {
3963
+ "cache_read_input": 0.25,
3964
+ "input": 2.0,
3965
+ "output": 6.0
3966
+ },
3341
3967
  "openrouter/sakana/fugu-ultra": {
3342
3968
  "cache_read_input": 0.5,
3343
3969
  "input": 5.0,
3344
3970
  "output": 30.0
3345
3971
  },
3972
+ "openrouter/sakana/fugu-ultra-v2": {
3973
+ "cache_read_input": 0.5,
3974
+ "input": 5.0,
3975
+ "output": 30.0
3976
+ },
3346
3977
  "openrouter/sakana/sakana-namazu": {
3347
3978
  "cache_read_input": 0.15,
3348
3979
  "input": 0.95,
@@ -3407,6 +4038,11 @@
3407
4038
  "input": 0.18,
3408
4039
  "output": 0.6
3409
4040
  },
4041
+ "openrouter/tencent/hy4-preview": {
4042
+ "cache_read_input": 0.042,
4043
+ "input": 0.834,
4044
+ "output": 2.501
4045
+ },
3410
4046
  "openrouter/thedrummer/cydonia-24b-v4.1": {
3411
4047
  "cache_read_input": 0.15,
3412
4048
  "input": 0.3,
@@ -3426,8 +4062,8 @@
3426
4062
  "output": 0.4
3427
4063
  },
3428
4064
  "openrouter/thinkingmachines/inkling": {
3429
- "cache_read_input": 0.16,
3430
- "input": 0.95,
4065
+ "cache_read_input": 0.17,
4066
+ "input": 1.0,
3431
4067
  "output": 4.05
3432
4068
  },
3433
4069
  "openrouter/thinkingmachines/inkling-small": {
@@ -3435,24 +4071,39 @@
3435
4071
  "input": 0.45,
3436
4072
  "output": 1.2
3437
4073
  },
4074
+ "openrouter/thinkingmachines/inkling-small:batch": {
4075
+ "cache_read_input": 0.1,
4076
+ "input": 0.5,
4077
+ "output": 1.2
4078
+ },
3438
4079
  "openrouter/thinkingmachines/inkling:batch": {
3439
4080
  "cache_read_input": 0.17,
3440
4081
  "input": 1.0,
3441
4082
  "output": 4.05
3442
4083
  },
4084
+ "openrouter/unbiased/pareto": {
4085
+ "cache_read_input": 0.25,
4086
+ "input": 2.5,
4087
+ "output": 7.5
4088
+ },
3443
4089
  "openrouter/undi95/remm-slerp-l2-13b": {
3444
- "input": 0.45,
4090
+ "input": 0.35,
3445
4091
  "output": 0.65
3446
4092
  },
4093
+ "openrouter/upstage/solar-mini4": {
4094
+ "cache_read_input": 0.005,
4095
+ "input": 0.05,
4096
+ "output": 0.2
4097
+ },
3447
4098
  "openrouter/upstage/solar-pro-3": {
3448
4099
  "cache_read_input": 0.015,
3449
4100
  "input": 0.15,
3450
4101
  "output": 0.6
3451
4102
  },
3452
4103
  "openrouter/upstage/solar-pro4": {
3453
- "cache_read_input": 0.006,
3454
- "input": 0.03,
3455
- "output": 0.12
4104
+ "cache_read_input": 0.018,
4105
+ "input": 0.09,
4106
+ "output": 0.36
3456
4107
  },
3457
4108
  "openrouter/writer/palmyra-x5": {
3458
4109
  "input": 0.6,
@@ -3473,6 +4124,11 @@
3473
4124
  "input": 1.25,
3474
4125
  "output": 2.5
3475
4126
  },
4127
+ "openrouter/x-ai/grok-4.3:batch": {
4128
+ "cache_read_input": 0.16,
4129
+ "input": 1.0,
4130
+ "output": 2.0
4131
+ },
3476
4132
  "openrouter/x-ai/grok-4.5": {
3477
4133
  "cache_read_input": 0.3,
3478
4134
  "input": 2.0,
@@ -3483,6 +4139,11 @@
3483
4139
  "input": 2.0,
3484
4140
  "output": 6.0
3485
4141
  },
4142
+ "openrouter/x-ai/grok-4.7": {
4143
+ "cache_read_input": 0.4,
4144
+ "input": 1.6,
4145
+ "output": 4.8
4146
+ },
3486
4147
  "openrouter/x-ai/grok-build-0.1": {
3487
4148
  "cache_read_input": 0.2,
3488
4149
  "input": 1.0,
@@ -3513,6 +4174,21 @@
3513
4174
  "input": 0.435,
3514
4175
  "output": 0.87
3515
4176
  },
4177
+ "openrouter/xiaomi/mimo-v2.6-flash": {
4178
+ "cache_read_input": 0.0028,
4179
+ "input": 0.14,
4180
+ "output": 0.28
4181
+ },
4182
+ "openrouter/xiaomi/mimo-v2.6-pro": {
4183
+ "cache_read_input": 0.0036,
4184
+ "input": 0.435,
4185
+ "output": 0.87
4186
+ },
4187
+ "openrouter/xiaomi/mimo-v2.6-pro-ultraspeed": {
4188
+ "cache_read_input": 0.036,
4189
+ "input": 4.35,
4190
+ "output": 8.7
4191
+ },
3516
4192
  "openrouter/z-ai/glm-4-32b": {
3517
4193
  "input": 0.1,
3518
4194
  "output": 0.1
@@ -3533,9 +4209,9 @@
3533
4209
  "output": 1.8
3534
4210
  },
3535
4211
  "openrouter/z-ai/glm-4.6": {
3536
- "cache_read_input": 0.1,
3537
- "input": 0.5,
3538
- "output": 2.0
4212
+ "cache_read_input": 0.08,
4213
+ "input": 0.43,
4214
+ "output": 1.75
3539
4215
  },
3540
4216
  "openrouter/z-ai/glm-4.6v": {
3541
4217
  "cache_read_input": 0.055,
@@ -3548,8 +4224,7 @@
3548
4224
  "output": 1.75
3549
4225
  },
3550
4226
  "openrouter/z-ai/glm-4.7-flash": {
3551
- "cache_read_input": 0.01,
3552
- "input": 0.06,
4227
+ "input": 0.0605,
3553
4228
  "output": 0.4
3554
4229
  },
3555
4230
  "openrouter/z-ai/glm-5": {
@@ -3563,24 +4238,49 @@
3563
4238
  "output": 4.0
3564
4239
  },
3565
4240
  "openrouter/z-ai/glm-5.1": {
3566
- "cache_read_input": 0.234,
3567
- "input": 1.26,
3568
- "output": 3.96
4241
+ "cache_read_input": 0.1794,
4242
+ "input": 0.966,
4243
+ "output": 3.036
3569
4244
  },
3570
4245
  "openrouter/z-ai/glm-5.2": {
3571
- "cache_read_input": 0.221,
3572
- "input": 1.19,
3573
- "output": 3.74
4246
+ "cache_read_input": 0.12064,
4247
+ "input": 0.6496,
4248
+ "output": 2.0416
3574
4249
  },
3575
4250
  "openrouter/z-ai/glm-5.2:batch": {
3576
- "cache_read_input": 0.26,
3577
- "input": 1.4,
3578
- "output": 4.4
4251
+ "cache_read_input": 0.07,
4252
+ "input": 0.7,
4253
+ "output": 2.2
3579
4254
  },
3580
4255
  "openrouter/z-ai/glm-5.3": {
3581
- "cache_read_input": 0.26,
3582
- "input": 1.4,
3583
- "output": 4.4
4256
+ "cache_read_input": 0.156,
4257
+ "input": 0.84,
4258
+ "output": 2.64
4259
+ },
4260
+ "openrouter/z-ai/glm-5.3-flash": {
4261
+ "cache_read_input": 0.05,
4262
+ "input": 0.15,
4263
+ "output": 0.5
4264
+ },
4265
+ "openrouter/z-ai/glm-5.3-flash:batch": {
4266
+ "cache_read_input": 0.012,
4267
+ "input": 0.06,
4268
+ "output": 0.2
4269
+ },
4270
+ "openrouter/z-ai/glm-5.3-flashx": {
4271
+ "cache_read_input": 0.09,
4272
+ "input": 0.37,
4273
+ "output": 1.25
4274
+ },
4275
+ "openrouter/z-ai/glm-5.3-prime": {
4276
+ "cache_read_input": 0.56,
4277
+ "input": 2.8,
4278
+ "output": 8.8
4279
+ },
4280
+ "openrouter/z-ai/glm-5.3:batch": {
4281
+ "cache_read_input": 0.1,
4282
+ "input": 0.45,
4283
+ "output": 2.0
3584
4284
  },
3585
4285
  "openrouter/z-ai/glm-5v-turbo": {
3586
4286
  "cache_read_input": 0.24,
@@ -3588,7 +4288,7 @@
3588
4288
  "output": 4.0
3589
4289
  },
3590
4290
  "openrouter/~anthropic/claude-fable-latest": {
3591
- "cache_read_input": 1.0,
4291
+ "cache_read_input": 0.25,
3592
4292
  "cache_write_input": 12.5,
3593
4293
  "input": 10.0,
3594
4294
  "output": 50.0
@@ -3600,10 +4300,10 @@
3600
4300
  "output": 5.0
3601
4301
  },
3602
4302
  "openrouter/~anthropic/claude-opus-latest": {
3603
- "cache_read_input": 0.5,
3604
- "cache_write_input": 6.25,
3605
- "input": 5.0,
3606
- "output": 25.0
4303
+ "cache_read_input": 0.2,
4304
+ "cache_write_input": 5.0,
4305
+ "input": 4.0,
4306
+ "output": 20.0
3607
4307
  },
3608
4308
  "openrouter/~anthropic/claude-sonnet-latest": {
3609
4309
  "cache_read_input": 0.2,
@@ -3611,18 +4311,28 @@
3611
4311
  "input": 2.0,
3612
4312
  "output": 10.0
3613
4313
  },
4314
+ "openrouter/~deepseek/deepseek-flash-latest": {
4315
+ "cache_read_input": 0.01,
4316
+ "input": 0.04,
4317
+ "output": 1.0
4318
+ },
4319
+ "openrouter/~deepseek/deepseek-pro-latest": {
4320
+ "cache_read_input": 0.25,
4321
+ "input": 0.39,
4322
+ "output": 2.9
4323
+ },
3614
4324
  "openrouter/~deepseek/deepseek-v4-flash-latest": {
3615
- "cache_read_input": 0.007,
4325
+ "cache_read_input": 0.016,
3616
4326
  "input": 0.03,
3617
- "output": 0.075
4327
+ "output": 0.32
3618
4328
  },
3619
4329
  "openrouter/~google/gemini-flash-latest": {
3620
- "audio_input": 0.375,
3621
- "cache_read_input": 0.0375,
3622
- "cache_write_input": 0.020833,
3623
- "image_input": 0.375,
3624
- "input": 0.375,
3625
- "output": 1.875
4330
+ "audio_input": 0.75,
4331
+ "cache_read_input": 0.075,
4332
+ "cache_write_input": 0.041667,
4333
+ "image_input": 0.75,
4334
+ "input": 0.75,
4335
+ "output": 3.75
3626
4336
  },
3627
4337
  "openrouter/~google/gemini-pro-latest": {
3628
4338
  "audio_input": 2.0,
@@ -3633,9 +4343,15 @@
3633
4343
  "output": 12.0
3634
4344
  },
3635
4345
  "openrouter/~moonshotai/kimi-latest": {
3636
- "cache_read_input": 0.256,
3637
- "input": 2.55,
3638
- "output": 12.75
4346
+ "cache_read_input": 0.3,
4347
+ "input": 1.4,
4348
+ "output": 10.75
4349
+ },
4350
+ "openrouter/~openai/gpt-astra-latest": {
4351
+ "cache_read_input": 1.0,
4352
+ "cache_write_input": 12.5,
4353
+ "input": 10.0,
4354
+ "output": 50.0
3639
4355
  },
3640
4356
  "openrouter/~openai/gpt-latest": {
3641
4357
  "cache_read_input": 0.2,
@@ -3643,20 +4359,43 @@
3643
4359
  "input": 2.0,
3644
4360
  "output": 10.0
3645
4361
  },
4362
+ "openrouter/~openai/gpt-luna-latest": {
4363
+ "cache_read_input": 0.01,
4364
+ "cache_write_input": 0.125,
4365
+ "input": 0.1,
4366
+ "output": 0.5
4367
+ },
3646
4368
  "openrouter/~openai/gpt-mini-latest": {
3647
4369
  "cache_read_input": 0.075,
3648
4370
  "input": 0.75,
3649
4371
  "output": 4.5
3650
4372
  },
3651
- "openrouter/~x-ai/grok-latest": {
3652
- "cache_read_input": 0.5,
4373
+ "openrouter/~openai/gpt-sol-latest": {
4374
+ "cache_read_input": 0.2,
4375
+ "cache_write_input": 2.5,
3653
4376
  "input": 2.0,
3654
- "output": 6.0
4377
+ "output": 10.0
4378
+ },
4379
+ "openrouter/~openai/gpt-terra-latest": {
4380
+ "cache_read_input": 0.2,
4381
+ "cache_write_input": 2.5,
4382
+ "input": 2.0,
4383
+ "output": 12.0
4384
+ },
4385
+ "openrouter/~x-ai/grok-latest": {
4386
+ "cache_read_input": 0.4,
4387
+ "input": 1.6,
4388
+ "output": 4.8
4389
+ },
4390
+ "openrouter/~z-ai/glm-flash-latest": {
4391
+ "cache_read_input": 0.01,
4392
+ "input": 0.045,
4393
+ "output": 0.14
3655
4394
  },
3656
4395
  "openrouter/~z-ai/glm-latest": {
3657
- "cache_read_input": 0.26,
3658
- "input": 1.4,
3659
- "output": 4.4
4396
+ "cache_read_input": 0.125,
4397
+ "input": 0.5625,
4398
+ "output": 2.5
3660
4399
  }
3661
4400
  },
3662
4401
  "service_charges": {