@nodaro/shared 1.24.1 → 2.0.2

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.
@@ -215,7 +215,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
215
215
  useCases: ["realistic", "general", "fast"],
216
216
  features: ["reference-image"],
217
217
  aspectRatios: NANO_BANANA_RATIOS,
218
- pricing: [{ identifier: "nano-banana", credits: 1, note: "1K" }],
218
+ pricing: [{ identifier: "nano-banana", credits: 10, note: "1K" }],
219
219
  mcpHidden: true,
220
220
  },
221
221
  "nano-banana-2": {
@@ -233,9 +233,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
233
233
  aspectRatios: NANO_BANANA_RATIOS,
234
234
  resolutions: ["1K", "2K", "4K"],
235
235
  pricing: [
236
- { identifier: "nano-banana-2", credits: 4, note: "1K default" },
237
- { identifier: "nano-banana-2:2K", credits: 5, note: "2K" },
238
- { identifier: "nano-banana-2:4K", credits: 5, note: "4K" },
236
+ { identifier: "nano-banana-2", credits: 20, note: "1K default" },
237
+ { identifier: "nano-banana-2:2K", credits: 50, note: "2K" },
238
+ { identifier: "nano-banana-2:4K", credits: 50, note: "4K" },
239
239
  ],
240
240
  },
241
241
  "nano-banana-2-lite": {
@@ -252,7 +252,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
252
252
  features: ["reference-image"],
253
253
  aspectRatios: NANO_BANANA_2_LITE_RATIOS,
254
254
  // 1K only — no resolution lever, flat pricing.
255
- pricing: [{ identifier: "nano-banana-2-lite", credits: 2, note: "1K flat" }],
255
+ pricing: [{ identifier: "nano-banana-2-lite", credits: 10, note: "1K flat" }],
256
256
  },
257
257
  "nano-banana-pro": {
258
258
  id: "nano-banana-pro",
@@ -267,8 +267,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
267
267
  aspectRatios: NANO_BANANA_RATIOS,
268
268
  resolutions: ["1K", "2K", "4K"],
269
269
  pricing: [
270
- { identifier: "nano-banana-pro", credits: 5, note: "1K / 2K" },
271
- { identifier: "nano-banana-pro:4K", credits: 6, note: "4K" },
270
+ { identifier: "nano-banana-pro", credits: 45, note: "1K / 2K" },
271
+ { identifier: "nano-banana-pro:4K", credits: 60, note: "4K" },
272
272
  ],
273
273
  featured: true,
274
274
  },
@@ -283,7 +283,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
283
283
  useCases: ["edit", "remix", "general"],
284
284
  features: ["reference-image"],
285
285
  aspectRatios: NANO_BANANA_RATIOS,
286
- pricing: [{ identifier: "nano-banana-edit", credits: 2 }],
286
+ pricing: [{ identifier: "nano-banana-edit", credits: 10 }],
287
287
  },
288
288
 
289
289
  // ── Black Forest Labs (Flux) ──
@@ -300,8 +300,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
300
300
  aspectRatios: FLUX_RATIOS,
301
301
  resolutions: ["1K", "2K"],
302
302
  pricing: [
303
- { identifier: "flux", credits: 2, note: "1K default" },
304
- { identifier: "flux:2K", credits: 2, note: "2K" },
303
+ { identifier: "flux", credits: 13, note: "1K default" },
304
+ { identifier: "flux:2K", credits: 20, note: "2K" },
305
305
  ],
306
306
  },
307
307
  "flux-flex": {
@@ -317,8 +317,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
317
317
  aspectRatios: FLUX_RATIOS,
318
318
  resolutions: ["1K", "2K"],
319
319
  pricing: [
320
- { identifier: "flux-flex", credits: 4, note: "1K default" },
321
- { identifier: "flux-flex:2K", credits: 6, note: "2K" },
320
+ { identifier: "flux-flex", credits: 35, note: "1K default" },
321
+ { identifier: "flux-flex:2K", credits: 60, note: "2K" },
322
322
  ],
323
323
  },
324
324
  "flux-i2i": {
@@ -334,8 +334,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
334
334
  aspectRatios: FLUX_RATIOS,
335
335
  resolutions: ["1K", "2K"],
336
336
  pricing: [
337
- { identifier: "flux-i2i", credits: 4, note: "1K default" },
338
- { identifier: "flux-i2i:2K", credits: 6, note: "2K" },
337
+ { identifier: "flux-i2i", credits: 60, note: "1K default" },
338
+ { identifier: "flux-i2i:2K", credits: 60, note: "2K" },
339
339
  ],
340
340
  },
341
341
  "flux-pro-i2i": {
@@ -351,8 +351,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
351
351
  aspectRatios: FLUX_RATIOS,
352
352
  resolutions: ["1K", "2K"],
353
353
  pricing: [
354
- { identifier: "flux-pro-i2i", credits: 2, note: "1K default" },
355
- { identifier: "flux-pro-i2i:2K", credits: 2, note: "2K" },
354
+ { identifier: "flux-pro-i2i", credits: 13, note: "1K default" },
355
+ { identifier: "flux-pro-i2i:2K", credits: 20, note: "2K" },
356
356
  ],
357
357
  },
358
358
  "flux-kontext": {
@@ -367,7 +367,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
367
367
  useCases: ["edit", "style-transfer", "preserve-identity"],
368
368
  features: ["reference-image"],
369
369
  aspectRatios: KONTEXT_RATIOS,
370
- pricing: [{ identifier: "flux-kontext", credits: 2 }],
370
+ pricing: [{ identifier: "flux-kontext", credits: 13 }],
371
371
  },
372
372
  "flux-kontext-max": {
373
373
  id: "flux-kontext-max",
@@ -380,7 +380,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
380
380
  useCases: ["edit", "style-transfer", "premium"],
381
381
  features: ["reference-image"],
382
382
  aspectRatios: KONTEXT_RATIOS,
383
- pricing: [{ identifier: "flux-kontext-max", credits: 4 }],
383
+ pricing: [{ identifier: "flux-kontext-max", credits: 25 }],
384
384
  },
385
385
  // ── Replicate "Open" (uncensored) — run direct via Replicate, not KIE ──
386
386
  "flux-2-klein": {
@@ -396,9 +396,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
396
396
  aspectRatios: FLUX_RATIOS,
397
397
  resolutions: ["0.5 MP", "1 MP", "2 MP", "4 MP"],
398
398
  pricing: [
399
- { identifier: "flux-2-klein", credits: 1 }, // 1MP 0ref (default)
400
- { identifier: "flux-2-klein:1MP:0ref", credits: 1 }, // min
401
- { identifier: "flux-2-klein:4MP:8ref", credits: 11 }, // max
399
+ { identifier: "flux-2-klein", credits: 10 }, // 1MP 0ref (default)
400
+ { identifier: "flux-2-klein:1MP:0ref", credits: 3 }, // min
401
+ { identifier: "flux-2-klein:4MP:8ref", credits: 108 }, // max
402
402
  ],
403
403
  },
404
404
  "kontext-multi": {
@@ -412,7 +412,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
412
412
  useCases: ["edit", "multi-reference", "unfiltered"],
413
413
  features: ["reference-image"],
414
414
  aspectRatios: KONTEXT_RATIOS,
415
- pricing: [{ identifier: "kontext-multi", credits: 3 }],
415
+ pricing: [{ identifier: "kontext-multi", credits: 30 }],
416
416
  },
417
417
  "flux-2-pro": {
418
418
  id: "flux-2-pro",
@@ -427,9 +427,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
427
427
  aspectRatios: FLUX_RATIOS,
428
428
  resolutions: ["0.5 MP", "1 MP", "2 MP", "4 MP"],
429
429
  pricing: [
430
- { identifier: "flux-2-pro", credits: 3 }, // 2MP 0ref (default)
431
- { identifier: "flux-2-pro:0.5MP:0ref", credits: 2 }, // min
432
- { identifier: "flux-2-pro:4MP:8ref", credits: 28 }, // max
430
+ { identifier: "flux-2-pro", credits: 30 }, // 2MP 0ref (default)
431
+ { identifier: "flux-2-pro:0.5MP:0ref", credits: 12 }, // min
432
+ { identifier: "flux-2-pro:4MP:8ref", credits: 278 }, // max
433
433
  ],
434
434
  },
435
435
  "flux-2-max": {
@@ -445,9 +445,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
445
445
  aspectRatios: FLUX_RATIOS,
446
446
  resolutions: ["0.5 MP", "1 MP", "2 MP", "4 MP"],
447
447
  pricing: [
448
- { identifier: "flux-2-max", credits: 7 }, // 2MP 0ref (default)
449
- { identifier: "flux-2-max:0.5MP:0ref", credits: 2 }, // min
450
- { identifier: "flux-2-max:4MP:8ref", credits: 62 }, // max
448
+ { identifier: "flux-2-max", credits: 70 }, // 2MP 0ref (default)
449
+ { identifier: "flux-2-max:0.5MP:0ref", credits: 18 }, // min
450
+ { identifier: "flux-2-max:4MP:8ref", credits: 620 }, // max
451
451
  ],
452
452
  },
453
453
 
@@ -465,8 +465,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
465
465
  aspectRatios: GPT_IMAGE_RATIOS,
466
466
  qualities: ["medium", "high"],
467
467
  pricing: [
468
- { identifier: "gpt-image", credits: 4, note: "medium default" },
469
- { identifier: "gpt-image:high", credits: 6, note: "high quality" },
468
+ { identifier: "gpt-image", credits: 10, note: "medium default" },
469
+ { identifier: "gpt-image:high", credits: 60, note: "high quality" },
470
470
  ],
471
471
  valueLabels: { "3:2": "3:2 (Landscape)", "2:3": "2:3 (Portrait)" },
472
472
  mcpHidden: true,
@@ -484,8 +484,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
484
484
  aspectRatios: GPT_IMAGE_RATIOS,
485
485
  qualities: ["medium", "high"],
486
486
  pricing: [
487
- { identifier: "gpt-image-i2i", credits: 4, note: "medium default" },
488
- { identifier: "gpt-image-i2i:high", credits: 6, note: "high quality" },
487
+ { identifier: "gpt-image-i2i", credits: 10, note: "medium default" },
488
+ { identifier: "gpt-image-i2i:high", credits: 60, note: "high quality" },
489
489
  ],
490
490
  valueLabels: { "3:2": "3:2 (Landscape)", "2:3": "2:3 (Portrait)" },
491
491
  mcpHidden: true,
@@ -503,9 +503,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
503
503
  aspectRatios: GPT_IMAGE_2_RATIOS,
504
504
  resolutions: ["1K", "2K", "4K"],
505
505
  pricing: [
506
- { identifier: "gpt-image-2", credits: 1, note: "1K default" },
507
- { identifier: "gpt-image-2:2K", credits: 3, note: "2K" },
508
- { identifier: "gpt-image-2:4K", credits: 6, note: "4K" },
506
+ { identifier: "gpt-image-2", credits: 15, note: "1K default" },
507
+ { identifier: "gpt-image-2:2K", credits: 30, note: "2K" },
508
+ { identifier: "gpt-image-2:4K", credits: 60, note: "4K" },
509
509
  ],
510
510
  },
511
511
  "gpt-image-2-i2i": {
@@ -521,9 +521,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
521
521
  aspectRatios: GPT_IMAGE_2_RATIOS,
522
522
  resolutions: ["1K", "2K", "4K"],
523
523
  pricing: [
524
- { identifier: "gpt-image-2-i2i", credits: 1, note: "1K default" },
525
- { identifier: "gpt-image-2-i2i:2K", credits: 3, note: "2K" },
526
- { identifier: "gpt-image-2-i2i:4K", credits: 6, note: "4K" },
524
+ { identifier: "gpt-image-2-i2i", credits: 15, note: "1K default" },
525
+ { identifier: "gpt-image-2-i2i:2K", credits: 30, note: "2K" },
526
+ { identifier: "gpt-image-2-i2i:4K", credits: 60, note: "4K" },
527
527
  ],
528
528
  },
529
529
 
@@ -545,9 +545,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
545
545
  useCases: ["typography", "illustration", "stylized"],
546
546
  aspectRatios: IDEOGRAM_RATIOS,
547
547
  pricing: [
548
- { identifier: "ideogram-v3", credits: 2, note: "BALANCED default" },
549
- { identifier: "ideogram-v3:TURBO", credits: 1, note: "fastest" },
550
- { identifier: "ideogram-v3:QUALITY", credits: 3, note: "best quality" },
548
+ { identifier: "ideogram-v3", credits: 18, note: "BALANCED default" },
549
+ { identifier: "ideogram-v3:TURBO", credits: 18, note: "fastest" },
550
+ { identifier: "ideogram-v3:QUALITY", credits: 18, note: "best quality" },
551
551
  ],
552
552
  },
553
553
  "ideogram-edit": {
@@ -563,9 +563,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
563
563
  // No aspectRatios — Ideogram Edit takes output dimensions from the input
564
564
  // image + mask. Backend strips aspect_ratio for this provider.
565
565
  pricing: [
566
- { identifier: "ideogram-edit", credits: 5, note: "BALANCED default" },
567
- { identifier: "ideogram-edit:TURBO", credits: 3, note: "fastest" },
568
- { identifier: "ideogram-edit:QUALITY", credits: 6, note: "best quality" },
566
+ { identifier: "ideogram-edit", credits: 45, note: "BALANCED default" },
567
+ { identifier: "ideogram-edit:TURBO", credits: 30, note: "fastest" },
568
+ { identifier: "ideogram-edit:QUALITY", credits: 60, note: "best quality" },
569
569
  ],
570
570
  },
571
571
  "ideogram-remix": {
@@ -580,9 +580,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
580
580
  features: ["reference-image"],
581
581
  aspectRatios: IDEOGRAM_RATIOS,
582
582
  pricing: [
583
- { identifier: "ideogram-remix", credits: 5, note: "BALANCED default" },
584
- { identifier: "ideogram-remix:TURBO", credits: 3, note: "fastest" },
585
- { identifier: "ideogram-remix:QUALITY", credits: 6, note: "best quality" },
583
+ { identifier: "ideogram-remix", credits: 45, note: "BALANCED default" },
584
+ { identifier: "ideogram-remix:TURBO", credits: 30, note: "fastest" },
585
+ { identifier: "ideogram-remix:QUALITY", credits: 60, note: "best quality" },
586
586
  ],
587
587
  },
588
588
  "ideogram-reframe": {
@@ -597,9 +597,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
597
597
  features: ["reference-image"],
598
598
  aspectRatios: IDEOGRAM_RATIOS,
599
599
  pricing: [
600
- { identifier: "ideogram-reframe", credits: 2, note: "BALANCED default" },
601
- { identifier: "ideogram-reframe:TURBO", credits: 1, note: "fastest" },
602
- { identifier: "ideogram-reframe:QUALITY", credits: 3, note: "best quality" },
600
+ { identifier: "ideogram-reframe", credits: 18, note: "BALANCED default" },
601
+ { identifier: "ideogram-reframe:TURBO", credits: 18, note: "fastest" },
602
+ { identifier: "ideogram-reframe:QUALITY", credits: 18, note: "best quality" },
603
603
  ],
604
604
  },
605
605
 
@@ -614,7 +614,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
614
614
  description: "Google's Imagen 4 — strong photographic quality and prompt fidelity.",
615
615
  useCases: ["photographic", "realistic"],
616
616
  aspectRatios: IMAGEN4_RATIOS,
617
- pricing: [{ identifier: "imagen4", credits: 2 }],
617
+ pricing: [{ identifier: "imagen4", credits: 20 }],
618
618
  },
619
619
  "imagen4-fast": {
620
620
  id: "imagen4-fast",
@@ -626,7 +626,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
626
626
  description: "Cheaper / quicker Imagen 4 tier.",
627
627
  useCases: ["fast", "realistic", "general"],
628
628
  aspectRatios: IMAGEN4_RATIOS,
629
- pricing: [{ identifier: "imagen4-fast", credits: 1 }],
629
+ pricing: [{ identifier: "imagen4-fast", credits: 10 }],
630
630
  },
631
631
  "imagen4-ultra": {
632
632
  id: "imagen4-ultra",
@@ -638,7 +638,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
638
638
  description: "Premium Imagen 4 — highest fidelity, slower / more credits.",
639
639
  useCases: ["premium", "photographic"],
640
640
  aspectRatios: IMAGEN4_RATIOS,
641
- pricing: [{ identifier: "imagen4-ultra", credits: 3 }],
641
+ pricing: [{ identifier: "imagen4-ultra", credits: 30 }],
642
642
  },
643
643
 
644
644
  // ── Bytedance Seedream ──
@@ -655,8 +655,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
655
655
  aspectRatios: SEEDREAM_RATIOS,
656
656
  qualities: ["basic", "high"],
657
657
  pricing: [
658
- { identifier: "seedream", credits: 2, note: "basic / 2K default" },
659
- { identifier: "seedream:high", credits: 4, note: "high / 4K" },
658
+ { identifier: "seedream", credits: 16, note: "basic / 2K default" },
659
+ { identifier: "seedream:high", credits: 40, note: "high / 4K" },
660
660
  ],
661
661
  mcpHidden: true,
662
662
  },
@@ -673,8 +673,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
673
673
  aspectRatios: SEEDREAM_RATIOS,
674
674
  qualities: ["basic", "high"],
675
675
  pricing: [
676
- { identifier: "seedream-edit", credits: 2, note: "basic default" },
677
- { identifier: "seedream-edit:high", credits: 4, note: "high quality" },
676
+ { identifier: "seedream-edit", credits: 16, note: "basic default" },
677
+ { identifier: "seedream-edit:high", credits: 40, note: "high quality" },
678
678
  ],
679
679
  mcpHidden: true,
680
680
  },
@@ -691,8 +691,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
691
691
  aspectRatios: SEEDREAM_RATIOS,
692
692
  qualities: ["basic", "high"],
693
693
  pricing: [
694
- { identifier: "seedream-5-lite", credits: 2, note: "basic default" },
695
- { identifier: "seedream-5-lite:high", credits: 5, note: "high quality" },
694
+ { identifier: "seedream-5-lite", credits: 14, note: "basic default" },
695
+ { identifier: "seedream-5-lite:high", credits: 50, note: "high quality" },
696
696
  ],
697
697
  },
698
698
  "seedream-5-lite-i2i": {
@@ -708,8 +708,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
708
708
  aspectRatios: SEEDREAM_RATIOS,
709
709
  qualities: ["basic", "high"],
710
710
  pricing: [
711
- { identifier: "seedream-5-lite-i2i", credits: 2, note: "basic default" },
712
- { identifier: "seedream-5-lite-i2i:high", credits: 5, note: "high quality" },
711
+ { identifier: "seedream-5-lite-i2i", credits: 14, note: "basic default" },
712
+ { identifier: "seedream-5-lite-i2i:high", credits: 50, note: "high quality" },
713
713
  ],
714
714
  },
715
715
  "seedream-5-pro": {
@@ -725,8 +725,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
725
725
  aspectRatios: SEEDREAM_RATIOS,
726
726
  qualities: ["basic", "high"],
727
727
  pricing: [
728
- { identifier: "seedream-5-pro", credits: 3, note: "basic / 1K default" },
729
- { identifier: "seedream-5-pro:high", credits: 6, note: "high / 2K" },
728
+ { identifier: "seedream-5-pro", credits: 18, note: "basic / 1K default" },
729
+ { identifier: "seedream-5-pro:high", credits: 60, note: "high / 2K" },
730
730
  ],
731
731
  },
732
732
  "seedream-5-pro-i2i": {
@@ -742,8 +742,8 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
742
742
  aspectRatios: SEEDREAM_RATIOS,
743
743
  qualities: ["basic", "high"],
744
744
  pricing: [
745
- { identifier: "seedream-5-pro-i2i", credits: 3, note: "basic / 1K default" },
746
- { identifier: "seedream-5-pro-i2i:high", credits: 6, note: "high / 2K" },
745
+ { identifier: "seedream-5-pro-i2i", credits: 19, note: "basic / 1K default" },
746
+ { identifier: "seedream-5-pro-i2i:high", credits: 60, note: "high / 2K" },
747
747
  ],
748
748
  },
749
749
 
@@ -759,7 +759,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
759
759
  useCases: ["fast", "cheap", "general"],
760
760
  features: ["reference-image"],
761
761
  aspectRatios: IDEOGRAM_RATIOS,
762
- pricing: [{ identifier: "qwen", credits: 1 }],
762
+ pricing: [{ identifier: "qwen", credits: 10 }],
763
763
  },
764
764
  "qwen-i2i": {
765
765
  id: "qwen-i2i",
@@ -772,7 +772,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
772
772
  useCases: ["edit", "fast", "cheap"],
773
773
  features: ["reference-image"],
774
774
  aspectRatios: IDEOGRAM_RATIOS,
775
- pricing: [{ identifier: "qwen-i2i", credits: 1 }],
775
+ pricing: [{ identifier: "qwen-i2i", credits: 10 }],
776
776
  },
777
777
  "qwen-edit": {
778
778
  id: "qwen-edit",
@@ -785,7 +785,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
785
785
  useCases: ["edit", "cheap"],
786
786
  features: ["reference-image"],
787
787
  aspectRatios: IDEOGRAM_RATIOS,
788
- pricing: [{ identifier: "qwen-edit", credits: 2 }],
788
+ pricing: [{ identifier: "qwen-edit", credits: 13 }],
789
789
  },
790
790
 
791
791
  // ── Tongyi-MAI Z-Image ──
@@ -799,7 +799,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
799
799
  description: "Cheapest model in catalog. Fast, stylized output. Limited aspect ratios.",
800
800
  useCases: ["cheap", "fast", "stylized"],
801
801
  aspectRatios: Z_IMAGE_RATIOS,
802
- pricing: [{ identifier: "z-image", credits: 1 }],
802
+ pricing: [{ identifier: "z-image", credits: 2 }],
803
803
  featured: true,
804
804
  },
805
805
 
@@ -819,7 +819,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
819
819
  useCases: ["stylized", "expressive", "general"],
820
820
  features: ["reference-image"],
821
821
  aspectRatios: GROK_RATIOS,
822
- pricing: [{ identifier: "grok", credits: 1 }],
822
+ pricing: [{ identifier: "grok", credits: 10 }],
823
823
  },
824
824
  "grok-i2i": {
825
825
  id: "grok-i2i",
@@ -831,7 +831,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
831
831
  description: "Image-to-image with Grok.",
832
832
  useCases: ["edit", "stylized"],
833
833
  features: ["reference-image"],
834
- pricing: [{ identifier: "grok-i2i", credits: 1 }],
834
+ pricing: [{ identifier: "grok-i2i", credits: 10 }],
835
835
  },
836
836
  "grok-upscale": {
837
837
  id: "grok-upscale",
@@ -842,7 +842,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
842
842
  series: "Grok",
843
843
  description: "Upscale a previously-generated Grok image. Requires the prior task id.",
844
844
  useCases: ["upscale"],
845
- pricing: [{ identifier: "grok-upscale", credits: 3 }],
845
+ pricing: [{ identifier: "grok-upscale", credits: 25 }],
846
846
  },
847
847
 
848
848
  // ── Utilities ──
@@ -856,7 +856,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
856
856
  description: "Remove image background. Cheap utility.",
857
857
  useCases: ["background-removal", "utility"],
858
858
  features: ["reference-image"],
859
- pricing: [{ identifier: "recraft-remove-bg", credits: 1 }],
859
+ pricing: [{ identifier: "recraft-remove-bg", credits: 3 }],
860
860
  },
861
861
  "recraft-upscale": {
862
862
  id: "recraft-upscale",
@@ -868,7 +868,7 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
868
868
  description: "Light-weight image upscale (Recraft Crisp).",
869
869
  useCases: ["upscale", "utility"],
870
870
  features: ["reference-image"],
871
- pricing: [{ identifier: "recraft-upscale", credits: 1 }],
871
+ pricing: [{ identifier: "recraft-upscale", credits: 2 }],
872
872
  },
873
873
  "topaz-image-upscale": {
874
874
  id: "topaz-image-upscale",
@@ -882,9 +882,9 @@ const IMAGE_MODELS: Record<string, ModelCatalogEntry> = {
882
882
  features: ["reference-image"],
883
883
  resolutions: ["2K", "4K", "8K"],
884
884
  pricing: [
885
- { identifier: "topaz-image-upscale", credits: 3, note: "2K default" },
886
- { identifier: "topaz-image-upscale:4K", credits: 5, note: "4K" },
887
- { identifier: "topaz-image-upscale:8K", credits: 10, note: "8K" },
885
+ { identifier: "topaz-image-upscale", credits: 25, note: "2K default" },
886
+ { identifier: "topaz-image-upscale:4K", credits: 50, note: "4K" },
887
+ { identifier: "topaz-image-upscale:8K", credits: 100, note: "8K" },
888
888
  ],
889
889
  },
890
890
  }
@@ -905,7 +905,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
905
905
  useCases: ["realistic", "motion", "narrative"],
906
906
  features: ["end-frame"],
907
907
  durations: [5],
908
- pricing: [{ identifier: "minimax", credits: 15, note: "5s, 1080p" }],
908
+ pricing: [{ identifier: "minimax", credits: 143, note: "5s, 1080p" }],
909
909
  },
910
910
  "hailuo-2.3-pro": {
911
911
  id: "hailuo-2.3-pro",
@@ -920,9 +920,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
920
920
  durations: [6, 10],
921
921
  resolutions: ["768P", "1080P"],
922
922
  pricing: [
923
- { identifier: "hailuo-2.3-pro", credits: 20, note: "10s default" },
924
- { identifier: "hailuo-2.3-pro:6s", credits: 13, note: "6s" },
925
- { identifier: "hailuo-2.3-pro:10s", credits: 20, note: "10s" },
923
+ { identifier: "hailuo-2.3-pro", credits: 200, note: "10s default" },
924
+ { identifier: "hailuo-2.3-pro:6s", credits: 130, note: "6s" },
925
+ { identifier: "hailuo-2.3-pro:10s", credits: 200, note: "10s" },
926
926
  ],
927
927
  },
928
928
  "hailuo-2.3": {
@@ -938,9 +938,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
938
938
  useCases: ["realistic", "cheap"],
939
939
  durations: [6, 10],
940
940
  pricing: [
941
- { identifier: "hailuo-2.3", credits: 8, note: "6s default" },
942
- { identifier: "hailuo-2.3:6s", credits: 8, note: "6s" },
943
- { identifier: "hailuo-2.3:10s", credits: 13, note: "10s" },
941
+ { identifier: "hailuo-2.3", credits: 75, note: "6s default" },
942
+ { identifier: "hailuo-2.3:6s", credits: 80, note: "6s" },
943
+ { identifier: "hailuo-2.3:10s", credits: 130, note: "10s" },
944
944
  ],
945
945
  },
946
946
  "hailuo-standard": {
@@ -956,9 +956,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
956
956
  durations: [6, 10],
957
957
  resolutions: ["512P", "768P"],
958
958
  pricing: [
959
- { identifier: "hailuo-standard", credits: 8, note: "6s default" },
960
- { identifier: "hailuo-standard:6s", credits: 8, note: "6s" },
961
- { identifier: "hailuo-standard:10s", credits: 13, note: "10s" },
959
+ { identifier: "hailuo-standard", credits: 75, note: "6s default" },
960
+ { identifier: "hailuo-standard:6s", credits: 80, note: "6s" },
961
+ { identifier: "hailuo-standard:10s", credits: 130, note: "10s" },
962
962
  ],
963
963
  },
964
964
 
@@ -979,8 +979,8 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
979
979
  // KIE's /api/v1/veo/get-4k-video endpoint (worker handleImageToVideo / handleTextToVideo).
980
980
  resolutions: ["720p", "1080p", "4k"],
981
981
  pricing: [
982
- { identifier: "veo3", credits: 63, note: "4/6/8s with audio (flat per-generation)" },
983
- { identifier: "veo3:4k", credits: 93, note: "4K (base 1080p → get-4k-video)" },
982
+ { identifier: "veo3", credits: 1000, note: "4/6/8s with audio (flat per-generation)" },
983
+ { identifier: "veo3:4k", credits: 930, note: "4K (base 1080p → get-4k-video)" },
984
984
  ],
985
985
  featured: true,
986
986
  },
@@ -998,9 +998,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
998
998
  aspectRatios: VIDEO_RATIOS_HV,
999
999
  resolutions: ["720p", "1080p", "4k"],
1000
1000
  pricing: [
1001
- { identifier: "veo3.1", credits: 15, note: "4/6/8s with audio @ 720p (flat)" },
1002
- { identifier: "veo3.1:1080p", credits: 17, note: "4/6/8s with audio @ 1080p (flat)" },
1003
- { identifier: "veo3.1:4k", credits: 45, note: "4K (base 1080p → get-4k-video)" },
1001
+ { identifier: "veo3.1", credits: 150, note: "4/6/8s with audio @ 720p (flat)" },
1002
+ { identifier: "veo3.1:1080p", credits: 170, note: "4/6/8s with audio @ 1080p (flat)" },
1003
+ { identifier: "veo3.1:4k", credits: 450, note: "4K (base 1080p → get-4k-video)" },
1004
1004
  ],
1005
1005
  featured: true,
1006
1006
  },
@@ -1018,9 +1018,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1018
1018
  aspectRatios: VIDEO_RATIOS_HV,
1019
1019
  resolutions: ["720p", "1080p", "4k"],
1020
1020
  pricing: [
1021
- { identifier: "veo3_lite", credits: 8, note: "4/6/8s with audio @ 720p (flat)" },
1022
- { identifier: "veo3_lite:1080p", credits: 9, note: "4/6/8s with audio @ 1080p (flat)" },
1023
- { identifier: "veo3_lite:4k", credits: 38, note: "4K (base 1080p → get-4k-video)" },
1021
+ { identifier: "veo3_lite", credits: 75, note: "4/6/8s with audio @ 720p (flat)" },
1022
+ { identifier: "veo3_lite:1080p", credits: 90, note: "4/6/8s with audio @ 1080p (flat)" },
1023
+ { identifier: "veo3_lite:4k", credits: 380, note: "4K (base 1080p → get-4k-video)" },
1024
1024
  ],
1025
1025
  featured: false,
1026
1026
  },
@@ -1038,17 +1038,17 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1038
1038
  resolutions: ["720p", "1080p", "4k"],
1039
1039
  durations: [4, 6, 8, 10],
1040
1040
  pricing: [
1041
- { identifier: "gemini-omni-video", credits: 23, note: "default — 720p/1080p 4s" },
1042
- { identifier: "gemini-omni-video:4", credits: 23, note: "720p/1080p 4s" },
1043
- { identifier: "gemini-omni-video:6", credits: 30, note: "720p/1080p 6s" },
1044
- { identifier: "gemini-omni-video:8", credits: 38, note: "720p/1080p 8s" },
1045
- { identifier: "gemini-omni-video:10", credits: 45, note: "720p/1080p 10s" },
1046
- { identifier: "gemini-omni-video:4k:4", credits: 53, note: "4K 4s" },
1047
- { identifier: "gemini-omni-video:4k:6", credits: 60, note: "4K 6s" },
1048
- { identifier: "gemini-omni-video:4k:8", credits: 68, note: "4K 8s" },
1049
- { identifier: "gemini-omni-video:4k:10", credits: 75, note: "4K 10s" },
1050
- { identifier: "gemini-omni-video:vref", credits: 60, note: "video-edit 720p/1080p" },
1051
- { identifier: "gemini-omni-video:4k:vref", credits: 90, note: "video-edit 4K" },
1041
+ { identifier: "gemini-omni-video", credits: 315, note: "default — 720p/1080p 4s" },
1042
+ { identifier: "gemini-omni-video:4", credits: 230, note: "720p/1080p 4s" },
1043
+ { identifier: "gemini-omni-video:6", credits: 300, note: "720p/1080p 6s" },
1044
+ { identifier: "gemini-omni-video:8", credits: 380, note: "720p/1080p 8s" },
1045
+ { identifier: "gemini-omni-video:10", credits: 450, note: "720p/1080p 10s" },
1046
+ { identifier: "gemini-omni-video:4k:4", credits: 530, note: "4K 4s" },
1047
+ { identifier: "gemini-omni-video:4k:6", credits: 600, note: "4K 6s" },
1048
+ { identifier: "gemini-omni-video:4k:8", credits: 680, note: "4K 8s" },
1049
+ { identifier: "gemini-omni-video:4k:10", credits: 750, note: "4K 10s" },
1050
+ { identifier: "gemini-omni-video:vref", credits: 600, note: "video-edit 720p/1080p" },
1051
+ { identifier: "gemini-omni-video:4k:vref", credits: 900, note: "video-edit 4K" },
1052
1052
  ],
1053
1053
  },
1054
1054
 
@@ -1066,11 +1066,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1066
1066
  aspectRatios: VIDEO_RATIOS_HVS,
1067
1067
  durations: [5, 10],
1068
1068
  pricing: [
1069
- { identifier: "kling", credits: 28, note: "10s no audio default" },
1070
- { identifier: "kling:5s", credits: 14, note: "5s no audio" },
1071
- { identifier: "kling:10s", credits: 28, note: "10s no audio" },
1072
- { identifier: "kling:5s:audio", credits: 28, note: "5s with audio" },
1073
- { identifier: "kling:10s:audio", credits: 55, note: "10s with audio" },
1069
+ { identifier: "kling", credits: 280, note: "10s no audio default" },
1070
+ { identifier: "kling:5s", credits: 138, note: "5s no audio" },
1071
+ { identifier: "kling:10s", credits: 275, note: "10s no audio" },
1072
+ { identifier: "kling:5s:audio", credits: 275, note: "5s with audio" },
1073
+ { identifier: "kling:10s:audio", credits: 550, note: "10s with audio" },
1074
1074
  ],
1075
1075
  },
1076
1076
  "kling-turbo": {
@@ -1085,9 +1085,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1085
1085
  features: ["end-frame"],
1086
1086
  durations: [5, 10],
1087
1087
  pricing: [
1088
- { identifier: "kling-turbo", credits: 11, note: "5s default" },
1089
- { identifier: "kling-turbo:5s", credits: 11 },
1090
- { identifier: "kling-turbo:10s", credits: 21 },
1088
+ { identifier: "kling-turbo", credits: 125, note: "5s default" },
1089
+ { identifier: "kling-turbo:5s", credits: 110 },
1090
+ { identifier: "kling-turbo:10s", credits: 210 },
1091
1091
  ],
1092
1092
  },
1093
1093
  "kling-3.0": {
@@ -1103,13 +1103,13 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1103
1103
  durations: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1104
1104
  resolutions: ["720P", "1080P"],
1105
1105
  pricing: [
1106
- { identifier: "kling-3.0", credits: 50, note: "5s 1080p with audio" },
1107
- { identifier: "kling-3.0:5s", credits: 34, note: "5s 1080p no audio" },
1108
- { identifier: "kling-3.0:10s", credits: 68, note: "10s 1080p no audio" },
1109
- { identifier: "kling-3.0:15s", credits: 102, note: "15s 1080p no audio" },
1110
- { identifier: "kling-3.0:5s:audio", credits: 50, note: "5s 1080p with audio" },
1111
- { identifier: "kling-3.0:10s:audio", credits: 100, note: "10s 1080p with audio" },
1112
- { identifier: "kling-3.0:15s:audio", credits: 150, note: "15s 1080p with audio" },
1106
+ { identifier: "kling-3.0", credits: 500, note: "5s 1080p with audio" },
1107
+ { identifier: "kling-3.0:5s", credits: 270, note: "5s 1080p no audio" },
1108
+ { identifier: "kling-3.0:10s", credits: 680, note: "10s 1080p no audio" },
1109
+ { identifier: "kling-3.0:15s", credits: 1020, note: "15s 1080p no audio" },
1110
+ { identifier: "kling-3.0:5s:audio", credits: 338, note: "5s 1080p with audio" },
1111
+ { identifier: "kling-3.0:10s:audio", credits: 1000, note: "10s 1080p with audio" },
1112
+ { identifier: "kling-3.0:15s:audio", credits: 1500, note: "15s 1080p with audio" },
1113
1113
  ],
1114
1114
  featured: true,
1115
1115
  },
@@ -1124,9 +1124,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1124
1124
  useCases: ["cinematic", "premium"],
1125
1125
  durations: [5, 10],
1126
1126
  pricing: [
1127
- { identifier: "kling-master", credits: 40, note: "5s default" },
1128
- { identifier: "kling-master:5s", credits: 40 },
1129
- { identifier: "kling-master:10s", credits: 80 },
1127
+ { identifier: "kling-master", credits: 400, note: "5s default" },
1128
+ { identifier: "kling-master:5s", credits: 400 },
1129
+ { identifier: "kling-master:10s", credits: 800 },
1130
1130
  ],
1131
1131
  },
1132
1132
  "kling-3-omni": {
@@ -1143,10 +1143,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1143
1143
  resolutions: ["720p", "1080p"],
1144
1144
  aspectRatios: VIDEO_RATIOS_HVS,
1145
1145
  pricing: [
1146
- { identifier: "kling-3-omni", credits: 25, note: "5s 720p default" },
1147
- { identifier: "kling-3-omni:5s", credits: 25 },
1148
- { identifier: "kling-3-omni:10s", credits: 50 },
1149
- { identifier: "kling-3-omni:15s", credits: 75 },
1146
+ { identifier: "kling-3-omni", credits: 250, note: "5s 720p default" },
1147
+ { identifier: "kling-3-omni:5s", credits: 250 },
1148
+ { identifier: "kling-3-omni:10s", credits: 500 },
1149
+ { identifier: "kling-3-omni:15s", credits: 750 },
1150
1150
  ],
1151
1151
  },
1152
1152
 
@@ -1164,10 +1164,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1164
1164
  durations: [6, 10],
1165
1165
  resolutions: ["480p", "720p"],
1166
1166
  pricing: [
1167
- { identifier: "grok-i2v", credits: 5, note: "6s default" },
1168
- { identifier: "grok-i2v:6s", credits: 5 },
1169
- { identifier: "grok-i2v:10s", credits: 8 },
1170
- { identifier: "grok-i2v:15s", credits: 10 },
1167
+ { identifier: "grok-i2v", credits: 150, note: "6s default" },
1168
+ { identifier: "grok-i2v:6s", credits: 50 },
1169
+ { identifier: "grok-i2v:10s", credits: 80 },
1170
+ { identifier: "grok-i2v:15s", credits: 100 },
1171
1171
  ],
1172
1172
  },
1173
1173
  // xAI Grok Imagine Video 1.5 — KIE image-to-video (image required). True
@@ -1192,11 +1192,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1192
1192
  durations: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1193
1193
  resolutions: ["480p", "720p"],
1194
1194
  pricing: [
1195
- { identifier: "grok-imagine-video-1.5", credits: 30, note: "default 8s 480p — see :Ns:res variants" },
1196
- { identifier: "grok-imagine-video-1.5:8s:480p", credits: 30, note: "8s 480p" },
1197
- { identifier: "grok-imagine-video-1.5:8s:720p", credits: 51, note: "8s 720p" },
1198
- { identifier: "grok-imagine-video-1.5:15s:480p", credits: 55, note: "15s 480p (max)" },
1199
- { identifier: "grok-imagine-video-1.5:15s:720p", credits: 95, note: "15s 720p (max)" },
1195
+ { identifier: "grok-imagine-video-1.5", credits: 295, note: "default 8s 480p — see :Ns:res variants" },
1196
+ { identifier: "grok-imagine-video-1.5:8s:480p", credits: 300, note: "8s 480p" },
1197
+ { identifier: "grok-imagine-video-1.5:8s:720p", credits: 510, note: "8s 720p" },
1198
+ { identifier: "grok-imagine-video-1.5:15s:480p", credits: 550, note: "15s 480p (max)" },
1199
+ { identifier: "grok-imagine-video-1.5:15s:720p", credits: 950, note: "15s 720p (max)" },
1200
1200
  ],
1201
1201
  },
1202
1202
 
@@ -1214,10 +1214,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1214
1214
  durations: [4, 8, 12],
1215
1215
  resolutions: ["480p", "720p", "1080p"],
1216
1216
  pricing: [
1217
- { identifier: "seedance", credits: 7, note: "8s default" },
1218
- { identifier: "seedance:4s", credits: 4 },
1219
- { identifier: "seedance:8s", credits: 7 },
1220
- { identifier: "seedance:12s", credits: 15 },
1217
+ { identifier: "seedance", credits: 250, note: "8s default" },
1218
+ { identifier: "seedance:4s", credits: 40 },
1219
+ { identifier: "seedance:8s", credits: 70 },
1220
+ { identifier: "seedance:12s", credits: 150 },
1221
1221
  ],
1222
1222
  mcpHidden: true,
1223
1223
  },
@@ -1235,15 +1235,15 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1235
1235
  durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1236
1236
  resolutions: ["480p", "720p", "1080p", "4k"],
1237
1237
  pricing: [
1238
- { identifier: "seedance-2", credits: 38, note: "default — see :NsR variants for exact" },
1239
- { identifier: "seedance-2:8s:480p", credits: 38, note: "8s 480p" },
1240
- { identifier: "seedance-2:8s:720p", credits: 82, note: "8s 720p" },
1241
- { identifier: "seedance-2:8s:1080p", credits: 204, note: "8s 1080p" },
1242
- { identifier: "seedance-2:8s:480p-ref", credits: 23, note: "8s 480p with reference" },
1243
- { identifier: "seedance-2:8s:720p-ref", credits: 50, note: "8s 720p with reference" },
1244
- { identifier: "seedance-2:8s:1080p-ref", credits: 124, note: "8s 1080p with reference" },
1245
- { identifier: "seedance-2:8s:4k", credits: 416, note: "8s 4k" },
1246
- { identifier: "seedance-2:8s:4k-ref", credits: 256, note: "8s 4k with reference" },
1238
+ { identifier: "seedance-2", credits: 380, note: "default — see :NsR variants for exact" },
1239
+ { identifier: "seedance-2:8s:480p", credits: 380, note: "8s 480p" },
1240
+ { identifier: "seedance-2:8s:720p", credits: 820, note: "8s 720p" },
1241
+ { identifier: "seedance-2:8s:1080p", credits: 2040, note: "8s 1080p" },
1242
+ { identifier: "seedance-2:8s:480p-ref", credits: 230, note: "8s 480p with reference" },
1243
+ { identifier: "seedance-2:8s:720p-ref", credits: 500, note: "8s 720p with reference" },
1244
+ { identifier: "seedance-2:8s:1080p-ref", credits: 1240, note: "8s 1080p with reference" },
1245
+ { identifier: "seedance-2:8s:4k", credits: 4160, note: "8s 4k" },
1246
+ { identifier: "seedance-2:8s:4k-ref", credits: 2560, note: "8s 4k with reference" },
1247
1247
  ],
1248
1248
  },
1249
1249
  "seedance-2-fast": {
@@ -1260,11 +1260,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1260
1260
  durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1261
1261
  resolutions: ["480p", "720p"],
1262
1262
  pricing: [
1263
- { identifier: "seedance-2-fast", credits: 31, note: "default — see :NsR variants" },
1264
- { identifier: "seedance-2-fast:8s:480p", credits: 31 },
1265
- { identifier: "seedance-2-fast:8s:720p", credits: 66 },
1266
- { identifier: "seedance-2-fast:8s:480p-ref", credits: 18 },
1267
- { identifier: "seedance-2-fast:8s:720p-ref", credits: 40 },
1263
+ { identifier: "seedance-2-fast", credits: 310, note: "default — see :NsR variants" },
1264
+ { identifier: "seedance-2-fast:8s:480p", credits: 310 },
1265
+ { identifier: "seedance-2-fast:8s:720p", credits: 660 },
1266
+ { identifier: "seedance-2-fast:8s:480p-ref", credits: 180 },
1267
+ { identifier: "seedance-2-fast:8s:720p-ref", credits: 400 },
1268
1268
  ],
1269
1269
  },
1270
1270
  "seedance-2-mini": {
@@ -1281,11 +1281,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1281
1281
  durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1282
1282
  resolutions: ["480p", "720p"],
1283
1283
  pricing: [
1284
- { identifier: "seedance-2-mini", credits: 19, note: "default — see :NsR variants" },
1285
- { identifier: "seedance-2-mini:8s:480p", credits: 19 },
1286
- { identifier: "seedance-2-mini:8s:720p", credits: 41 },
1287
- { identifier: "seedance-2-mini:8s:480p-ref", credits: 12 },
1288
- { identifier: "seedance-2-mini:8s:720p-ref", credits: 25 },
1284
+ { identifier: "seedance-2-mini", credits: 190, note: "default — see :NsR variants" },
1285
+ { identifier: "seedance-2-mini:8s:480p", credits: 190 },
1286
+ { identifier: "seedance-2-mini:8s:720p", credits: 410 },
1287
+ { identifier: "seedance-2-mini:8s:480p-ref", credits: 120 },
1288
+ { identifier: "seedance-2-mini:8s:720p-ref", credits: 250 },
1289
1289
  ],
1290
1290
  },
1291
1291
 
@@ -1302,10 +1302,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1302
1302
  durations: [5, 10, 15],
1303
1303
  resolutions: ["720p", "1080p"],
1304
1304
  pricing: [
1305
- { identifier: "wan-i2v", credits: 18, note: "5s 720p default" },
1306
- { identifier: "wan-i2v:5s", credits: 18 },
1307
- { identifier: "wan-i2v:10s", credits: 35 },
1308
- { identifier: "wan-i2v:15s", credits: 53 },
1305
+ { identifier: "wan-i2v", credits: 175, note: "5s 720p default" },
1306
+ { identifier: "wan-i2v:5s", credits: 180 },
1307
+ { identifier: "wan-i2v:10s", credits: 350 },
1308
+ { identifier: "wan-i2v:15s", credits: 530 },
1309
1309
  ],
1310
1310
  },
1311
1311
  "wan-turbo": {
@@ -1323,8 +1323,8 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1323
1323
  // Different KIE endpoints (i2v vs t2v) → different costs under
1324
1324
  // composite ids. Route picks endpoint based on whether image was supplied.
1325
1325
  pricing: [
1326
- { identifier: "wan-turbo", credits: 10, note: "i2v 5s 480p" },
1327
- { identifier: "wan-turbo-t2v", credits: 20, note: "t2v 5s 720p" },
1326
+ { identifier: "wan-turbo", credits: 100, note: "i2v 5s 480p" },
1327
+ { identifier: "wan-turbo-t2v", credits: 200, note: "t2v 5s 720p" },
1328
1328
  ],
1329
1329
  },
1330
1330
  "wan": {
@@ -1341,8 +1341,8 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1341
1341
  durations: [5],
1342
1342
  resolutions: ["720p", "1080p"],
1343
1343
  pricing: [
1344
- { identifier: "wan", credits: 18, note: "v2v 5s 720p" },
1345
- { identifier: "wan-t2v", credits: 27, note: "t2v 5s 1080p" },
1344
+ { identifier: "wan", credits: 175, note: "v2v 5s 720p" },
1345
+ { identifier: "wan-t2v", credits: 270, note: "t2v 5s 1080p" },
1346
1346
  ],
1347
1347
  },
1348
1348
  "wan-flash": {
@@ -1354,7 +1354,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1354
1354
  series: "Wan",
1355
1355
  description: "Faster Wan V2V variant.",
1356
1356
  useCases: ["v2v", "fast"],
1357
- pricing: [{ identifier: "wan-flash", credits: 13 }],
1357
+ pricing: [{ identifier: "wan-flash", credits: 100 }],
1358
1358
  },
1359
1359
  "wan-videoedit": {
1360
1360
  id: "wan-videoedit",
@@ -1366,7 +1366,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1366
1366
  description: "Guided video editing with optional reference image, audio control, and prompt expansion.",
1367
1367
  useCases: ["v2v", "restyle", "reference"],
1368
1368
  resolutions: ["720p", "1080p"],
1369
- pricing: [{ identifier: "wan-videoedit", credits: 32 }],
1369
+ pricing: [{ identifier: "wan-videoedit", credits: 320 }],
1370
1370
  },
1371
1371
  // ── Wan 2.7 ──
1372
1372
  "wan-2.7": {
@@ -1382,9 +1382,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1382
1382
  aspectRatios: WAN_27_IMAGE_RATIOS,
1383
1383
  resolutions: ["1K", "2K", "4K"],
1384
1384
  pricing: [
1385
- { identifier: "wan-2.7", credits: 2, note: "1K base" },
1386
- { identifier: "wan-2.7:2K", credits: 4, note: "2K" },
1387
- { identifier: "wan-2.7:4K", credits: 8, note: "4K" },
1385
+ { identifier: "wan-2.7", credits: 20, note: "1K base" },
1386
+ { identifier: "wan-2.7:2K", credits: 40, note: "2K" },
1387
+ { identifier: "wan-2.7:4K", credits: 80, note: "4K" },
1388
1388
  ],
1389
1389
  },
1390
1390
  "wan-2.7-pro": {
@@ -1399,9 +1399,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1399
1399
  aspectRatios: WAN_27_IMAGE_RATIOS,
1400
1400
  resolutions: ["1K", "2K", "4K"],
1401
1401
  pricing: [
1402
- { identifier: "wan-2.7-pro", credits: 3, note: "1K base" },
1403
- { identifier: "wan-2.7-pro:2K", credits: 6, note: "2K" },
1404
- { identifier: "wan-2.7-pro:4K", credits: 12, note: "4K" },
1402
+ { identifier: "wan-2.7-pro", credits: 120, note: "1K base" },
1403
+ { identifier: "wan-2.7-pro:2K", credits: 60, note: "2K" },
1404
+ { identifier: "wan-2.7-pro:4K", credits: 120, note: "4K" },
1405
1405
  ],
1406
1406
  },
1407
1407
  "wan-2.7-i2v": {
@@ -1417,7 +1417,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1417
1417
  resolutions: ["720p", "1080p"],
1418
1418
  features: ["end-frame"],
1419
1419
  pricing: [
1420
- { identifier: "wan-2.7-i2v", credits: 19, note: "5s 720p default" },
1420
+ { identifier: "wan-2.7-i2v", credits: 188, note: "5s 720p default" },
1421
1421
  ],
1422
1422
  },
1423
1423
  "wan-2.7-t2v": {
@@ -1433,7 +1433,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1433
1433
  durations: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1434
1434
  resolutions: ["720p", "1080p"],
1435
1435
  pricing: [
1436
- { identifier: "wan-2.7-t2v", credits: 19, note: "5s 720p default" },
1436
+ { identifier: "wan-2.7-t2v", credits: 188, note: "5s 720p default" },
1437
1437
  ],
1438
1438
  },
1439
1439
  // ── HappyHorse (1.1 — ids kept version-less; repointed in place when KIE
@@ -1451,7 +1451,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1451
1451
  durations: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1452
1452
  resolutions: ["720p", "1080p"],
1453
1453
  pricing: [
1454
- { identifier: "happyhorse", credits: 29, note: "5s 720p default — per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" },
1454
+ { identifier: "happyhorse", credits: 282, note: "5s 720p default — per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" },
1455
1455
  ],
1456
1456
  },
1457
1457
  "happyhorse-i2v": {
@@ -1466,7 +1466,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1466
1466
  durations: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1467
1467
  resolutions: ["720p", "1080p"],
1468
1468
  pricing: [
1469
- { identifier: "happyhorse-i2v", credits: 29, note: "5s 720p default — per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" },
1469
+ { identifier: "happyhorse-i2v", credits: 282, note: "5s 720p default — per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" },
1470
1470
  ],
1471
1471
  },
1472
1472
  "happyhorse-ref2v": {
@@ -1483,7 +1483,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1483
1483
  resolutions: ["720p", "1080p"],
1484
1484
  features: ["reference-image"],
1485
1485
  pricing: [
1486
- { identifier: "happyhorse-ref2v", credits: 29, note: "5s 720p default — per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" },
1486
+ { identifier: "happyhorse-ref2v", credits: 282, note: "5s 720p default — per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" },
1487
1487
  ],
1488
1488
  },
1489
1489
  "happyhorse-edit": {
@@ -1497,7 +1497,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1497
1497
  useCases: ["v2v", "restyle"],
1498
1498
  resolutions: ["720p", "1080p"],
1499
1499
  pricing: [
1500
- { identifier: "happyhorse-edit", credits: 35, note: "720p default (5s-equivalent flat rate)" },
1500
+ { identifier: "happyhorse-edit", credits: 350, note: "720p default (5s-equivalent flat rate)" },
1501
1501
  ],
1502
1502
  },
1503
1503
  // ── Bytedance video lite/pro ──
@@ -1514,7 +1514,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1514
1514
  aspectRatios: VIDEO_RATIOS_HVS,
1515
1515
  durations: [5, 10],
1516
1516
  resolutions: ["480p", "720p", "1080p"],
1517
- pricing: [{ identifier: "bytedance-lite", credits: 6 }],
1517
+ pricing: [{ identifier: "bytedance-lite", credits: 57 }],
1518
1518
  },
1519
1519
  "bytedance-pro": {
1520
1520
  id: "bytedance-pro",
@@ -1528,7 +1528,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1528
1528
  aspectRatios: VIDEO_RATIOS_HVS,
1529
1529
  durations: [5, 10],
1530
1530
  resolutions: ["480p", "720p", "1080p"],
1531
- pricing: [{ identifier: "bytedance-pro", credits: 18 }],
1531
+ pricing: [{ identifier: "bytedance-pro", credits: 175 }],
1532
1532
  },
1533
1533
  "bytedance-pro-fast": {
1534
1534
  id: "bytedance-pro-fast",
@@ -1541,7 +1541,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1541
1541
  useCases: ["fast", "motion"],
1542
1542
  durations: [5, 10],
1543
1543
  resolutions: ["720p", "1080p"],
1544
- pricing: [{ identifier: "bytedance-pro-fast", credits: 9 }],
1544
+ pricing: [{ identifier: "bytedance-pro-fast", credits: 90 }],
1545
1545
  },
1546
1546
 
1547
1547
  // ── OpenAI Sora ──
@@ -1562,7 +1562,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1562
1562
  useCases: ["motion", "narrative"],
1563
1563
  durations: [5, 10],
1564
1564
  resolutions: ["720p", "1080p"],
1565
- pricing: [{ identifier: "runway-kie", credits: 3, note: "5s 720p" }],
1565
+ pricing: [{ identifier: "runway-kie", credits: 30, note: "5s 720p" }],
1566
1566
  },
1567
1567
  "runway-aleph": {
1568
1568
  id: "runway-aleph",
@@ -1573,7 +1573,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1573
1573
  series: "Runway",
1574
1574
  description: "Runway Aleph — video-to-video conversion.",
1575
1575
  useCases: ["v2v", "restyle"],
1576
- pricing: [{ identifier: "runway-aleph", credits: 35, note: "5s clip" }],
1576
+ pricing: [{ identifier: "runway-aleph", credits: 350, note: "5s clip" }],
1577
1577
  },
1578
1578
 
1579
1579
  // ── Extend / Upscale ──
@@ -1587,8 +1587,8 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1587
1587
  description: "Extend an existing VEO 3.1 clip by another segment.",
1588
1588
  useCases: ["extend"],
1589
1589
  pricing: [
1590
- { identifier: "veo-extend", credits: 19, note: "VEO 3.1 Fast default" },
1591
- { identifier: "veo-extend:quality", credits: 79, note: "VEO 3.1 Quality" },
1590
+ { identifier: "veo-extend", credits: 190, note: "VEO 3.1 Fast default" },
1591
+ { identifier: "veo-extend:quality", credits: 790, note: "VEO 3.1 Quality" },
1592
1592
  ],
1593
1593
  },
1594
1594
  "runway-extend": {
@@ -1600,7 +1600,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1600
1600
  series: "Runway",
1601
1601
  description: "Extend a Runway video by another clip.",
1602
1602
  useCases: ["extend"],
1603
- pricing: [{ identifier: "runway-extend", credits: 32 }],
1603
+ pricing: [{ identifier: "runway-extend", credits: 320 }],
1604
1604
  },
1605
1605
  "seedance-2-extend": {
1606
1606
  id: "seedance-2-extend",
@@ -1614,10 +1614,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1614
1614
  durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1615
1615
  resolutions: ["480p", "720p", "1080p"],
1616
1616
  pricing: [
1617
- { identifier: "seedance-2-extend", credits: 53, note: "default 8s 720p (ref-mode 50 + 3 stitch) — see :NsR variants" },
1618
- { identifier: "seedance-2-extend:8s:480p", credits: 26, note: "8s 480p (23+3)" },
1619
- { identifier: "seedance-2-extend:8s:720p", credits: 53, note: "8s 720p (50+3)" },
1620
- { identifier: "seedance-2-extend:8s:1080p", credits: 78, note: "8s 1080p (75+3)" },
1617
+ { identifier: "seedance-2-extend", credits: 530, note: "default 8s 720p (ref-mode 50 + 3 stitch) — see :NsR variants" },
1618
+ { identifier: "seedance-2-extend:8s:480p", credits: 260, note: "8s 480p (23+3)" },
1619
+ { identifier: "seedance-2-extend:8s:720p", credits: 530, note: "8s 720p (50+3)" },
1620
+ { identifier: "seedance-2-extend:8s:1080p", credits: 780, note: "8s 1080p (75+3)" },
1621
1621
  ],
1622
1622
  },
1623
1623
  "veo-1080p": {
@@ -1629,7 +1629,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1629
1629
  series: "VEO",
1630
1630
  description: "Upscale VEO output to 1080p.",
1631
1631
  useCases: ["upscale"],
1632
- pricing: [{ identifier: "veo-1080p", credits: 2 }],
1632
+ pricing: [{ identifier: "veo-1080p", credits: 20 }],
1633
1633
  },
1634
1634
  "veo-4k": {
1635
1635
  id: "veo-4k",
@@ -1640,7 +1640,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1640
1640
  series: "VEO",
1641
1641
  description: "Upscale VEO output to 4K.",
1642
1642
  useCases: ["upscale", "high-res"],
1643
- pricing: [{ identifier: "veo-4k", credits: 38 }],
1643
+ pricing: [{ identifier: "veo-4k", credits: 380 }],
1644
1644
  },
1645
1645
  "topaz-video": {
1646
1646
  id: "topaz-video",
@@ -1651,7 +1651,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1651
1651
  series: "Topaz",
1652
1652
  description: "High-quality video upscale and enhancement.",
1653
1653
  useCases: ["upscale", "premium"],
1654
- pricing: [{ identifier: "topaz-video", credits: 19, note: "~5s clip" }],
1654
+ pricing: [{ identifier: "topaz-video", credits: 190, note: "~5s clip" }],
1655
1655
  },
1656
1656
 
1657
1657
  // ── Motion transfer ──
@@ -1667,12 +1667,12 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1667
1667
  durations: [5, 10, 15, 30],
1668
1668
  resolutions: ["720p", "1080p"],
1669
1669
  pricing: [
1670
- { identifier: "motion-transfer", credits: 15, note: "10s 720p default" },
1671
- { identifier: "motion-transfer:5s", credits: 8 },
1672
- { identifier: "motion-transfer:10s", credits: 15 },
1673
- { identifier: "motion-transfer:15s", credits: 23 },
1674
- { identifier: "motion-transfer:30s", credits: 45 },
1675
- { identifier: "motion-transfer:1080p:10s", credits: 23 },
1670
+ { identifier: "motion-transfer", credits: 150, note: "10s 720p default" },
1671
+ { identifier: "motion-transfer:5s", credits: 80 },
1672
+ { identifier: "motion-transfer:10s", credits: 150 },
1673
+ { identifier: "motion-transfer:15s", credits: 230 },
1674
+ { identifier: "motion-transfer:30s", credits: 450 },
1675
+ { identifier: "motion-transfer:1080p:10s", credits: 230 },
1676
1676
  ],
1677
1677
  },
1678
1678
  "kling-3.0-motion": {
@@ -1687,10 +1687,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1687
1687
  durations: [5, 10, 15, 30],
1688
1688
  resolutions: ["720p", "1080p"],
1689
1689
  pricing: [
1690
- { identifier: "kling-3.0-motion", credits: 30, note: "10s 720p default" },
1691
- { identifier: "kling-3.0-motion:5s", credits: 15 },
1692
- { identifier: "kling-3.0-motion:10s", credits: 30 },
1693
- { identifier: "kling-3.0-motion:1080p:10s", credits: 50 },
1690
+ { identifier: "kling-3.0-motion", credits: 300, note: "10s 720p default" },
1691
+ { identifier: "kling-3.0-motion:5s", credits: 150 },
1692
+ { identifier: "kling-3.0-motion:10s", credits: 300 },
1693
+ { identifier: "kling-3.0-motion:1080p:10s", credits: 500 },
1694
1694
  ],
1695
1695
  },
1696
1696
 
@@ -1704,7 +1704,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1704
1704
  series: "Kling",
1705
1705
  description: "Lip-sync a still portrait to driving audio. Standard quality.",
1706
1706
  useCases: ["lip-sync", "talking-head"],
1707
- pricing: [{ identifier: "kling-avatar", credits: 28, note: "~14s default" }],
1707
+ pricing: [{ identifier: "kling-avatar", credits: 280, note: "~14s default" }],
1708
1708
  },
1709
1709
  "kling-avatar-pro": {
1710
1710
  id: "kling-avatar-pro",
@@ -1715,7 +1715,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1715
1715
  series: "Kling",
1716
1716
  description: "Premium lip-sync — better mouth shape and timing.",
1717
1717
  useCases: ["lip-sync", "talking-head", "premium"],
1718
- pricing: [{ identifier: "kling-avatar-pro", credits: 56 }],
1718
+ pricing: [{ identifier: "kling-avatar-pro", credits: 560 }],
1719
1719
  },
1720
1720
  "infinitalk": {
1721
1721
  id: "infinitalk",
@@ -1728,9 +1728,9 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1728
1728
  useCases: ["lip-sync", "talking-head"],
1729
1729
  resolutions: ["480p", "720p"],
1730
1730
  pricing: [
1731
- { identifier: "infinitalk", credits: 42, note: "720p default" },
1732
- { identifier: "infinitalk:480p", credits: 11 },
1733
- { identifier: "infinitalk:720p", credits: 42 },
1731
+ { identifier: "infinitalk", credits: 420, note: "720p default" },
1732
+ { identifier: "infinitalk:480p", credits: 110 },
1733
+ { identifier: "infinitalk:720p", credits: 420 },
1734
1734
  ],
1735
1735
  },
1736
1736
  "omnihuman-1-5": {
@@ -1744,10 +1744,10 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1744
1744
  useCases: ["lip-sync", "talking-head", "premium"],
1745
1745
  resolutions: ["720p", "1080p"],
1746
1746
  pricing: [
1747
- { identifier: "omnihuman-1-5", credits: 405, note: "60s ceiling (no duration given)" },
1748
- { identifier: "omnihuman-1-5:15s", credits: 102 },
1749
- { identifier: "omnihuman-1-5:30s", credits: 203 },
1750
- { identifier: "omnihuman-1-5:60s", credits: 405 },
1747
+ { identifier: "omnihuman-1-5", credits: 4050, note: "60s ceiling (no duration given)" },
1748
+ { identifier: "omnihuman-1-5:15s", credits: 1020 },
1749
+ { identifier: "omnihuman-1-5:30s", credits: 2030 },
1750
+ { identifier: "omnihuman-1-5:60s", credits: 4050 },
1751
1751
  ],
1752
1752
  },
1753
1753
  "hailuo-avatar": {
@@ -1759,7 +1759,7 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1759
1759
  series: "Hailuo",
1760
1760
  description: "MiniMax avatar lip-sync.",
1761
1761
  useCases: ["lip-sync", "talking-head"],
1762
- pricing: [{ identifier: "hailuo-avatar", credits: 19 }],
1762
+ pricing: [{ identifier: "hailuo-avatar", credits: 190 }],
1763
1763
  // Not wired in any provider / not in LIP_SYNC_PROVIDERS — hide from MCP
1764
1764
  // list_models so the lip_sync tool can't advertise a model its route
1765
1765
  // rejects with a 400. Re-expose when the provider lands.
@@ -1775,12 +1775,12 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1775
1775
  description: "Dub existing footage — re-syncs lips to a new audio track. Video input, billed per second.",
1776
1776
  useCases: ["lip-sync", "dubbing", "video-to-video"],
1777
1777
  pricing: [
1778
- { identifier: "sync-lipsync-v3", credits: 2000, note: "5-min ceiling (no duration given)" },
1779
- { identifier: "sync-lipsync-v3:15s", credits: 100 },
1780
- { identifier: "sync-lipsync-v3:30s", credits: 200 },
1781
- { identifier: "sync-lipsync-v3:60s", credits: 400 },
1782
- { identifier: "sync-lipsync-v3:120s", credits: 800 },
1783
- { identifier: "sync-lipsync-v3:300s", credits: 2000, note: "5-min ceiling" },
1778
+ { identifier: "sync-lipsync-v3", credits: 20000, note: "5-min ceiling (no duration given)" },
1779
+ { identifier: "sync-lipsync-v3:15s", credits: 1000 },
1780
+ { identifier: "sync-lipsync-v3:30s", credits: 2000 },
1781
+ { identifier: "sync-lipsync-v3:60s", credits: 4000 },
1782
+ { identifier: "sync-lipsync-v3:120s", credits: 8000 },
1783
+ { identifier: "sync-lipsync-v3:300s", credits: 20000, note: "5-min ceiling" },
1784
1784
  ],
1785
1785
  },
1786
1786
  "volcengine-lipsync": {
@@ -1793,12 +1793,12 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1793
1793
  description: "Video-to-video AI dubbing — re-syncs lips to a new vocal track. Multi-speaker (scene detection + speaker ID) in basic mode. Video input, billed per second.",
1794
1794
  useCases: ["lip-sync", "dubbing", "video-to-video"],
1795
1795
  pricing: [
1796
- { identifier: "volcengine-lipsync", credits: 600, note: "5-min ceiling (no duration given)" },
1797
- { identifier: "volcengine-lipsync:15s", credits: 30 },
1798
- { identifier: "volcengine-lipsync:30s", credits: 60 },
1799
- { identifier: "volcengine-lipsync:60s", credits: 120 },
1800
- { identifier: "volcengine-lipsync:120s", credits: 240 },
1801
- { identifier: "volcengine-lipsync:300s", credits: 600, note: "5-min ceiling" },
1796
+ { identifier: "volcengine-lipsync", credits: 6000, note: "5-min ceiling (no duration given)" },
1797
+ { identifier: "volcengine-lipsync:15s", credits: 300 },
1798
+ { identifier: "volcengine-lipsync:30s", credits: 600 },
1799
+ { identifier: "volcengine-lipsync:60s", credits: 1200 },
1800
+ { identifier: "volcengine-lipsync:120s", credits: 2400 },
1801
+ { identifier: "volcengine-lipsync:300s", credits: 6000, note: "5-min ceiling" },
1802
1802
  ],
1803
1803
  },
1804
1804
  // ── Gemini video analysis ── (Gemini-only; billed per duration bucket — the
@@ -1815,11 +1815,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1815
1815
  description: "Legacy fast-tier analysis model (pre-2026-07). Kept so stored raw-model configs keep running and keep pricing under their own identifier; new fast-tier runs use the current fast model.",
1816
1816
  useCases: ["video-analysis", "shot-list", "fast"],
1817
1817
  pricing: [
1818
- { identifier: "video-analysis:gemini-3-flash", credits: 14, note: "10-min ceiling (no duration given)" },
1819
- { identifier: "video-analysis:gemini-3-flash:60s", credits: 3 },
1820
- { identifier: "video-analysis:gemini-3-flash:180s", credits: 4 },
1821
- { identifier: "video-analysis:gemini-3-flash:360s", credits: 9 },
1822
- { identifier: "video-analysis:gemini-3-flash:600s", credits: 14, note: "10-min ceiling" },
1818
+ { identifier: "video-analysis:gemini-3-flash", credits: 136, note: "10-min ceiling (no duration given)" },
1819
+ { identifier: "video-analysis:gemini-3-flash:60s", credits: 23 },
1820
+ { identifier: "video-analysis:gemini-3-flash:180s", credits: 32 },
1821
+ { identifier: "video-analysis:gemini-3-flash:360s", credits: 81 },
1822
+ { identifier: "video-analysis:gemini-3-flash:600s", credits: 136, note: "10-min ceiling" },
1823
1823
  ],
1824
1824
  },
1825
1825
  "gemini-3.6-flash-video-analysis": {
@@ -1832,11 +1832,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1832
1832
  description: "Analyze a video into a structured shot list (scenes, camera, audio) — fast, economy tier. Billed per duration bucket.",
1833
1833
  useCases: ["video-analysis", "shot-list", "fast"],
1834
1834
  pricing: [
1835
- { identifier: "video-analysis:gemini-3.6-flash", credits: 38, note: "10-min ceiling (no duration given)" },
1836
- { identifier: "video-analysis:gemini-3.6-flash:60s", credits: 7 },
1837
- { identifier: "video-analysis:gemini-3.6-flash:180s", credits: 9 },
1838
- { identifier: "video-analysis:gemini-3.6-flash:360s", credits: 23 },
1839
- { identifier: "video-analysis:gemini-3.6-flash:600s", credits: 38, note: "10-min ceiling" },
1835
+ { identifier: "video-analysis:gemini-3.6-flash", credits: 374, note: "10-min ceiling (no duration given)" },
1836
+ { identifier: "video-analysis:gemini-3.6-flash:60s", credits: 61 },
1837
+ { identifier: "video-analysis:gemini-3.6-flash:180s", credits: 88 },
1838
+ { identifier: "video-analysis:gemini-3.6-flash:360s", credits: 224 },
1839
+ { identifier: "video-analysis:gemini-3.6-flash:600s", credits: 374, note: "10-min ceiling" },
1840
1840
  ],
1841
1841
  },
1842
1842
  "gemini-3.1-pro-video-analysis": {
@@ -1849,11 +1849,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1849
1849
  description: "Analyze a video into a structured shot list (scenes, camera, audio) — higher-fidelity, default tier. Billed per duration bucket.",
1850
1850
  useCases: ["video-analysis", "shot-list", "cinematic"],
1851
1851
  pricing: [
1852
- { identifier: "video-analysis:gemini-3.1-pro", credits: 49, note: "10-min ceiling (no duration given)" },
1853
- { identifier: "video-analysis:gemini-3.1-pro:60s", credits: 9 },
1854
- { identifier: "video-analysis:gemini-3.1-pro:180s", credits: 12 },
1855
- { identifier: "video-analysis:gemini-3.1-pro:360s", credits: 30 },
1856
- { identifier: "video-analysis:gemini-3.1-pro:600s", credits: 49, note: "10-min ceiling" },
1852
+ { identifier: "video-analysis:gemini-3.1-pro", credits: 486, note: "10-min ceiling (no duration given)" },
1853
+ { identifier: "video-analysis:gemini-3.1-pro:60s", credits: 82 },
1854
+ { identifier: "video-analysis:gemini-3.1-pro:180s", credits: 111 },
1855
+ { identifier: "video-analysis:gemini-3.1-pro:360s", credits: 291 },
1856
+ { identifier: "video-analysis:gemini-3.1-pro:600s", credits: 486, note: "10-min ceiling" },
1857
1857
  ],
1858
1858
  },
1859
1859
  // Both mixed tiers are variants of the same advanced multi-engine analysis
@@ -1869,11 +1869,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1869
1869
  description: "Our most advanced analysis tier — multiple analysis engines combined into one result for maximum completeness and accuracy. Billed per duration bucket.",
1870
1870
  useCases: ["video-analysis", "shot-list", "premium", "most-complete"],
1871
1871
  pricing: [
1872
- { identifier: "video-analysis:mixed", credits: 63, note: "10-min ceiling (no duration given)" },
1873
- { identifier: "video-analysis:mixed:60s", credits: 11 },
1874
- { identifier: "video-analysis:mixed:180s", credits: 15 },
1875
- { identifier: "video-analysis:mixed:360s", credits: 38 },
1876
- { identifier: "video-analysis:mixed:600s", credits: 63, note: "10-min ceiling" },
1872
+ { identifier: "video-analysis:mixed", credits: 621, note: "10-min ceiling (no duration given)" },
1873
+ { identifier: "video-analysis:mixed:60s", credits: 104 },
1874
+ { identifier: "video-analysis:mixed:180s", credits: 142 },
1875
+ { identifier: "video-analysis:mixed:360s", credits: 372 },
1876
+ { identifier: "video-analysis:mixed:600s", credits: 621, note: "10-min ceiling" },
1877
1877
  ],
1878
1878
  },
1879
1879
  // SMART — the accuracy tier, and the only one that does not rely on voting.
@@ -1890,11 +1890,11 @@ const VIDEO_MODELS: Record<string, ModelCatalogEntry> = {
1890
1890
  description: "Highest-accuracy analysis — a single deep pass that reads the footage frame by frame, finds its own shot boundaries, and identifies the cast by appearance. Best choice when the shot list will drive regeneration. Billed per duration bucket.",
1891
1891
  useCases: ["video-analysis", "shot-list", "premium", "most-accurate"],
1892
1892
  pricing: [
1893
- { identifier: "video-analysis:smart", credits: 350, note: "10-min ceiling (no duration given)" },
1894
- { identifier: "video-analysis:smart:60s", credits: 46 },
1895
- { identifier: "video-analysis:smart:180s", credits: 98 },
1896
- { identifier: "video-analysis:smart:360s", credits: 211 },
1897
- { identifier: "video-analysis:smart:600s", credits: 350, note: "10-min ceiling" },
1893
+ { identifier: "video-analysis:smart", credits: 3496, note: "10-min ceiling (no duration given)" },
1894
+ { identifier: "video-analysis:smart:60s", credits: 454 },
1895
+ { identifier: "video-analysis:smart:180s", credits: 975 },
1896
+ { identifier: "video-analysis:smart:360s", credits: 2105 },
1897
+ { identifier: "video-analysis:smart:600s", credits: 3496, note: "10-min ceiling" },
1898
1898
  ],
1899
1899
  },
1900
1900
  }
@@ -1914,7 +1914,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1914
1914
  description: "Latest ElevenLabs TTS — supports [audio tags] for emotion / pacing. Direct API.",
1915
1915
  useCases: ["tts", "voice-over", "narration", "expressive"],
1916
1916
  features: ["audio-tags", "voice-cloning"],
1917
- pricing: [{ identifier: "elevenlabs-v3", credits: 3 }],
1917
+ pricing: [{ identifier: "elevenlabs-v3", credits: 30 }],
1918
1918
  featured: true,
1919
1919
  },
1920
1920
  "elevenlabs-turbo": {
@@ -1926,7 +1926,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1926
1926
  series: "ElevenLabs",
1927
1927
  description: "Fast, cheap ElevenLabs TTS via the direct ElevenLabs API. Good for narration.",
1928
1928
  useCases: ["tts", "narration", "fast"],
1929
- pricing: [{ identifier: "elevenlabs-turbo", credits: 2, note: "per 1K chars" }],
1929
+ pricing: [{ identifier: "elevenlabs-turbo", credits: 15, note: "per 1K chars" }],
1930
1930
  },
1931
1931
  "elevenlabs-multilingual": {
1932
1932
  id: "elevenlabs-multilingual",
@@ -1937,7 +1937,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1937
1937
  series: "ElevenLabs",
1938
1938
  description: "Multi-language ElevenLabs TTS via the direct ElevenLabs API.",
1939
1939
  useCases: ["tts", "multilingual"],
1940
- pricing: [{ identifier: "elevenlabs-multilingual", credits: 3, note: "per 1K chars" }],
1940
+ pricing: [{ identifier: "elevenlabs-multilingual", credits: 30, note: "per 1K chars" }],
1941
1941
  },
1942
1942
  "elevenlabs-dialogue": {
1943
1943
  id: "elevenlabs-dialogue",
@@ -1948,7 +1948,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1948
1948
  series: "ElevenLabs",
1949
1949
  description: "Multi-speaker dialogue TTS — give it a script, it voices each role.",
1950
1950
  useCases: ["tts", "dialogue", "multi-speaker"],
1951
- pricing: [{ identifier: "elevenlabs-dialogue", credits: 4, note: "per 1K chars" }],
1951
+ pricing: [{ identifier: "elevenlabs-dialogue", credits: 25, note: "per 1K chars" }],
1952
1952
  // Driven only via the dialogue/character-voice path (multi-speaker script
1953
1953
  // shape), NOT the single-text generate_speech verb. Hide from MCP
1954
1954
  // list_models so generate_speech (TTS_PROVIDERS) can't advertise it and
@@ -1966,7 +1966,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1966
1966
  series: "ElevenLabs",
1967
1967
  description: "Clone a voice from a short reference clip. Instant clone via direct ElevenLabs API.",
1968
1968
  useCases: ["voice-clone", "personalization"],
1969
- pricing: [{ identifier: "voice-clone", credits: 5 }],
1969
+ pricing: [{ identifier: "voice-clone", credits: 50 }],
1970
1970
  },
1971
1971
  "elevenlabs-voice-design": {
1972
1972
  id: "elevenlabs-voice-design",
@@ -1977,7 +1977,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1977
1977
  series: "ElevenLabs",
1978
1978
  description: "Design a synthetic voice from a description (no reference clip needed).",
1979
1979
  useCases: ["voice-design", "synthetic"],
1980
- pricing: [{ identifier: "elevenlabs-voice-design", credits: 5 }],
1980
+ pricing: [{ identifier: "elevenlabs-voice-design", credits: 50 }],
1981
1981
  },
1982
1982
  "elevenlabs-voice-changer": {
1983
1983
  id: "elevenlabs-voice-changer",
@@ -1988,7 +1988,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1988
1988
  series: "ElevenLabs",
1989
1989
  description: "Speech-to-speech: convert one voice to another while preserving prosody.",
1990
1990
  useCases: ["voice-conversion", "dubbing"],
1991
- pricing: [{ identifier: "elevenlabs-voice-changer", credits: 4 }],
1991
+ pricing: [{ identifier: "elevenlabs-voice-changer", credits: 40 }],
1992
1992
  },
1993
1993
  "elevenlabs-stt": {
1994
1994
  id: "elevenlabs-stt",
@@ -1999,7 +1999,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
1999
1999
  series: "ElevenLabs",
2000
2000
  description: "Speech-to-text — transcribe audio with timestamps.",
2001
2001
  useCases: ["transcription", "stt"],
2002
- pricing: [{ identifier: "elevenlabs-stt", credits: 3 }],
2002
+ pricing: [{ identifier: "elevenlabs-stt", credits: 22 }],
2003
2003
  },
2004
2004
  "elevenlabs-isolation": {
2005
2005
  id: "elevenlabs-isolation",
@@ -2010,7 +2010,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2010
2010
  series: "ElevenLabs",
2011
2011
  description: "Strip background noise / music from a vocal track.",
2012
2012
  useCases: ["cleanup", "isolation"],
2013
- pricing: [{ identifier: "elevenlabs-isolation", credits: 8, note: "variable per second" }],
2013
+ pricing: [{ identifier: "elevenlabs-isolation", credits: 74, note: "variable per second" }],
2014
2014
  },
2015
2015
  "elevenlabs-dubbing": {
2016
2016
  id: "elevenlabs-dubbing",
@@ -2021,7 +2021,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2021
2021
  series: "ElevenLabs",
2022
2022
  description: "Translate + dub a video into a new language. Async.",
2023
2023
  useCases: ["dubbing", "multilingual"],
2024
- pricing: [{ identifier: "elevenlabs-dubbing", credits: 8 }],
2024
+ pricing: [{ identifier: "elevenlabs-dubbing", credits: 80 }],
2025
2025
  },
2026
2026
  "elevenlabs-forced-alignment": {
2027
2027
  id: "elevenlabs-forced-alignment",
@@ -2032,7 +2032,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2032
2032
  series: "ElevenLabs",
2033
2033
  description: "Align an existing transcript to audio with word-level timestamps.",
2034
2034
  useCases: ["alignment", "captions"],
2035
- pricing: [{ identifier: "elevenlabs-forced-alignment", credits: 3 }],
2035
+ pricing: [{ identifier: "elevenlabs-forced-alignment", credits: 30 }],
2036
2036
  },
2037
2037
 
2038
2038
  // ── ElevenLabs SFX ──
@@ -2045,7 +2045,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2045
2045
  series: "ElevenLabs",
2046
2046
  description: "Generate short sound effects from a text prompt.",
2047
2047
  useCases: ["sfx", "ambient"],
2048
- pricing: [{ identifier: "elevenlabs-sfx", credits: 1, note: "~5s clip" }],
2048
+ pricing: [{ identifier: "elevenlabs-sfx", credits: 3, note: "~5s clip" }],
2049
2049
  },
2050
2050
 
2051
2051
  // ── Suno music ──
@@ -2059,7 +2059,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2059
2059
  dataValue: "V4",
2060
2060
  description: "Suno v4 music generation — full songs with vocals, multiple genres.",
2061
2061
  useCases: ["music", "song", "vocals"],
2062
- pricing: [{ identifier: "suno", credits: 3, note: "per generation" }],
2062
+ pricing: [{ identifier: "suno", credits: 30, note: "per generation" }],
2063
2063
  },
2064
2064
  "suno-v5": {
2065
2065
  id: "suno-v5",
@@ -2071,7 +2071,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2071
2071
  dataValue: "V5",
2072
2072
  description: "Newer Suno v5 — better vocal quality, more genres. Same price as v4.",
2073
2073
  useCases: ["music", "song", "vocals", "premium"],
2074
- pricing: [{ identifier: "suno-v5", credits: 3, note: "per generation" }],
2074
+ pricing: [{ identifier: "suno-v5", credits: 30, note: "per generation" }],
2075
2075
  },
2076
2076
  "suno-v5_5": {
2077
2077
  id: "suno-v5_5",
@@ -2083,7 +2083,7 @@ const AUDIO_MODELS: Record<string, ModelCatalogEntry> = {
2083
2083
  dataValue: "V5_5",
2084
2084
  description: "Suno v5.5 — latest model with improved audio quality and expressiveness.",
2085
2085
  useCases: ["music", "song", "vocals", "premium"],
2086
- pricing: [{ identifier: "suno-v5_5", credits: 3, note: "per generation" }],
2086
+ pricing: [{ identifier: "suno-v5_5", credits: 30, note: "per generation" }],
2087
2087
  featured: true,
2088
2088
  },
2089
2089
  }