@marlinjai/studio-mcp 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -5
- package/dist/cli.js +1201 -1741
- package/dist/index.d.ts +18 -12
- package/dist/index.js +1201 -1741
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -436,17 +436,6 @@ function resolveConfig(env = process.env) {
|
|
|
436
436
|
import { z as z8 } from "zod";
|
|
437
437
|
|
|
438
438
|
// ../lumitra-core/dist/models/index.js
|
|
439
|
-
var FAL_NANO_BANANA_2_USD_BY_RESOLUTION = {
|
|
440
|
-
"0.5K": 0.06,
|
|
441
|
-
"1K": 0.08,
|
|
442
|
-
"2K": 0.12,
|
|
443
|
-
"4K": 0.16
|
|
444
|
-
};
|
|
445
|
-
var STUDIO3D_USD_PER_CREDIT = 29 / 3500;
|
|
446
|
-
function studio3dCreditsToUsd(credits) {
|
|
447
|
-
return Math.round(credits * STUDIO3D_USD_PER_CREDIT * 1e3) / 1e3;
|
|
448
|
-
}
|
|
449
|
-
var FAL_MESHY_RIG_USD = 0.2;
|
|
450
439
|
var veo = (tier, label) => {
|
|
451
440
|
const slug2 = tier ? `veo-3-1-${tier}` : "veo-3-1";
|
|
452
441
|
return {
|
|
@@ -488,11 +477,11 @@ var ROUTES = [
|
|
|
488
477
|
id: "route/kling-2-5-turbo-pro",
|
|
489
478
|
label: "Kling 2.5 Turbo Pro (KIE, fal fallback)",
|
|
490
479
|
primary: "kie/kling-v2-5-turbo-pro-image-to-video",
|
|
491
|
-
|
|
492
|
-
//
|
|
493
|
-
//
|
|
494
|
-
//
|
|
495
|
-
|
|
480
|
+
// fal renders Kling 2.5 at a set aspect ratio (16:9, 9:16 or 1:1) and KIE
|
|
481
|
+
// takes none. The fal attempt gets the allowed ratio nearest the start
|
|
482
|
+
// frame's shape (`aspectFromFrame`, decision 7 of the plan); a frame whose
|
|
483
|
+
// size cannot be read leaves this route without a fallback.
|
|
484
|
+
fallback: { start: "fal/kling-v2-5-image-to-video" }
|
|
496
485
|
},
|
|
497
486
|
{
|
|
498
487
|
kind: "video",
|
|
@@ -552,32 +541,33 @@ var MODEL_ROUTES = Object.fromEntries(ROUTES.map((r) => [r.id, r]));
|
|
|
552
541
|
function getRoute(modelId) {
|
|
553
542
|
return modelId ? MODEL_ROUTES[modelId] : void 0;
|
|
554
543
|
}
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
544
|
+
function fallbackModels(route) {
|
|
545
|
+
if (route.kind === "image") return [route.fallback];
|
|
546
|
+
if ("byResolution" in route.fallback) return Object.values(route.fallback.byResolution);
|
|
547
|
+
return [route.fallback.start, ...route.fallback.startAndEnd ? [route.fallback.startAndEnd] : []];
|
|
548
|
+
}
|
|
549
|
+
var ROLES = (() => {
|
|
550
|
+
const roles = /* @__PURE__ */ new Map();
|
|
551
|
+
for (const route of ROUTES) {
|
|
552
|
+
roles.set(route.primary, { role: "primary", route });
|
|
553
|
+
for (const model of fallbackModels(route)) {
|
|
554
|
+
if (!roles.has(model)) roles.set(model, { role: "fallback", route });
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
return roles;
|
|
558
|
+
})();
|
|
559
|
+
function routeRoleOf(modelId) {
|
|
560
|
+
return modelId ? ROLES.get(modelId) : void 0;
|
|
561
|
+
}
|
|
562
|
+
var CATALOG_ENTRIES = [
|
|
568
563
|
// ── 3D AI Studio: 3D generation ────────────────────────────────────────
|
|
569
|
-
// `credits` is what the model's DEFAULT request bills (the options its
|
|
570
|
-
// builder sends when a node sets none), priced by providers/studio3d/
|
|
571
|
-
// pricing.ts; catalog.spec pins every entry to that rule. A job with other
|
|
572
|
-
// options records its own price at completion.
|
|
573
564
|
{
|
|
574
565
|
id: "studio3d/tripo-3-1-text-to-3d",
|
|
575
566
|
provider: "studio3d",
|
|
576
567
|
modality: "3d",
|
|
577
568
|
task: "text-to-3d",
|
|
578
569
|
label: "Tripo 3.1 (text-to-3D)",
|
|
579
|
-
description: "
|
|
580
|
-
cost: { credits: 40, usd: studio3dCreditsToUsd(40) },
|
|
570
|
+
description: "The lightest text-to-3D path on 3D AI Studio. Good for fast iteration.",
|
|
581
571
|
capabilities: { supportsTextures: true, supportsPbr: true },
|
|
582
572
|
isDefault: true
|
|
583
573
|
},
|
|
@@ -587,7 +577,6 @@ var MODEL_CATALOG = [
|
|
|
587
577
|
modality: "3d",
|
|
588
578
|
task: "image-to-3d",
|
|
589
579
|
label: "Tripo 3.1 (image-to-3D)",
|
|
590
|
-
cost: { credits: 60, usd: studio3dCreditsToUsd(60) },
|
|
591
580
|
capabilities: { needsImageInput: true, supportsTextures: true, supportsPbr: true }
|
|
592
581
|
},
|
|
593
582
|
{
|
|
@@ -596,8 +585,7 @@ var MODEL_CATALOG = [
|
|
|
596
585
|
modality: "3d",
|
|
597
586
|
task: "text-to-3d",
|
|
598
587
|
label: "Hunyuan 3.1 Rapid",
|
|
599
|
-
description: "Tencent Hunyuan3D, rapid edition. Mid-quality
|
|
600
|
-
cost: { credits: 35, usd: studio3dCreditsToUsd(35) },
|
|
588
|
+
description: "Tencent Hunyuan3D, rapid edition. Mid-quality.",
|
|
601
589
|
capabilities: { supportsTextures: true, supportsPbr: true }
|
|
602
590
|
},
|
|
603
591
|
{
|
|
@@ -606,8 +594,7 @@ var MODEL_CATALOG = [
|
|
|
606
594
|
modality: "3d",
|
|
607
595
|
task: "text-to-3d",
|
|
608
596
|
label: "Hunyuan 3.1 Pro",
|
|
609
|
-
description: "Tencent Hunyuan3D, pro edition. High quality, PBR materials on by default
|
|
610
|
-
cost: { credits: 80, usd: studio3dCreditsToUsd(80) },
|
|
597
|
+
description: "Tencent Hunyuan3D, pro edition. High quality, PBR materials on by default.",
|
|
611
598
|
capabilities: { supportsTextures: true, supportsPbr: true, maxOutputDetail: "1.5M polys" }
|
|
612
599
|
},
|
|
613
600
|
{
|
|
@@ -617,7 +604,6 @@ var MODEL_CATALOG = [
|
|
|
617
604
|
task: "image-to-3d",
|
|
618
605
|
label: "Trellis 2",
|
|
619
606
|
description: "Microsoft Trellis 2. Best image-to-3D fidelity. Image input only.",
|
|
620
|
-
cost: { credits: 30, usd: studio3dCreditsToUsd(30) },
|
|
621
607
|
capabilities: { needsImageInput: true, supportsTextures: true, supportsPbr: true, maxOutputDetail: "1024" },
|
|
622
608
|
isDefault: true
|
|
623
609
|
},
|
|
@@ -629,7 +615,6 @@ var MODEL_CATALOG = [
|
|
|
629
615
|
task: "remesh",
|
|
630
616
|
label: "Tripo Remesh",
|
|
631
617
|
description: "Convert + remesh: target polycount, quad topology, multiple output formats.",
|
|
632
|
-
cost: { credits: 10, usd: studio3dCreditsToUsd(10) },
|
|
633
618
|
isDefault: true
|
|
634
619
|
},
|
|
635
620
|
{
|
|
@@ -638,43 +623,25 @@ var MODEL_CATALOG = [
|
|
|
638
623
|
modality: "3d",
|
|
639
624
|
task: "texture",
|
|
640
625
|
label: "Tripo Texture",
|
|
641
|
-
cost: { credits: 20, usd: studio3dCreditsToUsd(20) },
|
|
642
626
|
capabilities: { supportsTextures: true, supportsPbr: true },
|
|
643
627
|
isDefault: true
|
|
644
628
|
},
|
|
645
|
-
|
|
646
|
-
// (1 credit = $0.005 USD). Indemnification: KIE provides ZERO IP indemnity,
|
|
647
|
-
// so reserve these for internal asset work. v0.1 ships as private internal
|
|
648
|
-
// infra, so KIE is the v0.1 default; revisit if customer-facing output is
|
|
649
|
-
// ever needed.
|
|
650
|
-
{
|
|
651
|
-
// Verified 2026-05-09 via two consecutive CLI smokes at 1:1, 1K, single
|
|
652
|
-
// candidate, default options: KIE billed 8 credits ($0.040) each time.
|
|
653
|
-
// Earlier spec estimate was $0.020 (4 credits); replaced with the measured
|
|
654
|
-
// value. The 2K and 4K tiers ($0.06, $0.09) come from KIE's price page
|
|
655
|
-
// (checked 2026-10-04), the same as the edit entry. The provider's costUsd from creditsConsumed remains the source of
|
|
656
|
-
// truth for accounting; this catalog field is UI hints only.
|
|
629
|
+
{
|
|
657
630
|
id: "kie/nano-banana-2",
|
|
658
631
|
provider: "kie",
|
|
659
632
|
modality: "image",
|
|
660
633
|
task: "text-to-image",
|
|
661
634
|
label: "Nano Banana 2 (KIE)",
|
|
662
|
-
description: "Google Gemini 3.1 Flash Image via KIE.
|
|
663
|
-
cost: { usd: 0.04, usdByResolution: { "1K": 0.04, "2K": 0.06, "4K": 0.09 } },
|
|
664
|
-
listPrice: { source: "fal", model: "fal/nano-banana-2" },
|
|
635
|
+
description: "Google Gemini 3.1 Flash Image via KIE. Kept as fallback aggregator path; default flipped to fal/nano-banana-2 in 2026-06-04 fal slice.",
|
|
665
636
|
capabilities: { resolutions: ["1K", "2K", "4K"] }
|
|
666
637
|
},
|
|
667
638
|
{
|
|
668
|
-
// imagen-4-fast price is estimated; KIE docs do not publish a per-image
|
|
669
|
-
// USD rate. Read data.creditsConsumed from a real run to verify.
|
|
670
639
|
id: "kie/imagen-4-fast",
|
|
671
640
|
provider: "kie",
|
|
672
641
|
modality: "image",
|
|
673
642
|
task: "text-to-image",
|
|
674
643
|
label: "Imagen 4 Fast (KIE)",
|
|
675
|
-
description: "Google Imagen 4 Fast via KIE. No
|
|
676
|
-
cost: { usd: 0.02 },
|
|
677
|
-
listPrice: { source: "owner", usd: 0.02 },
|
|
644
|
+
description: "Google Imagen 4 Fast via KIE. No IP indemnity.",
|
|
678
645
|
capabilities: { resolutions: [] }
|
|
679
646
|
},
|
|
680
647
|
{
|
|
@@ -683,25 +650,16 @@ var MODEL_CATALOG = [
|
|
|
683
650
|
modality: "image",
|
|
684
651
|
task: "text-to-image",
|
|
685
652
|
label: "Seedream V4 (KIE)",
|
|
686
|
-
description: "ByteDance Seedream V4 via KIE. Stylized output not available on Vertex. No IP indemnity."
|
|
687
|
-
cost: { usd: 0.0175 },
|
|
688
|
-
listPrice: { source: "unrecorded" }
|
|
653
|
+
description: "ByteDance Seedream V4 via KIE. Stylized output not available on Vertex. No IP indemnity."
|
|
689
654
|
},
|
|
690
655
|
// ── KIE.ai: newer image models, the cheaper route (price feed 2026-09-23) ─
|
|
691
|
-
// Billed from the credits KIE reports on each task. KIE offers no data
|
|
692
|
-
// processing agreement. Decided 2026-09-23 (Q5 C of the routing plan,
|
|
693
|
-
// docs/plans/2026-09-26-kie-first-fal-fallback.md): the automatic routes try
|
|
694
|
-
// KIE first for everything, a recorded risk; pinning the fal entry of a model
|
|
695
|
-
// is how a job with a real person's photo is kept off KIE.
|
|
696
656
|
{
|
|
697
657
|
id: "kie/nano-banana-2-edit",
|
|
698
658
|
provider: "kie",
|
|
699
659
|
modality: "image",
|
|
700
660
|
task: "image-edit",
|
|
701
661
|
label: "Nano Banana 2 Edit (KIE)",
|
|
702
|
-
description: "Nano Banana 2 instruction edit via KIE with up to 8 reference images
|
|
703
|
-
cost: { usd: 0.04, usdByResolution: { "1K": 0.04, "2K": 0.06, "4K": 0.09 } },
|
|
704
|
-
listPrice: { source: "fal", model: "fal/nano-banana-2-edit" },
|
|
662
|
+
description: "Nano Banana 2 instruction edit via KIE with up to 8 reference images.",
|
|
705
663
|
capabilities: { resolutions: ["1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
706
664
|
},
|
|
707
665
|
{
|
|
@@ -710,9 +668,7 @@ var MODEL_CATALOG = [
|
|
|
710
668
|
modality: "image",
|
|
711
669
|
task: "text-to-image",
|
|
712
670
|
label: "Nano Banana Pro (KIE)",
|
|
713
|
-
description: "Google Gemini 3 Pro Image via KIE: stronger on complex scenes, text in images and new characters than Nano Banana 2 (a relighting edit showed no difference on 2026-09-23).
|
|
714
|
-
cost: { usd: 0.09, usdByResolution: { "1K": 0.09, "2K": 0.09, "4K": 0.12 } },
|
|
715
|
-
listPrice: { source: "fal", model: "fal/nano-banana-pro" },
|
|
671
|
+
description: "Google Gemini 3 Pro Image via KIE: stronger on complex scenes, text in images and new characters than Nano Banana 2 (a relighting edit showed no difference on 2026-09-23).",
|
|
716
672
|
capabilities: { resolutions: ["1K", "2K", "4K"], maxInputImages: 0 }
|
|
717
673
|
},
|
|
718
674
|
{
|
|
@@ -721,9 +677,7 @@ var MODEL_CATALOG = [
|
|
|
721
677
|
modality: "image",
|
|
722
678
|
task: "image-edit",
|
|
723
679
|
label: "Nano Banana Pro Edit (KIE)",
|
|
724
|
-
description: "Nano Banana Pro instruction edit via KIE with up to 8 reference images.
|
|
725
|
-
cost: { usd: 0.09, usdByResolution: { "1K": 0.09, "2K": 0.09, "4K": 0.12 } },
|
|
726
|
-
listPrice: { source: "fal", model: "fal/nano-banana-pro-edit" },
|
|
680
|
+
description: "Nano Banana Pro instruction edit via KIE with up to 8 reference images.",
|
|
727
681
|
capabilities: { resolutions: ["1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
728
682
|
},
|
|
729
683
|
{
|
|
@@ -732,9 +686,7 @@ var MODEL_CATALOG = [
|
|
|
732
686
|
modality: "image",
|
|
733
687
|
task: "text-to-image",
|
|
734
688
|
label: "Seedream 5 Lite (KIE)",
|
|
735
|
-
description: "ByteDance Seedream 5 Lite via KIE, 2K or 4K.
|
|
736
|
-
cost: { usd: 0.0275 },
|
|
737
|
-
listPrice: { source: "fal", model: "fal/seedream-5-lite" },
|
|
689
|
+
description: "ByteDance Seedream 5 Lite via KIE, 2K or 4K.",
|
|
738
690
|
capabilities: { resolutions: ["2K", "4K"], maxInputImages: 0 }
|
|
739
691
|
},
|
|
740
692
|
{
|
|
@@ -743,9 +695,7 @@ var MODEL_CATALOG = [
|
|
|
743
695
|
modality: "image",
|
|
744
696
|
task: "image-edit",
|
|
745
697
|
label: "Seedream 5 Lite Edit (KIE)",
|
|
746
|
-
description: "ByteDance Seedream 5 Lite image-to-image via KIE, up to 10 reference images, 2K or 4K.
|
|
747
|
-
cost: { usd: 0.0275 },
|
|
748
|
-
listPrice: { source: "fal", model: "fal/seedream-5-lite-edit" },
|
|
698
|
+
description: "ByteDance Seedream 5 Lite image-to-image via KIE, up to 10 reference images, 2K or 4K.",
|
|
749
699
|
capabilities: { resolutions: ["2K", "4K"], needsImageInput: true, maxInputImages: 10 }
|
|
750
700
|
},
|
|
751
701
|
{
|
|
@@ -754,9 +704,7 @@ var MODEL_CATALOG = [
|
|
|
754
704
|
modality: "image",
|
|
755
705
|
task: "text-to-image",
|
|
756
706
|
label: "Seedream 5 Pro (KIE)",
|
|
757
|
-
description: "ByteDance Seedream 5 Pro via KIE, 1K or 2K.
|
|
758
|
-
cost: { usd: 0.035, usdByResolution: { "1K": 0.035, "2K": 0.07 } },
|
|
759
|
-
listPrice: { source: "fal", model: "fal/seedream-5-pro" },
|
|
707
|
+
description: "ByteDance Seedream 5 Pro via KIE, 1K or 2K.",
|
|
760
708
|
capabilities: { resolutions: ["1K", "2K"], maxInputImages: 0 }
|
|
761
709
|
},
|
|
762
710
|
{
|
|
@@ -765,30 +713,17 @@ var MODEL_CATALOG = [
|
|
|
765
713
|
modality: "image",
|
|
766
714
|
task: "image-edit",
|
|
767
715
|
label: "Seedream 5 Pro Edit (KIE)",
|
|
768
|
-
description: "ByteDance Seedream 5 Pro image-to-image via KIE, up to 10 reference images, 1K or 2K.
|
|
769
|
-
cost: { usd: 0.035, usdByResolution: { "1K": 0.035, "2K": 0.07 } },
|
|
770
|
-
listPrice: { source: "fal", model: "fal/seedream-5-pro-edit" },
|
|
716
|
+
description: "ByteDance Seedream 5 Pro image-to-image via KIE, up to 10 reference images, 1K or 2K.",
|
|
771
717
|
capabilities: { resolutions: ["1K", "2K"], needsImageInput: true, maxInputImages: 10 }
|
|
772
718
|
},
|
|
773
719
|
// ── fal.ai: image gen ─────────────────────────────────────────────────
|
|
774
|
-
// Prices from docs/internal/research/fal-api-reference.md (vetted
|
|
775
|
-
// 2026-06-04). Nano Banana 2 (Google Gemini 3.1 Flash Image) is the SAME upstream model as today's KIE
|
|
776
|
-
// nano-banana-2 default; flipping the default from kie/nano-banana-2 to
|
|
777
|
-
// fal/nano-banana-2 is zero aesthetic change. FLUX 1.1 [pro] is the
|
|
778
|
-
// fal-native flagship; FLUX.1 [schnell] the fast/cheap option; FLUX.1
|
|
779
|
-
// Kontext [pro] is for instruction edits.
|
|
780
|
-
//
|
|
781
|
-
// Per-task entries (Weave-style classification, option a from the spec):
|
|
782
|
-
// Nano Banana 2 appears as both text-to-image (default) and the /edit
|
|
783
|
-
// endpoint as image-to-image + image-edit, sharing one upstream id.
|
|
784
720
|
{
|
|
785
721
|
id: "fal/nano-banana-2",
|
|
786
722
|
provider: "fal",
|
|
787
723
|
modality: "image",
|
|
788
724
|
task: "text-to-image",
|
|
789
725
|
label: "Nano Banana 2 (fal)",
|
|
790
|
-
description: "Google Gemini 3.1 Flash Image via fal. Default for image gen; same upstream model as KIE nano-banana-2 with no aesthetic change.
|
|
791
|
-
cost: { usd: 0.08, usdByResolution: FAL_NANO_BANANA_2_USD_BY_RESOLUTION },
|
|
726
|
+
description: "Google Gemini 3.1 Flash Image via fal. Default for image gen; same upstream model as KIE nano-banana-2 with no aesthetic change.",
|
|
792
727
|
capabilities: { resolutions: ["0.5K", "1K", "2K", "4K"], maxInputImages: 0 },
|
|
793
728
|
isDefault: true
|
|
794
729
|
},
|
|
@@ -798,8 +733,7 @@ var MODEL_CATALOG = [
|
|
|
798
733
|
modality: "image",
|
|
799
734
|
task: "image-edit",
|
|
800
735
|
label: "Nano Banana 2 Edit (fal)",
|
|
801
|
-
description: "Nano Banana 2 instruction edit. Takes up to 8 reference images for full brand consistency.
|
|
802
|
-
cost: { usd: 0.08, usdByResolution: FAL_NANO_BANANA_2_USD_BY_RESOLUTION },
|
|
736
|
+
description: "Nano Banana 2 instruction edit. Takes up to 8 reference images for full brand consistency.",
|
|
803
737
|
capabilities: { resolutions: ["0.5K", "1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
804
738
|
},
|
|
805
739
|
{
|
|
@@ -808,11 +742,7 @@ var MODEL_CATALOG = [
|
|
|
808
742
|
modality: "image",
|
|
809
743
|
task: "image-to-image",
|
|
810
744
|
label: "Nano Banana 2 Image-to-Image (fal)",
|
|
811
|
-
description: "Nano Banana 2 in image-to-image mode; same upstream endpoint as the edit entry, separate task classification.
|
|
812
|
-
// Same fal endpoint as the edit entry, so the same tier prices: fal's
|
|
813
|
-
// recorded cost is keyed by endpoint and was already tiered, and the
|
|
814
|
-
// estimates and quota must agree with it.
|
|
815
|
-
cost: { usd: 0.08, usdByResolution: FAL_NANO_BANANA_2_USD_BY_RESOLUTION },
|
|
745
|
+
description: "Nano Banana 2 in image-to-image mode; same upstream endpoint as the edit entry, separate task classification.",
|
|
816
746
|
capabilities: { resolutions: ["0.5K", "1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
817
747
|
},
|
|
818
748
|
// ── fal.ai: Nano Banana Pro and Seedream 5 (the fallback for the KIE entries) ─
|
|
@@ -822,8 +752,7 @@ var MODEL_CATALOG = [
|
|
|
822
752
|
modality: "image",
|
|
823
753
|
task: "text-to-image",
|
|
824
754
|
label: "Nano Banana Pro (fal)",
|
|
825
|
-
description: "Google Gemini 3 Pro Image via fal.
|
|
826
|
-
cost: { usd: 0.15, usdByResolution: { "1K": 0.15, "2K": 0.15, "4K": 0.3 } },
|
|
755
|
+
description: "Google Gemini 3 Pro Image via fal. This entry runs under fal terms.",
|
|
827
756
|
capabilities: { resolutions: ["1K", "2K", "4K"], maxInputImages: 0 }
|
|
828
757
|
},
|
|
829
758
|
{
|
|
@@ -832,8 +761,7 @@ var MODEL_CATALOG = [
|
|
|
832
761
|
modality: "image",
|
|
833
762
|
task: "image-edit",
|
|
834
763
|
label: "Nano Banana Pro Edit (fal)",
|
|
835
|
-
description: "Nano Banana Pro instruction edit via fal with up to 8 reference images.
|
|
836
|
-
cost: { usd: 0.15, usdByResolution: { "1K": 0.15, "2K": 0.15, "4K": 0.3 } },
|
|
764
|
+
description: "Nano Banana Pro instruction edit via fal with up to 8 reference images.",
|
|
837
765
|
capabilities: { resolutions: ["1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
838
766
|
},
|
|
839
767
|
{
|
|
@@ -842,8 +770,7 @@ var MODEL_CATALOG = [
|
|
|
842
770
|
modality: "image",
|
|
843
771
|
task: "text-to-image",
|
|
844
772
|
label: "Seedream 5 Lite (fal)",
|
|
845
|
-
description: "ByteDance Seedream 5 Lite via fal, 2K or 4K.
|
|
846
|
-
cost: { usd: 0.035 },
|
|
773
|
+
description: "ByteDance Seedream 5 Lite via fal, 2K or 4K.",
|
|
847
774
|
capabilities: { resolutions: ["2K", "4K"], maxInputImages: 0 }
|
|
848
775
|
},
|
|
849
776
|
{
|
|
@@ -852,8 +779,7 @@ var MODEL_CATALOG = [
|
|
|
852
779
|
modality: "image",
|
|
853
780
|
task: "image-edit",
|
|
854
781
|
label: "Seedream 5 Lite Edit (fal)",
|
|
855
|
-
description: "ByteDance Seedream 5 Lite edit via fal, up to 10 reference images, 2K or 4K.
|
|
856
|
-
cost: { usd: 0.035 },
|
|
782
|
+
description: "ByteDance Seedream 5 Lite edit via fal, up to 10 reference images, 2K or 4K.",
|
|
857
783
|
capabilities: { resolutions: ["2K", "4K"], needsImageInput: true, maxInputImages: 10 }
|
|
858
784
|
},
|
|
859
785
|
{
|
|
@@ -862,8 +788,7 @@ var MODEL_CATALOG = [
|
|
|
862
788
|
modality: "image",
|
|
863
789
|
task: "text-to-image",
|
|
864
790
|
label: "Seedream 5 Pro (fal)",
|
|
865
|
-
description: "ByteDance Seedream 5 Pro via fal, 1K or 2K.
|
|
866
|
-
cost: { usd: 0.135, usdByResolution: { "1K": 0.0675, "2K": 0.135 } },
|
|
791
|
+
description: "ByteDance Seedream 5 Pro via fal, 1K or 2K.",
|
|
867
792
|
capabilities: { resolutions: ["1K", "2K"], maxInputImages: 0 }
|
|
868
793
|
},
|
|
869
794
|
{
|
|
@@ -872,8 +797,7 @@ var MODEL_CATALOG = [
|
|
|
872
797
|
modality: "image",
|
|
873
798
|
task: "image-edit",
|
|
874
799
|
label: "Seedream 5 Pro Edit (fal)",
|
|
875
|
-
description: "ByteDance Seedream 5 Pro edit via fal, up to 10 reference images, 1K or 2K.
|
|
876
|
-
cost: { usd: 0.135, usdByResolution: { "1K": 0.0675, "2K": 0.135 } },
|
|
800
|
+
description: "ByteDance Seedream 5 Pro edit via fal, up to 10 reference images, 1K or 2K.",
|
|
877
801
|
capabilities: { resolutions: ["1K", "2K"], needsImageInput: true, maxInputImages: 10 }
|
|
878
802
|
},
|
|
879
803
|
{
|
|
@@ -882,8 +806,7 @@ var MODEL_CATALOG = [
|
|
|
882
806
|
modality: "image",
|
|
883
807
|
task: "text-to-image",
|
|
884
808
|
label: "FLUX 1.1 [pro] (fal)",
|
|
885
|
-
description: "Black Forest Labs FLUX 1.1 [pro] via fal. Flagship text-to-image
|
|
886
|
-
cost: { usd: 0.04 },
|
|
809
|
+
description: "Black Forest Labs FLUX 1.1 [pro] via fal. Flagship text-to-image. Text-only, no reference-image brand conditioning.",
|
|
887
810
|
capabilities: { resolutions: [], maxInputImages: 0 }
|
|
888
811
|
},
|
|
889
812
|
{
|
|
@@ -892,8 +815,7 @@ var MODEL_CATALOG = [
|
|
|
892
815
|
modality: "image",
|
|
893
816
|
task: "text-to-image",
|
|
894
817
|
label: "FLUX.1 [schnell] (fal)",
|
|
895
|
-
description: "Black Forest Labs FLUX.1 [schnell] via fal. Fast
|
|
896
|
-
cost: { usd: 3e-3 },
|
|
818
|
+
description: "Black Forest Labs FLUX.1 [schnell] via fal. Fast text-to-image. Text-only.",
|
|
897
819
|
capabilities: { resolutions: [], maxInputImages: 0 }
|
|
898
820
|
},
|
|
899
821
|
{
|
|
@@ -902,42 +824,28 @@ var MODEL_CATALOG = [
|
|
|
902
824
|
modality: "image",
|
|
903
825
|
task: "image-edit",
|
|
904
826
|
label: "FLUX.1 Kontext [pro] (fal)",
|
|
905
|
-
description: "FLUX.1 Kontext instruction edit via fal. Single image_url input
|
|
906
|
-
cost: { usd: 0.04 },
|
|
827
|
+
description: "FLUX.1 Kontext instruction edit via fal. Single image_url input. For multi-ref, the kontext/max/multi endpoint is a follow-up.",
|
|
907
828
|
capabilities: { resolutions: [], needsImageInput: true, maxInputImages: 1 }
|
|
908
829
|
},
|
|
909
830
|
// ── fal.ai: virtual try-on (E3) ────────────────────────────────────────
|
|
910
|
-
// FASHN garment-preserving try-on. A DISTINCT task from image-edit: it takes
|
|
911
|
-
// TWO named images (garment + person/model) and preserves the garment's
|
|
912
|
-
// pixels (text/pattern/fabric) rather than letting a general diffusion edit
|
|
913
|
-
// redraw them. Id, schema, and price verified 2026-07-20 against fal's model
|
|
914
|
-
// page for fal-ai/fashn/tryon/v1.6; see docs/internal/research/fal-fashn-tryon.md.
|
|
915
|
-
// Flat $0.075 per run (fal does not return cost; the provider computes it).
|
|
916
831
|
{
|
|
917
832
|
id: "fal/fashn-tryon-v1-6",
|
|
918
833
|
provider: "fal",
|
|
919
834
|
modality: "image",
|
|
920
835
|
task: "virtual-try-on",
|
|
921
836
|
label: "FASHN Try-On v1.6",
|
|
922
|
-
description: "Garment-preserving virtual try-on via fal. Preserves product text/pattern/fabric; takes a garment image and a model/person image.
|
|
923
|
-
cost: { usd: 0.075 },
|
|
837
|
+
description: "Garment-preserving virtual try-on via fal. Preserves product text/pattern/fabric; takes a garment image and a model/person image.",
|
|
924
838
|
capabilities: { maxInputImages: 2, needsImageInput: true },
|
|
925
839
|
isDefault: true
|
|
926
840
|
},
|
|
927
841
|
// ── fal.ai: video gen (B1) ─────────────────────────────────────────────
|
|
928
|
-
// Async via fal's queue API (submit -> webhook / poll). Prices are per the
|
|
929
|
-
// fal model pages (vetted 2026-06-16); fal does NOT return cost, so the
|
|
930
|
-
// provider computes a flat per-video estimate from the catalog usd anchored
|
|
931
|
-
// to the model's base clip length. Exactly one isDefault per (video, task):
|
|
932
|
-
// Kling 2.5 Turbo Pro for image-to-video, Seedance 1.0 Pro for text-to-video.
|
|
933
842
|
{
|
|
934
843
|
id: "fal/kling-v2-5-image-to-video",
|
|
935
844
|
provider: "fal",
|
|
936
845
|
modality: "video",
|
|
937
846
|
task: "image-to-video",
|
|
938
847
|
label: "Kling 2.5 Turbo Pro (image-to-video)",
|
|
939
|
-
description: "Kuaishou Kling 2.5 Turbo Pro via fal. Cinematic image-to-video
|
|
940
|
-
cost: { usd: 0.35 },
|
|
848
|
+
description: "Kuaishou Kling 2.5 Turbo Pro via fal. Cinematic image-to-video. Default image-to-video.",
|
|
941
849
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true },
|
|
942
850
|
isDefault: true
|
|
943
851
|
},
|
|
@@ -947,8 +855,7 @@ var MODEL_CATALOG = [
|
|
|
947
855
|
modality: "video",
|
|
948
856
|
task: "image-to-video",
|
|
949
857
|
label: "Seedance 1.0 Pro (image-to-video)",
|
|
950
|
-
description: "ByteDance Seedance 1.0 Pro via fal. Image-to-video
|
|
951
|
-
cost: { usd: 0.62 },
|
|
858
|
+
description: "ByteDance Seedance 1.0 Pro via fal. Image-to-video. Alternative to Kling for stylized motion.",
|
|
952
859
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
953
860
|
},
|
|
954
861
|
{
|
|
@@ -958,9 +865,7 @@ var MODEL_CATALOG = [
|
|
|
958
865
|
task: "image-to-video",
|
|
959
866
|
label: "Seedance 2.5 (image-to-video)",
|
|
960
867
|
refusesPhotorealPeople: true,
|
|
961
|
-
description: "ByteDance Seedance 2.5 via fal. Accepts a start frame AND an end frame (end_image_url), selectable duration 4-30s, up to 1080p, with synchronised audio (generate_audio, on by default).
|
|
962
|
-
// The default clip the estimate prices (computeVideoCostUsd): 5s at 720p 16:9.
|
|
963
|
-
cost: { usd: 2.3112 },
|
|
868
|
+
description: "ByteDance Seedance 2.5 via fal. Accepts a start frame AND an end frame (end_image_url), selectable duration 4-30s, up to 1080p, with synchronised audio (generate_audio, on by default). CAUTION: ByteDance partner moderation on 2.5 rejected even fal's own robot test image with content_policy_violation (observed 2026-08-21), and it refuses photoreal people, generated ones included (observed 2026-08-21 and 2026-09-23). Seedance 2.0 refuses them too, so pick another model for a person; use this one for subjects without people.",
|
|
964
869
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
965
870
|
},
|
|
966
871
|
{
|
|
@@ -970,9 +875,7 @@ var MODEL_CATALOG = [
|
|
|
970
875
|
task: "image-to-video",
|
|
971
876
|
label: "Seedance 2.0 (image-to-video)",
|
|
972
877
|
refusesPhotorealPeople: true,
|
|
973
|
-
description: "ByteDance Seedance 2.0 via fal. Start frame plus optional end frame (end_image_url), duration 4-15s, up to 4k, and it accepts seven explicit aspect ratios where 2.5 is fixed to auto. It refuses photoreal people, generated ones included, in every fal mode (observed 2026-09-23). Not simply superseded by 2.5: 2.0 generated from photographic input that 2.5 refused on content policy (observed 2026-08-21), and it is the only one offering 4k.
|
|
974
|
-
// The default clip the estimate prices (computeVideoCostUsd): 5s at 720p 16:9.
|
|
975
|
-
cost: { usd: 1.512 },
|
|
878
|
+
description: "ByteDance Seedance 2.0 via fal. Start frame plus optional end frame (end_image_url), duration 4-15s, up to 4k, and it accepts seven explicit aspect ratios where 2.5 is fixed to auto. It refuses photoreal people, generated ones included, in every fal mode (observed 2026-09-23). Not simply superseded by 2.5: 2.0 generated from photographic input that 2.5 refused on content policy (observed 2026-08-21), and it is the only one offering 4k.",
|
|
976
879
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
977
880
|
},
|
|
978
881
|
// ── A start-frame model that accepts photoreal generated characters ───────
|
|
@@ -988,25 +891,17 @@ var MODEL_CATALOG = [
|
|
|
988
891
|
modality: "video",
|
|
989
892
|
task: "image-to-video",
|
|
990
893
|
label: "Grok Imagine (image-to-video)",
|
|
991
|
-
description: "xAI Grok Imagine Video via fal. Animates a start frame with audio, 1 to 15 s, 480p or 720p, aspect auto or eight explicit ratios. Accepts photoreal generated characters that Seedance refuses (tested 2026-09-23).
|
|
992
|
-
// 5 s at the 720p default plus fal's $0.002 for the input image.
|
|
993
|
-
cost: { usd: 0.352 },
|
|
894
|
+
description: "xAI Grok Imagine Video via fal. Animates a start frame with audio, 1 to 15 s, 480p or 720p, aspect auto or eight explicit ratios. Accepts photoreal generated characters that Seedance refuses (tested 2026-09-23). No end frame.",
|
|
994
895
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
995
896
|
},
|
|
996
897
|
// ── Google Veo 3.1 (fal): start frame, and first and last frame ──────────
|
|
997
|
-
// Accepted every photoreal still of a minted character on 2026-09-23 and
|
|
998
|
-
// landed exactly on the end frame; the best quality tested that day. Durations
|
|
999
|
-
// 4, 6 or 8 s (Lite first-and-last: 8 s only), aspect auto, 16:9 or 9:16.
|
|
1000
|
-
// Studio sends it SILENT unless the job sets generateAudio: true (audio costs
|
|
1001
|
-
// 50 to 100% more), so the anchors are 8 s silent at 720p. fal vetted 2026-09-23.
|
|
1002
898
|
{
|
|
1003
899
|
id: "fal/veo-3-1-lite-image-to-video",
|
|
1004
900
|
provider: "fal",
|
|
1005
901
|
modality: "video",
|
|
1006
902
|
task: "image-to-video",
|
|
1007
903
|
label: "Veo 3.1 Lite (image-to-video)",
|
|
1008
|
-
description: "Google Veo 3.1 Lite via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.
|
|
1009
|
-
cost: { usd: 0.24 },
|
|
904
|
+
description: "Google Veo 3.1 Lite via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.",
|
|
1010
905
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1011
906
|
},
|
|
1012
907
|
{
|
|
@@ -1015,8 +910,7 @@ var MODEL_CATALOG = [
|
|
|
1015
910
|
modality: "video",
|
|
1016
911
|
task: "image-to-video",
|
|
1017
912
|
label: "Veo 3.1 Lite (first and last frame)",
|
|
1018
|
-
description: "Google Veo 3.1 Lite via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 8 s only, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.
|
|
1019
|
-
cost: { usd: 0.24 },
|
|
913
|
+
description: "Google Veo 3.1 Lite via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 8 s only, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.",
|
|
1020
914
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1021
915
|
},
|
|
1022
916
|
{
|
|
@@ -1025,8 +919,7 @@ var MODEL_CATALOG = [
|
|
|
1025
919
|
modality: "video",
|
|
1026
920
|
task: "image-to-video",
|
|
1027
921
|
label: "Veo 3.1 Fast (image-to-video)",
|
|
1028
|
-
description: "Google Veo 3.1 Fast via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
1029
|
-
cost: { usd: 0.8 },
|
|
922
|
+
description: "Google Veo 3.1 Fast via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
1030
923
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1031
924
|
},
|
|
1032
925
|
{
|
|
@@ -1035,8 +928,7 @@ var MODEL_CATALOG = [
|
|
|
1035
928
|
modality: "video",
|
|
1036
929
|
task: "image-to-video",
|
|
1037
930
|
label: "Veo 3.1 Fast (first and last frame)",
|
|
1038
|
-
description: "Google Veo 3.1 Fast via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
1039
|
-
cost: { usd: 0.8 },
|
|
931
|
+
description: "Google Veo 3.1 Fast via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
1040
932
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1041
933
|
},
|
|
1042
934
|
{
|
|
@@ -1045,8 +937,7 @@ var MODEL_CATALOG = [
|
|
|
1045
937
|
modality: "video",
|
|
1046
938
|
task: "image-to-video",
|
|
1047
939
|
label: "Veo 3.1 (image-to-video)",
|
|
1048
|
-
description: "Google Veo 3.1 via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
1049
|
-
cost: { usd: 1.6 },
|
|
940
|
+
description: "Google Veo 3.1 via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
1050
941
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1051
942
|
},
|
|
1052
943
|
{
|
|
@@ -1055,27 +946,17 @@ var MODEL_CATALOG = [
|
|
|
1055
946
|
modality: "video",
|
|
1056
947
|
task: "image-to-video",
|
|
1057
948
|
label: "Veo 3.1 (first and last frame)",
|
|
1058
|
-
description: "Google Veo 3.1 via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
1059
|
-
cost: { usd: 1.6 },
|
|
949
|
+
description: "Google Veo 3.1 via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
1060
950
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1061
951
|
},
|
|
1062
952
|
// ── KIE.ai video: the cheaper route to the same upstream models ──────────
|
|
1063
|
-
// Async via KIE's Veo and createTask APIs (providers/kie-video.ts). 20 to 85%
|
|
1064
|
-
// below fal (KIE price feed, 2026-09-23). KIE offers no data processing
|
|
1065
|
-
// agreement. Decided 2026-09-23 (Q5 C of the routing plan): the automatic
|
|
1066
|
-
// routes try KIE first for everything, a recorded risk; pinning the fal
|
|
1067
|
-
// entry of a model is how a job with a real person's photo is kept off KIE.
|
|
1068
|
-
// Anchors are the model's default clip at 720p (Kling: its fixed size). KIE
|
|
1069
|
-
// docs vetted 2026-09-23.
|
|
1070
953
|
{
|
|
1071
954
|
id: "kie/veo-3-1-lite",
|
|
1072
955
|
provider: "kie",
|
|
1073
956
|
modality: "video",
|
|
1074
957
|
task: "image-to-video",
|
|
1075
958
|
label: "Veo 3.1 Lite (KIE)",
|
|
1076
|
-
description: "Google Veo 3.1 Lite via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23.
|
|
1077
|
-
cost: { usd: 0.15 },
|
|
1078
|
-
listPrice: { source: "owner", model: "openrouter/veo-3-1-lite" },
|
|
959
|
+
description: "Google Veo 3.1 Lite via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23. KIE's Auto aspect letterboxes, so pick 16:9 or 9:16.",
|
|
1079
960
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1080
961
|
},
|
|
1081
962
|
{
|
|
@@ -1084,9 +965,7 @@ var MODEL_CATALOG = [
|
|
|
1084
965
|
modality: "video",
|
|
1085
966
|
task: "image-to-video",
|
|
1086
967
|
label: "Veo 3.1 Fast (KIE)",
|
|
1087
|
-
description: "Google Veo 3.1 Fast via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23.
|
|
1088
|
-
cost: { usd: 0.3 },
|
|
1089
|
-
listPrice: { source: "owner", model: "openrouter/veo-3-1-fast" },
|
|
968
|
+
description: "Google Veo 3.1 Fast via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23. Pick 16:9 or 9:16.",
|
|
1090
969
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1091
970
|
},
|
|
1092
971
|
{
|
|
@@ -1095,25 +974,17 @@ var MODEL_CATALOG = [
|
|
|
1095
974
|
modality: "video",
|
|
1096
975
|
task: "image-to-video",
|
|
1097
976
|
label: "Veo 3.1 (KIE)",
|
|
1098
|
-
description: "Google Veo 3.1 (quality tier) via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Same upstream model as the tested Lite and Fast tiers.
|
|
1099
|
-
cost: { usd: 1.25 },
|
|
1100
|
-
listPrice: { source: "owner", model: "openrouter/veo-3-1" },
|
|
977
|
+
description: "Google Veo 3.1 (quality tier) via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Same upstream model as the tested Lite and Fast tiers.",
|
|
1101
978
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1102
979
|
},
|
|
1103
980
|
// ── OpenRouter video: Google Veo 3.1 at Google's own prices ───────────────
|
|
1104
|
-
// Async via OpenRouter's video API (providers/openrouter-video.ts). One entry
|
|
1105
|
-
// per tier, like KIE: an end frame adds a last frame. 16:9 or 9:16 only (no
|
|
1106
|
-
// auto), frames must be JPEG or PNG (WebP is refused). Studio sends it SILENT
|
|
1107
|
-
// unless the job sets generateAudio: true, like the fal Veo entries, so the
|
|
1108
|
-
// anchors are 8 s silent at 720p. OpenRouter models endpoint vetted 2026-10-04.
|
|
1109
981
|
{
|
|
1110
982
|
id: "openrouter/veo-3-1-lite",
|
|
1111
983
|
provider: "openrouter",
|
|
1112
984
|
modality: "video",
|
|
1113
985
|
task: "image-to-video",
|
|
1114
986
|
label: "Veo 3.1 Lite (OpenRouter)",
|
|
1115
|
-
description: "Google Veo 3.1 Lite via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p or 1080p; 16:9 or 9:16, one must be set. Accepted a minted character's photoreal still on 2026-10-04.
|
|
1116
|
-
cost: { usd: 0.24 },
|
|
987
|
+
description: "Google Veo 3.1 Lite via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p or 1080p; 16:9 or 9:16, one must be set. Accepted a minted character's photoreal still on 2026-10-04.",
|
|
1117
988
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1118
989
|
},
|
|
1119
990
|
{
|
|
@@ -1122,8 +993,7 @@ var MODEL_CATALOG = [
|
|
|
1122
993
|
modality: "video",
|
|
1123
994
|
task: "image-to-video",
|
|
1124
995
|
label: "Veo 3.1 Fast (OpenRouter)",
|
|
1125
|
-
description: "Google Veo 3.1 Fast via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.
|
|
1126
|
-
cost: { usd: 0.64 },
|
|
996
|
+
description: "Google Veo 3.1 Fast via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.",
|
|
1127
997
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1128
998
|
},
|
|
1129
999
|
{
|
|
@@ -1132,8 +1002,7 @@ var MODEL_CATALOG = [
|
|
|
1132
1002
|
modality: "video",
|
|
1133
1003
|
task: "image-to-video",
|
|
1134
1004
|
label: "Veo 3.1 (OpenRouter)",
|
|
1135
|
-
description: "Google Veo 3.1 (quality tier) via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.
|
|
1136
|
-
cost: { usd: 1.6 },
|
|
1005
|
+
description: "Google Veo 3.1 (quality tier) via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.",
|
|
1137
1006
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1138
1007
|
},
|
|
1139
1008
|
{
|
|
@@ -1142,9 +1011,7 @@ var MODEL_CATALOG = [
|
|
|
1142
1011
|
modality: "video",
|
|
1143
1012
|
task: "image-to-video",
|
|
1144
1013
|
label: "Grok Imagine (KIE)",
|
|
1145
|
-
description: "xAI Grok Imagine via KIE. A start frame, 6 to 30 s, 480p, 720p or 1080p, with audio. Accepted a minted character's photoreal stills on 2026-09-23.
|
|
1146
|
-
cost: { usd: 0.135 },
|
|
1147
|
-
listPrice: { source: "fal", model: "fal/grok-imagine-image-to-video" },
|
|
1014
|
+
description: "xAI Grok Imagine via KIE. A start frame, 6 to 30 s, 480p, 720p or 1080p, with audio. Accepted a minted character's photoreal stills on 2026-09-23. No end frame.",
|
|
1148
1015
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1149
1016
|
},
|
|
1150
1017
|
{
|
|
@@ -1153,9 +1020,7 @@ var MODEL_CATALOG = [
|
|
|
1153
1020
|
modality: "video",
|
|
1154
1021
|
task: "image-to-video",
|
|
1155
1022
|
label: "Grok Imagine 1.5 (KIE, preview)",
|
|
1156
|
-
description: "xAI Grok Imagine 1.5 preview via KIE. A start frame, 1 to 15 s, 480p or 720p. Not yet tested with a minted character.
|
|
1157
|
-
cost: { usd: 0.18 },
|
|
1158
|
-
listPrice: { source: "fal", model: "fal/grok-imagine-1-5-image-to-video" },
|
|
1023
|
+
description: "xAI Grok Imagine 1.5 preview via KIE. A start frame, 1 to 15 s, 480p or 720p. Not yet tested with a minted character. No end frame.",
|
|
1159
1024
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1160
1025
|
},
|
|
1161
1026
|
{
|
|
@@ -1164,9 +1029,7 @@ var MODEL_CATALOG = [
|
|
|
1164
1029
|
modality: "video",
|
|
1165
1030
|
task: "image-to-video",
|
|
1166
1031
|
label: "Kling 2.5 Turbo Pro (KIE)",
|
|
1167
|
-
description: "Kuaishou Kling 2.5 Turbo Pro via KIE. A start frame and an optional end frame, 5 or 10 s, fixed size. The fal route accepted minted characters; this KIE route is not yet tested with a minted character.
|
|
1168
|
-
cost: { usd: 0.21 },
|
|
1169
|
-
listPrice: { source: "fal", model: "fal/kling-v2-5-image-to-video" },
|
|
1032
|
+
description: "Kuaishou Kling 2.5 Turbo Pro via KIE. A start frame and an optional end frame, 5 or 10 s, fixed size. The fal route accepted minted characters; this KIE route is not yet tested with a minted character.",
|
|
1170
1033
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1171
1034
|
},
|
|
1172
1035
|
{
|
|
@@ -1175,9 +1038,7 @@ var MODEL_CATALOG = [
|
|
|
1175
1038
|
modality: "video",
|
|
1176
1039
|
task: "image-to-video",
|
|
1177
1040
|
label: "Kling 2.6 (KIE)",
|
|
1178
|
-
description: "Kuaishou Kling 2.6 via KIE. A start frame, 5 or 10 s, fixed size, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
1179
|
-
cost: { usd: 0.275 },
|
|
1180
|
-
listPrice: { source: "fal", model: "fal/kling-2-6-image-to-video" },
|
|
1041
|
+
description: "Kuaishou Kling 2.6 via KIE. A start frame, 5 or 10 s, fixed size, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
1181
1042
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1182
1043
|
},
|
|
1183
1044
|
{
|
|
@@ -1187,9 +1048,7 @@ var MODEL_CATALOG = [
|
|
|
1187
1048
|
task: "image-to-video",
|
|
1188
1049
|
label: "Seedance 2.0 (KIE)",
|
|
1189
1050
|
refusesPhotorealPeople: true,
|
|
1190
|
-
description: "ByteDance Seedance 2.0 via KIE. A start frame and an optional end frame, 4 to 15 s, 480p to 4K. Seedance 2.0 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.
|
|
1191
|
-
cost: { usd: 1.025 },
|
|
1192
|
-
listPrice: { source: "fal", model: "fal/seedance-2-0-image-to-video" },
|
|
1051
|
+
description: "ByteDance Seedance 2.0 via KIE. A start frame and an optional end frame, 4 to 15 s, 480p to 4K. Seedance 2.0 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.",
|
|
1193
1052
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1194
1053
|
},
|
|
1195
1054
|
{
|
|
@@ -1199,9 +1058,7 @@ var MODEL_CATALOG = [
|
|
|
1199
1058
|
task: "image-to-video",
|
|
1200
1059
|
label: "Seedance 2.5 (KIE)",
|
|
1201
1060
|
refusesPhotorealPeople: true,
|
|
1202
|
-
description: "ByteDance Seedance 2.5 via KIE. A start frame and an optional end frame, 4 to 30 s, 480p to 1080p. Seedance 2.5 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-08-21 and 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.
|
|
1203
|
-
cost: { usd: 1.575 },
|
|
1204
|
-
listPrice: { source: "fal", model: "fal/seedance-2-5-image-to-video" },
|
|
1061
|
+
description: "ByteDance Seedance 2.5 via KIE. A start frame and an optional end frame, 4 to 30 s, 480p to 1080p. Seedance 2.5 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-08-21 and 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.",
|
|
1205
1062
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1206
1063
|
},
|
|
1207
1064
|
{
|
|
@@ -1210,9 +1067,7 @@ var MODEL_CATALOG = [
|
|
|
1210
1067
|
modality: "video",
|
|
1211
1068
|
task: "image-to-video",
|
|
1212
1069
|
label: "Wan 3.0 (KIE)",
|
|
1213
|
-
description: "Alibaba Wan 3.0 via KIE (hosted only, no downloadable weights). A start frame and an optional end frame, 2 to 30 s, 480p, 720p or 1080p, audio included. Accepted a minted character's photoreal stills on 2026-09-24.
|
|
1214
|
-
cost: { usd: 0.4 },
|
|
1215
|
-
listPrice: { source: "fal", model: "fal/wan-3-0-image-to-video" },
|
|
1070
|
+
description: "Alibaba Wan 3.0 via KIE (hosted only, no downloadable weights). A start frame and an optional end frame, 2 to 30 s, 480p, 720p or 1080p, audio included. Accepted a minted character's photoreal stills on 2026-09-24.",
|
|
1216
1071
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1217
1072
|
},
|
|
1218
1073
|
{
|
|
@@ -1221,9 +1076,7 @@ var MODEL_CATALOG = [
|
|
|
1221
1076
|
modality: "video",
|
|
1222
1077
|
task: "image-to-video",
|
|
1223
1078
|
label: "MiniMax H3 (KIE)",
|
|
1224
|
-
description: "MiniMax H3 via KIE. A start frame and an optional end frame, 4 to 15 s, 768p (the 720p setting) or 2K (the 1080p setting). Accepted a minted character's photoreal stills on 2026-09-24. Its open weights exclude the EU by license; this is KIE's hosted service.
|
|
1225
|
-
cost: { usd: 0.24 },
|
|
1226
|
-
listPrice: { source: "unrecorded" },
|
|
1079
|
+
description: "MiniMax H3 via KIE. A start frame and an optional end frame, 4 to 15 s, 768p (the 720p setting) or 2K (the 1080p setting). Accepted a minted character's photoreal stills on 2026-09-24. Its open weights exclude the EU by license; this is KIE's hosted service.",
|
|
1227
1080
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1228
1081
|
},
|
|
1229
1082
|
{
|
|
@@ -1232,9 +1085,7 @@ var MODEL_CATALOG = [
|
|
|
1232
1085
|
modality: "video",
|
|
1233
1086
|
task: "image-to-video",
|
|
1234
1087
|
label: "Gemini Omni 1.1 Flash (KIE)",
|
|
1235
|
-
description: "Google Gemini Omni 1.1 Flash via KIE, first-and-last-frame mode. A start frame and an optional end frame, 4, 6, 8 or 10 s, 720p to 4K, 16:9 or 9:16. KIE refuses registered characters in this mode, so identity comes from the frames alone. Accepted a minted character's photoreal stills on 2026-09-24 (set 9:16 for a portrait still: it defaults to 16:9 and crops).
|
|
1236
|
-
cost: { usd: 0.525 },
|
|
1237
|
-
listPrice: { source: "unrecorded" },
|
|
1088
|
+
description: "Google Gemini Omni 1.1 Flash via KIE, first-and-last-frame mode. A start frame and an optional end frame, 4, 6, 8 or 10 s, 720p to 4K, 16:9 or 9:16. KIE refuses registered characters in this mode, so identity comes from the frames alone. Accepted a minted character's photoreal stills on 2026-09-24 (set 9:16 for a portrait still: it defaults to 16:9 and crops). No fal equivalent.",
|
|
1238
1089
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1239
1090
|
},
|
|
1240
1091
|
{
|
|
@@ -1243,9 +1094,7 @@ var MODEL_CATALOG = [
|
|
|
1243
1094
|
modality: "video",
|
|
1244
1095
|
task: "image-to-video",
|
|
1245
1096
|
label: "Kling O3 (KIE)",
|
|
1246
|
-
description: "Kuaishou Kling O3 (KIE calls it Kling 3.0 Omni) via KIE. A start frame and an optional end frame, 3 to 15 s, 720p to 4K in the start frame's shape, silent unless the job sets generateAudio. Accepted a minted character's photoreal stills on 2026-09-24.
|
|
1247
|
-
cost: { usd: 0.35 },
|
|
1248
|
-
listPrice: { source: "unrecorded" },
|
|
1097
|
+
description: "Kuaishou Kling O3 (KIE calls it Kling 3.0 Omni) via KIE. A start frame and an optional end frame, 3 to 15 s, 720p to 4K in the start frame's shape, silent unless the job sets generateAudio. Accepted a minted character's photoreal stills on 2026-09-24.",
|
|
1249
1098
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1250
1099
|
},
|
|
1251
1100
|
{
|
|
@@ -1254,9 +1103,7 @@ var MODEL_CATALOG = [
|
|
|
1254
1103
|
modality: "video",
|
|
1255
1104
|
task: "image-to-video",
|
|
1256
1105
|
label: "Grok Imagine 1.5 (image-to-video)",
|
|
1257
|
-
description: "xAI Grok Imagine 1.5 via fal, the fallback for the KIE entry. Animates a start frame with audio, 1 to 15 s, 480p to 1080p, in the start frame's shape. Not yet tested with a minted character (1.0 accepted them).
|
|
1258
|
-
// 8 s at the 720p default plus $0.01 for the input image.
|
|
1259
|
-
cost: { usd: 1.13 },
|
|
1106
|
+
description: "xAI Grok Imagine 1.5 via fal, the fallback for the KIE entry. Animates a start frame with audio, 1 to 15 s, 480p to 1080p, in the start frame's shape. Not yet tested with a minted character (1.0 accepted them). No end frame.",
|
|
1260
1107
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1261
1108
|
},
|
|
1262
1109
|
{
|
|
@@ -1265,9 +1112,8 @@ var MODEL_CATALOG = [
|
|
|
1265
1112
|
modality: "video",
|
|
1266
1113
|
task: "image-to-video",
|
|
1267
1114
|
label: "Wan 3.0 (image-to-video)",
|
|
1268
|
-
description: "Alibaba Wan 3.0 via fal, the fallback for the KIE entry. A start frame and an optional end frame, 480p to 1080p (1080p unless set), audio included. Not yet tested with a minted character.
|
|
1115
|
+
description: "Alibaba Wan 3.0 via fal, the fallback for the KIE entry. A start frame and an optional end frame, 480p to 1080p (1080p unless set), audio included. Not yet tested with a minted character.",
|
|
1269
1116
|
// 5 s at fal's 1080p default.
|
|
1270
|
-
cost: { usd: 1 },
|
|
1271
1117
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1272
1118
|
},
|
|
1273
1119
|
{
|
|
@@ -1276,8 +1122,7 @@ var MODEL_CATALOG = [
|
|
|
1276
1122
|
modality: "video",
|
|
1277
1123
|
task: "image-to-video",
|
|
1278
1124
|
label: "Kling 2.6 Pro (image-to-video)",
|
|
1279
|
-
description: "Kuaishou Kling 2.6 Pro via fal, the fallback for the KIE entry. A start frame and an optional end frame, 5 or 10 s, fixed 1080p, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
1280
|
-
cost: { usd: 0.35 },
|
|
1125
|
+
description: "Kuaishou Kling 2.6 Pro via fal, the fallback for the KIE entry. A start frame and an optional end frame, 5 or 10 s, fixed 1080p, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
1281
1126
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1282
1127
|
},
|
|
1283
1128
|
{
|
|
@@ -1286,8 +1131,7 @@ var MODEL_CATALOG = [
|
|
|
1286
1131
|
modality: "video",
|
|
1287
1132
|
task: "image-to-video",
|
|
1288
1133
|
label: "Kling O3 Standard (image-to-video)",
|
|
1289
|
-
description: "Kuaishou Kling O3 Standard via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
1290
|
-
cost: { usd: 0.42 },
|
|
1134
|
+
description: "Kuaishou Kling O3 Standard via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
1291
1135
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1292
1136
|
},
|
|
1293
1137
|
{
|
|
@@ -1296,8 +1140,7 @@ var MODEL_CATALOG = [
|
|
|
1296
1140
|
modality: "video",
|
|
1297
1141
|
task: "image-to-video",
|
|
1298
1142
|
label: "Kling O3 Pro (image-to-video)",
|
|
1299
|
-
description: "Kuaishou Kling O3 Pro via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
1300
|
-
cost: { usd: 0.56 },
|
|
1143
|
+
description: "Kuaishou Kling O3 Pro via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
1301
1144
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1302
1145
|
},
|
|
1303
1146
|
{
|
|
@@ -1306,9 +1149,8 @@ var MODEL_CATALOG = [
|
|
|
1306
1149
|
modality: "video",
|
|
1307
1150
|
task: "image-to-video",
|
|
1308
1151
|
label: "LTX-2.5 Fast (image-to-video)",
|
|
1309
|
-
description: "Lightricks LTX-2.5 Fast (ltx.io calls it Lite) via fal; not served by KIE. A start frame and an optional end frame, 6 to 20 s in 2 s steps, 720p, 1080p or 4K, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.
|
|
1152
|
+
description: "Lightricks LTX-2.5 Fast (ltx.io calls it Lite) via fal; not served by KIE. A start frame and an optional end frame, 6 to 20 s in 2 s steps, 720p, 1080p or 4K, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.",
|
|
1310
1153
|
// 6 s at fal's 1080p default.
|
|
1311
|
-
cost: { usd: 0.78 },
|
|
1312
1154
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1313
1155
|
},
|
|
1314
1156
|
{
|
|
@@ -1317,34 +1159,18 @@ var MODEL_CATALOG = [
|
|
|
1317
1159
|
modality: "video",
|
|
1318
1160
|
task: "image-to-video",
|
|
1319
1161
|
label: "LTX-2.5 Pro (image-to-video)",
|
|
1320
|
-
description: "Lightricks LTX-2.5 Pro via fal; not served by KIE. A start frame and an optional end frame, 6, 8 or 10 s, 720p or 1080p, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.
|
|
1162
|
+
description: "Lightricks LTX-2.5 Pro via fal; not served by KIE. A start frame and an optional end frame, 6, 8 or 10 s, 720p or 1080p, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.",
|
|
1321
1163
|
// 6 s at fal's 1080p default.
|
|
1322
|
-
cost: { usd: 1.02 },
|
|
1323
1164
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1324
1165
|
},
|
|
1325
1166
|
// ── FLUX.3 (Black Forest Labs) ───────────────────────────────────────────
|
|
1326
|
-
// One model, three tiers of the same three input shapes:
|
|
1327
|
-
// draft $0.06/s, fixed 720p, plus a draft_cache bundle (preview)
|
|
1328
|
-
// direct $0.17/s at 720p, $0.29/s at 1080p, one shot (finished)
|
|
1329
|
-
// enhance $0.29/s, fixed 1080p, from the cache only (finished)
|
|
1330
|
-
// Draft + enhance totals $0.35/s, a 21% premium over direct 1080p on a first-try
|
|
1331
|
-
// keeper and cheaper from the second attempt on, which is exactly the
|
|
1332
|
-
// generate-several-pick-one shape. Use direct when one confident render is
|
|
1333
|
-
// enough or 720p is the deliverable; use draft + enhance when a human picks.
|
|
1334
|
-
// The completion handler mirrors each draft's cache into Storage Brain, so an
|
|
1335
|
-
// approval gate between the two can take as long as it needs (measured: the
|
|
1336
|
-
// bundle is ~29 KB and fal enhances from a re-hosted copy, 2026-08-23).
|
|
1337
|
-
// Different model owner than Seedance, so ByteDance partner moderation does
|
|
1338
|
-
// not apply here. That changes which filter runs, and nothing about whether we
|
|
1339
|
-
// hold the depicted person's consent.
|
|
1340
1167
|
{
|
|
1341
1168
|
id: "fal/flux-3-image-to-video-draft",
|
|
1342
1169
|
provider: "fal",
|
|
1343
1170
|
modality: "video",
|
|
1344
1171
|
task: "image-to-video",
|
|
1345
1172
|
label: "FLUX.3 draft (image-to-video)",
|
|
1346
|
-
description: "Black Forest Labs FLUX.3 draft tier via fal. Single opening keyframe, duration auto or 5-20s, fixed 720p, audio ON by default (generate_audio).
|
|
1347
|
-
cost: { usd: 0.3 },
|
|
1173
|
+
description: "Black Forest Labs FLUX.3 draft tier via fal. Single opening keyframe, duration auto or 5-20s, fixed 720p, audio ON by default (generate_audio). Returns a draft_cache for a later full-quality enhance pass, which bills separately. Accepts no resolution, seed or negative prompt. PREVIEW QUALITY: do not ship a draft as a deliverable.",
|
|
1348
1174
|
capabilities: { needsImageInput: true, maxInputImages: 1, emitsDraftCache: true }
|
|
1349
1175
|
},
|
|
1350
1176
|
{
|
|
@@ -1353,8 +1179,7 @@ var MODEL_CATALOG = [
|
|
|
1353
1179
|
modality: "video",
|
|
1354
1180
|
task: "image-to-video",
|
|
1355
1181
|
label: "FLUX.3 draft (first + last frame)",
|
|
1356
|
-
description: "Black Forest Labs FLUX.3 draft tier via fal. Start AND end keyframe, duration 5-20s, fixed 720p, audio ON by default.
|
|
1357
|
-
cost: { usd: 0.3 },
|
|
1182
|
+
description: "Black Forest Labs FLUX.3 draft tier via fal. Start AND end keyframe, duration 5-20s, fixed 720p, audio ON by default. Note it names the start frame start_image_url, not image_url. Minimum 5s, so a 4s cut means rendering 5s and trimming. PREVIEW QUALITY: enhance before shipping.",
|
|
1358
1183
|
capabilities: { needsImageInput: true, maxInputImages: 2, emitsDraftCache: true, acceptsEndFrame: true }
|
|
1359
1184
|
},
|
|
1360
1185
|
{
|
|
@@ -1363,8 +1188,7 @@ var MODEL_CATALOG = [
|
|
|
1363
1188
|
modality: "video",
|
|
1364
1189
|
task: "image-to-video",
|
|
1365
1190
|
label: "FLUX.3 draft (keyframes)",
|
|
1366
|
-
description: "Black Forest Labs FLUX.3 draft tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, fixed 720p, audio ON by default.
|
|
1367
|
-
cost: { usd: 0.3 },
|
|
1191
|
+
description: "Black Forest Labs FLUX.3 draft tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, fixed 720p, audio ON by default. The only endpoint here that expresses motion through more than two keyframes, so it can describe a pass-by or a multi-beat action that a first/last pair structurally cannot. Falls back to deriving two keyframes from the standard start/end inputs. PREVIEW QUALITY: enhance before shipping.",
|
|
1368
1192
|
capabilities: { needsImageInput: true, maxInputImages: 10, emitsDraftCache: true, acceptsKeyframes: true }
|
|
1369
1193
|
},
|
|
1370
1194
|
{
|
|
@@ -1373,8 +1197,7 @@ var MODEL_CATALOG = [
|
|
|
1373
1197
|
modality: "video",
|
|
1374
1198
|
task: "image-to-video",
|
|
1375
1199
|
label: "FLUX.3 (image-to-video)",
|
|
1376
|
-
description: "Black Forest Labs FLUX.3 direct tier via fal. Single opening keyframe, duration auto or 5-20s, resolution 720p (default) or 1080p, audio ON by default.
|
|
1377
|
-
cost: { usd: 0.85 },
|
|
1200
|
+
description: "Black Forest Labs FLUX.3 direct tier via fal. Single opening keyframe, duration auto or 5-20s, resolution 720p (default) or 1080p, audio ON by default. One-shot finished render, returns the seed.",
|
|
1378
1201
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
1379
1202
|
},
|
|
1380
1203
|
{
|
|
@@ -1383,8 +1206,7 @@ var MODEL_CATALOG = [
|
|
|
1383
1206
|
modality: "video",
|
|
1384
1207
|
task: "image-to-video",
|
|
1385
1208
|
label: "FLUX.3 (first + last frame)",
|
|
1386
|
-
description: "Black Forest Labs FLUX.3 direct tier via fal. Start AND end keyframe (start_image_url / end_image_url), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default.
|
|
1387
|
-
cost: { usd: 0.85 },
|
|
1209
|
+
description: "Black Forest Labs FLUX.3 direct tier via fal. Start AND end keyframe (start_image_url / end_image_url), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default. Minimum 5s, so a 4s cut means rendering 5s and trimming. Finished quality, returns the seed.",
|
|
1388
1210
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
1389
1211
|
},
|
|
1390
1212
|
{
|
|
@@ -1393,8 +1215,7 @@ var MODEL_CATALOG = [
|
|
|
1393
1215
|
modality: "video",
|
|
1394
1216
|
task: "image-to-video",
|
|
1395
1217
|
label: "FLUX.3 (keyframes)",
|
|
1396
|
-
description: "Black Forest Labs FLUX.3 direct tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default.
|
|
1397
|
-
cost: { usd: 0.85 },
|
|
1218
|
+
description: "Black Forest Labs FLUX.3 direct tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default. Multi-beat actions and pass-bys that a first/last pair cannot express. Finished quality, returns the seed.",
|
|
1398
1219
|
capabilities: { needsImageInput: true, maxInputImages: 10, acceptsKeyframes: true }
|
|
1399
1220
|
},
|
|
1400
1221
|
{
|
|
@@ -1403,8 +1224,7 @@ var MODEL_CATALOG = [
|
|
|
1403
1224
|
modality: "video",
|
|
1404
1225
|
task: "video-enhance",
|
|
1405
1226
|
label: "FLUX.3 enhance (draft to 1080p)",
|
|
1406
|
-
description: "Black Forest Labs FLUX.3 draft-enhance via fal. Input is ONLY the draft_cache of a FLUX.3 draft node (wire the draft node in; nothing else can be enhanced, only re-rendered). Renders the same take, same motion and composition, at a fixed 1080p with synchronized audio.
|
|
1407
|
-
cost: { usd: 1.45 },
|
|
1227
|
+
description: "Black Forest Labs FLUX.3 draft-enhance via fal. Input is ONLY the draft_cache of a FLUX.3 draft node (wire the draft node in; nothing else can be enhanced, only re-rendered). Renders the same take, same motion and composition, at a fixed 1080p with synchronized audio. No prompt, duration, aspect or audio knobs (all baked into the cache); safety_tolerance only. Output has no seed or cache.",
|
|
1408
1228
|
capabilities: { needsImageInput: false, maxInputImages: 0 },
|
|
1409
1229
|
isDefault: true
|
|
1410
1230
|
},
|
|
@@ -1414,54 +1234,32 @@ var MODEL_CATALOG = [
|
|
|
1414
1234
|
modality: "video",
|
|
1415
1235
|
task: "text-to-video",
|
|
1416
1236
|
label: "Seedance 1.0 Pro (text-to-video)",
|
|
1417
|
-
description: "ByteDance Seedance 1.0 Pro via fal. Text-to-video
|
|
1418
|
-
cost: { usd: 0.62 },
|
|
1237
|
+
description: "ByteDance Seedance 1.0 Pro via fal. Text-to-video. Default text-to-video.",
|
|
1419
1238
|
capabilities: { maxInputImages: 0 },
|
|
1420
1239
|
isDefault: true
|
|
1421
1240
|
},
|
|
1422
|
-
// Video-to-video: Wan 2.2 Animate Replace swaps the person in a source video
|
|
1423
|
-
// for the character in ONE reference image, keeping scene + motion. Priced
|
|
1424
|
-
// per video second by resolution (fal pricing, vetted 2026-08-20): 480p $0.04,
|
|
1425
|
-
// 580p $0.06, 720p $0.08. The catalog usd anchors a 5s clip at 720p, the same
|
|
1426
|
-
// way Kling anchors its base clip; the provider scales by duration + resolution.
|
|
1427
|
-
// Output is 50fps, 720p max. Only model for the task, so it is the default.
|
|
1428
1241
|
{
|
|
1429
1242
|
id: "fal/wan-animate-replace",
|
|
1430
1243
|
provider: "fal",
|
|
1431
1244
|
modality: "video",
|
|
1432
1245
|
task: "video-to-video",
|
|
1433
1246
|
label: "Wan 2.2 Animate Replace (video-to-video)",
|
|
1434
|
-
description: "Wan 2.2 14B Animate Replace via fal. Replaces the person in a source video with the character from one reference image, preserving motion and scene.
|
|
1435
|
-
cost: { usd: 0.4 },
|
|
1247
|
+
description: "Wan 2.2 14B Animate Replace via fal. Replaces the person in a source video with the character from one reference image, preserving motion and scene. Default video-to-video.",
|
|
1436
1248
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
1437
1249
|
isDefault: true
|
|
1438
1250
|
},
|
|
1439
|
-
// Kling O3 Pro Edit (fal, July 2026): also keeps the source clip's motion, but
|
|
1440
|
-
// takes the character as an ELEMENT of up to four images (a front view plus
|
|
1441
|
-
// back and profile views, which a person seen from behind needs) and renders
|
|
1442
|
-
// at the source resolution instead of Wan's 720p cap. $0.168 per output
|
|
1443
|
-
// second at any resolution; the catalog usd anchors 5s like the Wan entry.
|
|
1444
|
-
// Source clip 3 to 15 s, 720 to 3840 px, mp4 or mov (fal enforces).
|
|
1445
1251
|
{
|
|
1446
1252
|
id: "fal/kling-o3-edit",
|
|
1447
1253
|
provider: "fal",
|
|
1448
1254
|
modality: "video",
|
|
1449
1255
|
task: "video-to-video",
|
|
1450
1256
|
label: "Kling O3 Pro Edit (video-to-video)",
|
|
1451
|
-
description: "Kuaishou Kling O3 Pro Edit via fal. Replaces the person in a source video (3 to 15 s) with a character given as up to four images: the first wire is the front view, the rest are further views such as back and profile. Keeps motion, audio and the source resolution.
|
|
1452
|
-
cost: { usd: 0.84 },
|
|
1257
|
+
description: "Kuaishou Kling O3 Pro Edit via fal. Replaces the person in a source video (3 to 15 s) with a character given as up to four images: the first wire is the front view, the rest are further views such as back and profile. Keeps motion, audio and the source resolution.",
|
|
1453
1258
|
// `resolutions: []`: it renders at the source's size and refuses a
|
|
1454
1259
|
// resolution, so the settings panel offers none and validation refuses one.
|
|
1455
1260
|
capabilities: { needsImageInput: true, maxInputImages: 4, resolutions: [] }
|
|
1456
1261
|
},
|
|
1457
1262
|
// ── fal.ai: vision + utility (B4) ──────────────────────────────────────
|
|
1458
|
-
// All sync via fal's subscribe. Two return text/json (vision), two return a
|
|
1459
|
-
// new image (upscale / background-remove). fal bills these per compute second
|
|
1460
|
-
// and does NOT return a per-call cost, so the catalog usd is a UI hint only
|
|
1461
|
-
// (the provider leaves costUsd undefined, same as an unknown image endpoint).
|
|
1462
|
-
// Endpoint ids + schemas verified 2026-06-16 against the fal model /api pages.
|
|
1463
|
-
// Modality stays `image` (these consume / produce images); one isDefault per
|
|
1464
|
-
// (image, task) for the four new tasks.
|
|
1465
1263
|
{
|
|
1466
1264
|
id: "fal/florence-2-detailed-caption",
|
|
1467
1265
|
provider: "fal",
|
|
@@ -1469,7 +1267,6 @@ var MODEL_CATALOG = [
|
|
|
1469
1267
|
task: "image-to-text",
|
|
1470
1268
|
label: "Florence-2 Detailed Caption (fal)",
|
|
1471
1269
|
description: "Microsoft Florence-2 Large detailed caption via fal. Returns a rich text description of an image (caption -> job.output.text, no asset). Default image-to-text.",
|
|
1472
|
-
cost: { usd: 3e-3 },
|
|
1473
1270
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
1474
1271
|
isDefault: true
|
|
1475
1272
|
},
|
|
@@ -1483,7 +1280,6 @@ var MODEL_CATALOG = [
|
|
|
1483
1280
|
task: "video-to-text",
|
|
1484
1281
|
label: "Motion record (Studio)",
|
|
1485
1282
|
description: "Measures a clip's camera motion from its frames (phase correlation every 0.1 s: pan, tilt, dolly, steadiness, subject motion) and writes a deterministic description to job.output.text plus the full record to job.output.json. Runs in Studio, costs nothing. Default video-to-text.",
|
|
1486
|
-
cost: { usd: 0 },
|
|
1487
1283
|
isDefault: true
|
|
1488
1284
|
},
|
|
1489
1285
|
{
|
|
@@ -1493,17 +1289,9 @@ var MODEL_CATALOG = [
|
|
|
1493
1289
|
task: "image-to-json",
|
|
1494
1290
|
label: "MoonDreamNext VQA (fal)",
|
|
1495
1291
|
description: "MoonDreamNext visual question answering via fal. Answers a prompt about an image; the provider parses the answer into structured JSON (-> job.output.json, no asset). Default image-to-json.",
|
|
1496
|
-
cost: { usd: 3e-3 },
|
|
1497
1292
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
1498
1293
|
isDefault: true
|
|
1499
1294
|
},
|
|
1500
|
-
// Judge (P3 J1). The same MoonDreamNext VQA endpoint `fal/moondream-next-vqa`
|
|
1501
|
-
// above already runs shotReview.ts's ranking call, under a separate catalog
|
|
1502
|
-
// id because a catalog entry's `task` is fixed and `listByTask('judge')`
|
|
1503
|
-
// needs at least one entry to give a placed judge node a selectable default
|
|
1504
|
-
// model. Not dispatched yet: `judge` runs as a human gate (`taskExecution`
|
|
1505
|
-
// in task-kind.ts) and makes no model call at all until J5 wires the actual
|
|
1506
|
-
// ranking back onto shotReview.ts rather than a second implementation.
|
|
1507
1295
|
{
|
|
1508
1296
|
id: "fal/moondream-next-vqa-judge",
|
|
1509
1297
|
provider: "fal",
|
|
@@ -1511,22 +1299,16 @@ var MODEL_CATALOG = [
|
|
|
1511
1299
|
task: "judge",
|
|
1512
1300
|
label: "MoonDreamNext VQA (judge ranking)",
|
|
1513
1301
|
description: "The judge node's ranking call: the same MoonDreamNext VQA endpoint shotReview.ts already uses to score a candidate image. A judge node runs as a human GATE (it parks the run on a decision, see taskExecution), so it has no job kind; this model is what P3 J5 will rank candidates with. Default judge.",
|
|
1514
|
-
cost: { usd: 3e-3 },
|
|
1515
1302
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
1516
1303
|
isDefault: true
|
|
1517
1304
|
},
|
|
1518
|
-
// Rig and animate (2026-09-26): Meshy on fal. One entry for both of fal's
|
|
1519
|
-
// Meshy endpoints: a rig with no presets calls `fal-ai/meshy/rigging`, one
|
|
1520
|
-
// with presets calls `fal-ai/meshy/rigging/multi-animation`, and the price
|
|
1521
|
-
// rule is the same for both (models/pricing.ts `meshyRigCostUsd`).
|
|
1522
1305
|
{
|
|
1523
1306
|
id: "fal/meshy-rigging",
|
|
1524
1307
|
provider: "fal",
|
|
1525
1308
|
modality: "3d",
|
|
1526
1309
|
task: "rig",
|
|
1527
1310
|
label: "Meshy rig and animate (fal)",
|
|
1528
|
-
description: "Adds a skeleton and skin weights to a humanoid mesh and applies up to 10 animation presets from Meshy's 678-preset library; walk and run clips are always included.
|
|
1529
|
-
cost: { usd: FAL_MESHY_RIG_USD },
|
|
1311
|
+
description: "Adds a skeleton and skin weights to a humanoid mesh and applies up to 10 animation presets from Meshy's 678-preset library; walk and run clips are always included. Humanoid characters only.",
|
|
1530
1312
|
isDefault: true
|
|
1531
1313
|
},
|
|
1532
1314
|
{
|
|
@@ -1535,8 +1317,7 @@ var MODEL_CATALOG = [
|
|
|
1535
1317
|
modality: "image",
|
|
1536
1318
|
task: "upscale",
|
|
1537
1319
|
label: "AuraSR Upscale (fal)",
|
|
1538
|
-
description: "AuraSR GigaGAN upscaler via fal. Produces a higher-resolution Image asset from a source image (default 4x). Default upscale.
|
|
1539
|
-
cost: { usd: 0.01 },
|
|
1320
|
+
description: "AuraSR GigaGAN upscaler via fal. Produces a higher-resolution Image asset from a source image (default 4x). Default upscale.",
|
|
1540
1321
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
1541
1322
|
isDefault: true
|
|
1542
1323
|
},
|
|
@@ -1546,35 +1327,21 @@ var MODEL_CATALOG = [
|
|
|
1546
1327
|
modality: "image",
|
|
1547
1328
|
task: "background-remove",
|
|
1548
1329
|
label: "BiRefNet v2 Background Removal (fal)",
|
|
1549
|
-
description: "BiRefNet v2 background removal via fal. Produces a transparent-background PNG Image asset from a source image. Default background-remove.
|
|
1550
|
-
cost: { usd: 0.01 },
|
|
1330
|
+
description: "BiRefNet v2 background removal via fal. Produces a transparent-background PNG Image asset from a source image. Default background-remove.",
|
|
1551
1331
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
1552
1332
|
isDefault: true
|
|
1553
1333
|
},
|
|
1554
1334
|
// ── audio: music via Suno-through-KIE (B2) ─────────────────────────────
|
|
1555
|
-
// Async via KIE's Suno job API (createTask -> webhook / record-info poll).
|
|
1556
|
-
// KIE does not return a per-song USD on the result, so the catalog usd is a
|
|
1557
|
-
// flat per-song estimate (~$0.03-$0.04 per song per audio-providers.md, KIE's
|
|
1558
|
-
// markup keeps it in that band). V5 is Suno's current top model.
|
|
1559
1335
|
{
|
|
1560
1336
|
id: "kie/suno-v5",
|
|
1561
1337
|
provider: "kie",
|
|
1562
1338
|
modality: "audio",
|
|
1563
1339
|
task: "text-to-audio",
|
|
1564
1340
|
label: "Suno V5 (KIE)",
|
|
1565
|
-
description: "Suno V5 music generation via KIE. Text-to-music with or without lyrics; ~4 min cap per generation. Default text-to-audio. No IP indemnity (KIE aggregator).
|
|
1566
|
-
cost: { usd: 0.04 },
|
|
1567
|
-
listPrice: { source: "unrecorded" },
|
|
1341
|
+
description: "Suno V5 music generation via KIE. Text-to-music with or without lyrics; ~4 min cap per generation. Default text-to-audio. No IP indemnity (KIE aggregator).",
|
|
1568
1342
|
isDefault: true
|
|
1569
1343
|
},
|
|
1570
1344
|
// ── audio: voice via ElevenLabs (B2) ───────────────────────────────────
|
|
1571
|
-
// Sync against the official ElevenLabs API (xi-api-key). TTS returns audio
|
|
1572
|
-
// bytes inline; STT returns a transcript (text, not a binary asset). Prices
|
|
1573
|
-
// per ElevenLabs API price page (checked 2026-09-27): text-to-speech
|
|
1574
|
-
// Multilingual v2 is $0.10 per 1,000 characters (not about $0.0003 per
|
|
1575
|
-
// character). Scribe v1 is no longer on the price page; Scribe v2 is $0.22
|
|
1576
|
-
// per audio hour. The catalog usd is a per-call hint, the provider does not
|
|
1577
|
-
// bill per call so cost stays approximate.
|
|
1578
1345
|
{
|
|
1579
1346
|
id: "elevenlabs/tts-multilingual-v2",
|
|
1580
1347
|
provider: "elevenlabs",
|
|
@@ -1582,7 +1349,6 @@ var MODEL_CATALOG = [
|
|
|
1582
1349
|
task: "text-to-speech",
|
|
1583
1350
|
label: "ElevenLabs Multilingual v2 (TTS)",
|
|
1584
1351
|
description: "ElevenLabs Multilingual v2 text-to-speech. 99+ languages, brand-voice cloning capable. Default text-to-speech. Returns mp3 bytes synchronously.",
|
|
1585
|
-
cost: { usd: 0.03 },
|
|
1586
1352
|
isDefault: true
|
|
1587
1353
|
},
|
|
1588
1354
|
{
|
|
@@ -1592,28 +1358,16 @@ var MODEL_CATALOG = [
|
|
|
1592
1358
|
task: "speech-to-text",
|
|
1593
1359
|
label: "ElevenLabs Scribe v1 (STT)",
|
|
1594
1360
|
description: "ElevenLabs Scribe v1 speech-to-text. Whisper-class transcription; returns a transcript (text), not a binary asset. Default speech-to-text.",
|
|
1595
|
-
cost: { usd: 0.01 },
|
|
1596
1361
|
isDefault: true
|
|
1597
1362
|
},
|
|
1598
1363
|
// ── text: LLM director (B3) ────────────────────────────────────────────
|
|
1599
|
-
// The director's brain, NOT an asset-generation path: prompt improvement and
|
|
1600
|
-
// shot descriptions via a synchronous TextClient (no Jobs, no Assets). KIE
|
|
1601
|
-
// exposes Claude (Sonnet / Opus) at a lower rate than the official API via an
|
|
1602
|
-
// Anthropic-Messages-compatible endpoint (api.kie.ai/claude/v1/messages,
|
|
1603
|
-
// vetted 2026-06-16); OpenRouter routes the same Claude family through its
|
|
1604
|
-
// OpenAI chat/completions surface and returns the authoritative usage.cost.
|
|
1605
|
-
// KIE / OpenRouter report real cost per call, so the catalog usd is a UI hint.
|
|
1606
|
-
// Exactly one isDefault for (text, text-generation): KIE Sonnet (cheapest
|
|
1607
|
-
// reliable director path with no IP-indemnity concern for internal use).
|
|
1608
1364
|
{
|
|
1609
1365
|
id: "kie/claude-sonnet-4-5",
|
|
1610
1366
|
provider: "kie",
|
|
1611
1367
|
modality: "text",
|
|
1612
1368
|
task: "text-generation",
|
|
1613
1369
|
label: "Claude Sonnet 4.5 (KIE)",
|
|
1614
|
-
description: "Anthropic Claude Sonnet 4.5 via KIE
|
|
1615
|
-
cost: { usd: 0.01 },
|
|
1616
|
-
listPrice: { source: "unrecorded" },
|
|
1370
|
+
description: "Anthropic Claude Sonnet 4.5 via KIE. Default LLM director: prompt improvement + shot descriptions.",
|
|
1617
1371
|
isDefault: true
|
|
1618
1372
|
},
|
|
1619
1373
|
{
|
|
@@ -1622,9 +1376,7 @@ var MODEL_CATALOG = [
|
|
|
1622
1376
|
modality: "text",
|
|
1623
1377
|
task: "text-generation",
|
|
1624
1378
|
label: "Claude Opus 4.5 (KIE)",
|
|
1625
|
-
description: "Anthropic Claude Opus 4.5 via KIE. Higher quality
|
|
1626
|
-
cost: { usd: 0.05 },
|
|
1627
|
-
listPrice: { source: "unrecorded" }
|
|
1379
|
+
description: "Anthropic Claude Opus 4.5 via KIE. Higher quality; use for harder director reasoning."
|
|
1628
1380
|
},
|
|
1629
1381
|
{
|
|
1630
1382
|
id: "openrouter/claude-sonnet-4-6",
|
|
@@ -1632,25 +1384,15 @@ var MODEL_CATALOG = [
|
|
|
1632
1384
|
modality: "text",
|
|
1633
1385
|
task: "text-generation",
|
|
1634
1386
|
label: "Claude Sonnet 4.6 (OpenRouter)",
|
|
1635
|
-
description: "Anthropic Claude Sonnet 4.6 via OpenRouter (OpenAI chat/completions shape). Alternative director path; returns authoritative usage.cost per request."
|
|
1636
|
-
|
|
1637
|
-
},
|
|
1638
|
-
// The prompt-improve models (2026-09-27). Marlin asked for a more capable
|
|
1639
|
-
// model than the default director for the Improve button. On his real
|
|
1640
|
-
// image-edit prompt ("make her look a bit like a red panda, cartoonish, like
|
|
1641
|
-
// from Disney") GPT-6 Astra was the only one of five that kept the "a bit":
|
|
1642
|
-
// a light transformation that keeps her recognizable, at about $0.011 per
|
|
1643
|
-
// rewrite in 6 s. Claude Opus 5.5 wrote the richest detail ($0.012, 9.5 s)
|
|
1644
|
-
// and is Astra's fallback from a different vendor. Costs are that measured
|
|
1645
|
-
// call; OpenRouter bills the real usage.cost.
|
|
1387
|
+
description: "Anthropic Claude Sonnet 4.6 via OpenRouter (OpenAI chat/completions shape). Alternative director path; returns authoritative usage.cost per request."
|
|
1388
|
+
},
|
|
1646
1389
|
{
|
|
1647
1390
|
id: "openrouter/gpt-6-astra",
|
|
1648
1391
|
provider: "openrouter",
|
|
1649
1392
|
modality: "text",
|
|
1650
1393
|
task: "text-generation",
|
|
1651
1394
|
label: "GPT-6 Astra (OpenRouter)",
|
|
1652
|
-
description: "OpenAI GPT-6 Astra, the flagship of the GPT-6 series, via OpenRouter. Writes the Improve rewrites: the most faithful to the intent of a rough prompt in a five-model comparison on 2026-09-27.
|
|
1653
|
-
cost: { usd: 0.011 }
|
|
1395
|
+
description: "OpenAI GPT-6 Astra, the flagship of the GPT-6 series, via OpenRouter. Writes the Improve rewrites: the most faithful to the intent of a rough prompt in a five-model comparison on 2026-09-27."
|
|
1654
1396
|
},
|
|
1655
1397
|
{
|
|
1656
1398
|
id: "openrouter/claude-opus-5-5",
|
|
@@ -1658,8 +1400,7 @@ var MODEL_CATALOG = [
|
|
|
1658
1400
|
modality: "text",
|
|
1659
1401
|
task: "text-generation",
|
|
1660
1402
|
label: "Claude Opus 5.5 (OpenRouter)",
|
|
1661
|
-
description: "Anthropic Claude Opus 5.5 via OpenRouter. The fallback for GPT-6 Astra on Improve, from a different vendor so one outage cannot break it.
|
|
1662
|
-
cost: { usd: 0.012 }
|
|
1403
|
+
description: "Anthropic Claude Opus 5.5 via OpenRouter. The fallback for GPT-6 Astra on Improve, from a different vendor so one outage cannot break it."
|
|
1663
1404
|
},
|
|
1664
1405
|
// ── Vertex AI: fallback path, kept unwired for v0.1 ────────────────────
|
|
1665
1406
|
// Provider code is still in place so a future flip back is one isDefault
|
|
@@ -1689,20 +1430,30 @@ var MODEL_CATALOG = [
|
|
|
1689
1430
|
description: "Vertex AI direct, newest flash variant. Global region. Preview status."
|
|
1690
1431
|
}
|
|
1691
1432
|
];
|
|
1433
|
+
var PINNED_FAL_NOTE = "Pinned to fal: a job on this entry never goes to KIE.";
|
|
1434
|
+
var PINNED_KIE_NOTE = "Pinned to KIE: no fal fallback. Pick the automatic entry of this model to get one.";
|
|
1435
|
+
function withRouteNote(entry) {
|
|
1436
|
+
const role = routeRoleOf(entry.id);
|
|
1437
|
+
if (!role) return entry;
|
|
1438
|
+
const note = role.role === "fallback" ? PINNED_FAL_NOTE : PINNED_KIE_NOTE;
|
|
1439
|
+
return { ...entry, description: `${entry.description ?? ""} ${note}`.trim() };
|
|
1440
|
+
}
|
|
1441
|
+
var MODEL_CATALOG = CATALOG_ENTRIES.map(withRouteNote);
|
|
1692
1442
|
var routeEntries = /* @__PURE__ */ new Map();
|
|
1693
1443
|
function routeEntry(id) {
|
|
1694
1444
|
const cached = routeEntries.get(id);
|
|
1695
1445
|
if (cached) return cached;
|
|
1696
1446
|
const route = getRoute(id);
|
|
1697
|
-
const primary = route ?
|
|
1447
|
+
const primary = route ? CATALOG_ENTRIES.find((m) => m.id === route.primary) : void 0;
|
|
1698
1448
|
if (!route || !primary) return void 0;
|
|
1699
1449
|
const entry = {
|
|
1700
1450
|
...primary,
|
|
1701
|
-
//
|
|
1451
|
+
// Whether a route is the default of its task is `getDefaultModelId`'s
|
|
1452
|
+
// answer, never a flag copied from its KIE side.
|
|
1702
1453
|
isDefault: void 0,
|
|
1703
1454
|
id: route.id,
|
|
1704
1455
|
label: route.label,
|
|
1705
|
-
description: `Runs on KIE first and, when KIE fails on its side, again on fal with the same settings. ${primary.description ?? ""}`.trim()
|
|
1456
|
+
description: `Runs on KIE first and, when KIE fails on its side, again on fal with the same settings. ` + `To keep a job off KIE, pin the fal entry of this model. ${primary.description ?? ""}`.trim()
|
|
1706
1457
|
};
|
|
1707
1458
|
routeEntries.set(id, entry);
|
|
1708
1459
|
return entry;
|
|
@@ -1710,937 +1461,7 @@ function routeEntry(id) {
|
|
|
1710
1461
|
function tryGetModel(id) {
|
|
1711
1462
|
return MODEL_CATALOG.find((m) => m.id === id) ?? routeEntry(id);
|
|
1712
1463
|
}
|
|
1713
|
-
|
|
1714
|
-
[0, "Idle", "DailyActions", "Idle"],
|
|
1715
|
-
[1, "Walking_Woman", "WalkAndRun", "Walking"],
|
|
1716
|
-
[2, "Alert", "DailyActions", "LookingAround"],
|
|
1717
|
-
[3, "Arise", "DailyActions", "LookingAround"],
|
|
1718
|
-
[4, "Attack", "Fighting", "AttackingwithWeapon"],
|
|
1719
|
-
[5, "BackLeft_run", "WalkAndRun", "Running"],
|
|
1720
|
-
[6, "BackRight_Run", "WalkAndRun", "Running"],
|
|
1721
|
-
[7, "BeHit_FlyUp", "Fighting", "GettingHit"],
|
|
1722
|
-
[8, "Dead", "Fighting", "Dying"],
|
|
1723
|
-
[9, "ForwardLeft_Run_Fight", "Fighting", "Transitioning"],
|
|
1724
|
-
[10, "ForwardRight_Run_Fight", "Fighting", "Transitioning"],
|
|
1725
|
-
[11, "Idle_02", "DailyActions", "Idle"],
|
|
1726
|
-
[12, "Idle_03", "DailyActions", "Idle"],
|
|
1727
|
-
[13, "Jump_Run", "WalkAndRun", "Running"],
|
|
1728
|
-
[14, "Run_02", "WalkAndRun", "Running"],
|
|
1729
|
-
[15, "Run_03", "WalkAndRun", "Running"],
|
|
1730
|
-
[16, "RunFast", "WalkAndRun", "Running"],
|
|
1731
|
-
[17, "Skill_01", "BodyMovements", "Acting"],
|
|
1732
|
-
[18, "Skill_02", "BodyMovements", "Acting"],
|
|
1733
|
-
[19, "Skill_03", "BodyMovements", "Acting"],
|
|
1734
|
-
[20, "Walk_Fight_Back", "WalkAndRun", "Walking"],
|
|
1735
|
-
[21, "Walk_Fight_Forward", "WalkAndRun", "Walking"],
|
|
1736
|
-
[22, "FunnyDancing_01", "Dancing", "Dancing"],
|
|
1737
|
-
[23, "FunnyDancing_02", "Dancing", "Dancing"],
|
|
1738
|
-
[24, "FunnyDancing_03", "Dancing", "Dancing"],
|
|
1739
|
-
[25, "Agree_Gesture", "DailyActions", "Interacting"],
|
|
1740
|
-
[26, "Angry_Stomp", "DailyActions", "Interacting"],
|
|
1741
|
-
[27, "Big_Heart_Gesture", "BodyMovements", "Acting"],
|
|
1742
|
-
[28, "Big_Wave_Hello", "DailyActions", "Interacting"],
|
|
1743
|
-
[29, "Call_Gesture", "BodyMovements", "Acting"],
|
|
1744
|
-
[30, "Casual_Walk", "WalkAndRun", "Walking"],
|
|
1745
|
-
[31, "Catching_Breath", "BodyMovements", "Acting"],
|
|
1746
|
-
[32, "Chair_Sit_Idle_F", "DailyActions", "Idle"],
|
|
1747
|
-
[33, "Chair_Sit_Idle_M", "DailyActions", "Idle"],
|
|
1748
|
-
[34, "Checkout_Gesture", "DailyActions", "Interacting"],
|
|
1749
|
-
[35, "Clapping_Run", "BodyMovements", "Acting"],
|
|
1750
|
-
[36, "Confused_Scratch", "DailyActions", "Idle"],
|
|
1751
|
-
[37, "Discuss_While_Moving", "DailyActions", "Interacting"],
|
|
1752
|
-
[38, "Dozing_Elderly", "DailyActions", "Idle"],
|
|
1753
|
-
[39, "Excited_Walk_F", "BodyMovements", "Acting"],
|
|
1754
|
-
[40, "Excited_Walk_M", "BodyMovements", "Acting"],
|
|
1755
|
-
[41, "Formal_Bow", "DailyActions", "Interacting"],
|
|
1756
|
-
[42, "Gentlemans_Bow", "DailyActions", "Interacting"],
|
|
1757
|
-
[43, "Handbag_Walk", "BodyMovements", "Acting"],
|
|
1758
|
-
[44, "Happy_jump_f", "BodyMovements", "Acting"],
|
|
1759
|
-
[45, "Indoor_Play", "BodyMovements", "Acting"],
|
|
1760
|
-
[46, "Jump_Rope", "BodyMovements", "Acting"],
|
|
1761
|
-
[47, "Listening_Gesture", "DailyActions", "Interacting"],
|
|
1762
|
-
[48, "Mirror_Viewing", "DailyActions", "Idle"],
|
|
1763
|
-
[49, "Motivational_Cheer", "DailyActions", "Interacting"],
|
|
1764
|
-
[50, "Phone_Call_Gesture", "DailyActions", "Interacting"],
|
|
1765
|
-
[51, "Shouting_Angrily", "BodyMovements", "Acting"],
|
|
1766
|
-
[52, "Sit_to_Stand_Transition_F", "DailyActions", "Transitioning"],
|
|
1767
|
-
[53, "Sit_to_Stand_Transition_M", "DailyActions", "Transitioning"],
|
|
1768
|
-
[54, "Squat_Stance", "Dancing", "Dancing"],
|
|
1769
|
-
[55, "Stage_Walk", "WalkAndRun", "Walking"],
|
|
1770
|
-
[56, "Stand_and_Chat", "DailyActions", "Interacting"],
|
|
1771
|
-
[57, "Stand_to_Sit_Transition_M", "DailyActions", "Transitioning"],
|
|
1772
|
-
[58, "Step_to_Sit_Transition", "DailyActions", "Transitioning"],
|
|
1773
|
-
[59, "Victory_Cheer", "BodyMovements", "Acting"],
|
|
1774
|
-
[60, "Walk_to_Sit", "DailyActions", "Transitioning"],
|
|
1775
|
-
[61, "happy_jump_m", "BodyMovements", "Acting"],
|
|
1776
|
-
[62, "penguin_walk", "BodyMovements", "Acting"],
|
|
1777
|
-
[63, "Arm_Circle_Shuffle", "Dancing", "Dancing"],
|
|
1778
|
-
[64, "All_Night_Dance", "Dancing", "Dancing"],
|
|
1779
|
-
[65, "Bass_Beats", "Dancing", "Dancing"],
|
|
1780
|
-
[66, "Boom_Dance", "Dancing", "Dancing"],
|
|
1781
|
-
[67, "Bubble_Dance", "Dancing", "Dancing"],
|
|
1782
|
-
[68, "Cherish_Pop_Dance", "Dancing", "Dancing"],
|
|
1783
|
-
[69, "Crystal_Beads", "Dancing", "Dancing"],
|
|
1784
|
-
[70, "Cardio_Dance", "Dancing", "Dancing"],
|
|
1785
|
-
[71, "Denim_Pop_Dance", "Dancing", "Dancing"],
|
|
1786
|
-
[72, "Dont_You_Dare", "Dancing", "Dancing"],
|
|
1787
|
-
[73, "Fast_Lightning", "Dancing", "Dancing"],
|
|
1788
|
-
[74, "Gangnam_Groove", "Dancing", "Dancing"],
|
|
1789
|
-
[75, "Indoor_Swing", "Dancing", "Dancing"],
|
|
1790
|
-
[76, "Love_You_Pop_Dance", "Dancing", "Dancing"],
|
|
1791
|
-
[77, "Magic_Genie", "Dancing", "Dancing"],
|
|
1792
|
-
[78, "Not_Your_Mom", "Dancing", "Dancing"],
|
|
1793
|
-
[79, "OMG_Groove", "Dancing", "Dancing"],
|
|
1794
|
-
[80, "Pop_Dance_LSA2", "Dancing", "Dancing"],
|
|
1795
|
-
[81, "Pod_Baby_Groove", "Dancing", "Dancing"],
|
|
1796
|
-
[82, "Shake_It_Off_Dance", "Dancing", "Dancing"],
|
|
1797
|
-
[83, "Superlove_Pop_Dance", "Dancing", "Dancing"],
|
|
1798
|
-
[84, "You_Groove", "Dancing", "Dancing"],
|
|
1799
|
-
[85, "Axe_Stance", "Fighting", "Transitioning"],
|
|
1800
|
-
[86, "Basic_Jump", "Fighting", "AttackingwithWeapon"],
|
|
1801
|
-
[87, "Boxing_Practice", "Fighting", "Punching"],
|
|
1802
|
-
[88, "Chest_Pound_Taunt", "Fighting", "Transitioning"],
|
|
1803
|
-
[89, "Combat_Stance", "Fighting", "AttackingwithWeapon"],
|
|
1804
|
-
[90, "Counterstrike", "Fighting", "Punching"],
|
|
1805
|
-
[91, "Double_Blade_Spin", "Fighting", "AttackingwithWeapon"],
|
|
1806
|
-
[92, "Double_Combo_Attack", "Fighting", "AttackingwithWeapon"],
|
|
1807
|
-
[93, "Dodge_and_Counter", "Fighting", "Punching"],
|
|
1808
|
-
[94, "Flying_Fist_Kick", "Fighting", "Punching"],
|
|
1809
|
-
[95, "Gun_Hold_Left_Turn", "Fighting", "AttackingwithWeapon"],
|
|
1810
|
-
[96, "Kung_Fu_Punch", "Fighting", "Punching"],
|
|
1811
|
-
[97, "Left_Slash", "Fighting", "AttackingwithWeapon"],
|
|
1812
|
-
[98, "Run_and_Shoot", "Fighting", "AttackingwithWeapon"],
|
|
1813
|
-
[99, "Reaping_Swing", "Fighting", "Transitioning"],
|
|
1814
|
-
[100, "Rightward_Spin", "Fighting", "Transitioning"],
|
|
1815
|
-
[101, "Sword_Shout", "BodyMovements", "Acting"],
|
|
1816
|
-
[102, "Sword_Judgment", "Fighting", "AttackingwithWeapon"],
|
|
1817
|
-
[103, "Simple_Kick", "Fighting", "AttackingwithWeapon"],
|
|
1818
|
-
[104, "Side_Shot", "Fighting", "AttackingwithWeapon"],
|
|
1819
|
-
[105, "Triple_Combo_Attack", "Fighting", "AttackingwithWeapon"],
|
|
1820
|
-
[106, "Confident_Walk", "WalkAndRun", "Walking"],
|
|
1821
|
-
[107, "Confident_Strut", "WalkAndRun", "Walking"],
|
|
1822
|
-
[108, "Flirty_Strut", "WalkAndRun", "Walking"],
|
|
1823
|
-
[109, "Groovy_Walk", "BodyMovements", "Acting"],
|
|
1824
|
-
[110, "Hello_Run", "WalkAndRun", "Running"],
|
|
1825
|
-
[111, "Injured_Walk", "WalkAndRun", "Walking"],
|
|
1826
|
-
[112, "Monster_Walk", "WalkAndRun", "Walking"],
|
|
1827
|
-
[113, "Mummy_Stagger", "BodyMovements", "Acting"],
|
|
1828
|
-
[114, "Proud_Strut", "WalkAndRun", "Walking"],
|
|
1829
|
-
[115, "Quick_Walk", "WalkAndRun", "Walking"],
|
|
1830
|
-
[116, "Run_to_Walk_Transition", "WalkAndRun", "Walking"],
|
|
1831
|
-
[117, "Red_Carpet_Walk", "WalkAndRun", "Walking"],
|
|
1832
|
-
[118, "Skip_Forward", "WalkAndRun", "Walking"],
|
|
1833
|
-
[119, "Slow_Orc_Walk", "WalkAndRun", "Walking"],
|
|
1834
|
-
[120, "Touch_and_Run", "WalkAndRun", "Running"],
|
|
1835
|
-
[121, "Thoughtful_Walk", "WalkAndRun", "Walking"],
|
|
1836
|
-
[122, "Texting_Walk", "WalkAndRun", "Walking"],
|
|
1837
|
-
[123, "Unsteady_Walk", "WalkAndRun", "Walking"],
|
|
1838
|
-
[124, "Walking_with_Phone", "WalkAndRun", "Walking"],
|
|
1839
|
-
[125, "Charged_Spell_Cast", "Fighting", "CastingSpell"],
|
|
1840
|
-
[126, "Charged_Spell_Cast_1", "Fighting", "CastingSpell"],
|
|
1841
|
-
[127, "Charged_Ground_Slam", "Fighting", "CastingSpell"],
|
|
1842
|
-
[128, "Heavy_Hammer_Swing", "Fighting", "AttackingwithWeapon"],
|
|
1843
|
-
[129, "mage_soell_cast", "Fighting", "CastingSpell"],
|
|
1844
|
-
[130, "mage_soell_cast_1", "Fighting", "CastingSpell"],
|
|
1845
|
-
[131, "mage_soell_cast_2", "Fighting", "CastingSpell"],
|
|
1846
|
-
[132, "mage_soell_cast_3", "Fighting", "CastingSpell"],
|
|
1847
|
-
[133, "mage_soell_cast_4", "Fighting", "CastingSpell"],
|
|
1848
|
-
[134, "mage_soell_cast_5", "Fighting", "CastingSpell"],
|
|
1849
|
-
[135, "mage_soell_cast_6", "Fighting", "CastingSpell"],
|
|
1850
|
-
[136, "mage_soell_cast_7", "Fighting", "CastingSpell"],
|
|
1851
|
-
[137, "mage_soell_cast_8", "Fighting", "CastingSpell"],
|
|
1852
|
-
[138, "Block1", "Fighting", "Blocking"],
|
|
1853
|
-
[139, "Block2", "Fighting", "Blocking"],
|
|
1854
|
-
[140, "Block3", "Fighting", "Blocking"],
|
|
1855
|
-
[141, "Block4", "Fighting", "Blocking"],
|
|
1856
|
-
[142, "Block5", "Fighting", "Blocking"],
|
|
1857
|
-
[143, "Block6", "Fighting", "Blocking"],
|
|
1858
|
-
[144, "Block8", "Fighting", "Blocking"],
|
|
1859
|
-
[145, "Block9", "Fighting", "Blocking"],
|
|
1860
|
-
[146, "Block10", "Fighting", "Blocking"],
|
|
1861
|
-
[147, "Sword_Parry", "Fighting", "Blocking"],
|
|
1862
|
-
[148, "Sword_Parry_Backward", "Fighting", "Blocking"],
|
|
1863
|
-
[149, "Two_Handed_Parry", "Fighting", "Blocking"],
|
|
1864
|
-
[150, "Hit_Reaction_with_Bow", "Fighting", "Blocking"],
|
|
1865
|
-
[151, "Sword_Parry_Backward_1", "Fighting", "Blocking"],
|
|
1866
|
-
[152, "Sword_Parry_Backward_2", "Fighting", "Blocking"],
|
|
1867
|
-
[153, "Sword_Parry_Backward_3", "Fighting", "Blocking"],
|
|
1868
|
-
[154, "Sword_Parry_Backward_4", "Fighting", "Blocking"],
|
|
1869
|
-
[155, "Sword_Parry_Backward_5", "Fighting", "Blocking"],
|
|
1870
|
-
[156, "Stand_Dodge", "Fighting", "Transitioning"],
|
|
1871
|
-
[157, "Stand_Dodge_1", "Fighting", "Transitioning"],
|
|
1872
|
-
[158, "Roll_Dodge", "Fighting", "Transitioning"],
|
|
1873
|
-
[159, "Roll_Dodge_1", "Fighting", "Transitioning"],
|
|
1874
|
-
[160, "Roll_Dodge_2", "Fighting", "Transitioning"],
|
|
1875
|
-
[161, "Roll_Dodge_3", "Fighting", "Transitioning"],
|
|
1876
|
-
[162, "Stand_Dodge_2", "Fighting", "Transitioning"],
|
|
1877
|
-
[163, "Roll_Dodge_4", "Fighting", "Transitioning"],
|
|
1878
|
-
[164, "Stand_Dodge_3", "Fighting", "Transitioning"],
|
|
1879
|
-
[165, "Kneeling_Reload", "Fighting", "Transitioning"],
|
|
1880
|
-
[166, "Running_Reload", "Fighting", "Transitioning"],
|
|
1881
|
-
[167, "Slow_Walk_Reload", "Fighting", "Transitioning"],
|
|
1882
|
-
[168, "Prone_Reload", "Fighting", "Transitioning"],
|
|
1883
|
-
[169, "Forward_Reload_Subtle", "Fighting", "Transitioning"],
|
|
1884
|
-
[170, "Standing_Reload", "Fighting", "Transitioning"],
|
|
1885
|
-
[171, "Hit_Reaction_to_Waist", "Fighting", "Transitioning"],
|
|
1886
|
-
[172, "Electrocution_Reaction", "Fighting", "GettingHit"],
|
|
1887
|
-
[173, "Slap_Reaction", "Fighting", "GettingHit"],
|
|
1888
|
-
[174, "Face_Punch_Reaction", "Fighting", "GettingHit"],
|
|
1889
|
-
[175, "Face_Punch_Reaction_1", "Fighting", "GettingHit"],
|
|
1890
|
-
[176, "Face_Punch_Reaction_2", "Fighting", "GettingHit"],
|
|
1891
|
-
[177, "Gunshot_Reaction", "Fighting", "GettingHit"],
|
|
1892
|
-
[178, "Hit_Reaction", "Fighting", "GettingHit"],
|
|
1893
|
-
[179, "Hit_Reaction_1", "Fighting", "GettingHit"],
|
|
1894
|
-
[180, "Shot_in_the_Back_and_Fall", "Fighting", "GettingHit"],
|
|
1895
|
-
[181, "Electrocuted_Fall", "Fighting", "Dying"],
|
|
1896
|
-
[182, "Shot_and_Blown_Back", "Fighting", "Dying"],
|
|
1897
|
-
[183, "Shot_and_Fall_Backward", "Fighting", "Dying"],
|
|
1898
|
-
[184, "Shot_and_Fall_Forward", "Fighting", "Dying"],
|
|
1899
|
-
[185, "Shot_and_Slow_Fall_Backward", "Fighting", "Dying"],
|
|
1900
|
-
[186, "Strangled_and_Fall_Forward", "Fighting", "Dying"],
|
|
1901
|
-
[187, "Knock_Down", "Fighting", "Dying"],
|
|
1902
|
-
[188, "Fall_Dead_from_Abdominal_Injury", "Fighting", "Dying"],
|
|
1903
|
-
[189, "dying_backwards", "Fighting", "Dying"],
|
|
1904
|
-
[190, "Knock_Down_1", "Fighting", "Dying"],
|
|
1905
|
-
[191, "Left_Jab_from_Guard", "Fighting", "Punching"],
|
|
1906
|
-
[192, "Right_Jab_from_Guard", "Fighting", "Punching"],
|
|
1907
|
-
[193, "Left_Hook_from_Guard", "Fighting", "Punching"],
|
|
1908
|
-
[194, "Right_Uppercut_from_Guard", "Fighting", "Punching"],
|
|
1909
|
-
[195, "Right_Upper_Hook_from_Guard", "Fighting", "Punching"],
|
|
1910
|
-
[196, "Left_Uppercut_from_Guard", "Fighting", "Punching"],
|
|
1911
|
-
[197, "Left_Short_Hook_from_Guard", "Fighting", "Punching"],
|
|
1912
|
-
[198, "Punch_Combo", "Fighting", "Punching"],
|
|
1913
|
-
[199, "Weapon_Combo", "Fighting", "Punching"],
|
|
1914
|
-
[200, "Punch_Combo_1", "Fighting", "Punching"],
|
|
1915
|
-
[201, "Punch_Combo_2", "Fighting", "Punching"],
|
|
1916
|
-
[202, "Weapon_Combo_1", "Fighting", "Punching"],
|
|
1917
|
-
[203, "Punch_Combo_3", "Fighting", "Punching"],
|
|
1918
|
-
[204, "Punch_Combo_4", "Fighting", "Punching"],
|
|
1919
|
-
[205, "Punch_Combo_5", "Fighting", "Punching"],
|
|
1920
|
-
[206, "Spartan_Kick", "Fighting", "Punching"],
|
|
1921
|
-
[207, "Roundhouse_Kick", "Fighting", "Punching"],
|
|
1922
|
-
[208, "Lunge_Roundhouse_Kick", "Fighting", "Punching"],
|
|
1923
|
-
[209, "Boxing_Guard_Right_Straight_Kick", "Fighting", "Punching"],
|
|
1924
|
-
[210, "Boxing_Guard_Prep_Straight_Punch", "Fighting", "Punching"],
|
|
1925
|
-
[211, "Boxing_Guard_Step_Knee_Strike", "Fighting", "Punching"],
|
|
1926
|
-
[212, "Elbow_Strike", "Fighting", "Punching"],
|
|
1927
|
-
[213, "Leg_Sweep", "Fighting", "Punching"],
|
|
1928
|
-
[214, "Punch_Forward_with_Both_Fists", "Fighting", "Punching"],
|
|
1929
|
-
[215, "High_Kick", "Fighting", "Punching"],
|
|
1930
|
-
[216, "Lunge_Spin_Kick", "Fighting", "Punching"],
|
|
1931
|
-
[217, "Sweeping_Kick", "Fighting", "Punching"],
|
|
1932
|
-
[218, "Step_in_High_Kick", "Fighting", "Punching"],
|
|
1933
|
-
[219, "Right_Hand_Sword_Slash", "Fighting", "Punching"],
|
|
1934
|
-
[220, "Shield_Push_Left", "Fighting", "Punching"],
|
|
1935
|
-
[221, "Charged_Upward_Slash", "Fighting", "Punching"],
|
|
1936
|
-
[222, "Draw_and_Shoot_from_Back", "Fighting", "AttackingwithWeapon"],
|
|
1937
|
-
[223, "Draw_and_Shoot_from_Back_1", "Fighting", "AttackingwithWeapon"],
|
|
1938
|
-
[224, "Archery_Shot", "Fighting", "AttackingwithWeapon"],
|
|
1939
|
-
[225, "Archery_Shot_1", "Fighting", "AttackingwithWeapon"],
|
|
1940
|
-
[226, "Archery_Shot_2", "Fighting", "AttackingwithWeapon"],
|
|
1941
|
-
[227, "Archery_Shot_3", "Fighting", "AttackingwithWeapon"],
|
|
1942
|
-
[228, "Walk_Forward_with_Bow_Aimed", "Fighting", "AttackingwithWeapon"],
|
|
1943
|
-
[229, "Draw_and_Shoot_from_Back_2", "Fighting", "AttackingwithWeapon"],
|
|
1944
|
-
[230, "Walk_Backward_with_Bow_Aimed", "Fighting", "AttackingwithWeapon"],
|
|
1945
|
-
[231, "Archery_Aim_with_Lateral_Scan", "Fighting", "AttackingwithWeapon"],
|
|
1946
|
-
[232, "Cowboy_Quick_Draw_Shooting", "Fighting", "AttackingwithWeapon"],
|
|
1947
|
-
[233, "Walk_Backward_While_Shooting", "Fighting", "AttackingwithWeapon"],
|
|
1948
|
-
[234, "Walk_Forward_While_Shooting", "Fighting", "AttackingwithWeapon"],
|
|
1949
|
-
[235, "Forward_Roll_and_Fire", "Fighting", "AttackingwithWeapon"],
|
|
1950
|
-
[236, "Draw_and_Shoot_Left", "Fighting", "AttackingwithWeapon"],
|
|
1951
|
-
[237, "Charged_Axe_Chop", "Fighting", "AttackingwithWeapon"],
|
|
1952
|
-
[238, "Axe_Spin_Attack", "Fighting", "AttackingwithWeapon"],
|
|
1953
|
-
[239, "Crouch_Pull_and_Throw", "Fighting", "AttackingwithWeapon"],
|
|
1954
|
-
[240, "Thrust_Slash", "Fighting", "AttackingwithWeapon"],
|
|
1955
|
-
[241, "Weapon_Combo_2", "Fighting", "AttackingwithWeapon"],
|
|
1956
|
-
[242, "Charged_Slash", "Fighting", "AttackingwithWeapon"],
|
|
1957
|
-
[243, "Idle_3", "DailyActions", "Idle"],
|
|
1958
|
-
[244, "Idle_4", "DailyActions", "Idle"],
|
|
1959
|
-
[245, "Idle_5", "DailyActions", "Idle"],
|
|
1960
|
-
[246, "Idle_6", "DailyActions", "Idle"],
|
|
1961
|
-
[247, "Idle_7", "DailyActions", "Idle"],
|
|
1962
|
-
[248, "Idle_8", "DailyActions", "Idle"],
|
|
1963
|
-
[249, "Idle_9", "DailyActions", "Idle"],
|
|
1964
|
-
[250, "Idle_10", "DailyActions", "Idle"],
|
|
1965
|
-
[251, "Idle_11", "DailyActions", "Idle"],
|
|
1966
|
-
[252, "Idle_12", "DailyActions", "Idle"],
|
|
1967
|
-
[253, "Idle_13", "DailyActions", "Idle"],
|
|
1968
|
-
[254, "Idle_14", "DailyActions", "Idle"],
|
|
1969
|
-
[255, "Angry_Ground_Stomp", "DailyActions", "Idle"],
|
|
1970
|
-
[256, "Angry_Ground_Stomp_1", "DailyActions", "Idle"],
|
|
1971
|
-
[257, "Angry_Ground_Stomp_2", "DailyActions", "Idle"],
|
|
1972
|
-
[258, "CrouchLookAroundBow", "DailyActions", "Idle"],
|
|
1973
|
-
[259, "Step_Forward_and_Push", "DailyActions", "Pushing"],
|
|
1974
|
-
[260, "Push_Forward_and_Stop", "DailyActions", "Pushing"],
|
|
1975
|
-
[261, "Push_and_Walk_Forward", "DailyActions", "Pushing"],
|
|
1976
|
-
[262, "Crouch_and_Push_Forward", "DailyActions", "Pushing"],
|
|
1977
|
-
[263, "Sleep_on_Desk", "DailyActions", "Sleeping"],
|
|
1978
|
-
[264, "Cough_While_Sleeping", "DailyActions", "Sleeping"],
|
|
1979
|
-
[265, "Groan_Holding_Stomach_in_Sleep", "DailyActions", "Sleeping"],
|
|
1980
|
-
[266, "Lie_Down_Hands_Spread", "DailyActions", "Sleeping"],
|
|
1981
|
-
[267, "Sleep_Normally", "DailyActions", "Sleeping"],
|
|
1982
|
-
[268, "Sit_and_Doze_Off", "DailyActions", "Sleeping"],
|
|
1983
|
-
[269, "sleep", "DailyActions", "Sleeping"],
|
|
1984
|
-
[270, "Toss_and_Turn", "DailyActions", "Sleeping"],
|
|
1985
|
-
[271, "Wake_Up_and_Look_Up", "DailyActions", "Sleeping"],
|
|
1986
|
-
[272, "Lie_on_Chair_Sunbathe_and_Sleep", "DailyActions", "Sleeping"],
|
|
1987
|
-
[273, "Male_Run_Forward_Pick_Up_Left", "DailyActions", "PickingUpItem"],
|
|
1988
|
-
[274, "Female_Crouch_Pick_Up_Place_Side", "DailyActions", "PickingUpItem"],
|
|
1989
|
-
[275, "Female_Run_Forward_Pick_Up_Right", "DailyActions", "PickingUpItem"],
|
|
1990
|
-
[276, "Male_Bend_Over_Pick_Up", "DailyActions", "PickingUpItem"],
|
|
1991
|
-
[277, "Female_Crouch_Pick_Fruit_Basket_Stand", "DailyActions", "PickingUpItem"],
|
|
1992
|
-
[278, "Female_Stand_Pick_Fruit_Basket", "DailyActions", "PickingUpItem"],
|
|
1993
|
-
[279, "Female_Crouch_Pick_Gun_Point_Forward", "DailyActions", "PickingUpItem"],
|
|
1994
|
-
[280, "Female_Crouch_Pick_Throw_Forward", "DailyActions", "PickingUpItem"],
|
|
1995
|
-
[281, "Female_Bend_Over_Pick_Up_Inspect", "DailyActions", "PickingUpItem"],
|
|
1996
|
-
[282, "Female_Walk_Pick_Put_In_Pocket", "DailyActions", "PickingUpItem"],
|
|
1997
|
-
[283, "Pull_Radish", "DailyActions", "PickingUpItem"],
|
|
1998
|
-
[284, "Collect_Object", "DailyActions", "PickingUpItem"],
|
|
1999
|
-
[285, "open_door", "DailyActions", "Interacting"],
|
|
2000
|
-
[286, "open_door_1", "DailyActions", "Interacting"],
|
|
2001
|
-
[287, "open_door_2", "DailyActions", "Interacting"],
|
|
2002
|
-
[288, "open_door_3", "DailyActions", "Interacting"],
|
|
2003
|
-
[289, "open_door_4", "DailyActions", "Interacting"],
|
|
2004
|
-
[290, "Wave_One_Hand", "DailyActions", "Interacting"],
|
|
2005
|
-
[291, "Wave_for_Help", "DailyActions", "Interacting"],
|
|
2006
|
-
[292, "Gesture_with_Hand_on_Gun", "DailyActions", "Interacting"],
|
|
2007
|
-
[293, "Wave_for_Help_1", "DailyActions", "Interacting"],
|
|
2008
|
-
[294, "Wave_for_Help_2", "DailyActions", "Interacting"],
|
|
2009
|
-
[295, "Wave_for_Help_3", "DailyActions", "Interacting"],
|
|
2010
|
-
[296, "Wave_for_Help_4", "DailyActions", "Interacting"],
|
|
2011
|
-
[297, "Personalized_Gesture", "DailyActions", "Interacting"],
|
|
2012
|
-
[298, "Cheer_with_Both_Hands_Up", "DailyActions", "Interacting"],
|
|
2013
|
-
[299, "Stand_Clap_and_Sit_Down", "DailyActions", "Interacting"],
|
|
2014
|
-
[300, "Sit_Cheer_with_Left_Hand", "DailyActions", "Interacting"],
|
|
2015
|
-
[301, "Cheer_with_Both_Hands_1", "DailyActions", "Interacting"],
|
|
2016
|
-
[302, "Stand_Wave_and_Sit_Down", "DailyActions", "Interacting"],
|
|
2017
|
-
[303, "Cheer_with_Both_Hands", "DailyActions", "Interacting"],
|
|
2018
|
-
[304, "Seated_Fist_Pump", "DailyActions", "Interacting"],
|
|
2019
|
-
[305, "Stand_Cheer_and_Sit_Down", "DailyActions", "Interacting"],
|
|
2020
|
-
[306, "Cheer_with_One_Hand_Up", "DailyActions", "Interacting"],
|
|
2021
|
-
[307, "Sitting_Answering_Questions", "DailyActions", "Interacting"],
|
|
2022
|
-
[308, "Talk_Passionately", "DailyActions", "Interacting"],
|
|
2023
|
-
[309, "Talk_with_Left_Hand_on_Hip", "DailyActions", "Interacting"],
|
|
2024
|
-
[310, "Talk_with_Left_Hand_Raised", "DailyActions", "Interacting"],
|
|
2025
|
-
[311, "Stand_Talking_Angry", "DailyActions", "Interacting"],
|
|
2026
|
-
[312, "Phone_Conversation", "DailyActions", "Interacting"],
|
|
2027
|
-
[313, "Talk_with_Hands_Open", "DailyActions", "Interacting"],
|
|
2028
|
-
[314, "Talk_with_Right_Hand_Open", "DailyActions", "Interacting"],
|
|
2029
|
-
[315, "Hand_on_Hip_Gesture", "DailyActions", "Interacting"],
|
|
2030
|
-
[316, "Headache_Relief", "DailyActions", "Interacting"],
|
|
2031
|
-
[317, "Shrug", "DailyActions", "Interacting"],
|
|
2032
|
-
[318, "Scheming_Hand_Rub", "DailyActions", "Interacting"],
|
|
2033
|
-
[319, "air_squat", "DailyActions", "WorkingOut"],
|
|
2034
|
-
[320, "bicep_curl", "DailyActions", "WorkingOut"],
|
|
2035
|
-
[321, "bicycle_crunch", "DailyActions", "WorkingOut"],
|
|
2036
|
-
[322, "circle_crunch", "DailyActions", "WorkingOut"],
|
|
2037
|
-
[323, "golf_drive", "DailyActions", "WorkingOut"],
|
|
2038
|
-
[324, "idle_to_push_up", "DailyActions", "WorkingOut"],
|
|
2039
|
-
[325, "jump_push_up", "DailyActions", "WorkingOut"],
|
|
2040
|
-
[326, "jumping_jacks", "DailyActions", "WorkingOut"],
|
|
2041
|
-
[327, "kettlebell_swing", "DailyActions", "WorkingOut"],
|
|
2042
|
-
[328, "push_up_to_idle", "DailyActions", "WorkingOut"],
|
|
2043
|
-
[329, "push_up", "DailyActions", "WorkingOut"],
|
|
2044
|
-
[330, "situps", "DailyActions", "WorkingOut"],
|
|
2045
|
-
[331, "Sumo_High_Pull", "DailyActions", "WorkingOut"],
|
|
2046
|
-
[333, "Look_Around_Dumbfounded", "DailyActions", "LookingAround"],
|
|
2047
|
-
[334, "Lower_Weapon_Look_Raise", "DailyActions", "LookingAround"],
|
|
2048
|
-
[335, "Axe_Breathe_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2049
|
-
[336, "Long_Breathe_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2050
|
-
[337, "Torch_Look_Around", "DailyActions", "LookingAround"],
|
|
2051
|
-
[338, "Short_Breathe_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2052
|
-
[339, "Walking_Scan_with_Sudden_Look_Back", "DailyActions", "LookingAround"],
|
|
2053
|
-
[340, "Crawl_and_Look_Back", "DailyActions", "LookingAround"],
|
|
2054
|
-
[341, "Walk_Slowly_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2055
|
-
[342, "Stand_and_Drink", "DailyActions", "Drinking"],
|
|
2056
|
-
[343, "Sit_and_Drink", "DailyActions", "Drinking"],
|
|
2057
|
-
[344, "Stand_Up1", "DailyActions", "Transitioning"],
|
|
2058
|
-
[345, "Stand_Up2", "DailyActions", "Transitioning"],
|
|
2059
|
-
[346, "Stand_Up3", "DailyActions", "Transitioning"],
|
|
2060
|
-
[347, "Stand_Up4", "DailyActions", "Transitioning"],
|
|
2061
|
-
[348, "Stand_Up5", "DailyActions", "Transitioning"],
|
|
2062
|
-
[349, "Stand_Up6", "DailyActions", "Transitioning"],
|
|
2063
|
-
[350, "Stand_Up7", "DailyActions", "Transitioning"],
|
|
2064
|
-
[351, "Stand_Up8", "DailyActions", "Transitioning"],
|
|
2065
|
-
[352, "Stand_Up9", "DailyActions", "Transitioning"],
|
|
2066
|
-
[353, "Stand_Up10", "DailyActions", "Transitioning"],
|
|
2067
|
-
[354, "Sitting_Clap", "DailyActions", "Transitioning"],
|
|
2068
|
-
[355, "Sit_Finger_Wag_No", "DailyActions", "Transitioning"],
|
|
2069
|
-
[356, "Sit_Hands_on_Head_Lean_Back", "DailyActions", "Transitioning"],
|
|
2070
|
-
[357, "Sit_Thumbs_Up_Right", "DailyActions", "Transitioning"],
|
|
2071
|
-
[358, "Sit_Shout_Hands_on_Mouth", "DailyActions", "Transitioning"],
|
|
2072
|
-
[359, "Look_Back_and_Sit", "DailyActions", "Transitioning"],
|
|
2073
|
-
[360, "Sit_to_standTransition_Female_2", "DailyActions", "Transitioning"],
|
|
2074
|
-
[361, "Sit_Dodge", "DailyActions", "Transitioning"],
|
|
2075
|
-
[362, "Sit_Cross_Legged", "DailyActions", "Transitioning"],
|
|
2076
|
-
[363, "Sit_Cross_Legged_on_Floor", "DailyActions", "Transitioning"],
|
|
2077
|
-
[364, "Sit_on_Chair_Arms_Crossed", "DailyActions", "Transitioning"],
|
|
2078
|
-
[365, "Kneel_on_One_Knee_and_Stand", "DailyActions", "Transitioning"],
|
|
2079
|
-
[366, "falling_down", "DailyActions", "Transitioning"],
|
|
2080
|
-
[367, "SideLying_Reach_Help", "DailyActions", "Transitioning"],
|
|
2081
|
-
[368, "Angry_To_Tantrum_Sit", "DailyActions", "Transitioning"],
|
|
2082
|
-
[369, "Lie_Back_Leg_Swing", "DailyActions", "Transitioning"],
|
|
2083
|
-
[370, "Stand_To_Side_Lying", "DailyActions", "Transitioning"],
|
|
2084
|
-
[371, "Sit_Lie_Bed", "DailyActions", "Transitioning"],
|
|
2085
|
-
[372, "Prone_Reach_Help", "DailyActions", "Transitioning"],
|
|
2086
|
-
[375, "Handstand_Flip", "BodyMovements", "Acting"],
|
|
2087
|
-
[376, "Punch_Pose", "BodyMovements", "Acting"],
|
|
2088
|
-
[377, "Relax_arms_then_strike_battle_pose", "BodyMovements", "Acting"],
|
|
2089
|
-
[378, "Large_step_then_high_kick", "BodyMovements", "Acting"],
|
|
2090
|
-
[379, "Side_jumps_in_horse_stance", "BodyMovements", "Acting"],
|
|
2091
|
-
[381, "Step_Right_for_Exercise", "BodyMovements", "Acting"],
|
|
2092
|
-
[382, "Jump_and_Slam_Back_Down", "BodyMovements", "Acting"],
|
|
2093
|
-
[384, "Quick_Step_and_Spin_Dodge", "BodyMovements", "Acting"],
|
|
2094
|
-
[385, "Boxing_Warmup", "BodyMovements", "Acting"],
|
|
2095
|
-
[386, "Zombie_Scream", "BodyMovements", "Acting"],
|
|
2096
|
-
[387, "Half_Squat_with_Thumb_Up", "BodyMovements", "Acting"],
|
|
2097
|
-
[388, "Show_Both_Arm_Muscles", "BodyMovements", "Acting"],
|
|
2098
|
-
[389, "Grip_and_Throw_Down", "BodyMovements", "Acting"],
|
|
2099
|
-
[390, "Stand_on_Pole_and_Balance", "BodyMovements", "Acting"],
|
|
2100
|
-
[391, "Head_Hold_in_Pain", "BodyMovements", "Acting"],
|
|
2101
|
-
[392, "Ground_Flip_and_Sweep_Up", "BodyMovements", "Acting"],
|
|
2102
|
-
[393, "baseball_pitching", "BodyMovements", "Acting"],
|
|
2103
|
-
[394, "Backflip_and_Hooks", "BodyMovements", "Acting"],
|
|
2104
|
-
[395, "Breakdance_1990", "BodyMovements", "Acting"],
|
|
2105
|
-
[396, "Burpee_Exercise", "BodyMovements", "Acting"],
|
|
2106
|
-
[397, "360_Power_Spin_Jump", "BodyMovements", "Acting"],
|
|
2107
|
-
[398, "Crouch_Charge_and_Throw", "BodyMovements", "Acting"],
|
|
2108
|
-
[399, "Step_Step_Turn_Kick", "BodyMovements", "Acting"],
|
|
2109
|
-
[401, "Sprint_Roll_and_Flip", "BodyMovements", "Acting"],
|
|
2110
|
-
[402, "Run_and_Leap", "BodyMovements", "Acting"],
|
|
2111
|
-
[403, "Victory_Fist_Pump", "BodyMovements", "Acting"],
|
|
2112
|
-
[404, "Crouch_and_Step_Back", "BodyMovements", "Acting"],
|
|
2113
|
-
[405, "Joyful_Dance_with_Hand_Sway", "BodyMovements", "Acting"],
|
|
2114
|
-
[406, "Thomas_Flair_to_Jump_Up", "BodyMovements", "Acting"],
|
|
2115
|
-
[407, "Wall_Push_Jump_and_Flip", "BodyMovements", "Acting"],
|
|
2116
|
-
[408, "Jazz_Hands", "BodyMovements", "Acting"],
|
|
2117
|
-
[409, "Finger_Wag_No", "BodyMovements", "Acting"],
|
|
2118
|
-
[410, "Kick_a_Soccer_Ball", "BodyMovements", "Acting"],
|
|
2119
|
-
[411, "Neck_Slashing_Gesture", "BodyMovements", "Acting"],
|
|
2120
|
-
[412, "victory", "BodyMovements", "Acting"],
|
|
2121
|
-
[413, "Backflip_and_Rise", "BodyMovements", "Acting"],
|
|
2122
|
-
[414, "Double_kick_forward", "BodyMovements", "Acting"],
|
|
2123
|
-
[415, "Happy_Sway_Standing", "BodyMovements", "Acting"],
|
|
2124
|
-
[416, "Hit_in_Back_While_Running", "BodyMovements", "Acting"],
|
|
2125
|
-
[417, "Hop_with_Arms_Raised", "BodyMovements", "Acting"],
|
|
2126
|
-
[419, "Jump_to_Catch_and_Fall", "BodyMovements", "Acting"],
|
|
2127
|
-
[420, "Left_Hand_Bitten_Step_Back", "BodyMovements", "Acting"],
|
|
2128
|
-
[421, "Over_Shoulder_Throw", "BodyMovements", "Acting"],
|
|
2129
|
-
[422, "Rising_Flying_Kick", "BodyMovements", "Acting"],
|
|
2130
|
-
[425, "Vault_with_Rifle", "BodyMovements", "VaultingOverObstacle"],
|
|
2131
|
-
[426, "Roll_Behind_Cover", "BodyMovements", "VaultingOverObstacle"],
|
|
2132
|
-
[427, "Vault_and_Land", "BodyMovements", "VaultingOverObstacle"],
|
|
2133
|
-
[428, "Unarmed_Vault", "BodyMovements", "VaultingOverObstacle"],
|
|
2134
|
-
[429, "Parkour_Vault", "BodyMovements", "VaultingOverObstacle"],
|
|
2135
|
-
[430, "Parkour_Vault_with_Roll", "BodyMovements", "VaultingOverObstacle"],
|
|
2136
|
-
[431, "Parkour_Vault_1", "BodyMovements", "VaultingOverObstacle"],
|
|
2137
|
-
[432, "Parkour_Vault_2", "BodyMovements", "VaultingOverObstacle"],
|
|
2138
|
-
[433, "Parkour_Vault_3", "BodyMovements", "VaultingOverObstacle"],
|
|
2139
|
-
[434, "Fast_Ladder_Climb", "BodyMovements", "Climbing"],
|
|
2140
|
-
[435, "Ladder_Climb_Finish", "BodyMovements", "Climbing"],
|
|
2141
|
-
[436, "Ladder_Mount_Start", "BodyMovements", "Climbing"],
|
|
2142
|
-
[437, "Slow_Ladder_Climb", "BodyMovements", "Climbing"],
|
|
2143
|
-
[438, "Ladder_Climb_Loop", "BodyMovements", "Climbing"],
|
|
2144
|
-
[439, "Climb_Left_with_Both_Limbs", "BodyMovements", "Climbing"],
|
|
2145
|
-
[440, "Climb_Right_with_Both_Limbs", "BodyMovements", "Climbing"],
|
|
2146
|
-
[441, "Climb_Stairs", "BodyMovements", "Climbing"],
|
|
2147
|
-
[442, "Fast_Stair_Climb", "BodyMovements", "Climbing"],
|
|
2148
|
-
[444, "climbing_up_wall", "BodyMovements", "Climbing"],
|
|
2149
|
-
[445, "diagonal_wall_run", "BodyMovements", "Climbing"],
|
|
2150
|
-
[446, "Hang_and_Climb_Left", "BodyMovements", "Climbing"],
|
|
2151
|
-
[447, "Hang_and_Climb_Rght", "BodyMovements", "Climbing"],
|
|
2152
|
-
[448, "Jump_and_Grab_Wall", "BodyMovements", "Climbing"],
|
|
2153
|
-
[449, "Climb_Up_Rope", "BodyMovements", "Climbing"],
|
|
2154
|
-
[450, "Wall_Flip", "BodyMovements", "PerformingStunt"],
|
|
2155
|
-
[451, "One_Arm_Handstand", "BodyMovements", "PerformingStunt"],
|
|
2156
|
-
[452, "Backflip", "BodyMovements", "PerformingStunt"],
|
|
2157
|
-
[453, "Backflip_Sweep_Kick", "BodyMovements", "PerformingStunt"],
|
|
2158
|
-
[455, "Sweep_Kick", "BodyMovements", "PerformingStunt"],
|
|
2159
|
-
[456, "Jumping_Head_Scissor_Takedown", "BodyMovements", "PerformingStunt"],
|
|
2160
|
-
[457, "Jumping_Punch", "BodyMovements", "PerformingStunt"],
|
|
2161
|
-
[458, "Unicycle_Jump_Dismount", "BodyMovements", "PerformingStunt"],
|
|
2162
|
-
[459, "Run_Jump_and_Roll", "BodyMovements", "PerformingStunt"],
|
|
2163
|
-
[460, "Jump_with_Arms_Open", "BodyMovements", "Jumping"],
|
|
2164
|
-
[461, "Jump_with_Arms_and_Legs_Open", "BodyMovements", "Jumping"],
|
|
2165
|
-
[462, "Backflip_Jump", "BodyMovements", "Jumping"],
|
|
2166
|
-
[463, "Run_and_Jump", "BodyMovements", "Jumping"],
|
|
2167
|
-
[464, "Leap_and_Punch", "BodyMovements", "Jumping"],
|
|
2168
|
-
[465, "Leap_Right_and_Catch", "BodyMovements", "Jumping"],
|
|
2169
|
-
[466, "Regular_Jump", "BodyMovements", "Jumping"],
|
|
2170
|
-
[467, "Jump_Over_Obstacle_2", "BodyMovements", "Jumping"],
|
|
2171
|
-
[468, "Back_Jump", "BodyMovements", "Jumping"],
|
|
2172
|
-
[470, "Jumping_Down", "BodyMovements", "Jumping"],
|
|
2173
|
-
[471, "Jump_Over_Obstacle", "BodyMovements", "Jumping"],
|
|
2174
|
-
[472, "Jump_Over_Obstacle_1", "BodyMovements", "Jumping"],
|
|
2175
|
-
[473, "Quad_Jump_Left", "BodyMovements", "HangingfromLedge"],
|
|
2176
|
-
[474, "Quad_Jump_Up", "BodyMovements", "HangingfromLedge"],
|
|
2177
|
-
[475, "Quad_Climb_Right", "BodyMovements", "HangingfromLedge"],
|
|
2178
|
-
[476, "Hang_and_Push_with_Foot", "BodyMovements", "HangingfromLedge"],
|
|
2179
|
-
[477, "Rope_Hang_Idle", "BodyMovements", "HangingfromLedge"],
|
|
2180
|
-
[478, "Bar_Hang_Idle", "BodyMovements", "HangingfromLedge"],
|
|
2181
|
-
[479, "Upside_Down_Rope_Hang", "BodyMovements", "HangingfromLedge"],
|
|
2182
|
-
[480, "Upside_Down_Rope_Hang_1", "BodyMovements", "HangingfromLedge"],
|
|
2183
|
-
[481, "Upside_Down_Rope_Hang_2", "BodyMovements", "HangingfromLedge"],
|
|
2184
|
-
[482, "Grab_Wall_Midair_Idle", "BodyMovements", "HangingfromLedge"],
|
|
2185
|
-
[483, "Slow_Bar_Hang_Left", "BodyMovements", "HangingfromLedge"],
|
|
2186
|
-
[484, "Slow_Bar_Hang_Right", "BodyMovements", "HangingfromLedge"],
|
|
2187
|
-
[485, "Jump_and_Hang_on_Bar", "BodyMovements", "HangingfromLedge"],
|
|
2188
|
-
[486, "Wall_Support_to_Step_Down", "BodyMovements", "HangingfromLedge"],
|
|
2189
|
-
[487, "Climb_Attempt_and_Fall_3", "BodyMovements", "FallingFreely"],
|
|
2190
|
-
[488, "Climb_Attempt_and_Fall_4", "BodyMovements", "FallingFreely"],
|
|
2191
|
-
[489, "Climb_Attempt_and_Fall_5", "BodyMovements", "FallingFreely"],
|
|
2192
|
-
[490, "Fall_Down", "BodyMovements", "HangingfromLedge"],
|
|
2193
|
-
[491, "Fall_from_Bar", "BodyMovements", "HangingfromLedge"],
|
|
2194
|
-
[492, "Wall_Support_Jump_to_Ground", "BodyMovements", "HangingfromLedge"],
|
|
2195
|
-
[493, "Jump_Down_from_Wall", "BodyMovements", "HangingfromLedge"],
|
|
2196
|
-
[494, "Swing_on_Rope_to_Ground", "BodyMovements", "HangingfromLedge"],
|
|
2197
|
-
[495, "Grab_Bar_and_Swing_Forward", "BodyMovements", "HangingfromLedge"],
|
|
2198
|
-
[496, "Rope_Hang_Backflip_to_Crouch", "BodyMovements", "HangingfromLedge"],
|
|
2199
|
-
[497, "climbing_down_wall", "BodyMovements", "Climbing"],
|
|
2200
|
-
[498, "Climb_Attempt_and_Fall", "BodyMovements", "FallingFreely"],
|
|
2201
|
-
[499, "Climb_Attempt_and_Fall_1", "BodyMovements", "FallingFreely"],
|
|
2202
|
-
[500, "Climb_Attempt_and_Fall_2", "BodyMovements", "FallingFreely"],
|
|
2203
|
-
[501, "Leap_of_Faith", "BodyMovements", "FallingFreely"],
|
|
2204
|
-
[502, "Fall1", "BodyMovements", "FallingFreely"],
|
|
2205
|
-
[503, "Fall2", "BodyMovements", "FallingFreely"],
|
|
2206
|
-
[504, "Fall3", "BodyMovements", "FallingFreely"],
|
|
2207
|
-
[505, "Fall4", "BodyMovements", "FallingFreely"],
|
|
2208
|
-
[506, "Dive_Down_and_Land", "BodyMovements", "FallingFreely"],
|
|
2209
|
-
[507, "Dive_Down_and_Land_1", "BodyMovements", "FallingFreely"],
|
|
2210
|
-
[508, "Dive_Down_and_Land_2", "BodyMovements", "FallingFreely"],
|
|
2211
|
-
[509, "Lean_Forward_Sprint", "WalkAndRun", "Running"],
|
|
2212
|
-
[510, "Standard_Forward_Charge", "WalkAndRun", "Running"],
|
|
2213
|
-
[511, "Rifle_Charge", "WalkAndRun", "Running"],
|
|
2214
|
-
[512, "Male_Head_Down_Charge", "WalkAndRun", "Running"],
|
|
2215
|
-
[513, "Female_Head_Down_Charge", "WalkAndRun", "Running"],
|
|
2216
|
-
[514, "Female_Bow_Charge_Left_Hand", "WalkAndRun", "Running"],
|
|
2217
|
-
[515, "Female_Throwing_Stance_Charge", "WalkAndRun", "Running"],
|
|
2218
|
-
[516, "slide_light", "WalkAndRun", "Running"],
|
|
2219
|
-
[517, "slide_right", "WalkAndRun", "Running"],
|
|
2220
|
-
[518, "sliding_rool", "WalkAndRun", "Running"],
|
|
2221
|
-
[519, "sliding_stumble", "WalkAndRun", "Running"],
|
|
2222
|
-
[520, "Crouch_Walk_with_Torch", "WalkAndRun", "CrouchWalking"],
|
|
2223
|
-
[521, "Crouch_Walk_Left_with_Torch", "WalkAndRun", "CrouchWalking"],
|
|
2224
|
-
[522, "Crouch_Walk_Right_with_Torch", "WalkAndRun", "CrouchWalking"],
|
|
2225
|
-
[523, "Cautious_Crouch_Walk_Backward", "WalkAndRun", "CrouchWalking"],
|
|
2226
|
-
[524, "Cautious_Crouch_Walk_Forward", "WalkAndRun", "CrouchWalking"],
|
|
2227
|
-
[525, "Cautious_Crouch_Walk_Left", "WalkAndRun", "CrouchWalking"],
|
|
2228
|
-
[526, "Cautious_Crouch_Walk_Right", "WalkAndRun", "CrouchWalking"],
|
|
2229
|
-
[527, "Crouch_Walk_Left_with_Gun", "WalkAndRun", "CrouchWalking"],
|
|
2230
|
-
[528, "Walk_Left_with_Gun", "WalkAndRun", "CrouchWalking"],
|
|
2231
|
-
[529, "Walk_Backward_with_Gun", "WalkAndRun", "CrouchWalking"],
|
|
2232
|
-
[530, "run_fast_3", "WalkAndRun", "Running"],
|
|
2233
|
-
[531, "Sprint_and_Sudden_Stop", "WalkAndRun", "Running"],
|
|
2234
|
-
[532, "run_fast_4", "WalkAndRun", "Running"],
|
|
2235
|
-
[533, "run_fast_5", "WalkAndRun", "Running"],
|
|
2236
|
-
[534, "run_fast_6", "WalkAndRun", "Running"],
|
|
2237
|
-
[535, "run_fast_7", "WalkAndRun", "Running"],
|
|
2238
|
-
[536, "run_fast_8", "WalkAndRun", "Running"],
|
|
2239
|
-
[537, "run_fast_9", "WalkAndRun", "Running"],
|
|
2240
|
-
[538, "run_fast_10", "WalkAndRun", "Running"],
|
|
2241
|
-
[539, "run_fast_2", "WalkAndRun", "Running"],
|
|
2242
|
-
[540, "Injured_Walk_Backward", "WalkAndRun", "Walking"],
|
|
2243
|
-
[541, "Walk_Backward_with_Gun_1", "WalkAndRun", "Walking"],
|
|
2244
|
-
[542, "Walk_Backward_with_Grenade", "WalkAndRun", "Walking"],
|
|
2245
|
-
[543, "Step_Back", "WalkAndRun", "Walking"],
|
|
2246
|
-
[544, "Walk_Backward", "WalkAndRun", "Walking"],
|
|
2247
|
-
[545, "Walk_Backward_with_Bow", "WalkAndRun", "Walking"],
|
|
2248
|
-
[546, "Walk_Backward_with_Sword", "WalkAndRun", "Walking"],
|
|
2249
|
-
[547, "Walk_Backward_with_Bow_1", "WalkAndRun", "Walking"],
|
|
2250
|
-
[548, "Walk_Backward_with_Sword_Shield", "WalkAndRun", "Walking"],
|
|
2251
|
-
[549, "Crawl_Backward", "WalkAndRun", "Walking"],
|
|
2252
|
-
[550, "Carry_Heavy_Cannon_Forward", "WalkAndRun", "Walking"],
|
|
2253
|
-
[551, "Carry_Heavy_Object_Walk", "WalkAndRun", "Walking"],
|
|
2254
|
-
[552, "Carry_Water_Bucket_Walk", "WalkAndRun", "Walking"],
|
|
2255
|
-
[553, "Elderly_Shaky_Walk", "WalkAndRun", "Walking"],
|
|
2256
|
-
[554, "Funky_Walk", "WalkAndRun", "Walking"],
|
|
2257
|
-
[555, "Limping_Walk_1", "WalkAndRun", "Walking"],
|
|
2258
|
-
[556, "Limping_Walk_2", "WalkAndRun", "Walking"],
|
|
2259
|
-
[557, "Limping_Walk_3", "WalkAndRun", "Walking"],
|
|
2260
|
-
[558, "Limping_Walk", "WalkAndRun", "Walking"],
|
|
2261
|
-
[559, "Sneaky_Walk", "WalkAndRun", "Walking"],
|
|
2262
|
-
[560, "Spear_Walk", "WalkAndRun", "Walking"],
|
|
2263
|
-
[561, "Step_Hip_Hop_Dance", "WalkAndRun", "Walking"],
|
|
2264
|
-
[562, "Stumble_Walk", "WalkAndRun", "Walking"],
|
|
2265
|
-
[563, "Stylish_Walk", "WalkAndRun", "Walking"],
|
|
2266
|
-
[564, "Tightrope_Walk", "WalkAndRun", "Walking"],
|
|
2267
|
-
[565, "Walk_with_Umbrella", "WalkAndRun", "Walking"],
|
|
2268
|
-
[566, "walking_2", "WalkAndRun", "Walking"],
|
|
2269
|
-
[567, "Walk_with_Walker_Support", "WalkAndRun", "Walking"],
|
|
2270
|
-
[568, "Swim_Idle", "WalkAndRun", "Swimming"],
|
|
2271
|
-
[569, "Swim_Forward", "WalkAndRun", "Swimming"],
|
|
2272
|
-
[570, "swimming_to_edge", "WalkAndRun", "Swimming"],
|
|
2273
|
-
[571, "Run_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2274
|
-
[572, "Walk_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2275
|
-
[573, "Rifle_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2276
|
-
[574, "Walk_Turn_Left_with_Weapon", "WalkAndRun", "TurningAround"],
|
|
2277
|
-
[575, "Combat_Idle_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2278
|
-
[576, "Idle_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2279
|
-
[577, "Idle_Step_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2280
|
-
[578, "Idle_Torch_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2281
|
-
[579, "Depressed_Full_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2282
|
-
[580, "Sword_and_Shield_Alert_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2283
|
-
[581, "Run_Sharp_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2284
|
-
[582, "Run_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2285
|
-
[583, "Walk_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2286
|
-
[584, "Walk_Turn_Right_Female", "WalkAndRun", "TurningAround"],
|
|
2287
|
-
[585, "Rifle_Aim_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2288
|
-
[586, "Idle_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2289
|
-
[587, "Walk_Turn_Right_Idle_Style", "WalkAndRun", "TurningAround"],
|
|
2290
|
-
[588, "Frustrated_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2291
|
-
[589, "Alert_Quick_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2292
|
-
[590, "Sword_and_Shield_Alert_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2293
|
-
[591, "Hip_Hop_Dance", "Dancing", "Dancing"],
|
|
2294
|
-
[592, "Hip_Hop_Dance_1", "Dancing", "Dancing"],
|
|
2295
|
-
[593, "Hip_Hop_Dance_2", "Dancing", "Dancing"],
|
|
2296
|
-
[594, "Hip_Hop_Dance_3", "Dancing", "Dancing"],
|
|
2297
|
-
[595, "jazz_danc", "Dancing", "Dancing"],
|
|
2298
|
-
[596, "ymca_dance", "Dancing", "Dancing"],
|
|
2299
|
-
[597, "Hip_Hop_Dance_4", "Dancing", "Dancing"],
|
|
2300
|
-
[598, "kettlebell_swing_1", "DailyActions", "WorkingOut"],
|
|
2301
|
-
[599, "Idle_15", "DailyActions", "Idle"],
|
|
2302
|
-
[601, "Backflip_inplace", "BodyMovements", "PerformingStunt"],
|
|
2303
|
-
[604, "Backflip_Sweep_Kick_inplace", "BodyMovements", "PerformingStunt"],
|
|
2304
|
-
[605, "Back_Jump_inplace", "BodyMovements", "Jumping"],
|
|
2305
|
-
[606, "BackLeft_run_inplace", "WalkAndRun", "Running"],
|
|
2306
|
-
[607, "BackRight_Run_inplace", "WalkAndRun", "Running"],
|
|
2307
|
-
[608, "BeHit_FlyUp_inplace", "Fighting", "GettingHit"],
|
|
2308
|
-
[609, "Boxing_Practice_inplace", "Fighting", "Punching"],
|
|
2309
|
-
[610, "Carry_Heavy_Cannon_Forward_inplace", "WalkAndRun", "Walking"],
|
|
2310
|
-
[611, "Carry_Heavy_Object_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2311
|
-
[612, "Carry_Water_Bucket_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2312
|
-
[613, "Casual_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2313
|
-
[615, "Cautious_Crouch_Walk_Backward_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2314
|
-
[616, "Cautious_Crouch_Walk_Forward_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2315
|
-
[617, "Cautious_Crouch_Walk_Left_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2316
|
-
[618, "Cautious_Crouch_Walk_Right_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2317
|
-
[619, "Climb_Left_with_Both_Limbs_inplace", "BodyMovements", "Climbing"],
|
|
2318
|
-
[620, "Climb_Right_with_Both_Limbs_inplace", "BodyMovements", "Climbing"],
|
|
2319
|
-
[621, "Confident_Strut_inplace", "WalkAndRun", "Walking"],
|
|
2320
|
-
[622, "Crawl_Backward_inplace", "WalkAndRun", "Walking"],
|
|
2321
|
-
[623, "Crouch_Walk_Left_with_Gun_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2322
|
-
[624, "Crouch_Walk_Left_with_Torch_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2323
|
-
[625, "Crouch_Walk_Right_with_Torch_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2324
|
-
[626, "Elderly_Shaky_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2325
|
-
[627, "Female_Bow_Charge_Left_Hand_inplace", "WalkAndRun", "Running"],
|
|
2326
|
-
[628, "Female_Throwing_Stance_Charge_inplace", "WalkAndRun", "Running"],
|
|
2327
|
-
[629, "Flirty_Strut_inplace", "WalkAndRun", "Walking"],
|
|
2328
|
-
[630, "ForwardLeft_Run_Fight_inplace", "Fighting", "Transitioning"],
|
|
2329
|
-
[631, "ForwardRight_Run_Fight_inplace", "Fighting", "Transitioning"],
|
|
2330
|
-
[632, "Funky_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2331
|
-
[635, "Handbag_Walk_inplace", "BodyMovements", "Acting"],
|
|
2332
|
-
[636, "Hello_Run_inplace", "WalkAndRun", "Running"],
|
|
2333
|
-
[637, "Injured_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2334
|
-
[638, "Injured_Walk_Backward_inplace", "WalkAndRun", "Walking"],
|
|
2335
|
-
[639, "Jazz_Hands_inplace", "BodyMovements", "Acting"],
|
|
2336
|
-
[640, "Jump_Over_Obstacle_inplace", "BodyMovements", "Jumping"],
|
|
2337
|
-
[641, "Jump_Over_Obstacle_1_inplace", "BodyMovements", "Jumping"],
|
|
2338
|
-
[642, "Jump_Over_Obstacle_2_inplace", "BodyMovements", "Jumping"],
|
|
2339
|
-
[643, "Jump_Run_inplace", "WalkAndRun", "Running"],
|
|
2340
|
-
[644, "Lean_Forward_Sprint_inplace", "WalkAndRun", "Running"],
|
|
2341
|
-
[645, "Limping_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2342
|
-
[646, "Limping_Walk_1_inplace", "WalkAndRun", "Walking"],
|
|
2343
|
-
[647, "Limping_Walk_2_inplace", "WalkAndRun", "Walking"],
|
|
2344
|
-
[648, "Limping_Walk_3_inplace", "WalkAndRun", "Walking"],
|
|
2345
|
-
[649, "Lunge_Roundhouse_Kick_inplace", "Fighting", "Punching"],
|
|
2346
|
-
[650, "Mummy_Stagger_inplace", "BodyMovements", "Acting"],
|
|
2347
|
-
[651, "Parkour_Vault_with_Roll_inplace", "BodyMovements", "VaultingOverObstacle"],
|
|
2348
|
-
[652, "Proud_Strut_inplace", "WalkAndRun", "Walking"],
|
|
2349
|
-
[653, "Red_Carpet_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2350
|
-
[654, "Rifle_Charge_inplace", "WalkAndRun", "Running"],
|
|
2351
|
-
[656, "Run_and_Leap_inplace", "BodyMovements", "Acting"],
|
|
2352
|
-
[657, "run_fast_10_inplace", "WalkAndRun", "Running"],
|
|
2353
|
-
[658, "run_fast_2_inplace", "WalkAndRun", "Running"],
|
|
2354
|
-
[659, "run_fast_3_inplace", "WalkAndRun", "Running"],
|
|
2355
|
-
[660, "run_fast_4_inplace", "WalkAndRun", "Running"],
|
|
2356
|
-
[661, "run_fast_5_inplace", "WalkAndRun", "Running"],
|
|
2357
|
-
[662, "run_fast_6_inplace", "WalkAndRun", "Running"],
|
|
2358
|
-
[663, "run_fast_7_inplace", "WalkAndRun", "Running"],
|
|
2359
|
-
[664, "run_fast_8_inplace", "WalkAndRun", "Running"],
|
|
2360
|
-
[665, "run_fast_9_inplace", "WalkAndRun", "Running"],
|
|
2361
|
-
[666, "Running_Reload_inplace", "Fighting", "Transitioning"],
|
|
2362
|
-
[667, "Run_to_Walk_Transition_inplace", "WalkAndRun", "Walking"],
|
|
2363
|
-
[668, "Skip_Forward_inplace", "WalkAndRun", "Walking"],
|
|
2364
|
-
[669, "Slow_Orc_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2365
|
-
[670, "Slow_Walk_Reload_inplace", "Fighting", "Transitioning"],
|
|
2366
|
-
[671, "Sneaky_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2367
|
-
[672, "Spear_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2368
|
-
[673, "Standard_Forward_Charge_inplace", "WalkAndRun", "Running"],
|
|
2369
|
-
[674, "Stumble_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2370
|
-
[675, "Stylish_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2371
|
-
[676, "Texting_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2372
|
-
[677, "Tightrope_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2373
|
-
[678, "Unsteady_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2374
|
-
[679, "Walk_Backward_inplace", "WalkAndRun", "Walking"],
|
|
2375
|
-
[680, "Walk_Backward_While_Shooting_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2376
|
-
[681, "Walk_Backward_with_Bow_inplace", "WalkAndRun", "Walking"],
|
|
2377
|
-
[682, "Walk_Backward_with_Bow_1_inplace", "WalkAndRun", "Walking"],
|
|
2378
|
-
[683, "Walk_Backward_with_Bow_Aimed_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2379
|
-
[684, "Walk_Backward_with_Grenade_inplace", "WalkAndRun", "Walking"],
|
|
2380
|
-
[685, "Walk_Backward_with_Gun_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2381
|
-
[686, "Walk_Backward_with_Gun_1_inplace", "WalkAndRun", "Walking"],
|
|
2382
|
-
[687, "Walk_Backward_with_Sword_inplace", "WalkAndRun", "Walking"],
|
|
2383
|
-
[688, "Walk_Fight_Back_inplace", "WalkAndRun", "Walking"],
|
|
2384
|
-
[689, "Walk_Fight_Forward_inplace", "WalkAndRun", "Walking"],
|
|
2385
|
-
[690, "Walk_Forward_While_Shooting_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2386
|
-
[691, "Walk_Forward_with_Bow_Aimed_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2387
|
-
[692, "walking_2_inplace", "WalkAndRun", "Walking"],
|
|
2388
|
-
[693, "Walking_with_Phone_inplace", "WalkAndRun", "Walking"],
|
|
2389
|
-
[694, "Walk_Left_with_Gun_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2390
|
-
[695, "Walk_with_Umbrella_inplace", "WalkAndRun", "Walking"],
|
|
2391
|
-
[696, "Walk_with_Walker_Support_inplace", "WalkAndRun", "Walking"]
|
|
2392
|
-
];
|
|
2393
|
-
var MESHY_ANIMATIONS = ROWS.map(([id, name, category, subcategory]) => ({
|
|
2394
|
-
id,
|
|
2395
|
-
name,
|
|
2396
|
-
category,
|
|
2397
|
-
subcategory
|
|
2398
|
-
}));
|
|
2399
|
-
var BY_ID = new Map(MESHY_ANIMATIONS.map((a) => [a.id, a]));
|
|
2400
|
-
var BY_NAME = new Map(MESHY_ANIMATIONS.map((a) => [normalize(a.name), a]));
|
|
2401
|
-
function normalize(name) {
|
|
2402
|
-
return name.trim().toLowerCase().replace(/[\s_-]+/g, "_");
|
|
2403
|
-
}
|
|
2404
|
-
function meshyAnimationById(id) {
|
|
2405
|
-
return BY_ID.get(id);
|
|
2406
|
-
}
|
|
2407
|
-
function meshyAnimationByName(name) {
|
|
2408
|
-
return BY_NAME.get(normalize(name));
|
|
2409
|
-
}
|
|
2410
|
-
function searchMeshyAnimations(query, limit = 25) {
|
|
2411
|
-
const words = query.toLowerCase().split(/[\s_-]+/).filter(Boolean);
|
|
2412
|
-
if (words.length === 0) return MESHY_ANIMATIONS.slice(0, limit);
|
|
2413
|
-
const out = [];
|
|
2414
|
-
for (const a of MESHY_ANIMATIONS) {
|
|
2415
|
-
const hay = `${a.name} ${a.category} ${a.subcategory ?? ""}`.toLowerCase().replace(/[_-]+/g, " ");
|
|
2416
|
-
if (words.every((w) => hay.includes(w))) {
|
|
2417
|
-
out.push(a);
|
|
2418
|
-
if (out.length >= limit) break;
|
|
2419
|
-
}
|
|
2420
|
-
}
|
|
2421
|
-
return out;
|
|
2422
|
-
}
|
|
2423
|
-
var GROK_IMAGINE_I2V_ENDPOINT = "xai/grok-imagine-video/image-to-video";
|
|
2424
|
-
var GROK_IMAGINE_15_I2V_ENDPOINT = "xai/grok-imagine-video/v1.5/image-to-video";
|
|
2425
|
-
var WAN_30_I2V_ENDPOINT = "alibaba/wan-3.0/image-to-video";
|
|
2426
|
-
var KLING_26_I2V_ENDPOINT = "fal-ai/kling-video/v2.6/pro/image-to-video";
|
|
2427
|
-
var KLING_O3_STANDARD_I2V_ENDPOINT = "fal-ai/kling-video/o3/standard/image-to-video";
|
|
2428
|
-
var KLING_O3_PRO_I2V_ENDPOINT = "fal-ai/kling-video/o3/pro/image-to-video";
|
|
2429
|
-
var KLING_O3_I2V_ENDPOINTS = [KLING_O3_STANDARD_I2V_ENDPOINT, KLING_O3_PRO_I2V_ENDPOINT];
|
|
2430
|
-
var LTX_25_FAST_I2V_ENDPOINT = "lightricks/ltx-2.5/image-to-video/fast";
|
|
2431
|
-
var LTX_25_PRO_I2V_ENDPOINT = "lightricks/ltx-2.5/image-to-video/pro";
|
|
2432
|
-
var LTX_25_I2V_ENDPOINTS = [LTX_25_FAST_I2V_ENDPOINT, LTX_25_PRO_I2V_ENDPOINT];
|
|
2433
|
-
var VEO_LITE_I2V_ENDPOINT = "fal-ai/veo3.1/lite/image-to-video";
|
|
2434
|
-
var VEO_LITE_FLF_ENDPOINT = "fal-ai/veo3.1/lite/first-last-frame-to-video";
|
|
2435
|
-
var VEO_FAST_I2V_ENDPOINT = "fal-ai/veo3.1/fast/image-to-video";
|
|
2436
|
-
var VEO_FAST_FLF_ENDPOINT = "fal-ai/veo3.1/fast/first-last-frame-to-video";
|
|
2437
|
-
var VEO_I2V_ENDPOINT = "fal-ai/veo3.1/image-to-video";
|
|
2438
|
-
var VEO_FLF_ENDPOINT = "fal-ai/veo3.1/first-last-frame-to-video";
|
|
2439
|
-
var VEO_ENDPOINTS = [
|
|
2440
|
-
VEO_LITE_I2V_ENDPOINT,
|
|
2441
|
-
VEO_LITE_FLF_ENDPOINT,
|
|
2442
|
-
VEO_FAST_I2V_ENDPOINT,
|
|
2443
|
-
VEO_FAST_FLF_ENDPOINT,
|
|
2444
|
-
VEO_I2V_ENDPOINT,
|
|
2445
|
-
VEO_FLF_ENDPOINT
|
|
2446
|
-
];
|
|
2447
|
-
var VIDEO_PER_SECOND_RATES = {
|
|
2448
|
-
"fal-ai/wan/v2.2-14b/animate/replace": { "480p": 0.04, "580p": 0.06, "720p": 0.08 },
|
|
2449
|
-
// Kling O3 Pro Edit: one rate at every resolution (it renders at the source's),
|
|
2450
|
-
// keyed under the fixed label below. fal model page, vetted 2026-09-23.
|
|
2451
|
-
"fal-ai/kling-video/o3/pro/video-to-video/edit": { source: 0.168 },
|
|
2452
|
-
// FLUX.3 (fal model pages, vetted 2026-08-23). Three tiers of the same model:
|
|
2453
|
-
// draft $0.06/s, fixed 720p, plus a draft_cache for enhance
|
|
2454
|
-
// direct $0.17/s at 720p, $0.29/s at 1080p, one-shot
|
|
2455
|
-
// draft-enhance $0.29/s, fixed 1080p, audio included, from the cache only
|
|
2456
|
-
// So draft + enhance is $0.35/s for a 1080p result: a 21% premium over direct
|
|
2457
|
-
// 1080p on a first-try keeper, and cheaper from the second attempt on. The
|
|
2458
|
-
// draft estimate is the draft price ONLY; the enhance node bills its own.
|
|
2459
|
-
"blackforestlabs/flux-3/keyframes-to-video/draft": { "720p": 0.06 },
|
|
2460
|
-
"blackforestlabs/flux-3/first-last-frame-to-video/draft": { "720p": 0.06 },
|
|
2461
|
-
"blackforestlabs/flux-3/image-to-video/draft": { "720p": 0.06 },
|
|
2462
|
-
"blackforestlabs/flux-3/keyframes-to-video": { "720p": 0.17, "1080p": 0.29 },
|
|
2463
|
-
"blackforestlabs/flux-3/first-last-frame-to-video": { "720p": 0.17, "1080p": 0.29 },
|
|
2464
|
-
"blackforestlabs/flux-3/image-to-video": { "720p": 0.17, "1080p": 0.29 },
|
|
2465
|
-
"blackforestlabs/flux-3/draft-enhance": { "1080p": 0.29 },
|
|
2466
|
-
// Grok Imagine: $0.05/s at 480p, $0.07/s at 720p, plus $0.002 per input image
|
|
2467
|
-
// (VIDEO_PER_INPUT_IMAGE_USD). fal model page, vetted 2026-09-23.
|
|
2468
|
-
[GROK_IMAGINE_I2V_ENDPOINT]: { "480p": 0.05, "720p": 0.07 },
|
|
2469
|
-
// Veo 3.1, SILENT rates (the audio rates are VIDEO_PER_SECOND_AUDIO_RATES).
|
|
2470
|
-
// Both modes of a tier bill the same. fal model pages, vetted 2026-09-23.
|
|
2471
|
-
[VEO_LITE_I2V_ENDPOINT]: { "720p": 0.03, "1080p": 0.05 },
|
|
2472
|
-
[VEO_LITE_FLF_ENDPOINT]: { "720p": 0.03, "1080p": 0.05 },
|
|
2473
|
-
[VEO_FAST_I2V_ENDPOINT]: { "720p": 0.1, "1080p": 0.1, "4k": 0.3 },
|
|
2474
|
-
[VEO_FAST_FLF_ENDPOINT]: { "720p": 0.1, "1080p": 0.1, "4k": 0.3 },
|
|
2475
|
-
[VEO_I2V_ENDPOINT]: { "720p": 0.2, "1080p": 0.2, "4k": 0.4 },
|
|
2476
|
-
[VEO_FLF_ENDPOINT]: { "720p": 0.2, "1080p": 0.2, "4k": 0.4 },
|
|
2477
|
-
// Grok Imagine 1.5: plus $0.01 per input image (VIDEO_PER_INPUT_IMAGE_USD).
|
|
2478
|
-
[GROK_IMAGINE_15_I2V_ENDPOINT]: { "480p": 0.08, "720p": 0.14, "1080p": 0.25 },
|
|
2479
|
-
// Wan 3.0: audio included at no extra charge.
|
|
2480
|
-
[WAN_30_I2V_ENDPOINT]: { "480p": 0.05, "720p": 0.1, "1080p": 0.2 },
|
|
2481
|
-
// Kling 2.6 Pro, SILENT: one size, keyed under its fixed resolution.
|
|
2482
|
-
[KLING_26_I2V_ENDPOINT]: { "1080p": 0.07 },
|
|
2483
|
-
// Kling O3 takes no resolution; each tier bills one rate, keyed 'fixed'.
|
|
2484
|
-
[KLING_O3_STANDARD_I2V_ENDPOINT]: { fixed: 0.084 },
|
|
2485
|
-
[KLING_O3_PRO_I2V_ENDPOINT]: { fixed: 0.112 },
|
|
2486
|
-
// LTX-2.5: audio included at every tier. The canvas's 4k is fal's 2160p.
|
|
2487
|
-
[LTX_25_FAST_I2V_ENDPOINT]: { "720p": 0.09, "1080p": 0.13, "4k": 0.3 },
|
|
2488
|
-
[LTX_25_PRO_I2V_ENDPOINT]: { "720p": 0.12, "1080p": 0.17 }
|
|
2489
|
-
};
|
|
2490
|
-
var VIDEO_PER_SECOND_AUDIO_RATES = {
|
|
2491
|
-
[VEO_LITE_I2V_ENDPOINT]: { "720p": 0.05, "1080p": 0.08 },
|
|
2492
|
-
[VEO_LITE_FLF_ENDPOINT]: { "720p": 0.05, "1080p": 0.08 },
|
|
2493
|
-
[VEO_FAST_I2V_ENDPOINT]: { "720p": 0.15, "1080p": 0.15, "4k": 0.35 },
|
|
2494
|
-
[VEO_FAST_FLF_ENDPOINT]: { "720p": 0.15, "1080p": 0.15, "4k": 0.35 },
|
|
2495
|
-
[VEO_I2V_ENDPOINT]: { "720p": 0.4, "1080p": 0.4, "4k": 0.6 },
|
|
2496
|
-
[VEO_FLF_ENDPOINT]: { "720p": 0.4, "1080p": 0.4, "4k": 0.6 },
|
|
2497
|
-
[KLING_26_I2V_ENDPOINT]: { "1080p": 0.14 },
|
|
2498
|
-
[KLING_O3_STANDARD_I2V_ENDPOINT]: { fixed: 0.112 },
|
|
2499
|
-
[KLING_O3_PRO_I2V_ENDPOINT]: { fixed: 0.14 }
|
|
2500
|
-
};
|
|
2501
|
-
var VIDEO_PER_INPUT_IMAGE_USD = {
|
|
2502
|
-
[GROK_IMAGINE_I2V_ENDPOINT]: 2e-3,
|
|
2503
|
-
[GROK_IMAGINE_15_I2V_ENDPOINT]: 0.01
|
|
2504
|
-
};
|
|
2505
|
-
var VIDEO_FIXED_RESOLUTION = {
|
|
2506
|
-
"blackforestlabs/flux-3/keyframes-to-video/draft": "720p",
|
|
2507
|
-
"blackforestlabs/flux-3/first-last-frame-to-video/draft": "720p",
|
|
2508
|
-
"blackforestlabs/flux-3/image-to-video/draft": "720p",
|
|
2509
|
-
"blackforestlabs/flux-3/draft-enhance": "1080p",
|
|
2510
|
-
// Not a resolution the caller picks: Kling O3 Edit renders at the source's.
|
|
2511
|
-
"fal-ai/kling-video/o3/pro/video-to-video/edit": "source",
|
|
2512
|
-
// Kling 2.6 Pro takes no resolution; it renders 1080p.
|
|
2513
|
-
[KLING_26_I2V_ENDPOINT]: "1080p",
|
|
2514
|
-
// Not a resolution the caller picks: Kling O3's tier sets the size.
|
|
2515
|
-
[KLING_O3_STANDARD_I2V_ENDPOINT]: "fixed",
|
|
2516
|
-
[KLING_O3_PRO_I2V_ENDPOINT]: "fixed"
|
|
2517
|
-
};
|
|
2518
|
-
var VIDEO_PINNED_DEFAULT_SECONDS = {
|
|
2519
|
-
[GROK_IMAGINE_I2V_ENDPOINT]: 5,
|
|
2520
|
-
// Veo defaults to 8 s itself, and 8 s is the only length Lite first-and-last
|
|
2521
|
-
// renders; pinning it keeps the bill and the clip in step either way.
|
|
2522
|
-
...Object.fromEntries(VEO_ENDPOINTS.map((e) => [e, 8])),
|
|
2523
|
-
// The fal twins render the length their KIE entries default to, so a clip
|
|
2524
|
-
// falling back from KIE to fal has the same length.
|
|
2525
|
-
[GROK_IMAGINE_15_I2V_ENDPOINT]: 8,
|
|
2526
|
-
[WAN_30_I2V_ENDPOINT]: 5,
|
|
2527
|
-
[KLING_26_I2V_ENDPOINT]: 5,
|
|
2528
|
-
[KLING_O3_STANDARD_I2V_ENDPOINT]: 5,
|
|
2529
|
-
[KLING_O3_PRO_I2V_ENDPOINT]: 5,
|
|
2530
|
-
// LTX-2.5 defaults to "auto", a length nobody can price up front; 6 s is its
|
|
2531
|
-
// shortest clip on both tiers.
|
|
2532
|
-
[LTX_25_FAST_I2V_ENDPOINT]: 6,
|
|
2533
|
-
[LTX_25_PRO_I2V_ENDPOINT]: 6
|
|
2534
|
-
};
|
|
2535
|
-
var VIDEO_DEFAULT_RESOLUTION = {
|
|
2536
|
-
"blackforestlabs/flux-3/keyframes-to-video": "720p",
|
|
2537
|
-
"blackforestlabs/flux-3/first-last-frame-to-video": "720p",
|
|
2538
|
-
"blackforestlabs/flux-3/image-to-video": "720p",
|
|
2539
|
-
// fal schema default: Grok renders 720p.
|
|
2540
|
-
[GROK_IMAGINE_I2V_ENDPOINT]: "720p",
|
|
2541
|
-
...Object.fromEntries(VEO_ENDPOINTS.map((e) => [e, "720p"])),
|
|
2542
|
-
[GROK_IMAGINE_15_I2V_ENDPOINT]: "720p",
|
|
2543
|
-
// fal schema default: Wan 3.0 renders 1080p unless asked for less.
|
|
2544
|
-
[WAN_30_I2V_ENDPOINT]: "1080p",
|
|
2545
|
-
// fal schema default: LTX-2.5 renders 1080p unless asked for less.
|
|
2546
|
-
[LTX_25_FAST_I2V_ENDPOINT]: "1080p",
|
|
2547
|
-
[LTX_25_PRO_I2V_ENDPOINT]: "1080p"
|
|
2548
|
-
};
|
|
2549
|
-
var VIDEO_ALLOWED_VALUES = {
|
|
2550
|
-
// Seedance 2.5 derives its aspect from the input image.
|
|
2551
|
-
"bytedance/seedance-2.5/image-to-video": { aspectRatio: ["auto"] },
|
|
2552
|
-
"fal-ai/kling-video/v2.5-turbo/pro/image-to-video": {
|
|
2553
|
-
aspectRatio: ["16:9", "9:16", "1:1"],
|
|
2554
|
-
durationSeconds: { values: [5, 10] }
|
|
2555
|
-
},
|
|
2556
|
-
[GROK_IMAGINE_I2V_ENDPOINT]: {
|
|
2557
|
-
aspectRatio: ["auto", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16"],
|
|
2558
|
-
resolution: ["480p", "720p"],
|
|
2559
|
-
durationSeconds: { min: 1, max: 15 }
|
|
2560
|
-
},
|
|
2561
|
-
...Object.fromEntries(
|
|
2562
|
-
VEO_ENDPOINTS.map((e) => [
|
|
2563
|
-
e,
|
|
2564
|
-
{
|
|
2565
|
-
aspectRatio: ["auto", "16:9", "9:16"],
|
|
2566
|
-
resolution: e === VEO_LITE_I2V_ENDPOINT || e === VEO_LITE_FLF_ENDPOINT ? ["720p", "1080p"] : ["720p", "1080p", "4k"],
|
|
2567
|
-
// Lite first-and-last renders 8 s only (its schema pins the const).
|
|
2568
|
-
durationSeconds: { values: e === VEO_LITE_FLF_ENDPOINT ? [8] : [4, 6, 8] }
|
|
2569
|
-
}
|
|
2570
|
-
])
|
|
2571
|
-
),
|
|
2572
|
-
[GROK_IMAGINE_15_I2V_ENDPOINT]: { resolution: ["480p", "720p", "1080p"], durationSeconds: { min: 1, max: 15 } },
|
|
2573
|
-
[WAN_30_I2V_ENDPOINT]: {
|
|
2574
|
-
aspectRatio: ["auto", "16:9", "4:3", "1:1", "3:4", "9:16"],
|
|
2575
|
-
resolution: ["480p", "720p", "1080p"]
|
|
2576
|
-
},
|
|
2577
|
-
[KLING_26_I2V_ENDPOINT]: { durationSeconds: { values: [5, 10] } },
|
|
2578
|
-
...Object.fromEntries(KLING_O3_I2V_ENDPOINTS.map((e) => [e, { durationSeconds: { min: 3, max: 15 } }])),
|
|
2579
|
-
[LTX_25_FAST_I2V_ENDPOINT]: {
|
|
2580
|
-
aspectRatio: ["auto", "16:9", "9:16"],
|
|
2581
|
-
// fal also renders 1440p, which the canvas does not offer.
|
|
2582
|
-
resolution: ["720p", "1080p", "4k"],
|
|
2583
|
-
durationSeconds: { values: [6, 8, 10, 12, 14, 16, 18, 20] }
|
|
2584
|
-
},
|
|
2585
|
-
[LTX_25_PRO_I2V_ENDPOINT]: {
|
|
2586
|
-
aspectRatio: ["auto", "16:9", "9:16"],
|
|
2587
|
-
resolution: ["720p", "1080p"],
|
|
2588
|
-
durationSeconds: { values: [6, 8, 10] }
|
|
2589
|
-
}
|
|
2590
|
-
};
|
|
2591
|
-
var VIDEO_MAX_SECONDS_AT_RESOLUTION = {
|
|
2592
|
-
[LTX_25_FAST_I2V_ENDPOINT]: { "4k": 10 }
|
|
2593
|
-
};
|
|
2594
|
-
var VIDEO_UNSUPPORTED_PARAMS = {
|
|
2595
|
-
// Kling O3 Edit follows the source clip: its length, frame, size and look are
|
|
2596
|
-
// the source's, and the endpoint declares none of these knobs. A duration in
|
|
2597
|
-
// particular would only have been a (wrong) billing figure; the completer
|
|
2598
|
-
// measures the result instead.
|
|
2599
|
-
"fal-ai/kling-video/o3/pro/video-to-video/edit": [
|
|
2600
|
-
"resolution",
|
|
2601
|
-
"seed",
|
|
2602
|
-
"negativePrompt",
|
|
2603
|
-
"aspectRatio",
|
|
2604
|
-
"generateAudio",
|
|
2605
|
-
"durationSeconds"
|
|
2606
|
-
],
|
|
2607
|
-
// Wan's output is also as long as its source; it takes resolution and seed.
|
|
2608
|
-
"fal-ai/wan/v2.2-14b/animate/replace": ["durationSeconds", "negativePrompt", "aspectRatio", "generateAudio"],
|
|
2609
|
-
"blackforestlabs/flux-3/keyframes-to-video/draft": ["resolution", "seed", "negativePrompt"],
|
|
2610
|
-
"blackforestlabs/flux-3/first-last-frame-to-video/draft": ["resolution", "seed", "negativePrompt"],
|
|
2611
|
-
"blackforestlabs/flux-3/image-to-video/draft": ["resolution", "seed", "negativePrompt"],
|
|
2612
|
-
// The direct tier adds `resolution` (720p | 1080p) and nothing else: `seed` is
|
|
2613
|
-
// OUTPUT only on every FLUX.3 endpoint, so a caller cannot pin a take by seed.
|
|
2614
|
-
"blackforestlabs/flux-3/keyframes-to-video": ["seed", "negativePrompt"],
|
|
2615
|
-
"blackforestlabs/flux-3/first-last-frame-to-video": ["seed", "negativePrompt"],
|
|
2616
|
-
"blackforestlabs/flux-3/image-to-video": ["seed", "negativePrompt"],
|
|
2617
|
-
// Enhance renders whatever the cache holds: duration, aspect, audio and prompt
|
|
2618
|
-
// are all baked in, and the output is a fixed 1080p. `durationSeconds` is NOT
|
|
2619
|
-
// banned although it is not forwarded either (buildFalVideoInput sends only
|
|
2620
|
-
// the cache url + safety_tolerance): the executor injects the upstream
|
|
2621
|
-
// draft's duration as a COST hint, since enhance bills $0.29 per second and
|
|
2622
|
-
// the request itself carries nothing the estimate could read.
|
|
2623
|
-
"blackforestlabs/flux-3/draft-enhance": [
|
|
2624
|
-
"resolution",
|
|
2625
|
-
"seed",
|
|
2626
|
-
"negativePrompt",
|
|
2627
|
-
"aspectRatio",
|
|
2628
|
-
"generateAudio"
|
|
2629
|
-
],
|
|
2630
|
-
// Grok's schema declares no seed, negative prompt or audio switch: it always
|
|
2631
|
-
// renders audio.
|
|
2632
|
-
[GROK_IMAGINE_I2V_ENDPOINT]: ["seed", "negativePrompt", "generateAudio"],
|
|
2633
|
-
[GROK_IMAGINE_15_I2V_ENDPOINT]: ["aspectRatio", "seed", "negativePrompt", "generateAudio"],
|
|
2634
|
-
[WAN_30_I2V_ENDPOINT]: ["negativePrompt"],
|
|
2635
|
-
[KLING_26_I2V_ENDPOINT]: ["resolution", "aspectRatio", "seed"],
|
|
2636
|
-
...Object.fromEntries(KLING_O3_I2V_ENDPOINTS.map((e) => [e, ["resolution", "aspectRatio", "seed", "negativePrompt"]])),
|
|
2637
|
-
...Object.fromEntries(LTX_25_I2V_ENDPOINTS.map((e) => [e, ["seed", "negativePrompt"]]))
|
|
2638
|
-
};
|
|
2639
|
-
var perSecond = (rates) => (s, r) => {
|
|
2640
|
-
const rate = rates[r];
|
|
2641
|
-
return rate === void 0 ? void 0 : rate * s;
|
|
2642
|
-
};
|
|
2643
|
-
function veoSpec(model, label, perClip) {
|
|
1464
|
+
function veoSpec(model, label) {
|
|
2644
1465
|
return {
|
|
2645
1466
|
family: "veo",
|
|
2646
1467
|
label,
|
|
@@ -2652,8 +1473,6 @@ function veoSpec(model, label, perClip) {
|
|
|
2652
1473
|
defaultResolution: "720p",
|
|
2653
1474
|
audioSwitch: false,
|
|
2654
1475
|
defaultAudio: true,
|
|
2655
|
-
// KIE prices Veo per clip whatever its length, and always renders audio.
|
|
2656
|
-
price: (_s, r) => perClip[r],
|
|
2657
1476
|
build: (i) => ({
|
|
2658
1477
|
prompt: i.prompt,
|
|
2659
1478
|
model,
|
|
@@ -2669,9 +1488,9 @@ function veoSpec(model, label, perClip) {
|
|
|
2669
1488
|
var SEEDANCE_ASPECTS = ["auto", "1:1", "4:3", "3:4", "16:9", "9:16", "21:9"];
|
|
2670
1489
|
var seedanceAspect = (a) => a === "auto" ? "adaptive" : a;
|
|
2671
1490
|
var KIE_VIDEO_SPECS = {
|
|
2672
|
-
veo3_lite: veoSpec("veo3_lite", "Veo 3.1 Lite"
|
|
2673
|
-
veo3_fast: veoSpec("veo3_fast", "Veo 3.1 Fast"
|
|
2674
|
-
veo3: veoSpec("veo3", "Veo 3.1"
|
|
1491
|
+
veo3_lite: veoSpec("veo3_lite", "Veo 3.1 Lite"),
|
|
1492
|
+
veo3_fast: veoSpec("veo3_fast", "Veo 3.1 Fast"),
|
|
1493
|
+
veo3: veoSpec("veo3", "Veo 3.1"),
|
|
2675
1494
|
"grok-imagine/image-to-video": {
|
|
2676
1495
|
family: "job",
|
|
2677
1496
|
label: "Grok Imagine",
|
|
@@ -2685,7 +1504,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2685
1504
|
// here only feeds `price()`, which ignores it, so it states no audio fact.
|
|
2686
1505
|
audioSwitch: false,
|
|
2687
1506
|
defaultAudio: false,
|
|
2688
|
-
price: perSecond({ "480p": 0.012, "720p": 0.0225, "1080p": 0.04 }),
|
|
2689
1507
|
build: (i) => ({
|
|
2690
1508
|
image_urls: [i.start],
|
|
2691
1509
|
prompt: i.prompt,
|
|
@@ -2707,7 +1525,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2707
1525
|
// As for Grok Imagine 1.0 above: audio is always rendered, with no switch.
|
|
2708
1526
|
audioSwitch: false,
|
|
2709
1527
|
defaultAudio: false,
|
|
2710
|
-
price: perSecond({ "480p": 0.012, "720p": 0.0225 }),
|
|
2711
1528
|
build: (i) => ({
|
|
2712
1529
|
image_urls: [i.start],
|
|
2713
1530
|
prompt: i.prompt,
|
|
@@ -2726,7 +1543,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2726
1543
|
defaultResolution: "",
|
|
2727
1544
|
audioSwitch: false,
|
|
2728
1545
|
defaultAudio: false,
|
|
2729
|
-
price: (s) => s >= 10 ? 0.42 : 0.21,
|
|
2730
1546
|
build: (i) => ({
|
|
2731
1547
|
prompt: i.prompt,
|
|
2732
1548
|
image_url: i.start,
|
|
@@ -2745,7 +1561,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2745
1561
|
defaultResolution: "",
|
|
2746
1562
|
audioSwitch: true,
|
|
2747
1563
|
defaultAudio: false,
|
|
2748
|
-
price: (s, _r, audio) => (audio ? 0.55 : 0.275) * (s >= 10 ? 2 : 1),
|
|
2749
1564
|
build: (i) => ({
|
|
2750
1565
|
prompt: i.prompt,
|
|
2751
1566
|
image_urls: [i.start],
|
|
@@ -2764,10 +1579,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2764
1579
|
defaultResolution: "720p",
|
|
2765
1580
|
audioSwitch: true,
|
|
2766
1581
|
defaultAudio: true,
|
|
2767
|
-
// A real 4 s 720p task billed 164 credits ($0.82, $0.205 per second) on
|
|
2768
|
-
// 2026-10-04, confirming this table. KIE's web page shows a lower "$0.124"
|
|
2769
|
-
// figure that the API does not bill.
|
|
2770
|
-
price: perSecond({ "480p": 0.095, "720p": 0.205, "1080p": 0.51, "4k": 1.04 }),
|
|
2771
1582
|
build: (i) => ({
|
|
2772
1583
|
prompt: i.prompt,
|
|
2773
1584
|
first_frame_url: i.start,
|
|
@@ -2790,7 +1601,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2790
1601
|
defaultResolution: "720p",
|
|
2791
1602
|
audioSwitch: true,
|
|
2792
1603
|
defaultAudio: true,
|
|
2793
|
-
price: perSecond({ "480p": 0.14, "720p": 0.315, "1080p": 0.79 }),
|
|
2794
1604
|
build: (i) => ({
|
|
2795
1605
|
prompt: i.prompt,
|
|
2796
1606
|
first_frame_url: i.start,
|
|
@@ -2813,8 +1623,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2813
1623
|
defaultResolution: "720p",
|
|
2814
1624
|
audioSwitch: true,
|
|
2815
1625
|
defaultAudio: true,
|
|
2816
|
-
// Audio is included in the price.
|
|
2817
|
-
price: perSecond({ "480p": 0.04, "720p": 0.08, "1080p": 0.16 }),
|
|
2818
1626
|
build: (i) => ({
|
|
2819
1627
|
prompt: i.prompt,
|
|
2820
1628
|
first_frame_url: i.start,
|
|
@@ -2838,7 +1646,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2838
1646
|
defaultResolution: "720p",
|
|
2839
1647
|
audioSwitch: false,
|
|
2840
1648
|
defaultAudio: false,
|
|
2841
|
-
price: perSecond({ "720p": 0.04, "1080p": 0.065 }),
|
|
2842
1649
|
build: (i) => ({
|
|
2843
1650
|
prompt: i.prompt,
|
|
2844
1651
|
first_frame_url: i.start,
|
|
@@ -2859,8 +1666,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2859
1666
|
defaultResolution: "720p",
|
|
2860
1667
|
audioSwitch: false,
|
|
2861
1668
|
defaultAudio: false,
|
|
2862
|
-
// Priced per clip by length; 4K carries a surcharge.
|
|
2863
|
-
price: (s, r) => (r === "4k" ? { 4: 0.735, 6: 0.84, 8: 0.945, 10: 1.05 } : { 4: 0.315, 6: 0.42, 8: 0.525, 10: 0.63 })[s],
|
|
2864
1669
|
// The first-and-last-frame mode: KIE refuses it combined with registered
|
|
2865
1670
|
// characters, reference images, audio or video, so none are sent.
|
|
2866
1671
|
build: (i) => ({
|
|
@@ -2885,8 +1690,6 @@ var KIE_VIDEO_SPECS = {
|
|
|
2885
1690
|
defaultResolution: "720p",
|
|
2886
1691
|
audioSwitch: true,
|
|
2887
1692
|
defaultAudio: false,
|
|
2888
|
-
// With-audio rates from KIE's price feed, the higher of its two listings.
|
|
2889
|
-
price: (s, r, audio) => perSecond(audio ? { "720p": 0.1, "1080p": 0.135, "4k": 0.335 } : { "720p": 0.07, "1080p": 0.09, "4k": 0.335 })(s, r),
|
|
2890
1693
|
build: (i) => ({
|
|
2891
1694
|
prompt: i.prompt,
|
|
2892
1695
|
image_urls: i.end ? [i.start, i.end] : [i.start],
|
|
@@ -2895,35 +1698,891 @@ var KIE_VIDEO_SPECS = {
|
|
|
2895
1698
|
audio: i.audio
|
|
2896
1699
|
})
|
|
2897
1700
|
}
|
|
2898
|
-
};
|
|
2899
|
-
function veoSpec2(label,
|
|
2900
|
-
return {
|
|
2901
|
-
label,
|
|
2902
|
-
// OpenRouter's Veo has no auto: it renders exactly one of these.
|
|
2903
|
-
aspectRatios: ["16:9", "9:16"],
|
|
2904
|
-
resolutions
|
|
2905
|
-
durations: { values: [4, 6, 8] },
|
|
2906
|
-
defaultSeconds: 8,
|
|
2907
|
-
defaultResolution: "720p"
|
|
2908
|
-
|
|
2909
|
-
|
|
1701
|
+
};
|
|
1702
|
+
function veoSpec2(label, resolutions) {
|
|
1703
|
+
return {
|
|
1704
|
+
label,
|
|
1705
|
+
// OpenRouter's Veo has no auto: it renders exactly one of these.
|
|
1706
|
+
aspectRatios: ["16:9", "9:16"],
|
|
1707
|
+
resolutions,
|
|
1708
|
+
durations: { values: [4, 6, 8] },
|
|
1709
|
+
defaultSeconds: 8,
|
|
1710
|
+
defaultResolution: "720p"
|
|
1711
|
+
};
|
|
1712
|
+
}
|
|
1713
|
+
var OPENROUTER_VIDEO_SPECS = {
|
|
1714
|
+
"google/veo-3.1-lite": veoSpec2("Veo 3.1 Lite", ["720p", "1080p"]),
|
|
1715
|
+
"google/veo-3.1-fast": veoSpec2("Veo 3.1 Fast", ["720p", "1080p", "4k"]),
|
|
1716
|
+
"google/veo-3.1": veoSpec2("Veo 3.1", ["720p", "1080p", "4k"])
|
|
1717
|
+
};
|
|
1718
|
+
var GROK_IMAGINE_I2V_ENDPOINT = "xai/grok-imagine-video/image-to-video";
|
|
1719
|
+
var GROK_IMAGINE_15_I2V_ENDPOINT = "xai/grok-imagine-video/v1.5/image-to-video";
|
|
1720
|
+
var WAN_30_I2V_ENDPOINT = "alibaba/wan-3.0/image-to-video";
|
|
1721
|
+
var KLING_26_I2V_ENDPOINT = "fal-ai/kling-video/v2.6/pro/image-to-video";
|
|
1722
|
+
var KLING_O3_STANDARD_I2V_ENDPOINT = "fal-ai/kling-video/o3/standard/image-to-video";
|
|
1723
|
+
var KLING_O3_PRO_I2V_ENDPOINT = "fal-ai/kling-video/o3/pro/image-to-video";
|
|
1724
|
+
var KLING_O3_I2V_ENDPOINTS = [KLING_O3_STANDARD_I2V_ENDPOINT, KLING_O3_PRO_I2V_ENDPOINT];
|
|
1725
|
+
var LTX_25_FAST_I2V_ENDPOINT = "lightricks/ltx-2.5/image-to-video/fast";
|
|
1726
|
+
var LTX_25_PRO_I2V_ENDPOINT = "lightricks/ltx-2.5/image-to-video/pro";
|
|
1727
|
+
var LTX_25_I2V_ENDPOINTS = [LTX_25_FAST_I2V_ENDPOINT, LTX_25_PRO_I2V_ENDPOINT];
|
|
1728
|
+
var VEO_LITE_I2V_ENDPOINT = "fal-ai/veo3.1/lite/image-to-video";
|
|
1729
|
+
var VEO_LITE_FLF_ENDPOINT = "fal-ai/veo3.1/lite/first-last-frame-to-video";
|
|
1730
|
+
var VEO_FAST_I2V_ENDPOINT = "fal-ai/veo3.1/fast/image-to-video";
|
|
1731
|
+
var VEO_FAST_FLF_ENDPOINT = "fal-ai/veo3.1/fast/first-last-frame-to-video";
|
|
1732
|
+
var VEO_I2V_ENDPOINT = "fal-ai/veo3.1/image-to-video";
|
|
1733
|
+
var VEO_FLF_ENDPOINT = "fal-ai/veo3.1/first-last-frame-to-video";
|
|
1734
|
+
var VEO_ENDPOINTS = [
|
|
1735
|
+
VEO_LITE_I2V_ENDPOINT,
|
|
1736
|
+
VEO_LITE_FLF_ENDPOINT,
|
|
1737
|
+
VEO_FAST_I2V_ENDPOINT,
|
|
1738
|
+
VEO_FAST_FLF_ENDPOINT,
|
|
1739
|
+
VEO_I2V_ENDPOINT,
|
|
1740
|
+
VEO_FLF_ENDPOINT
|
|
1741
|
+
];
|
|
1742
|
+
var VIDEO_FIXED_RESOLUTION = {
|
|
1743
|
+
"blackforestlabs/flux-3/keyframes-to-video/draft": "720p",
|
|
1744
|
+
"blackforestlabs/flux-3/first-last-frame-to-video/draft": "720p",
|
|
1745
|
+
"blackforestlabs/flux-3/image-to-video/draft": "720p",
|
|
1746
|
+
"blackforestlabs/flux-3/draft-enhance": "1080p",
|
|
1747
|
+
// Not a resolution the caller picks: Kling O3 Edit renders at the source's.
|
|
1748
|
+
"fal-ai/kling-video/o3/pro/video-to-video/edit": "source",
|
|
1749
|
+
// Kling 2.6 Pro takes no resolution; it renders 1080p.
|
|
1750
|
+
[KLING_26_I2V_ENDPOINT]: "1080p",
|
|
1751
|
+
// Not a resolution the caller picks: Kling O3's tier sets the size.
|
|
1752
|
+
[KLING_O3_STANDARD_I2V_ENDPOINT]: "fixed",
|
|
1753
|
+
[KLING_O3_PRO_I2V_ENDPOINT]: "fixed"
|
|
1754
|
+
};
|
|
1755
|
+
var VIDEO_PINNED_DEFAULT_SECONDS = {
|
|
1756
|
+
[GROK_IMAGINE_I2V_ENDPOINT]: 5,
|
|
1757
|
+
// Veo defaults to 8 s itself, and 8 s is the only length Lite first-and-last
|
|
1758
|
+
// renders; pinning it keeps the bill and the clip in step either way.
|
|
1759
|
+
...Object.fromEntries(VEO_ENDPOINTS.map((e) => [e, 8])),
|
|
1760
|
+
// The fal twins render the length their KIE entries default to, so a clip
|
|
1761
|
+
// falling back from KIE to fal has the same length.
|
|
1762
|
+
[GROK_IMAGINE_15_I2V_ENDPOINT]: 8,
|
|
1763
|
+
[WAN_30_I2V_ENDPOINT]: 5,
|
|
1764
|
+
[KLING_26_I2V_ENDPOINT]: 5,
|
|
1765
|
+
[KLING_O3_STANDARD_I2V_ENDPOINT]: 5,
|
|
1766
|
+
[KLING_O3_PRO_I2V_ENDPOINT]: 5,
|
|
1767
|
+
// LTX-2.5 defaults to "auto", a length nobody can price up front; 6 s is its
|
|
1768
|
+
// shortest clip on both tiers.
|
|
1769
|
+
[LTX_25_FAST_I2V_ENDPOINT]: 6,
|
|
1770
|
+
[LTX_25_PRO_I2V_ENDPOINT]: 6
|
|
1771
|
+
};
|
|
1772
|
+
var VIDEO_DEFAULT_RESOLUTION = {
|
|
1773
|
+
"blackforestlabs/flux-3/keyframes-to-video": "720p",
|
|
1774
|
+
"blackforestlabs/flux-3/first-last-frame-to-video": "720p",
|
|
1775
|
+
"blackforestlabs/flux-3/image-to-video": "720p",
|
|
1776
|
+
// fal schema default: Grok renders 720p.
|
|
1777
|
+
[GROK_IMAGINE_I2V_ENDPOINT]: "720p",
|
|
1778
|
+
...Object.fromEntries(VEO_ENDPOINTS.map((e) => [e, "720p"])),
|
|
1779
|
+
[GROK_IMAGINE_15_I2V_ENDPOINT]: "720p",
|
|
1780
|
+
// fal schema default: Wan 3.0 renders 1080p unless asked for less.
|
|
1781
|
+
[WAN_30_I2V_ENDPOINT]: "1080p",
|
|
1782
|
+
// fal schema default: LTX-2.5 renders 1080p unless asked for less.
|
|
1783
|
+
[LTX_25_FAST_I2V_ENDPOINT]: "1080p",
|
|
1784
|
+
[LTX_25_PRO_I2V_ENDPOINT]: "1080p"
|
|
1785
|
+
};
|
|
1786
|
+
var VIDEO_ALLOWED_VALUES = {
|
|
1787
|
+
// Seedance 2.5 derives its aspect from the input image.
|
|
1788
|
+
"bytedance/seedance-2.5/image-to-video": { aspectRatio: ["auto"] },
|
|
1789
|
+
"fal-ai/kling-video/v2.5-turbo/pro/image-to-video": {
|
|
1790
|
+
aspectRatio: ["16:9", "9:16", "1:1"],
|
|
1791
|
+
durationSeconds: { values: [5, 10] }
|
|
1792
|
+
},
|
|
1793
|
+
[GROK_IMAGINE_I2V_ENDPOINT]: {
|
|
1794
|
+
aspectRatio: ["auto", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16"],
|
|
1795
|
+
resolution: ["480p", "720p"],
|
|
1796
|
+
durationSeconds: { min: 1, max: 15 }
|
|
1797
|
+
},
|
|
1798
|
+
...Object.fromEntries(
|
|
1799
|
+
VEO_ENDPOINTS.map((e) => [
|
|
1800
|
+
e,
|
|
1801
|
+
{
|
|
1802
|
+
aspectRatio: ["auto", "16:9", "9:16"],
|
|
1803
|
+
resolution: e === VEO_LITE_I2V_ENDPOINT || e === VEO_LITE_FLF_ENDPOINT ? ["720p", "1080p"] : ["720p", "1080p", "4k"],
|
|
1804
|
+
// Lite first-and-last renders 8 s only (its schema pins the const).
|
|
1805
|
+
durationSeconds: { values: e === VEO_LITE_FLF_ENDPOINT ? [8] : [4, 6, 8] }
|
|
1806
|
+
}
|
|
1807
|
+
])
|
|
1808
|
+
),
|
|
1809
|
+
[GROK_IMAGINE_15_I2V_ENDPOINT]: { resolution: ["480p", "720p", "1080p"], durationSeconds: { min: 1, max: 15 } },
|
|
1810
|
+
[WAN_30_I2V_ENDPOINT]: {
|
|
1811
|
+
aspectRatio: ["auto", "16:9", "4:3", "1:1", "3:4", "9:16"],
|
|
1812
|
+
resolution: ["480p", "720p", "1080p"]
|
|
1813
|
+
},
|
|
1814
|
+
[KLING_26_I2V_ENDPOINT]: { durationSeconds: { values: [5, 10] } },
|
|
1815
|
+
...Object.fromEntries(KLING_O3_I2V_ENDPOINTS.map((e) => [e, { durationSeconds: { min: 3, max: 15 } }])),
|
|
1816
|
+
[LTX_25_FAST_I2V_ENDPOINT]: {
|
|
1817
|
+
aspectRatio: ["auto", "16:9", "9:16"],
|
|
1818
|
+
// fal also renders 1440p, which the canvas does not offer.
|
|
1819
|
+
resolution: ["720p", "1080p", "4k"],
|
|
1820
|
+
durationSeconds: { values: [6, 8, 10, 12, 14, 16, 18, 20] }
|
|
1821
|
+
},
|
|
1822
|
+
[LTX_25_PRO_I2V_ENDPOINT]: {
|
|
1823
|
+
aspectRatio: ["auto", "16:9", "9:16"],
|
|
1824
|
+
resolution: ["720p", "1080p"],
|
|
1825
|
+
durationSeconds: { values: [6, 8, 10] }
|
|
1826
|
+
}
|
|
1827
|
+
};
|
|
1828
|
+
var VIDEO_MAX_SECONDS_AT_RESOLUTION = {
|
|
1829
|
+
[LTX_25_FAST_I2V_ENDPOINT]: { "4k": 10 }
|
|
1830
|
+
};
|
|
1831
|
+
var VIDEO_UNSUPPORTED_PARAMS = {
|
|
1832
|
+
// Kling O3 Edit follows the source clip: its length, frame, size and look are
|
|
1833
|
+
// the source's, and the endpoint declares none of these knobs. A duration in
|
|
1834
|
+
// particular would only have been a (wrong) billing figure; the completer
|
|
1835
|
+
// measures the result instead.
|
|
1836
|
+
"fal-ai/kling-video/o3/pro/video-to-video/edit": [
|
|
1837
|
+
"resolution",
|
|
1838
|
+
"seed",
|
|
1839
|
+
"negativePrompt",
|
|
1840
|
+
"aspectRatio",
|
|
1841
|
+
"generateAudio",
|
|
1842
|
+
"durationSeconds"
|
|
1843
|
+
],
|
|
1844
|
+
// Wan's output is also as long as its source; it takes resolution and seed.
|
|
1845
|
+
"fal-ai/wan/v2.2-14b/animate/replace": ["durationSeconds", "negativePrompt", "aspectRatio", "generateAudio"],
|
|
1846
|
+
"blackforestlabs/flux-3/keyframes-to-video/draft": ["resolution", "seed", "negativePrompt"],
|
|
1847
|
+
"blackforestlabs/flux-3/first-last-frame-to-video/draft": ["resolution", "seed", "negativePrompt"],
|
|
1848
|
+
"blackforestlabs/flux-3/image-to-video/draft": ["resolution", "seed", "negativePrompt"],
|
|
1849
|
+
// The direct tier adds `resolution` (720p | 1080p) and nothing else: `seed` is
|
|
1850
|
+
// OUTPUT only on every FLUX.3 endpoint, so a caller cannot pin a take by seed.
|
|
1851
|
+
"blackforestlabs/flux-3/keyframes-to-video": ["seed", "negativePrompt"],
|
|
1852
|
+
"blackforestlabs/flux-3/first-last-frame-to-video": ["seed", "negativePrompt"],
|
|
1853
|
+
"blackforestlabs/flux-3/image-to-video": ["seed", "negativePrompt"],
|
|
1854
|
+
// Enhance renders whatever the cache holds: duration, aspect, audio and prompt
|
|
1855
|
+
// are all baked in, and the output is a fixed 1080p. `durationSeconds` is NOT
|
|
1856
|
+
// banned although it is not forwarded either (buildFalVideoInput sends only
|
|
1857
|
+
// the cache url + safety_tolerance): the executor injects the upstream
|
|
1858
|
+
// draft's duration as a COST hint, since enhance bills per second and
|
|
1859
|
+
// the request itself carries nothing the estimate could read.
|
|
1860
|
+
"blackforestlabs/flux-3/draft-enhance": [
|
|
1861
|
+
"resolution",
|
|
1862
|
+
"seed",
|
|
1863
|
+
"negativePrompt",
|
|
1864
|
+
"aspectRatio",
|
|
1865
|
+
"generateAudio"
|
|
1866
|
+
],
|
|
1867
|
+
// Grok's schema declares no seed, negative prompt or audio switch: it always
|
|
1868
|
+
// renders audio.
|
|
1869
|
+
[GROK_IMAGINE_I2V_ENDPOINT]: ["seed", "negativePrompt", "generateAudio"],
|
|
1870
|
+
[GROK_IMAGINE_15_I2V_ENDPOINT]: ["aspectRatio", "seed", "negativePrompt", "generateAudio"],
|
|
1871
|
+
[WAN_30_I2V_ENDPOINT]: ["negativePrompt"],
|
|
1872
|
+
[KLING_26_I2V_ENDPOINT]: ["resolution", "aspectRatio", "seed"],
|
|
1873
|
+
...Object.fromEntries(KLING_O3_I2V_ENDPOINTS.map((e) => [e, ["resolution", "aspectRatio", "seed", "negativePrompt"]])),
|
|
1874
|
+
...Object.fromEntries(LTX_25_I2V_ENDPOINTS.map((e) => [e, ["seed", "negativePrompt"]]))
|
|
1875
|
+
};
|
|
1876
|
+
var ROWS = [
|
|
1877
|
+
[0, "Idle", "DailyActions", "Idle"],
|
|
1878
|
+
[1, "Walking_Woman", "WalkAndRun", "Walking"],
|
|
1879
|
+
[2, "Alert", "DailyActions", "LookingAround"],
|
|
1880
|
+
[3, "Arise", "DailyActions", "LookingAround"],
|
|
1881
|
+
[4, "Attack", "Fighting", "AttackingwithWeapon"],
|
|
1882
|
+
[5, "BackLeft_run", "WalkAndRun", "Running"],
|
|
1883
|
+
[6, "BackRight_Run", "WalkAndRun", "Running"],
|
|
1884
|
+
[7, "BeHit_FlyUp", "Fighting", "GettingHit"],
|
|
1885
|
+
[8, "Dead", "Fighting", "Dying"],
|
|
1886
|
+
[9, "ForwardLeft_Run_Fight", "Fighting", "Transitioning"],
|
|
1887
|
+
[10, "ForwardRight_Run_Fight", "Fighting", "Transitioning"],
|
|
1888
|
+
[11, "Idle_02", "DailyActions", "Idle"],
|
|
1889
|
+
[12, "Idle_03", "DailyActions", "Idle"],
|
|
1890
|
+
[13, "Jump_Run", "WalkAndRun", "Running"],
|
|
1891
|
+
[14, "Run_02", "WalkAndRun", "Running"],
|
|
1892
|
+
[15, "Run_03", "WalkAndRun", "Running"],
|
|
1893
|
+
[16, "RunFast", "WalkAndRun", "Running"],
|
|
1894
|
+
[17, "Skill_01", "BodyMovements", "Acting"],
|
|
1895
|
+
[18, "Skill_02", "BodyMovements", "Acting"],
|
|
1896
|
+
[19, "Skill_03", "BodyMovements", "Acting"],
|
|
1897
|
+
[20, "Walk_Fight_Back", "WalkAndRun", "Walking"],
|
|
1898
|
+
[21, "Walk_Fight_Forward", "WalkAndRun", "Walking"],
|
|
1899
|
+
[22, "FunnyDancing_01", "Dancing", "Dancing"],
|
|
1900
|
+
[23, "FunnyDancing_02", "Dancing", "Dancing"],
|
|
1901
|
+
[24, "FunnyDancing_03", "Dancing", "Dancing"],
|
|
1902
|
+
[25, "Agree_Gesture", "DailyActions", "Interacting"],
|
|
1903
|
+
[26, "Angry_Stomp", "DailyActions", "Interacting"],
|
|
1904
|
+
[27, "Big_Heart_Gesture", "BodyMovements", "Acting"],
|
|
1905
|
+
[28, "Big_Wave_Hello", "DailyActions", "Interacting"],
|
|
1906
|
+
[29, "Call_Gesture", "BodyMovements", "Acting"],
|
|
1907
|
+
[30, "Casual_Walk", "WalkAndRun", "Walking"],
|
|
1908
|
+
[31, "Catching_Breath", "BodyMovements", "Acting"],
|
|
1909
|
+
[32, "Chair_Sit_Idle_F", "DailyActions", "Idle"],
|
|
1910
|
+
[33, "Chair_Sit_Idle_M", "DailyActions", "Idle"],
|
|
1911
|
+
[34, "Checkout_Gesture", "DailyActions", "Interacting"],
|
|
1912
|
+
[35, "Clapping_Run", "BodyMovements", "Acting"],
|
|
1913
|
+
[36, "Confused_Scratch", "DailyActions", "Idle"],
|
|
1914
|
+
[37, "Discuss_While_Moving", "DailyActions", "Interacting"],
|
|
1915
|
+
[38, "Dozing_Elderly", "DailyActions", "Idle"],
|
|
1916
|
+
[39, "Excited_Walk_F", "BodyMovements", "Acting"],
|
|
1917
|
+
[40, "Excited_Walk_M", "BodyMovements", "Acting"],
|
|
1918
|
+
[41, "Formal_Bow", "DailyActions", "Interacting"],
|
|
1919
|
+
[42, "Gentlemans_Bow", "DailyActions", "Interacting"],
|
|
1920
|
+
[43, "Handbag_Walk", "BodyMovements", "Acting"],
|
|
1921
|
+
[44, "Happy_jump_f", "BodyMovements", "Acting"],
|
|
1922
|
+
[45, "Indoor_Play", "BodyMovements", "Acting"],
|
|
1923
|
+
[46, "Jump_Rope", "BodyMovements", "Acting"],
|
|
1924
|
+
[47, "Listening_Gesture", "DailyActions", "Interacting"],
|
|
1925
|
+
[48, "Mirror_Viewing", "DailyActions", "Idle"],
|
|
1926
|
+
[49, "Motivational_Cheer", "DailyActions", "Interacting"],
|
|
1927
|
+
[50, "Phone_Call_Gesture", "DailyActions", "Interacting"],
|
|
1928
|
+
[51, "Shouting_Angrily", "BodyMovements", "Acting"],
|
|
1929
|
+
[52, "Sit_to_Stand_Transition_F", "DailyActions", "Transitioning"],
|
|
1930
|
+
[53, "Sit_to_Stand_Transition_M", "DailyActions", "Transitioning"],
|
|
1931
|
+
[54, "Squat_Stance", "Dancing", "Dancing"],
|
|
1932
|
+
[55, "Stage_Walk", "WalkAndRun", "Walking"],
|
|
1933
|
+
[56, "Stand_and_Chat", "DailyActions", "Interacting"],
|
|
1934
|
+
[57, "Stand_to_Sit_Transition_M", "DailyActions", "Transitioning"],
|
|
1935
|
+
[58, "Step_to_Sit_Transition", "DailyActions", "Transitioning"],
|
|
1936
|
+
[59, "Victory_Cheer", "BodyMovements", "Acting"],
|
|
1937
|
+
[60, "Walk_to_Sit", "DailyActions", "Transitioning"],
|
|
1938
|
+
[61, "happy_jump_m", "BodyMovements", "Acting"],
|
|
1939
|
+
[62, "penguin_walk", "BodyMovements", "Acting"],
|
|
1940
|
+
[63, "Arm_Circle_Shuffle", "Dancing", "Dancing"],
|
|
1941
|
+
[64, "All_Night_Dance", "Dancing", "Dancing"],
|
|
1942
|
+
[65, "Bass_Beats", "Dancing", "Dancing"],
|
|
1943
|
+
[66, "Boom_Dance", "Dancing", "Dancing"],
|
|
1944
|
+
[67, "Bubble_Dance", "Dancing", "Dancing"],
|
|
1945
|
+
[68, "Cherish_Pop_Dance", "Dancing", "Dancing"],
|
|
1946
|
+
[69, "Crystal_Beads", "Dancing", "Dancing"],
|
|
1947
|
+
[70, "Cardio_Dance", "Dancing", "Dancing"],
|
|
1948
|
+
[71, "Denim_Pop_Dance", "Dancing", "Dancing"],
|
|
1949
|
+
[72, "Dont_You_Dare", "Dancing", "Dancing"],
|
|
1950
|
+
[73, "Fast_Lightning", "Dancing", "Dancing"],
|
|
1951
|
+
[74, "Gangnam_Groove", "Dancing", "Dancing"],
|
|
1952
|
+
[75, "Indoor_Swing", "Dancing", "Dancing"],
|
|
1953
|
+
[76, "Love_You_Pop_Dance", "Dancing", "Dancing"],
|
|
1954
|
+
[77, "Magic_Genie", "Dancing", "Dancing"],
|
|
1955
|
+
[78, "Not_Your_Mom", "Dancing", "Dancing"],
|
|
1956
|
+
[79, "OMG_Groove", "Dancing", "Dancing"],
|
|
1957
|
+
[80, "Pop_Dance_LSA2", "Dancing", "Dancing"],
|
|
1958
|
+
[81, "Pod_Baby_Groove", "Dancing", "Dancing"],
|
|
1959
|
+
[82, "Shake_It_Off_Dance", "Dancing", "Dancing"],
|
|
1960
|
+
[83, "Superlove_Pop_Dance", "Dancing", "Dancing"],
|
|
1961
|
+
[84, "You_Groove", "Dancing", "Dancing"],
|
|
1962
|
+
[85, "Axe_Stance", "Fighting", "Transitioning"],
|
|
1963
|
+
[86, "Basic_Jump", "Fighting", "AttackingwithWeapon"],
|
|
1964
|
+
[87, "Boxing_Practice", "Fighting", "Punching"],
|
|
1965
|
+
[88, "Chest_Pound_Taunt", "Fighting", "Transitioning"],
|
|
1966
|
+
[89, "Combat_Stance", "Fighting", "AttackingwithWeapon"],
|
|
1967
|
+
[90, "Counterstrike", "Fighting", "Punching"],
|
|
1968
|
+
[91, "Double_Blade_Spin", "Fighting", "AttackingwithWeapon"],
|
|
1969
|
+
[92, "Double_Combo_Attack", "Fighting", "AttackingwithWeapon"],
|
|
1970
|
+
[93, "Dodge_and_Counter", "Fighting", "Punching"],
|
|
1971
|
+
[94, "Flying_Fist_Kick", "Fighting", "Punching"],
|
|
1972
|
+
[95, "Gun_Hold_Left_Turn", "Fighting", "AttackingwithWeapon"],
|
|
1973
|
+
[96, "Kung_Fu_Punch", "Fighting", "Punching"],
|
|
1974
|
+
[97, "Left_Slash", "Fighting", "AttackingwithWeapon"],
|
|
1975
|
+
[98, "Run_and_Shoot", "Fighting", "AttackingwithWeapon"],
|
|
1976
|
+
[99, "Reaping_Swing", "Fighting", "Transitioning"],
|
|
1977
|
+
[100, "Rightward_Spin", "Fighting", "Transitioning"],
|
|
1978
|
+
[101, "Sword_Shout", "BodyMovements", "Acting"],
|
|
1979
|
+
[102, "Sword_Judgment", "Fighting", "AttackingwithWeapon"],
|
|
1980
|
+
[103, "Simple_Kick", "Fighting", "AttackingwithWeapon"],
|
|
1981
|
+
[104, "Side_Shot", "Fighting", "AttackingwithWeapon"],
|
|
1982
|
+
[105, "Triple_Combo_Attack", "Fighting", "AttackingwithWeapon"],
|
|
1983
|
+
[106, "Confident_Walk", "WalkAndRun", "Walking"],
|
|
1984
|
+
[107, "Confident_Strut", "WalkAndRun", "Walking"],
|
|
1985
|
+
[108, "Flirty_Strut", "WalkAndRun", "Walking"],
|
|
1986
|
+
[109, "Groovy_Walk", "BodyMovements", "Acting"],
|
|
1987
|
+
[110, "Hello_Run", "WalkAndRun", "Running"],
|
|
1988
|
+
[111, "Injured_Walk", "WalkAndRun", "Walking"],
|
|
1989
|
+
[112, "Monster_Walk", "WalkAndRun", "Walking"],
|
|
1990
|
+
[113, "Mummy_Stagger", "BodyMovements", "Acting"],
|
|
1991
|
+
[114, "Proud_Strut", "WalkAndRun", "Walking"],
|
|
1992
|
+
[115, "Quick_Walk", "WalkAndRun", "Walking"],
|
|
1993
|
+
[116, "Run_to_Walk_Transition", "WalkAndRun", "Walking"],
|
|
1994
|
+
[117, "Red_Carpet_Walk", "WalkAndRun", "Walking"],
|
|
1995
|
+
[118, "Skip_Forward", "WalkAndRun", "Walking"],
|
|
1996
|
+
[119, "Slow_Orc_Walk", "WalkAndRun", "Walking"],
|
|
1997
|
+
[120, "Touch_and_Run", "WalkAndRun", "Running"],
|
|
1998
|
+
[121, "Thoughtful_Walk", "WalkAndRun", "Walking"],
|
|
1999
|
+
[122, "Texting_Walk", "WalkAndRun", "Walking"],
|
|
2000
|
+
[123, "Unsteady_Walk", "WalkAndRun", "Walking"],
|
|
2001
|
+
[124, "Walking_with_Phone", "WalkAndRun", "Walking"],
|
|
2002
|
+
[125, "Charged_Spell_Cast", "Fighting", "CastingSpell"],
|
|
2003
|
+
[126, "Charged_Spell_Cast_1", "Fighting", "CastingSpell"],
|
|
2004
|
+
[127, "Charged_Ground_Slam", "Fighting", "CastingSpell"],
|
|
2005
|
+
[128, "Heavy_Hammer_Swing", "Fighting", "AttackingwithWeapon"],
|
|
2006
|
+
[129, "mage_soell_cast", "Fighting", "CastingSpell"],
|
|
2007
|
+
[130, "mage_soell_cast_1", "Fighting", "CastingSpell"],
|
|
2008
|
+
[131, "mage_soell_cast_2", "Fighting", "CastingSpell"],
|
|
2009
|
+
[132, "mage_soell_cast_3", "Fighting", "CastingSpell"],
|
|
2010
|
+
[133, "mage_soell_cast_4", "Fighting", "CastingSpell"],
|
|
2011
|
+
[134, "mage_soell_cast_5", "Fighting", "CastingSpell"],
|
|
2012
|
+
[135, "mage_soell_cast_6", "Fighting", "CastingSpell"],
|
|
2013
|
+
[136, "mage_soell_cast_7", "Fighting", "CastingSpell"],
|
|
2014
|
+
[137, "mage_soell_cast_8", "Fighting", "CastingSpell"],
|
|
2015
|
+
[138, "Block1", "Fighting", "Blocking"],
|
|
2016
|
+
[139, "Block2", "Fighting", "Blocking"],
|
|
2017
|
+
[140, "Block3", "Fighting", "Blocking"],
|
|
2018
|
+
[141, "Block4", "Fighting", "Blocking"],
|
|
2019
|
+
[142, "Block5", "Fighting", "Blocking"],
|
|
2020
|
+
[143, "Block6", "Fighting", "Blocking"],
|
|
2021
|
+
[144, "Block8", "Fighting", "Blocking"],
|
|
2022
|
+
[145, "Block9", "Fighting", "Blocking"],
|
|
2023
|
+
[146, "Block10", "Fighting", "Blocking"],
|
|
2024
|
+
[147, "Sword_Parry", "Fighting", "Blocking"],
|
|
2025
|
+
[148, "Sword_Parry_Backward", "Fighting", "Blocking"],
|
|
2026
|
+
[149, "Two_Handed_Parry", "Fighting", "Blocking"],
|
|
2027
|
+
[150, "Hit_Reaction_with_Bow", "Fighting", "Blocking"],
|
|
2028
|
+
[151, "Sword_Parry_Backward_1", "Fighting", "Blocking"],
|
|
2029
|
+
[152, "Sword_Parry_Backward_2", "Fighting", "Blocking"],
|
|
2030
|
+
[153, "Sword_Parry_Backward_3", "Fighting", "Blocking"],
|
|
2031
|
+
[154, "Sword_Parry_Backward_4", "Fighting", "Blocking"],
|
|
2032
|
+
[155, "Sword_Parry_Backward_5", "Fighting", "Blocking"],
|
|
2033
|
+
[156, "Stand_Dodge", "Fighting", "Transitioning"],
|
|
2034
|
+
[157, "Stand_Dodge_1", "Fighting", "Transitioning"],
|
|
2035
|
+
[158, "Roll_Dodge", "Fighting", "Transitioning"],
|
|
2036
|
+
[159, "Roll_Dodge_1", "Fighting", "Transitioning"],
|
|
2037
|
+
[160, "Roll_Dodge_2", "Fighting", "Transitioning"],
|
|
2038
|
+
[161, "Roll_Dodge_3", "Fighting", "Transitioning"],
|
|
2039
|
+
[162, "Stand_Dodge_2", "Fighting", "Transitioning"],
|
|
2040
|
+
[163, "Roll_Dodge_4", "Fighting", "Transitioning"],
|
|
2041
|
+
[164, "Stand_Dodge_3", "Fighting", "Transitioning"],
|
|
2042
|
+
[165, "Kneeling_Reload", "Fighting", "Transitioning"],
|
|
2043
|
+
[166, "Running_Reload", "Fighting", "Transitioning"],
|
|
2044
|
+
[167, "Slow_Walk_Reload", "Fighting", "Transitioning"],
|
|
2045
|
+
[168, "Prone_Reload", "Fighting", "Transitioning"],
|
|
2046
|
+
[169, "Forward_Reload_Subtle", "Fighting", "Transitioning"],
|
|
2047
|
+
[170, "Standing_Reload", "Fighting", "Transitioning"],
|
|
2048
|
+
[171, "Hit_Reaction_to_Waist", "Fighting", "Transitioning"],
|
|
2049
|
+
[172, "Electrocution_Reaction", "Fighting", "GettingHit"],
|
|
2050
|
+
[173, "Slap_Reaction", "Fighting", "GettingHit"],
|
|
2051
|
+
[174, "Face_Punch_Reaction", "Fighting", "GettingHit"],
|
|
2052
|
+
[175, "Face_Punch_Reaction_1", "Fighting", "GettingHit"],
|
|
2053
|
+
[176, "Face_Punch_Reaction_2", "Fighting", "GettingHit"],
|
|
2054
|
+
[177, "Gunshot_Reaction", "Fighting", "GettingHit"],
|
|
2055
|
+
[178, "Hit_Reaction", "Fighting", "GettingHit"],
|
|
2056
|
+
[179, "Hit_Reaction_1", "Fighting", "GettingHit"],
|
|
2057
|
+
[180, "Shot_in_the_Back_and_Fall", "Fighting", "GettingHit"],
|
|
2058
|
+
[181, "Electrocuted_Fall", "Fighting", "Dying"],
|
|
2059
|
+
[182, "Shot_and_Blown_Back", "Fighting", "Dying"],
|
|
2060
|
+
[183, "Shot_and_Fall_Backward", "Fighting", "Dying"],
|
|
2061
|
+
[184, "Shot_and_Fall_Forward", "Fighting", "Dying"],
|
|
2062
|
+
[185, "Shot_and_Slow_Fall_Backward", "Fighting", "Dying"],
|
|
2063
|
+
[186, "Strangled_and_Fall_Forward", "Fighting", "Dying"],
|
|
2064
|
+
[187, "Knock_Down", "Fighting", "Dying"],
|
|
2065
|
+
[188, "Fall_Dead_from_Abdominal_Injury", "Fighting", "Dying"],
|
|
2066
|
+
[189, "dying_backwards", "Fighting", "Dying"],
|
|
2067
|
+
[190, "Knock_Down_1", "Fighting", "Dying"],
|
|
2068
|
+
[191, "Left_Jab_from_Guard", "Fighting", "Punching"],
|
|
2069
|
+
[192, "Right_Jab_from_Guard", "Fighting", "Punching"],
|
|
2070
|
+
[193, "Left_Hook_from_Guard", "Fighting", "Punching"],
|
|
2071
|
+
[194, "Right_Uppercut_from_Guard", "Fighting", "Punching"],
|
|
2072
|
+
[195, "Right_Upper_Hook_from_Guard", "Fighting", "Punching"],
|
|
2073
|
+
[196, "Left_Uppercut_from_Guard", "Fighting", "Punching"],
|
|
2074
|
+
[197, "Left_Short_Hook_from_Guard", "Fighting", "Punching"],
|
|
2075
|
+
[198, "Punch_Combo", "Fighting", "Punching"],
|
|
2076
|
+
[199, "Weapon_Combo", "Fighting", "Punching"],
|
|
2077
|
+
[200, "Punch_Combo_1", "Fighting", "Punching"],
|
|
2078
|
+
[201, "Punch_Combo_2", "Fighting", "Punching"],
|
|
2079
|
+
[202, "Weapon_Combo_1", "Fighting", "Punching"],
|
|
2080
|
+
[203, "Punch_Combo_3", "Fighting", "Punching"],
|
|
2081
|
+
[204, "Punch_Combo_4", "Fighting", "Punching"],
|
|
2082
|
+
[205, "Punch_Combo_5", "Fighting", "Punching"],
|
|
2083
|
+
[206, "Spartan_Kick", "Fighting", "Punching"],
|
|
2084
|
+
[207, "Roundhouse_Kick", "Fighting", "Punching"],
|
|
2085
|
+
[208, "Lunge_Roundhouse_Kick", "Fighting", "Punching"],
|
|
2086
|
+
[209, "Boxing_Guard_Right_Straight_Kick", "Fighting", "Punching"],
|
|
2087
|
+
[210, "Boxing_Guard_Prep_Straight_Punch", "Fighting", "Punching"],
|
|
2088
|
+
[211, "Boxing_Guard_Step_Knee_Strike", "Fighting", "Punching"],
|
|
2089
|
+
[212, "Elbow_Strike", "Fighting", "Punching"],
|
|
2090
|
+
[213, "Leg_Sweep", "Fighting", "Punching"],
|
|
2091
|
+
[214, "Punch_Forward_with_Both_Fists", "Fighting", "Punching"],
|
|
2092
|
+
[215, "High_Kick", "Fighting", "Punching"],
|
|
2093
|
+
[216, "Lunge_Spin_Kick", "Fighting", "Punching"],
|
|
2094
|
+
[217, "Sweeping_Kick", "Fighting", "Punching"],
|
|
2095
|
+
[218, "Step_in_High_Kick", "Fighting", "Punching"],
|
|
2096
|
+
[219, "Right_Hand_Sword_Slash", "Fighting", "Punching"],
|
|
2097
|
+
[220, "Shield_Push_Left", "Fighting", "Punching"],
|
|
2098
|
+
[221, "Charged_Upward_Slash", "Fighting", "Punching"],
|
|
2099
|
+
[222, "Draw_and_Shoot_from_Back", "Fighting", "AttackingwithWeapon"],
|
|
2100
|
+
[223, "Draw_and_Shoot_from_Back_1", "Fighting", "AttackingwithWeapon"],
|
|
2101
|
+
[224, "Archery_Shot", "Fighting", "AttackingwithWeapon"],
|
|
2102
|
+
[225, "Archery_Shot_1", "Fighting", "AttackingwithWeapon"],
|
|
2103
|
+
[226, "Archery_Shot_2", "Fighting", "AttackingwithWeapon"],
|
|
2104
|
+
[227, "Archery_Shot_3", "Fighting", "AttackingwithWeapon"],
|
|
2105
|
+
[228, "Walk_Forward_with_Bow_Aimed", "Fighting", "AttackingwithWeapon"],
|
|
2106
|
+
[229, "Draw_and_Shoot_from_Back_2", "Fighting", "AttackingwithWeapon"],
|
|
2107
|
+
[230, "Walk_Backward_with_Bow_Aimed", "Fighting", "AttackingwithWeapon"],
|
|
2108
|
+
[231, "Archery_Aim_with_Lateral_Scan", "Fighting", "AttackingwithWeapon"],
|
|
2109
|
+
[232, "Cowboy_Quick_Draw_Shooting", "Fighting", "AttackingwithWeapon"],
|
|
2110
|
+
[233, "Walk_Backward_While_Shooting", "Fighting", "AttackingwithWeapon"],
|
|
2111
|
+
[234, "Walk_Forward_While_Shooting", "Fighting", "AttackingwithWeapon"],
|
|
2112
|
+
[235, "Forward_Roll_and_Fire", "Fighting", "AttackingwithWeapon"],
|
|
2113
|
+
[236, "Draw_and_Shoot_Left", "Fighting", "AttackingwithWeapon"],
|
|
2114
|
+
[237, "Charged_Axe_Chop", "Fighting", "AttackingwithWeapon"],
|
|
2115
|
+
[238, "Axe_Spin_Attack", "Fighting", "AttackingwithWeapon"],
|
|
2116
|
+
[239, "Crouch_Pull_and_Throw", "Fighting", "AttackingwithWeapon"],
|
|
2117
|
+
[240, "Thrust_Slash", "Fighting", "AttackingwithWeapon"],
|
|
2118
|
+
[241, "Weapon_Combo_2", "Fighting", "AttackingwithWeapon"],
|
|
2119
|
+
[242, "Charged_Slash", "Fighting", "AttackingwithWeapon"],
|
|
2120
|
+
[243, "Idle_3", "DailyActions", "Idle"],
|
|
2121
|
+
[244, "Idle_4", "DailyActions", "Idle"],
|
|
2122
|
+
[245, "Idle_5", "DailyActions", "Idle"],
|
|
2123
|
+
[246, "Idle_6", "DailyActions", "Idle"],
|
|
2124
|
+
[247, "Idle_7", "DailyActions", "Idle"],
|
|
2125
|
+
[248, "Idle_8", "DailyActions", "Idle"],
|
|
2126
|
+
[249, "Idle_9", "DailyActions", "Idle"],
|
|
2127
|
+
[250, "Idle_10", "DailyActions", "Idle"],
|
|
2128
|
+
[251, "Idle_11", "DailyActions", "Idle"],
|
|
2129
|
+
[252, "Idle_12", "DailyActions", "Idle"],
|
|
2130
|
+
[253, "Idle_13", "DailyActions", "Idle"],
|
|
2131
|
+
[254, "Idle_14", "DailyActions", "Idle"],
|
|
2132
|
+
[255, "Angry_Ground_Stomp", "DailyActions", "Idle"],
|
|
2133
|
+
[256, "Angry_Ground_Stomp_1", "DailyActions", "Idle"],
|
|
2134
|
+
[257, "Angry_Ground_Stomp_2", "DailyActions", "Idle"],
|
|
2135
|
+
[258, "CrouchLookAroundBow", "DailyActions", "Idle"],
|
|
2136
|
+
[259, "Step_Forward_and_Push", "DailyActions", "Pushing"],
|
|
2137
|
+
[260, "Push_Forward_and_Stop", "DailyActions", "Pushing"],
|
|
2138
|
+
[261, "Push_and_Walk_Forward", "DailyActions", "Pushing"],
|
|
2139
|
+
[262, "Crouch_and_Push_Forward", "DailyActions", "Pushing"],
|
|
2140
|
+
[263, "Sleep_on_Desk", "DailyActions", "Sleeping"],
|
|
2141
|
+
[264, "Cough_While_Sleeping", "DailyActions", "Sleeping"],
|
|
2142
|
+
[265, "Groan_Holding_Stomach_in_Sleep", "DailyActions", "Sleeping"],
|
|
2143
|
+
[266, "Lie_Down_Hands_Spread", "DailyActions", "Sleeping"],
|
|
2144
|
+
[267, "Sleep_Normally", "DailyActions", "Sleeping"],
|
|
2145
|
+
[268, "Sit_and_Doze_Off", "DailyActions", "Sleeping"],
|
|
2146
|
+
[269, "sleep", "DailyActions", "Sleeping"],
|
|
2147
|
+
[270, "Toss_and_Turn", "DailyActions", "Sleeping"],
|
|
2148
|
+
[271, "Wake_Up_and_Look_Up", "DailyActions", "Sleeping"],
|
|
2149
|
+
[272, "Lie_on_Chair_Sunbathe_and_Sleep", "DailyActions", "Sleeping"],
|
|
2150
|
+
[273, "Male_Run_Forward_Pick_Up_Left", "DailyActions", "PickingUpItem"],
|
|
2151
|
+
[274, "Female_Crouch_Pick_Up_Place_Side", "DailyActions", "PickingUpItem"],
|
|
2152
|
+
[275, "Female_Run_Forward_Pick_Up_Right", "DailyActions", "PickingUpItem"],
|
|
2153
|
+
[276, "Male_Bend_Over_Pick_Up", "DailyActions", "PickingUpItem"],
|
|
2154
|
+
[277, "Female_Crouch_Pick_Fruit_Basket_Stand", "DailyActions", "PickingUpItem"],
|
|
2155
|
+
[278, "Female_Stand_Pick_Fruit_Basket", "DailyActions", "PickingUpItem"],
|
|
2156
|
+
[279, "Female_Crouch_Pick_Gun_Point_Forward", "DailyActions", "PickingUpItem"],
|
|
2157
|
+
[280, "Female_Crouch_Pick_Throw_Forward", "DailyActions", "PickingUpItem"],
|
|
2158
|
+
[281, "Female_Bend_Over_Pick_Up_Inspect", "DailyActions", "PickingUpItem"],
|
|
2159
|
+
[282, "Female_Walk_Pick_Put_In_Pocket", "DailyActions", "PickingUpItem"],
|
|
2160
|
+
[283, "Pull_Radish", "DailyActions", "PickingUpItem"],
|
|
2161
|
+
[284, "Collect_Object", "DailyActions", "PickingUpItem"],
|
|
2162
|
+
[285, "open_door", "DailyActions", "Interacting"],
|
|
2163
|
+
[286, "open_door_1", "DailyActions", "Interacting"],
|
|
2164
|
+
[287, "open_door_2", "DailyActions", "Interacting"],
|
|
2165
|
+
[288, "open_door_3", "DailyActions", "Interacting"],
|
|
2166
|
+
[289, "open_door_4", "DailyActions", "Interacting"],
|
|
2167
|
+
[290, "Wave_One_Hand", "DailyActions", "Interacting"],
|
|
2168
|
+
[291, "Wave_for_Help", "DailyActions", "Interacting"],
|
|
2169
|
+
[292, "Gesture_with_Hand_on_Gun", "DailyActions", "Interacting"],
|
|
2170
|
+
[293, "Wave_for_Help_1", "DailyActions", "Interacting"],
|
|
2171
|
+
[294, "Wave_for_Help_2", "DailyActions", "Interacting"],
|
|
2172
|
+
[295, "Wave_for_Help_3", "DailyActions", "Interacting"],
|
|
2173
|
+
[296, "Wave_for_Help_4", "DailyActions", "Interacting"],
|
|
2174
|
+
[297, "Personalized_Gesture", "DailyActions", "Interacting"],
|
|
2175
|
+
[298, "Cheer_with_Both_Hands_Up", "DailyActions", "Interacting"],
|
|
2176
|
+
[299, "Stand_Clap_and_Sit_Down", "DailyActions", "Interacting"],
|
|
2177
|
+
[300, "Sit_Cheer_with_Left_Hand", "DailyActions", "Interacting"],
|
|
2178
|
+
[301, "Cheer_with_Both_Hands_1", "DailyActions", "Interacting"],
|
|
2179
|
+
[302, "Stand_Wave_and_Sit_Down", "DailyActions", "Interacting"],
|
|
2180
|
+
[303, "Cheer_with_Both_Hands", "DailyActions", "Interacting"],
|
|
2181
|
+
[304, "Seated_Fist_Pump", "DailyActions", "Interacting"],
|
|
2182
|
+
[305, "Stand_Cheer_and_Sit_Down", "DailyActions", "Interacting"],
|
|
2183
|
+
[306, "Cheer_with_One_Hand_Up", "DailyActions", "Interacting"],
|
|
2184
|
+
[307, "Sitting_Answering_Questions", "DailyActions", "Interacting"],
|
|
2185
|
+
[308, "Talk_Passionately", "DailyActions", "Interacting"],
|
|
2186
|
+
[309, "Talk_with_Left_Hand_on_Hip", "DailyActions", "Interacting"],
|
|
2187
|
+
[310, "Talk_with_Left_Hand_Raised", "DailyActions", "Interacting"],
|
|
2188
|
+
[311, "Stand_Talking_Angry", "DailyActions", "Interacting"],
|
|
2189
|
+
[312, "Phone_Conversation", "DailyActions", "Interacting"],
|
|
2190
|
+
[313, "Talk_with_Hands_Open", "DailyActions", "Interacting"],
|
|
2191
|
+
[314, "Talk_with_Right_Hand_Open", "DailyActions", "Interacting"],
|
|
2192
|
+
[315, "Hand_on_Hip_Gesture", "DailyActions", "Interacting"],
|
|
2193
|
+
[316, "Headache_Relief", "DailyActions", "Interacting"],
|
|
2194
|
+
[317, "Shrug", "DailyActions", "Interacting"],
|
|
2195
|
+
[318, "Scheming_Hand_Rub", "DailyActions", "Interacting"],
|
|
2196
|
+
[319, "air_squat", "DailyActions", "WorkingOut"],
|
|
2197
|
+
[320, "bicep_curl", "DailyActions", "WorkingOut"],
|
|
2198
|
+
[321, "bicycle_crunch", "DailyActions", "WorkingOut"],
|
|
2199
|
+
[322, "circle_crunch", "DailyActions", "WorkingOut"],
|
|
2200
|
+
[323, "golf_drive", "DailyActions", "WorkingOut"],
|
|
2201
|
+
[324, "idle_to_push_up", "DailyActions", "WorkingOut"],
|
|
2202
|
+
[325, "jump_push_up", "DailyActions", "WorkingOut"],
|
|
2203
|
+
[326, "jumping_jacks", "DailyActions", "WorkingOut"],
|
|
2204
|
+
[327, "kettlebell_swing", "DailyActions", "WorkingOut"],
|
|
2205
|
+
[328, "push_up_to_idle", "DailyActions", "WorkingOut"],
|
|
2206
|
+
[329, "push_up", "DailyActions", "WorkingOut"],
|
|
2207
|
+
[330, "situps", "DailyActions", "WorkingOut"],
|
|
2208
|
+
[331, "Sumo_High_Pull", "DailyActions", "WorkingOut"],
|
|
2209
|
+
[333, "Look_Around_Dumbfounded", "DailyActions", "LookingAround"],
|
|
2210
|
+
[334, "Lower_Weapon_Look_Raise", "DailyActions", "LookingAround"],
|
|
2211
|
+
[335, "Axe_Breathe_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2212
|
+
[336, "Long_Breathe_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2213
|
+
[337, "Torch_Look_Around", "DailyActions", "LookingAround"],
|
|
2214
|
+
[338, "Short_Breathe_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2215
|
+
[339, "Walking_Scan_with_Sudden_Look_Back", "DailyActions", "LookingAround"],
|
|
2216
|
+
[340, "Crawl_and_Look_Back", "DailyActions", "LookingAround"],
|
|
2217
|
+
[341, "Walk_Slowly_and_Look_Around", "DailyActions", "LookingAround"],
|
|
2218
|
+
[342, "Stand_and_Drink", "DailyActions", "Drinking"],
|
|
2219
|
+
[343, "Sit_and_Drink", "DailyActions", "Drinking"],
|
|
2220
|
+
[344, "Stand_Up1", "DailyActions", "Transitioning"],
|
|
2221
|
+
[345, "Stand_Up2", "DailyActions", "Transitioning"],
|
|
2222
|
+
[346, "Stand_Up3", "DailyActions", "Transitioning"],
|
|
2223
|
+
[347, "Stand_Up4", "DailyActions", "Transitioning"],
|
|
2224
|
+
[348, "Stand_Up5", "DailyActions", "Transitioning"],
|
|
2225
|
+
[349, "Stand_Up6", "DailyActions", "Transitioning"],
|
|
2226
|
+
[350, "Stand_Up7", "DailyActions", "Transitioning"],
|
|
2227
|
+
[351, "Stand_Up8", "DailyActions", "Transitioning"],
|
|
2228
|
+
[352, "Stand_Up9", "DailyActions", "Transitioning"],
|
|
2229
|
+
[353, "Stand_Up10", "DailyActions", "Transitioning"],
|
|
2230
|
+
[354, "Sitting_Clap", "DailyActions", "Transitioning"],
|
|
2231
|
+
[355, "Sit_Finger_Wag_No", "DailyActions", "Transitioning"],
|
|
2232
|
+
[356, "Sit_Hands_on_Head_Lean_Back", "DailyActions", "Transitioning"],
|
|
2233
|
+
[357, "Sit_Thumbs_Up_Right", "DailyActions", "Transitioning"],
|
|
2234
|
+
[358, "Sit_Shout_Hands_on_Mouth", "DailyActions", "Transitioning"],
|
|
2235
|
+
[359, "Look_Back_and_Sit", "DailyActions", "Transitioning"],
|
|
2236
|
+
[360, "Sit_to_standTransition_Female_2", "DailyActions", "Transitioning"],
|
|
2237
|
+
[361, "Sit_Dodge", "DailyActions", "Transitioning"],
|
|
2238
|
+
[362, "Sit_Cross_Legged", "DailyActions", "Transitioning"],
|
|
2239
|
+
[363, "Sit_Cross_Legged_on_Floor", "DailyActions", "Transitioning"],
|
|
2240
|
+
[364, "Sit_on_Chair_Arms_Crossed", "DailyActions", "Transitioning"],
|
|
2241
|
+
[365, "Kneel_on_One_Knee_and_Stand", "DailyActions", "Transitioning"],
|
|
2242
|
+
[366, "falling_down", "DailyActions", "Transitioning"],
|
|
2243
|
+
[367, "SideLying_Reach_Help", "DailyActions", "Transitioning"],
|
|
2244
|
+
[368, "Angry_To_Tantrum_Sit", "DailyActions", "Transitioning"],
|
|
2245
|
+
[369, "Lie_Back_Leg_Swing", "DailyActions", "Transitioning"],
|
|
2246
|
+
[370, "Stand_To_Side_Lying", "DailyActions", "Transitioning"],
|
|
2247
|
+
[371, "Sit_Lie_Bed", "DailyActions", "Transitioning"],
|
|
2248
|
+
[372, "Prone_Reach_Help", "DailyActions", "Transitioning"],
|
|
2249
|
+
[375, "Handstand_Flip", "BodyMovements", "Acting"],
|
|
2250
|
+
[376, "Punch_Pose", "BodyMovements", "Acting"],
|
|
2251
|
+
[377, "Relax_arms_then_strike_battle_pose", "BodyMovements", "Acting"],
|
|
2252
|
+
[378, "Large_step_then_high_kick", "BodyMovements", "Acting"],
|
|
2253
|
+
[379, "Side_jumps_in_horse_stance", "BodyMovements", "Acting"],
|
|
2254
|
+
[381, "Step_Right_for_Exercise", "BodyMovements", "Acting"],
|
|
2255
|
+
[382, "Jump_and_Slam_Back_Down", "BodyMovements", "Acting"],
|
|
2256
|
+
[384, "Quick_Step_and_Spin_Dodge", "BodyMovements", "Acting"],
|
|
2257
|
+
[385, "Boxing_Warmup", "BodyMovements", "Acting"],
|
|
2258
|
+
[386, "Zombie_Scream", "BodyMovements", "Acting"],
|
|
2259
|
+
[387, "Half_Squat_with_Thumb_Up", "BodyMovements", "Acting"],
|
|
2260
|
+
[388, "Show_Both_Arm_Muscles", "BodyMovements", "Acting"],
|
|
2261
|
+
[389, "Grip_and_Throw_Down", "BodyMovements", "Acting"],
|
|
2262
|
+
[390, "Stand_on_Pole_and_Balance", "BodyMovements", "Acting"],
|
|
2263
|
+
[391, "Head_Hold_in_Pain", "BodyMovements", "Acting"],
|
|
2264
|
+
[392, "Ground_Flip_and_Sweep_Up", "BodyMovements", "Acting"],
|
|
2265
|
+
[393, "baseball_pitching", "BodyMovements", "Acting"],
|
|
2266
|
+
[394, "Backflip_and_Hooks", "BodyMovements", "Acting"],
|
|
2267
|
+
[395, "Breakdance_1990", "BodyMovements", "Acting"],
|
|
2268
|
+
[396, "Burpee_Exercise", "BodyMovements", "Acting"],
|
|
2269
|
+
[397, "360_Power_Spin_Jump", "BodyMovements", "Acting"],
|
|
2270
|
+
[398, "Crouch_Charge_and_Throw", "BodyMovements", "Acting"],
|
|
2271
|
+
[399, "Step_Step_Turn_Kick", "BodyMovements", "Acting"],
|
|
2272
|
+
[401, "Sprint_Roll_and_Flip", "BodyMovements", "Acting"],
|
|
2273
|
+
[402, "Run_and_Leap", "BodyMovements", "Acting"],
|
|
2274
|
+
[403, "Victory_Fist_Pump", "BodyMovements", "Acting"],
|
|
2275
|
+
[404, "Crouch_and_Step_Back", "BodyMovements", "Acting"],
|
|
2276
|
+
[405, "Joyful_Dance_with_Hand_Sway", "BodyMovements", "Acting"],
|
|
2277
|
+
[406, "Thomas_Flair_to_Jump_Up", "BodyMovements", "Acting"],
|
|
2278
|
+
[407, "Wall_Push_Jump_and_Flip", "BodyMovements", "Acting"],
|
|
2279
|
+
[408, "Jazz_Hands", "BodyMovements", "Acting"],
|
|
2280
|
+
[409, "Finger_Wag_No", "BodyMovements", "Acting"],
|
|
2281
|
+
[410, "Kick_a_Soccer_Ball", "BodyMovements", "Acting"],
|
|
2282
|
+
[411, "Neck_Slashing_Gesture", "BodyMovements", "Acting"],
|
|
2283
|
+
[412, "victory", "BodyMovements", "Acting"],
|
|
2284
|
+
[413, "Backflip_and_Rise", "BodyMovements", "Acting"],
|
|
2285
|
+
[414, "Double_kick_forward", "BodyMovements", "Acting"],
|
|
2286
|
+
[415, "Happy_Sway_Standing", "BodyMovements", "Acting"],
|
|
2287
|
+
[416, "Hit_in_Back_While_Running", "BodyMovements", "Acting"],
|
|
2288
|
+
[417, "Hop_with_Arms_Raised", "BodyMovements", "Acting"],
|
|
2289
|
+
[419, "Jump_to_Catch_and_Fall", "BodyMovements", "Acting"],
|
|
2290
|
+
[420, "Left_Hand_Bitten_Step_Back", "BodyMovements", "Acting"],
|
|
2291
|
+
[421, "Over_Shoulder_Throw", "BodyMovements", "Acting"],
|
|
2292
|
+
[422, "Rising_Flying_Kick", "BodyMovements", "Acting"],
|
|
2293
|
+
[425, "Vault_with_Rifle", "BodyMovements", "VaultingOverObstacle"],
|
|
2294
|
+
[426, "Roll_Behind_Cover", "BodyMovements", "VaultingOverObstacle"],
|
|
2295
|
+
[427, "Vault_and_Land", "BodyMovements", "VaultingOverObstacle"],
|
|
2296
|
+
[428, "Unarmed_Vault", "BodyMovements", "VaultingOverObstacle"],
|
|
2297
|
+
[429, "Parkour_Vault", "BodyMovements", "VaultingOverObstacle"],
|
|
2298
|
+
[430, "Parkour_Vault_with_Roll", "BodyMovements", "VaultingOverObstacle"],
|
|
2299
|
+
[431, "Parkour_Vault_1", "BodyMovements", "VaultingOverObstacle"],
|
|
2300
|
+
[432, "Parkour_Vault_2", "BodyMovements", "VaultingOverObstacle"],
|
|
2301
|
+
[433, "Parkour_Vault_3", "BodyMovements", "VaultingOverObstacle"],
|
|
2302
|
+
[434, "Fast_Ladder_Climb", "BodyMovements", "Climbing"],
|
|
2303
|
+
[435, "Ladder_Climb_Finish", "BodyMovements", "Climbing"],
|
|
2304
|
+
[436, "Ladder_Mount_Start", "BodyMovements", "Climbing"],
|
|
2305
|
+
[437, "Slow_Ladder_Climb", "BodyMovements", "Climbing"],
|
|
2306
|
+
[438, "Ladder_Climb_Loop", "BodyMovements", "Climbing"],
|
|
2307
|
+
[439, "Climb_Left_with_Both_Limbs", "BodyMovements", "Climbing"],
|
|
2308
|
+
[440, "Climb_Right_with_Both_Limbs", "BodyMovements", "Climbing"],
|
|
2309
|
+
[441, "Climb_Stairs", "BodyMovements", "Climbing"],
|
|
2310
|
+
[442, "Fast_Stair_Climb", "BodyMovements", "Climbing"],
|
|
2311
|
+
[444, "climbing_up_wall", "BodyMovements", "Climbing"],
|
|
2312
|
+
[445, "diagonal_wall_run", "BodyMovements", "Climbing"],
|
|
2313
|
+
[446, "Hang_and_Climb_Left", "BodyMovements", "Climbing"],
|
|
2314
|
+
[447, "Hang_and_Climb_Rght", "BodyMovements", "Climbing"],
|
|
2315
|
+
[448, "Jump_and_Grab_Wall", "BodyMovements", "Climbing"],
|
|
2316
|
+
[449, "Climb_Up_Rope", "BodyMovements", "Climbing"],
|
|
2317
|
+
[450, "Wall_Flip", "BodyMovements", "PerformingStunt"],
|
|
2318
|
+
[451, "One_Arm_Handstand", "BodyMovements", "PerformingStunt"],
|
|
2319
|
+
[452, "Backflip", "BodyMovements", "PerformingStunt"],
|
|
2320
|
+
[453, "Backflip_Sweep_Kick", "BodyMovements", "PerformingStunt"],
|
|
2321
|
+
[455, "Sweep_Kick", "BodyMovements", "PerformingStunt"],
|
|
2322
|
+
[456, "Jumping_Head_Scissor_Takedown", "BodyMovements", "PerformingStunt"],
|
|
2323
|
+
[457, "Jumping_Punch", "BodyMovements", "PerformingStunt"],
|
|
2324
|
+
[458, "Unicycle_Jump_Dismount", "BodyMovements", "PerformingStunt"],
|
|
2325
|
+
[459, "Run_Jump_and_Roll", "BodyMovements", "PerformingStunt"],
|
|
2326
|
+
[460, "Jump_with_Arms_Open", "BodyMovements", "Jumping"],
|
|
2327
|
+
[461, "Jump_with_Arms_and_Legs_Open", "BodyMovements", "Jumping"],
|
|
2328
|
+
[462, "Backflip_Jump", "BodyMovements", "Jumping"],
|
|
2329
|
+
[463, "Run_and_Jump", "BodyMovements", "Jumping"],
|
|
2330
|
+
[464, "Leap_and_Punch", "BodyMovements", "Jumping"],
|
|
2331
|
+
[465, "Leap_Right_and_Catch", "BodyMovements", "Jumping"],
|
|
2332
|
+
[466, "Regular_Jump", "BodyMovements", "Jumping"],
|
|
2333
|
+
[467, "Jump_Over_Obstacle_2", "BodyMovements", "Jumping"],
|
|
2334
|
+
[468, "Back_Jump", "BodyMovements", "Jumping"],
|
|
2335
|
+
[470, "Jumping_Down", "BodyMovements", "Jumping"],
|
|
2336
|
+
[471, "Jump_Over_Obstacle", "BodyMovements", "Jumping"],
|
|
2337
|
+
[472, "Jump_Over_Obstacle_1", "BodyMovements", "Jumping"],
|
|
2338
|
+
[473, "Quad_Jump_Left", "BodyMovements", "HangingfromLedge"],
|
|
2339
|
+
[474, "Quad_Jump_Up", "BodyMovements", "HangingfromLedge"],
|
|
2340
|
+
[475, "Quad_Climb_Right", "BodyMovements", "HangingfromLedge"],
|
|
2341
|
+
[476, "Hang_and_Push_with_Foot", "BodyMovements", "HangingfromLedge"],
|
|
2342
|
+
[477, "Rope_Hang_Idle", "BodyMovements", "HangingfromLedge"],
|
|
2343
|
+
[478, "Bar_Hang_Idle", "BodyMovements", "HangingfromLedge"],
|
|
2344
|
+
[479, "Upside_Down_Rope_Hang", "BodyMovements", "HangingfromLedge"],
|
|
2345
|
+
[480, "Upside_Down_Rope_Hang_1", "BodyMovements", "HangingfromLedge"],
|
|
2346
|
+
[481, "Upside_Down_Rope_Hang_2", "BodyMovements", "HangingfromLedge"],
|
|
2347
|
+
[482, "Grab_Wall_Midair_Idle", "BodyMovements", "HangingfromLedge"],
|
|
2348
|
+
[483, "Slow_Bar_Hang_Left", "BodyMovements", "HangingfromLedge"],
|
|
2349
|
+
[484, "Slow_Bar_Hang_Right", "BodyMovements", "HangingfromLedge"],
|
|
2350
|
+
[485, "Jump_and_Hang_on_Bar", "BodyMovements", "HangingfromLedge"],
|
|
2351
|
+
[486, "Wall_Support_to_Step_Down", "BodyMovements", "HangingfromLedge"],
|
|
2352
|
+
[487, "Climb_Attempt_and_Fall_3", "BodyMovements", "FallingFreely"],
|
|
2353
|
+
[488, "Climb_Attempt_and_Fall_4", "BodyMovements", "FallingFreely"],
|
|
2354
|
+
[489, "Climb_Attempt_and_Fall_5", "BodyMovements", "FallingFreely"],
|
|
2355
|
+
[490, "Fall_Down", "BodyMovements", "HangingfromLedge"],
|
|
2356
|
+
[491, "Fall_from_Bar", "BodyMovements", "HangingfromLedge"],
|
|
2357
|
+
[492, "Wall_Support_Jump_to_Ground", "BodyMovements", "HangingfromLedge"],
|
|
2358
|
+
[493, "Jump_Down_from_Wall", "BodyMovements", "HangingfromLedge"],
|
|
2359
|
+
[494, "Swing_on_Rope_to_Ground", "BodyMovements", "HangingfromLedge"],
|
|
2360
|
+
[495, "Grab_Bar_and_Swing_Forward", "BodyMovements", "HangingfromLedge"],
|
|
2361
|
+
[496, "Rope_Hang_Backflip_to_Crouch", "BodyMovements", "HangingfromLedge"],
|
|
2362
|
+
[497, "climbing_down_wall", "BodyMovements", "Climbing"],
|
|
2363
|
+
[498, "Climb_Attempt_and_Fall", "BodyMovements", "FallingFreely"],
|
|
2364
|
+
[499, "Climb_Attempt_and_Fall_1", "BodyMovements", "FallingFreely"],
|
|
2365
|
+
[500, "Climb_Attempt_and_Fall_2", "BodyMovements", "FallingFreely"],
|
|
2366
|
+
[501, "Leap_of_Faith", "BodyMovements", "FallingFreely"],
|
|
2367
|
+
[502, "Fall1", "BodyMovements", "FallingFreely"],
|
|
2368
|
+
[503, "Fall2", "BodyMovements", "FallingFreely"],
|
|
2369
|
+
[504, "Fall3", "BodyMovements", "FallingFreely"],
|
|
2370
|
+
[505, "Fall4", "BodyMovements", "FallingFreely"],
|
|
2371
|
+
[506, "Dive_Down_and_Land", "BodyMovements", "FallingFreely"],
|
|
2372
|
+
[507, "Dive_Down_and_Land_1", "BodyMovements", "FallingFreely"],
|
|
2373
|
+
[508, "Dive_Down_and_Land_2", "BodyMovements", "FallingFreely"],
|
|
2374
|
+
[509, "Lean_Forward_Sprint", "WalkAndRun", "Running"],
|
|
2375
|
+
[510, "Standard_Forward_Charge", "WalkAndRun", "Running"],
|
|
2376
|
+
[511, "Rifle_Charge", "WalkAndRun", "Running"],
|
|
2377
|
+
[512, "Male_Head_Down_Charge", "WalkAndRun", "Running"],
|
|
2378
|
+
[513, "Female_Head_Down_Charge", "WalkAndRun", "Running"],
|
|
2379
|
+
[514, "Female_Bow_Charge_Left_Hand", "WalkAndRun", "Running"],
|
|
2380
|
+
[515, "Female_Throwing_Stance_Charge", "WalkAndRun", "Running"],
|
|
2381
|
+
[516, "slide_light", "WalkAndRun", "Running"],
|
|
2382
|
+
[517, "slide_right", "WalkAndRun", "Running"],
|
|
2383
|
+
[518, "sliding_rool", "WalkAndRun", "Running"],
|
|
2384
|
+
[519, "sliding_stumble", "WalkAndRun", "Running"],
|
|
2385
|
+
[520, "Crouch_Walk_with_Torch", "WalkAndRun", "CrouchWalking"],
|
|
2386
|
+
[521, "Crouch_Walk_Left_with_Torch", "WalkAndRun", "CrouchWalking"],
|
|
2387
|
+
[522, "Crouch_Walk_Right_with_Torch", "WalkAndRun", "CrouchWalking"],
|
|
2388
|
+
[523, "Cautious_Crouch_Walk_Backward", "WalkAndRun", "CrouchWalking"],
|
|
2389
|
+
[524, "Cautious_Crouch_Walk_Forward", "WalkAndRun", "CrouchWalking"],
|
|
2390
|
+
[525, "Cautious_Crouch_Walk_Left", "WalkAndRun", "CrouchWalking"],
|
|
2391
|
+
[526, "Cautious_Crouch_Walk_Right", "WalkAndRun", "CrouchWalking"],
|
|
2392
|
+
[527, "Crouch_Walk_Left_with_Gun", "WalkAndRun", "CrouchWalking"],
|
|
2393
|
+
[528, "Walk_Left_with_Gun", "WalkAndRun", "CrouchWalking"],
|
|
2394
|
+
[529, "Walk_Backward_with_Gun", "WalkAndRun", "CrouchWalking"],
|
|
2395
|
+
[530, "run_fast_3", "WalkAndRun", "Running"],
|
|
2396
|
+
[531, "Sprint_and_Sudden_Stop", "WalkAndRun", "Running"],
|
|
2397
|
+
[532, "run_fast_4", "WalkAndRun", "Running"],
|
|
2398
|
+
[533, "run_fast_5", "WalkAndRun", "Running"],
|
|
2399
|
+
[534, "run_fast_6", "WalkAndRun", "Running"],
|
|
2400
|
+
[535, "run_fast_7", "WalkAndRun", "Running"],
|
|
2401
|
+
[536, "run_fast_8", "WalkAndRun", "Running"],
|
|
2402
|
+
[537, "run_fast_9", "WalkAndRun", "Running"],
|
|
2403
|
+
[538, "run_fast_10", "WalkAndRun", "Running"],
|
|
2404
|
+
[539, "run_fast_2", "WalkAndRun", "Running"],
|
|
2405
|
+
[540, "Injured_Walk_Backward", "WalkAndRun", "Walking"],
|
|
2406
|
+
[541, "Walk_Backward_with_Gun_1", "WalkAndRun", "Walking"],
|
|
2407
|
+
[542, "Walk_Backward_with_Grenade", "WalkAndRun", "Walking"],
|
|
2408
|
+
[543, "Step_Back", "WalkAndRun", "Walking"],
|
|
2409
|
+
[544, "Walk_Backward", "WalkAndRun", "Walking"],
|
|
2410
|
+
[545, "Walk_Backward_with_Bow", "WalkAndRun", "Walking"],
|
|
2411
|
+
[546, "Walk_Backward_with_Sword", "WalkAndRun", "Walking"],
|
|
2412
|
+
[547, "Walk_Backward_with_Bow_1", "WalkAndRun", "Walking"],
|
|
2413
|
+
[548, "Walk_Backward_with_Sword_Shield", "WalkAndRun", "Walking"],
|
|
2414
|
+
[549, "Crawl_Backward", "WalkAndRun", "Walking"],
|
|
2415
|
+
[550, "Carry_Heavy_Cannon_Forward", "WalkAndRun", "Walking"],
|
|
2416
|
+
[551, "Carry_Heavy_Object_Walk", "WalkAndRun", "Walking"],
|
|
2417
|
+
[552, "Carry_Water_Bucket_Walk", "WalkAndRun", "Walking"],
|
|
2418
|
+
[553, "Elderly_Shaky_Walk", "WalkAndRun", "Walking"],
|
|
2419
|
+
[554, "Funky_Walk", "WalkAndRun", "Walking"],
|
|
2420
|
+
[555, "Limping_Walk_1", "WalkAndRun", "Walking"],
|
|
2421
|
+
[556, "Limping_Walk_2", "WalkAndRun", "Walking"],
|
|
2422
|
+
[557, "Limping_Walk_3", "WalkAndRun", "Walking"],
|
|
2423
|
+
[558, "Limping_Walk", "WalkAndRun", "Walking"],
|
|
2424
|
+
[559, "Sneaky_Walk", "WalkAndRun", "Walking"],
|
|
2425
|
+
[560, "Spear_Walk", "WalkAndRun", "Walking"],
|
|
2426
|
+
[561, "Step_Hip_Hop_Dance", "WalkAndRun", "Walking"],
|
|
2427
|
+
[562, "Stumble_Walk", "WalkAndRun", "Walking"],
|
|
2428
|
+
[563, "Stylish_Walk", "WalkAndRun", "Walking"],
|
|
2429
|
+
[564, "Tightrope_Walk", "WalkAndRun", "Walking"],
|
|
2430
|
+
[565, "Walk_with_Umbrella", "WalkAndRun", "Walking"],
|
|
2431
|
+
[566, "walking_2", "WalkAndRun", "Walking"],
|
|
2432
|
+
[567, "Walk_with_Walker_Support", "WalkAndRun", "Walking"],
|
|
2433
|
+
[568, "Swim_Idle", "WalkAndRun", "Swimming"],
|
|
2434
|
+
[569, "Swim_Forward", "WalkAndRun", "Swimming"],
|
|
2435
|
+
[570, "swimming_to_edge", "WalkAndRun", "Swimming"],
|
|
2436
|
+
[571, "Run_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2437
|
+
[572, "Walk_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2438
|
+
[573, "Rifle_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2439
|
+
[574, "Walk_Turn_Left_with_Weapon", "WalkAndRun", "TurningAround"],
|
|
2440
|
+
[575, "Combat_Idle_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2441
|
+
[576, "Idle_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2442
|
+
[577, "Idle_Step_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2443
|
+
[578, "Idle_Torch_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2444
|
+
[579, "Depressed_Full_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2445
|
+
[580, "Sword_and_Shield_Alert_Turn_Left", "WalkAndRun", "TurningAround"],
|
|
2446
|
+
[581, "Run_Sharp_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2447
|
+
[582, "Run_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2448
|
+
[583, "Walk_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2449
|
+
[584, "Walk_Turn_Right_Female", "WalkAndRun", "TurningAround"],
|
|
2450
|
+
[585, "Rifle_Aim_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2451
|
+
[586, "Idle_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2452
|
+
[587, "Walk_Turn_Right_Idle_Style", "WalkAndRun", "TurningAround"],
|
|
2453
|
+
[588, "Frustrated_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2454
|
+
[589, "Alert_Quick_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2455
|
+
[590, "Sword_and_Shield_Alert_Turn_Right", "WalkAndRun", "TurningAround"],
|
|
2456
|
+
[591, "Hip_Hop_Dance", "Dancing", "Dancing"],
|
|
2457
|
+
[592, "Hip_Hop_Dance_1", "Dancing", "Dancing"],
|
|
2458
|
+
[593, "Hip_Hop_Dance_2", "Dancing", "Dancing"],
|
|
2459
|
+
[594, "Hip_Hop_Dance_3", "Dancing", "Dancing"],
|
|
2460
|
+
[595, "jazz_danc", "Dancing", "Dancing"],
|
|
2461
|
+
[596, "ymca_dance", "Dancing", "Dancing"],
|
|
2462
|
+
[597, "Hip_Hop_Dance_4", "Dancing", "Dancing"],
|
|
2463
|
+
[598, "kettlebell_swing_1", "DailyActions", "WorkingOut"],
|
|
2464
|
+
[599, "Idle_15", "DailyActions", "Idle"],
|
|
2465
|
+
[601, "Backflip_inplace", "BodyMovements", "PerformingStunt"],
|
|
2466
|
+
[604, "Backflip_Sweep_Kick_inplace", "BodyMovements", "PerformingStunt"],
|
|
2467
|
+
[605, "Back_Jump_inplace", "BodyMovements", "Jumping"],
|
|
2468
|
+
[606, "BackLeft_run_inplace", "WalkAndRun", "Running"],
|
|
2469
|
+
[607, "BackRight_Run_inplace", "WalkAndRun", "Running"],
|
|
2470
|
+
[608, "BeHit_FlyUp_inplace", "Fighting", "GettingHit"],
|
|
2471
|
+
[609, "Boxing_Practice_inplace", "Fighting", "Punching"],
|
|
2472
|
+
[610, "Carry_Heavy_Cannon_Forward_inplace", "WalkAndRun", "Walking"],
|
|
2473
|
+
[611, "Carry_Heavy_Object_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2474
|
+
[612, "Carry_Water_Bucket_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2475
|
+
[613, "Casual_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2476
|
+
[615, "Cautious_Crouch_Walk_Backward_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2477
|
+
[616, "Cautious_Crouch_Walk_Forward_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2478
|
+
[617, "Cautious_Crouch_Walk_Left_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2479
|
+
[618, "Cautious_Crouch_Walk_Right_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2480
|
+
[619, "Climb_Left_with_Both_Limbs_inplace", "BodyMovements", "Climbing"],
|
|
2481
|
+
[620, "Climb_Right_with_Both_Limbs_inplace", "BodyMovements", "Climbing"],
|
|
2482
|
+
[621, "Confident_Strut_inplace", "WalkAndRun", "Walking"],
|
|
2483
|
+
[622, "Crawl_Backward_inplace", "WalkAndRun", "Walking"],
|
|
2484
|
+
[623, "Crouch_Walk_Left_with_Gun_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2485
|
+
[624, "Crouch_Walk_Left_with_Torch_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2486
|
+
[625, "Crouch_Walk_Right_with_Torch_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2487
|
+
[626, "Elderly_Shaky_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2488
|
+
[627, "Female_Bow_Charge_Left_Hand_inplace", "WalkAndRun", "Running"],
|
|
2489
|
+
[628, "Female_Throwing_Stance_Charge_inplace", "WalkAndRun", "Running"],
|
|
2490
|
+
[629, "Flirty_Strut_inplace", "WalkAndRun", "Walking"],
|
|
2491
|
+
[630, "ForwardLeft_Run_Fight_inplace", "Fighting", "Transitioning"],
|
|
2492
|
+
[631, "ForwardRight_Run_Fight_inplace", "Fighting", "Transitioning"],
|
|
2493
|
+
[632, "Funky_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2494
|
+
[635, "Handbag_Walk_inplace", "BodyMovements", "Acting"],
|
|
2495
|
+
[636, "Hello_Run_inplace", "WalkAndRun", "Running"],
|
|
2496
|
+
[637, "Injured_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2497
|
+
[638, "Injured_Walk_Backward_inplace", "WalkAndRun", "Walking"],
|
|
2498
|
+
[639, "Jazz_Hands_inplace", "BodyMovements", "Acting"],
|
|
2499
|
+
[640, "Jump_Over_Obstacle_inplace", "BodyMovements", "Jumping"],
|
|
2500
|
+
[641, "Jump_Over_Obstacle_1_inplace", "BodyMovements", "Jumping"],
|
|
2501
|
+
[642, "Jump_Over_Obstacle_2_inplace", "BodyMovements", "Jumping"],
|
|
2502
|
+
[643, "Jump_Run_inplace", "WalkAndRun", "Running"],
|
|
2503
|
+
[644, "Lean_Forward_Sprint_inplace", "WalkAndRun", "Running"],
|
|
2504
|
+
[645, "Limping_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2505
|
+
[646, "Limping_Walk_1_inplace", "WalkAndRun", "Walking"],
|
|
2506
|
+
[647, "Limping_Walk_2_inplace", "WalkAndRun", "Walking"],
|
|
2507
|
+
[648, "Limping_Walk_3_inplace", "WalkAndRun", "Walking"],
|
|
2508
|
+
[649, "Lunge_Roundhouse_Kick_inplace", "Fighting", "Punching"],
|
|
2509
|
+
[650, "Mummy_Stagger_inplace", "BodyMovements", "Acting"],
|
|
2510
|
+
[651, "Parkour_Vault_with_Roll_inplace", "BodyMovements", "VaultingOverObstacle"],
|
|
2511
|
+
[652, "Proud_Strut_inplace", "WalkAndRun", "Walking"],
|
|
2512
|
+
[653, "Red_Carpet_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2513
|
+
[654, "Rifle_Charge_inplace", "WalkAndRun", "Running"],
|
|
2514
|
+
[656, "Run_and_Leap_inplace", "BodyMovements", "Acting"],
|
|
2515
|
+
[657, "run_fast_10_inplace", "WalkAndRun", "Running"],
|
|
2516
|
+
[658, "run_fast_2_inplace", "WalkAndRun", "Running"],
|
|
2517
|
+
[659, "run_fast_3_inplace", "WalkAndRun", "Running"],
|
|
2518
|
+
[660, "run_fast_4_inplace", "WalkAndRun", "Running"],
|
|
2519
|
+
[661, "run_fast_5_inplace", "WalkAndRun", "Running"],
|
|
2520
|
+
[662, "run_fast_6_inplace", "WalkAndRun", "Running"],
|
|
2521
|
+
[663, "run_fast_7_inplace", "WalkAndRun", "Running"],
|
|
2522
|
+
[664, "run_fast_8_inplace", "WalkAndRun", "Running"],
|
|
2523
|
+
[665, "run_fast_9_inplace", "WalkAndRun", "Running"],
|
|
2524
|
+
[666, "Running_Reload_inplace", "Fighting", "Transitioning"],
|
|
2525
|
+
[667, "Run_to_Walk_Transition_inplace", "WalkAndRun", "Walking"],
|
|
2526
|
+
[668, "Skip_Forward_inplace", "WalkAndRun", "Walking"],
|
|
2527
|
+
[669, "Slow_Orc_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2528
|
+
[670, "Slow_Walk_Reload_inplace", "Fighting", "Transitioning"],
|
|
2529
|
+
[671, "Sneaky_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2530
|
+
[672, "Spear_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2531
|
+
[673, "Standard_Forward_Charge_inplace", "WalkAndRun", "Running"],
|
|
2532
|
+
[674, "Stumble_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2533
|
+
[675, "Stylish_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2534
|
+
[676, "Texting_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2535
|
+
[677, "Tightrope_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2536
|
+
[678, "Unsteady_Walk_inplace", "WalkAndRun", "Walking"],
|
|
2537
|
+
[679, "Walk_Backward_inplace", "WalkAndRun", "Walking"],
|
|
2538
|
+
[680, "Walk_Backward_While_Shooting_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2539
|
+
[681, "Walk_Backward_with_Bow_inplace", "WalkAndRun", "Walking"],
|
|
2540
|
+
[682, "Walk_Backward_with_Bow_1_inplace", "WalkAndRun", "Walking"],
|
|
2541
|
+
[683, "Walk_Backward_with_Bow_Aimed_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2542
|
+
[684, "Walk_Backward_with_Grenade_inplace", "WalkAndRun", "Walking"],
|
|
2543
|
+
[685, "Walk_Backward_with_Gun_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2544
|
+
[686, "Walk_Backward_with_Gun_1_inplace", "WalkAndRun", "Walking"],
|
|
2545
|
+
[687, "Walk_Backward_with_Sword_inplace", "WalkAndRun", "Walking"],
|
|
2546
|
+
[688, "Walk_Fight_Back_inplace", "WalkAndRun", "Walking"],
|
|
2547
|
+
[689, "Walk_Fight_Forward_inplace", "WalkAndRun", "Walking"],
|
|
2548
|
+
[690, "Walk_Forward_While_Shooting_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2549
|
+
[691, "Walk_Forward_with_Bow_Aimed_inplace", "Fighting", "AttackingwithWeapon"],
|
|
2550
|
+
[692, "walking_2_inplace", "WalkAndRun", "Walking"],
|
|
2551
|
+
[693, "Walking_with_Phone_inplace", "WalkAndRun", "Walking"],
|
|
2552
|
+
[694, "Walk_Left_with_Gun_inplace", "WalkAndRun", "CrouchWalking"],
|
|
2553
|
+
[695, "Walk_with_Umbrella_inplace", "WalkAndRun", "Walking"],
|
|
2554
|
+
[696, "Walk_with_Walker_Support_inplace", "WalkAndRun", "Walking"]
|
|
2555
|
+
];
|
|
2556
|
+
var MESHY_ANIMATIONS = ROWS.map(([id, name, category, subcategory]) => ({
|
|
2557
|
+
id,
|
|
2558
|
+
name,
|
|
2559
|
+
category,
|
|
2560
|
+
subcategory
|
|
2561
|
+
}));
|
|
2562
|
+
var BY_ID = new Map(MESHY_ANIMATIONS.map((a) => [a.id, a]));
|
|
2563
|
+
var BY_NAME = new Map(MESHY_ANIMATIONS.map((a) => [normalize(a.name), a]));
|
|
2564
|
+
function normalize(name) {
|
|
2565
|
+
return name.trim().toLowerCase().replace(/[\s_-]+/g, "_");
|
|
2566
|
+
}
|
|
2567
|
+
function meshyAnimationById(id) {
|
|
2568
|
+
return BY_ID.get(id);
|
|
2569
|
+
}
|
|
2570
|
+
function meshyAnimationByName(name) {
|
|
2571
|
+
return BY_NAME.get(normalize(name));
|
|
2572
|
+
}
|
|
2573
|
+
function searchMeshyAnimations(query, limit = 25) {
|
|
2574
|
+
const words = query.toLowerCase().split(/[\s_-]+/).filter(Boolean);
|
|
2575
|
+
if (words.length === 0) return MESHY_ANIMATIONS.slice(0, limit);
|
|
2576
|
+
const out = [];
|
|
2577
|
+
for (const a of MESHY_ANIMATIONS) {
|
|
2578
|
+
const hay = `${a.name} ${a.category} ${a.subcategory ?? ""}`.toLowerCase().replace(/[_-]+/g, " ");
|
|
2579
|
+
if (words.every((w) => hay.includes(w))) {
|
|
2580
|
+
out.push(a);
|
|
2581
|
+
if (out.length >= limit) break;
|
|
2582
|
+
}
|
|
2583
|
+
}
|
|
2584
|
+
return out;
|
|
2910
2585
|
}
|
|
2911
|
-
var OPENROUTER_VIDEO_SPECS = {
|
|
2912
|
-
"google/veo-3.1-lite": veoSpec2("Veo 3.1 Lite", {
|
|
2913
|
-
"720p": { audio: 0.05, silent: 0.03 },
|
|
2914
|
-
"1080p": { audio: 0.08, silent: 0.05 }
|
|
2915
|
-
}),
|
|
2916
|
-
"google/veo-3.1-fast": veoSpec2("Veo 3.1 Fast", {
|
|
2917
|
-
"720p": { audio: 0.1, silent: 0.08 },
|
|
2918
|
-
"1080p": { audio: 0.12, silent: 0.1 },
|
|
2919
|
-
"4k": { audio: 0.3, silent: 0.25 }
|
|
2920
|
-
}),
|
|
2921
|
-
"google/veo-3.1": veoSpec2("Veo 3.1", {
|
|
2922
|
-
"720p": { audio: 0.4, silent: 0.2 },
|
|
2923
|
-
"1080p": { audio: 0.4, silent: 0.2 },
|
|
2924
|
-
"4k": { audio: 0.6, silent: 0.4 }
|
|
2925
|
-
})
|
|
2926
|
-
};
|
|
2927
2586
|
var PORT_TYPES = ["text", "image", "video", "mask", "mesh3d", "audio", "json"];
|
|
2928
2587
|
var INPUT_PORT_TYPES = PORT_TYPES.filter((p) => p !== "mask");
|
|
2929
2588
|
|
|
@@ -3300,34 +2959,6 @@ function edgeKey(e) {
|
|
|
3300
2959
|
function slotKey(target, port) {
|
|
3301
2960
|
return JSON.stringify([target, port]);
|
|
3302
2961
|
}
|
|
3303
|
-
var FAL_NANO_BANANA_2_USD_BY_RESOLUTION2 = {
|
|
3304
|
-
"0.5K": 0.06,
|
|
3305
|
-
"1K": 0.08,
|
|
3306
|
-
"2K": 0.12,
|
|
3307
|
-
"4K": 0.16
|
|
3308
|
-
};
|
|
3309
|
-
var STUDIO3D_USD_PER_CREDIT2 = 29 / 3500;
|
|
3310
|
-
function studio3dCreditsToUsd2(credits) {
|
|
3311
|
-
return Math.round(credits * STUDIO3D_USD_PER_CREDIT2 * 1e3) / 1e3;
|
|
3312
|
-
}
|
|
3313
|
-
var FAL_MESHY_RIG_USD2 = 0.2;
|
|
3314
|
-
function imageResolutionTier(value) {
|
|
3315
|
-
if (typeof value !== "string") return null;
|
|
3316
|
-
switch (value.trim().toLowerCase()) {
|
|
3317
|
-
case "0.5k":
|
|
3318
|
-
case "512px":
|
|
3319
|
-
case "512":
|
|
3320
|
-
return "0.5K";
|
|
3321
|
-
case "1k":
|
|
3322
|
-
return "1K";
|
|
3323
|
-
case "2k":
|
|
3324
|
-
return "2K";
|
|
3325
|
-
case "4k":
|
|
3326
|
-
return "4K";
|
|
3327
|
-
default:
|
|
3328
|
-
return null;
|
|
3329
|
-
}
|
|
3330
|
-
}
|
|
3331
2962
|
var veo2 = (tier, label) => {
|
|
3332
2963
|
const slug2 = tier ? `veo-3-1-${tier}` : "veo-3-1";
|
|
3333
2964
|
return {
|
|
@@ -3369,11 +3000,11 @@ var ROUTES2 = [
|
|
|
3369
3000
|
id: "route/kling-2-5-turbo-pro",
|
|
3370
3001
|
label: "Kling 2.5 Turbo Pro (KIE, fal fallback)",
|
|
3371
3002
|
primary: "kie/kling-v2-5-turbo-pro-image-to-video",
|
|
3372
|
-
|
|
3373
|
-
//
|
|
3374
|
-
//
|
|
3375
|
-
//
|
|
3376
|
-
|
|
3003
|
+
// fal renders Kling 2.5 at a set aspect ratio (16:9, 9:16 or 1:1) and KIE
|
|
3004
|
+
// takes none. The fal attempt gets the allowed ratio nearest the start
|
|
3005
|
+
// frame's shape (`aspectFromFrame`, decision 7 of the plan); a frame whose
|
|
3006
|
+
// size cannot be read leaves this route without a fallback.
|
|
3007
|
+
fallback: { start: "fal/kling-v2-5-image-to-video" }
|
|
3377
3008
|
},
|
|
3378
3009
|
{
|
|
3379
3010
|
kind: "video",
|
|
@@ -3433,32 +3064,33 @@ var MODEL_ROUTES2 = Object.fromEntries(ROUTES2.map((r) => [r.id, r]));
|
|
|
3433
3064
|
function getRoute2(modelId) {
|
|
3434
3065
|
return modelId ? MODEL_ROUTES2[modelId] : void 0;
|
|
3435
3066
|
}
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3067
|
+
function fallbackModels2(route) {
|
|
3068
|
+
if (route.kind === "image") return [route.fallback];
|
|
3069
|
+
if ("byResolution" in route.fallback) return Object.values(route.fallback.byResolution);
|
|
3070
|
+
return [route.fallback.start, ...route.fallback.startAndEnd ? [route.fallback.startAndEnd] : []];
|
|
3071
|
+
}
|
|
3072
|
+
var ROLES2 = (() => {
|
|
3073
|
+
const roles = /* @__PURE__ */ new Map();
|
|
3074
|
+
for (const route of ROUTES2) {
|
|
3075
|
+
roles.set(route.primary, { role: "primary", route });
|
|
3076
|
+
for (const model of fallbackModels2(route)) {
|
|
3077
|
+
if (!roles.has(model)) roles.set(model, { role: "fallback", route });
|
|
3078
|
+
}
|
|
3079
|
+
}
|
|
3080
|
+
return roles;
|
|
3081
|
+
})();
|
|
3082
|
+
function routeRoleOf2(modelId) {
|
|
3083
|
+
return modelId ? ROLES2.get(modelId) : void 0;
|
|
3084
|
+
}
|
|
3085
|
+
var CATALOG_ENTRIES2 = [
|
|
3449
3086
|
// ── 3D AI Studio: 3D generation ────────────────────────────────────────
|
|
3450
|
-
// `credits` is what the model's DEFAULT request bills (the options its
|
|
3451
|
-
// builder sends when a node sets none), priced by providers/studio3d/
|
|
3452
|
-
// pricing.ts; catalog.spec pins every entry to that rule. A job with other
|
|
3453
|
-
// options records its own price at completion.
|
|
3454
3087
|
{
|
|
3455
3088
|
id: "studio3d/tripo-3-1-text-to-3d",
|
|
3456
3089
|
provider: "studio3d",
|
|
3457
3090
|
modality: "3d",
|
|
3458
3091
|
task: "text-to-3d",
|
|
3459
3092
|
label: "Tripo 3.1 (text-to-3D)",
|
|
3460
|
-
description: "
|
|
3461
|
-
cost: { credits: 40, usd: studio3dCreditsToUsd2(40) },
|
|
3093
|
+
description: "The lightest text-to-3D path on 3D AI Studio. Good for fast iteration.",
|
|
3462
3094
|
capabilities: { supportsTextures: true, supportsPbr: true },
|
|
3463
3095
|
isDefault: true
|
|
3464
3096
|
},
|
|
@@ -3468,7 +3100,6 @@ var MODEL_CATALOG2 = [
|
|
|
3468
3100
|
modality: "3d",
|
|
3469
3101
|
task: "image-to-3d",
|
|
3470
3102
|
label: "Tripo 3.1 (image-to-3D)",
|
|
3471
|
-
cost: { credits: 60, usd: studio3dCreditsToUsd2(60) },
|
|
3472
3103
|
capabilities: { needsImageInput: true, supportsTextures: true, supportsPbr: true }
|
|
3473
3104
|
},
|
|
3474
3105
|
{
|
|
@@ -3477,8 +3108,7 @@ var MODEL_CATALOG2 = [
|
|
|
3477
3108
|
modality: "3d",
|
|
3478
3109
|
task: "text-to-3d",
|
|
3479
3110
|
label: "Hunyuan 3.1 Rapid",
|
|
3480
|
-
description: "Tencent Hunyuan3D, rapid edition. Mid-quality
|
|
3481
|
-
cost: { credits: 35, usd: studio3dCreditsToUsd2(35) },
|
|
3111
|
+
description: "Tencent Hunyuan3D, rapid edition. Mid-quality.",
|
|
3482
3112
|
capabilities: { supportsTextures: true, supportsPbr: true }
|
|
3483
3113
|
},
|
|
3484
3114
|
{
|
|
@@ -3487,8 +3117,7 @@ var MODEL_CATALOG2 = [
|
|
|
3487
3117
|
modality: "3d",
|
|
3488
3118
|
task: "text-to-3d",
|
|
3489
3119
|
label: "Hunyuan 3.1 Pro",
|
|
3490
|
-
description: "Tencent Hunyuan3D, pro edition. High quality, PBR materials on by default
|
|
3491
|
-
cost: { credits: 80, usd: studio3dCreditsToUsd2(80) },
|
|
3120
|
+
description: "Tencent Hunyuan3D, pro edition. High quality, PBR materials on by default.",
|
|
3492
3121
|
capabilities: { supportsTextures: true, supportsPbr: true, maxOutputDetail: "1.5M polys" }
|
|
3493
3122
|
},
|
|
3494
3123
|
{
|
|
@@ -3498,7 +3127,6 @@ var MODEL_CATALOG2 = [
|
|
|
3498
3127
|
task: "image-to-3d",
|
|
3499
3128
|
label: "Trellis 2",
|
|
3500
3129
|
description: "Microsoft Trellis 2. Best image-to-3D fidelity. Image input only.",
|
|
3501
|
-
cost: { credits: 30, usd: studio3dCreditsToUsd2(30) },
|
|
3502
3130
|
capabilities: { needsImageInput: true, supportsTextures: true, supportsPbr: true, maxOutputDetail: "1024" },
|
|
3503
3131
|
isDefault: true
|
|
3504
3132
|
},
|
|
@@ -3510,7 +3138,6 @@ var MODEL_CATALOG2 = [
|
|
|
3510
3138
|
task: "remesh",
|
|
3511
3139
|
label: "Tripo Remesh",
|
|
3512
3140
|
description: "Convert + remesh: target polycount, quad topology, multiple output formats.",
|
|
3513
|
-
cost: { credits: 10, usd: studio3dCreditsToUsd2(10) },
|
|
3514
3141
|
isDefault: true
|
|
3515
3142
|
},
|
|
3516
3143
|
{
|
|
@@ -3519,43 +3146,25 @@ var MODEL_CATALOG2 = [
|
|
|
3519
3146
|
modality: "3d",
|
|
3520
3147
|
task: "texture",
|
|
3521
3148
|
label: "Tripo Texture",
|
|
3522
|
-
cost: { credits: 20, usd: studio3dCreditsToUsd2(20) },
|
|
3523
3149
|
capabilities: { supportsTextures: true, supportsPbr: true },
|
|
3524
3150
|
isDefault: true
|
|
3525
3151
|
},
|
|
3526
|
-
|
|
3527
|
-
// (1 credit = $0.005 USD). Indemnification: KIE provides ZERO IP indemnity,
|
|
3528
|
-
// so reserve these for internal asset work. v0.1 ships as private internal
|
|
3529
|
-
// infra, so KIE is the v0.1 default; revisit if customer-facing output is
|
|
3530
|
-
// ever needed.
|
|
3531
|
-
{
|
|
3532
|
-
// Verified 2026-05-09 via two consecutive CLI smokes at 1:1, 1K, single
|
|
3533
|
-
// candidate, default options: KIE billed 8 credits ($0.040) each time.
|
|
3534
|
-
// Earlier spec estimate was $0.020 (4 credits); replaced with the measured
|
|
3535
|
-
// value. The 2K and 4K tiers ($0.06, $0.09) come from KIE's price page
|
|
3536
|
-
// (checked 2026-10-04), the same as the edit entry. The provider's costUsd from creditsConsumed remains the source of
|
|
3537
|
-
// truth for accounting; this catalog field is UI hints only.
|
|
3152
|
+
{
|
|
3538
3153
|
id: "kie/nano-banana-2",
|
|
3539
3154
|
provider: "kie",
|
|
3540
3155
|
modality: "image",
|
|
3541
3156
|
task: "text-to-image",
|
|
3542
3157
|
label: "Nano Banana 2 (KIE)",
|
|
3543
|
-
description: "Google Gemini 3.1 Flash Image via KIE.
|
|
3544
|
-
cost: { usd: 0.04, usdByResolution: { "1K": 0.04, "2K": 0.06, "4K": 0.09 } },
|
|
3545
|
-
listPrice: { source: "fal", model: "fal/nano-banana-2" },
|
|
3158
|
+
description: "Google Gemini 3.1 Flash Image via KIE. Kept as fallback aggregator path; default flipped to fal/nano-banana-2 in 2026-06-04 fal slice.",
|
|
3546
3159
|
capabilities: { resolutions: ["1K", "2K", "4K"] }
|
|
3547
3160
|
},
|
|
3548
3161
|
{
|
|
3549
|
-
// imagen-4-fast price is estimated; KIE docs do not publish a per-image
|
|
3550
|
-
// USD rate. Read data.creditsConsumed from a real run to verify.
|
|
3551
3162
|
id: "kie/imagen-4-fast",
|
|
3552
3163
|
provider: "kie",
|
|
3553
3164
|
modality: "image",
|
|
3554
3165
|
task: "text-to-image",
|
|
3555
3166
|
label: "Imagen 4 Fast (KIE)",
|
|
3556
|
-
description: "Google Imagen 4 Fast via KIE. No
|
|
3557
|
-
cost: { usd: 0.02 },
|
|
3558
|
-
listPrice: { source: "owner", usd: 0.02 },
|
|
3167
|
+
description: "Google Imagen 4 Fast via KIE. No IP indemnity.",
|
|
3559
3168
|
capabilities: { resolutions: [] }
|
|
3560
3169
|
},
|
|
3561
3170
|
{
|
|
@@ -3564,25 +3173,16 @@ var MODEL_CATALOG2 = [
|
|
|
3564
3173
|
modality: "image",
|
|
3565
3174
|
task: "text-to-image",
|
|
3566
3175
|
label: "Seedream V4 (KIE)",
|
|
3567
|
-
description: "ByteDance Seedream V4 via KIE. Stylized output not available on Vertex. No IP indemnity."
|
|
3568
|
-
cost: { usd: 0.0175 },
|
|
3569
|
-
listPrice: { source: "unrecorded" }
|
|
3176
|
+
description: "ByteDance Seedream V4 via KIE. Stylized output not available on Vertex. No IP indemnity."
|
|
3570
3177
|
},
|
|
3571
3178
|
// ── KIE.ai: newer image models, the cheaper route (price feed 2026-09-23) ─
|
|
3572
|
-
// Billed from the credits KIE reports on each task. KIE offers no data
|
|
3573
|
-
// processing agreement. Decided 2026-09-23 (Q5 C of the routing plan,
|
|
3574
|
-
// docs/plans/2026-09-26-kie-first-fal-fallback.md): the automatic routes try
|
|
3575
|
-
// KIE first for everything, a recorded risk; pinning the fal entry of a model
|
|
3576
|
-
// is how a job with a real person's photo is kept off KIE.
|
|
3577
3179
|
{
|
|
3578
3180
|
id: "kie/nano-banana-2-edit",
|
|
3579
3181
|
provider: "kie",
|
|
3580
3182
|
modality: "image",
|
|
3581
3183
|
task: "image-edit",
|
|
3582
3184
|
label: "Nano Banana 2 Edit (KIE)",
|
|
3583
|
-
description: "Nano Banana 2 instruction edit via KIE with up to 8 reference images
|
|
3584
|
-
cost: { usd: 0.04, usdByResolution: { "1K": 0.04, "2K": 0.06, "4K": 0.09 } },
|
|
3585
|
-
listPrice: { source: "fal", model: "fal/nano-banana-2-edit" },
|
|
3185
|
+
description: "Nano Banana 2 instruction edit via KIE with up to 8 reference images.",
|
|
3586
3186
|
capabilities: { resolutions: ["1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
3587
3187
|
},
|
|
3588
3188
|
{
|
|
@@ -3591,9 +3191,7 @@ var MODEL_CATALOG2 = [
|
|
|
3591
3191
|
modality: "image",
|
|
3592
3192
|
task: "text-to-image",
|
|
3593
3193
|
label: "Nano Banana Pro (KIE)",
|
|
3594
|
-
description: "Google Gemini 3 Pro Image via KIE: stronger on complex scenes, text in images and new characters than Nano Banana 2 (a relighting edit showed no difference on 2026-09-23).
|
|
3595
|
-
cost: { usd: 0.09, usdByResolution: { "1K": 0.09, "2K": 0.09, "4K": 0.12 } },
|
|
3596
|
-
listPrice: { source: "fal", model: "fal/nano-banana-pro" },
|
|
3194
|
+
description: "Google Gemini 3 Pro Image via KIE: stronger on complex scenes, text in images and new characters than Nano Banana 2 (a relighting edit showed no difference on 2026-09-23).",
|
|
3597
3195
|
capabilities: { resolutions: ["1K", "2K", "4K"], maxInputImages: 0 }
|
|
3598
3196
|
},
|
|
3599
3197
|
{
|
|
@@ -3602,9 +3200,7 @@ var MODEL_CATALOG2 = [
|
|
|
3602
3200
|
modality: "image",
|
|
3603
3201
|
task: "image-edit",
|
|
3604
3202
|
label: "Nano Banana Pro Edit (KIE)",
|
|
3605
|
-
description: "Nano Banana Pro instruction edit via KIE with up to 8 reference images.
|
|
3606
|
-
cost: { usd: 0.09, usdByResolution: { "1K": 0.09, "2K": 0.09, "4K": 0.12 } },
|
|
3607
|
-
listPrice: { source: "fal", model: "fal/nano-banana-pro-edit" },
|
|
3203
|
+
description: "Nano Banana Pro instruction edit via KIE with up to 8 reference images.",
|
|
3608
3204
|
capabilities: { resolutions: ["1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
3609
3205
|
},
|
|
3610
3206
|
{
|
|
@@ -3613,9 +3209,7 @@ var MODEL_CATALOG2 = [
|
|
|
3613
3209
|
modality: "image",
|
|
3614
3210
|
task: "text-to-image",
|
|
3615
3211
|
label: "Seedream 5 Lite (KIE)",
|
|
3616
|
-
description: "ByteDance Seedream 5 Lite via KIE, 2K or 4K.
|
|
3617
|
-
cost: { usd: 0.0275 },
|
|
3618
|
-
listPrice: { source: "fal", model: "fal/seedream-5-lite" },
|
|
3212
|
+
description: "ByteDance Seedream 5 Lite via KIE, 2K or 4K.",
|
|
3619
3213
|
capabilities: { resolutions: ["2K", "4K"], maxInputImages: 0 }
|
|
3620
3214
|
},
|
|
3621
3215
|
{
|
|
@@ -3624,9 +3218,7 @@ var MODEL_CATALOG2 = [
|
|
|
3624
3218
|
modality: "image",
|
|
3625
3219
|
task: "image-edit",
|
|
3626
3220
|
label: "Seedream 5 Lite Edit (KIE)",
|
|
3627
|
-
description: "ByteDance Seedream 5 Lite image-to-image via KIE, up to 10 reference images, 2K or 4K.
|
|
3628
|
-
cost: { usd: 0.0275 },
|
|
3629
|
-
listPrice: { source: "fal", model: "fal/seedream-5-lite-edit" },
|
|
3221
|
+
description: "ByteDance Seedream 5 Lite image-to-image via KIE, up to 10 reference images, 2K or 4K.",
|
|
3630
3222
|
capabilities: { resolutions: ["2K", "4K"], needsImageInput: true, maxInputImages: 10 }
|
|
3631
3223
|
},
|
|
3632
3224
|
{
|
|
@@ -3635,9 +3227,7 @@ var MODEL_CATALOG2 = [
|
|
|
3635
3227
|
modality: "image",
|
|
3636
3228
|
task: "text-to-image",
|
|
3637
3229
|
label: "Seedream 5 Pro (KIE)",
|
|
3638
|
-
description: "ByteDance Seedream 5 Pro via KIE, 1K or 2K.
|
|
3639
|
-
cost: { usd: 0.035, usdByResolution: { "1K": 0.035, "2K": 0.07 } },
|
|
3640
|
-
listPrice: { source: "fal", model: "fal/seedream-5-pro" },
|
|
3230
|
+
description: "ByteDance Seedream 5 Pro via KIE, 1K or 2K.",
|
|
3641
3231
|
capabilities: { resolutions: ["1K", "2K"], maxInputImages: 0 }
|
|
3642
3232
|
},
|
|
3643
3233
|
{
|
|
@@ -3646,30 +3236,17 @@ var MODEL_CATALOG2 = [
|
|
|
3646
3236
|
modality: "image",
|
|
3647
3237
|
task: "image-edit",
|
|
3648
3238
|
label: "Seedream 5 Pro Edit (KIE)",
|
|
3649
|
-
description: "ByteDance Seedream 5 Pro image-to-image via KIE, up to 10 reference images, 1K or 2K.
|
|
3650
|
-
cost: { usd: 0.035, usdByResolution: { "1K": 0.035, "2K": 0.07 } },
|
|
3651
|
-
listPrice: { source: "fal", model: "fal/seedream-5-pro-edit" },
|
|
3239
|
+
description: "ByteDance Seedream 5 Pro image-to-image via KIE, up to 10 reference images, 1K or 2K.",
|
|
3652
3240
|
capabilities: { resolutions: ["1K", "2K"], needsImageInput: true, maxInputImages: 10 }
|
|
3653
3241
|
},
|
|
3654
3242
|
// ── fal.ai: image gen ─────────────────────────────────────────────────
|
|
3655
|
-
// Prices from docs/internal/research/fal-api-reference.md (vetted
|
|
3656
|
-
// 2026-06-04). Nano Banana 2 (Google Gemini 3.1 Flash Image) is the SAME upstream model as today's KIE
|
|
3657
|
-
// nano-banana-2 default; flipping the default from kie/nano-banana-2 to
|
|
3658
|
-
// fal/nano-banana-2 is zero aesthetic change. FLUX 1.1 [pro] is the
|
|
3659
|
-
// fal-native flagship; FLUX.1 [schnell] the fast/cheap option; FLUX.1
|
|
3660
|
-
// Kontext [pro] is for instruction edits.
|
|
3661
|
-
//
|
|
3662
|
-
// Per-task entries (Weave-style classification, option a from the spec):
|
|
3663
|
-
// Nano Banana 2 appears as both text-to-image (default) and the /edit
|
|
3664
|
-
// endpoint as image-to-image + image-edit, sharing one upstream id.
|
|
3665
3243
|
{
|
|
3666
3244
|
id: "fal/nano-banana-2",
|
|
3667
3245
|
provider: "fal",
|
|
3668
3246
|
modality: "image",
|
|
3669
3247
|
task: "text-to-image",
|
|
3670
3248
|
label: "Nano Banana 2 (fal)",
|
|
3671
|
-
description: "Google Gemini 3.1 Flash Image via fal. Default for image gen; same upstream model as KIE nano-banana-2 with no aesthetic change.
|
|
3672
|
-
cost: { usd: 0.08, usdByResolution: FAL_NANO_BANANA_2_USD_BY_RESOLUTION2 },
|
|
3249
|
+
description: "Google Gemini 3.1 Flash Image via fal. Default for image gen; same upstream model as KIE nano-banana-2 with no aesthetic change.",
|
|
3673
3250
|
capabilities: { resolutions: ["0.5K", "1K", "2K", "4K"], maxInputImages: 0 },
|
|
3674
3251
|
isDefault: true
|
|
3675
3252
|
},
|
|
@@ -3679,8 +3256,7 @@ var MODEL_CATALOG2 = [
|
|
|
3679
3256
|
modality: "image",
|
|
3680
3257
|
task: "image-edit",
|
|
3681
3258
|
label: "Nano Banana 2 Edit (fal)",
|
|
3682
|
-
description: "Nano Banana 2 instruction edit. Takes up to 8 reference images for full brand consistency.
|
|
3683
|
-
cost: { usd: 0.08, usdByResolution: FAL_NANO_BANANA_2_USD_BY_RESOLUTION2 },
|
|
3259
|
+
description: "Nano Banana 2 instruction edit. Takes up to 8 reference images for full brand consistency.",
|
|
3684
3260
|
capabilities: { resolutions: ["0.5K", "1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
3685
3261
|
},
|
|
3686
3262
|
{
|
|
@@ -3689,11 +3265,7 @@ var MODEL_CATALOG2 = [
|
|
|
3689
3265
|
modality: "image",
|
|
3690
3266
|
task: "image-to-image",
|
|
3691
3267
|
label: "Nano Banana 2 Image-to-Image (fal)",
|
|
3692
|
-
description: "Nano Banana 2 in image-to-image mode; same upstream endpoint as the edit entry, separate task classification.
|
|
3693
|
-
// Same fal endpoint as the edit entry, so the same tier prices: fal's
|
|
3694
|
-
// recorded cost is keyed by endpoint and was already tiered, and the
|
|
3695
|
-
// estimates and quota must agree with it.
|
|
3696
|
-
cost: { usd: 0.08, usdByResolution: FAL_NANO_BANANA_2_USD_BY_RESOLUTION2 },
|
|
3268
|
+
description: "Nano Banana 2 in image-to-image mode; same upstream endpoint as the edit entry, separate task classification.",
|
|
3697
3269
|
capabilities: { resolutions: ["0.5K", "1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
3698
3270
|
},
|
|
3699
3271
|
// ── fal.ai: Nano Banana Pro and Seedream 5 (the fallback for the KIE entries) ─
|
|
@@ -3703,8 +3275,7 @@ var MODEL_CATALOG2 = [
|
|
|
3703
3275
|
modality: "image",
|
|
3704
3276
|
task: "text-to-image",
|
|
3705
3277
|
label: "Nano Banana Pro (fal)",
|
|
3706
|
-
description: "Google Gemini 3 Pro Image via fal.
|
|
3707
|
-
cost: { usd: 0.15, usdByResolution: { "1K": 0.15, "2K": 0.15, "4K": 0.3 } },
|
|
3278
|
+
description: "Google Gemini 3 Pro Image via fal. This entry runs under fal terms.",
|
|
3708
3279
|
capabilities: { resolutions: ["1K", "2K", "4K"], maxInputImages: 0 }
|
|
3709
3280
|
},
|
|
3710
3281
|
{
|
|
@@ -3713,8 +3284,7 @@ var MODEL_CATALOG2 = [
|
|
|
3713
3284
|
modality: "image",
|
|
3714
3285
|
task: "image-edit",
|
|
3715
3286
|
label: "Nano Banana Pro Edit (fal)",
|
|
3716
|
-
description: "Nano Banana Pro instruction edit via fal with up to 8 reference images.
|
|
3717
|
-
cost: { usd: 0.15, usdByResolution: { "1K": 0.15, "2K": 0.15, "4K": 0.3 } },
|
|
3287
|
+
description: "Nano Banana Pro instruction edit via fal with up to 8 reference images.",
|
|
3718
3288
|
capabilities: { resolutions: ["1K", "2K", "4K"], needsImageInput: true, maxInputImages: 8 }
|
|
3719
3289
|
},
|
|
3720
3290
|
{
|
|
@@ -3723,8 +3293,7 @@ var MODEL_CATALOG2 = [
|
|
|
3723
3293
|
modality: "image",
|
|
3724
3294
|
task: "text-to-image",
|
|
3725
3295
|
label: "Seedream 5 Lite (fal)",
|
|
3726
|
-
description: "ByteDance Seedream 5 Lite via fal, 2K or 4K.
|
|
3727
|
-
cost: { usd: 0.035 },
|
|
3296
|
+
description: "ByteDance Seedream 5 Lite via fal, 2K or 4K.",
|
|
3728
3297
|
capabilities: { resolutions: ["2K", "4K"], maxInputImages: 0 }
|
|
3729
3298
|
},
|
|
3730
3299
|
{
|
|
@@ -3733,8 +3302,7 @@ var MODEL_CATALOG2 = [
|
|
|
3733
3302
|
modality: "image",
|
|
3734
3303
|
task: "image-edit",
|
|
3735
3304
|
label: "Seedream 5 Lite Edit (fal)",
|
|
3736
|
-
description: "ByteDance Seedream 5 Lite edit via fal, up to 10 reference images, 2K or 4K.
|
|
3737
|
-
cost: { usd: 0.035 },
|
|
3305
|
+
description: "ByteDance Seedream 5 Lite edit via fal, up to 10 reference images, 2K or 4K.",
|
|
3738
3306
|
capabilities: { resolutions: ["2K", "4K"], needsImageInput: true, maxInputImages: 10 }
|
|
3739
3307
|
},
|
|
3740
3308
|
{
|
|
@@ -3743,8 +3311,7 @@ var MODEL_CATALOG2 = [
|
|
|
3743
3311
|
modality: "image",
|
|
3744
3312
|
task: "text-to-image",
|
|
3745
3313
|
label: "Seedream 5 Pro (fal)",
|
|
3746
|
-
description: "ByteDance Seedream 5 Pro via fal, 1K or 2K.
|
|
3747
|
-
cost: { usd: 0.135, usdByResolution: { "1K": 0.0675, "2K": 0.135 } },
|
|
3314
|
+
description: "ByteDance Seedream 5 Pro via fal, 1K or 2K.",
|
|
3748
3315
|
capabilities: { resolutions: ["1K", "2K"], maxInputImages: 0 }
|
|
3749
3316
|
},
|
|
3750
3317
|
{
|
|
@@ -3753,8 +3320,7 @@ var MODEL_CATALOG2 = [
|
|
|
3753
3320
|
modality: "image",
|
|
3754
3321
|
task: "image-edit",
|
|
3755
3322
|
label: "Seedream 5 Pro Edit (fal)",
|
|
3756
|
-
description: "ByteDance Seedream 5 Pro edit via fal, up to 10 reference images, 1K or 2K.
|
|
3757
|
-
cost: { usd: 0.135, usdByResolution: { "1K": 0.0675, "2K": 0.135 } },
|
|
3323
|
+
description: "ByteDance Seedream 5 Pro edit via fal, up to 10 reference images, 1K or 2K.",
|
|
3758
3324
|
capabilities: { resolutions: ["1K", "2K"], needsImageInput: true, maxInputImages: 10 }
|
|
3759
3325
|
},
|
|
3760
3326
|
{
|
|
@@ -3763,8 +3329,7 @@ var MODEL_CATALOG2 = [
|
|
|
3763
3329
|
modality: "image",
|
|
3764
3330
|
task: "text-to-image",
|
|
3765
3331
|
label: "FLUX 1.1 [pro] (fal)",
|
|
3766
|
-
description: "Black Forest Labs FLUX 1.1 [pro] via fal. Flagship text-to-image
|
|
3767
|
-
cost: { usd: 0.04 },
|
|
3332
|
+
description: "Black Forest Labs FLUX 1.1 [pro] via fal. Flagship text-to-image. Text-only, no reference-image brand conditioning.",
|
|
3768
3333
|
capabilities: { resolutions: [], maxInputImages: 0 }
|
|
3769
3334
|
},
|
|
3770
3335
|
{
|
|
@@ -3773,8 +3338,7 @@ var MODEL_CATALOG2 = [
|
|
|
3773
3338
|
modality: "image",
|
|
3774
3339
|
task: "text-to-image",
|
|
3775
3340
|
label: "FLUX.1 [schnell] (fal)",
|
|
3776
|
-
description: "Black Forest Labs FLUX.1 [schnell] via fal. Fast
|
|
3777
|
-
cost: { usd: 3e-3 },
|
|
3341
|
+
description: "Black Forest Labs FLUX.1 [schnell] via fal. Fast text-to-image. Text-only.",
|
|
3778
3342
|
capabilities: { resolutions: [], maxInputImages: 0 }
|
|
3779
3343
|
},
|
|
3780
3344
|
{
|
|
@@ -3783,42 +3347,28 @@ var MODEL_CATALOG2 = [
|
|
|
3783
3347
|
modality: "image",
|
|
3784
3348
|
task: "image-edit",
|
|
3785
3349
|
label: "FLUX.1 Kontext [pro] (fal)",
|
|
3786
|
-
description: "FLUX.1 Kontext instruction edit via fal. Single image_url input
|
|
3787
|
-
cost: { usd: 0.04 },
|
|
3350
|
+
description: "FLUX.1 Kontext instruction edit via fal. Single image_url input. For multi-ref, the kontext/max/multi endpoint is a follow-up.",
|
|
3788
3351
|
capabilities: { resolutions: [], needsImageInput: true, maxInputImages: 1 }
|
|
3789
3352
|
},
|
|
3790
3353
|
// ── fal.ai: virtual try-on (E3) ────────────────────────────────────────
|
|
3791
|
-
// FASHN garment-preserving try-on. A DISTINCT task from image-edit: it takes
|
|
3792
|
-
// TWO named images (garment + person/model) and preserves the garment's
|
|
3793
|
-
// pixels (text/pattern/fabric) rather than letting a general diffusion edit
|
|
3794
|
-
// redraw them. Id, schema, and price verified 2026-07-20 against fal's model
|
|
3795
|
-
// page for fal-ai/fashn/tryon/v1.6; see docs/internal/research/fal-fashn-tryon.md.
|
|
3796
|
-
// Flat $0.075 per run (fal does not return cost; the provider computes it).
|
|
3797
3354
|
{
|
|
3798
3355
|
id: "fal/fashn-tryon-v1-6",
|
|
3799
3356
|
provider: "fal",
|
|
3800
3357
|
modality: "image",
|
|
3801
3358
|
task: "virtual-try-on",
|
|
3802
3359
|
label: "FASHN Try-On v1.6",
|
|
3803
|
-
description: "Garment-preserving virtual try-on via fal. Preserves product text/pattern/fabric; takes a garment image and a model/person image.
|
|
3804
|
-
cost: { usd: 0.075 },
|
|
3360
|
+
description: "Garment-preserving virtual try-on via fal. Preserves product text/pattern/fabric; takes a garment image and a model/person image.",
|
|
3805
3361
|
capabilities: { maxInputImages: 2, needsImageInput: true },
|
|
3806
3362
|
isDefault: true
|
|
3807
3363
|
},
|
|
3808
3364
|
// ── fal.ai: video gen (B1) ─────────────────────────────────────────────
|
|
3809
|
-
// Async via fal's queue API (submit -> webhook / poll). Prices are per the
|
|
3810
|
-
// fal model pages (vetted 2026-06-16); fal does NOT return cost, so the
|
|
3811
|
-
// provider computes a flat per-video estimate from the catalog usd anchored
|
|
3812
|
-
// to the model's base clip length. Exactly one isDefault per (video, task):
|
|
3813
|
-
// Kling 2.5 Turbo Pro for image-to-video, Seedance 1.0 Pro for text-to-video.
|
|
3814
3365
|
{
|
|
3815
3366
|
id: "fal/kling-v2-5-image-to-video",
|
|
3816
3367
|
provider: "fal",
|
|
3817
3368
|
modality: "video",
|
|
3818
3369
|
task: "image-to-video",
|
|
3819
3370
|
label: "Kling 2.5 Turbo Pro (image-to-video)",
|
|
3820
|
-
description: "Kuaishou Kling 2.5 Turbo Pro via fal. Cinematic image-to-video
|
|
3821
|
-
cost: { usd: 0.35 },
|
|
3371
|
+
description: "Kuaishou Kling 2.5 Turbo Pro via fal. Cinematic image-to-video. Default image-to-video.",
|
|
3822
3372
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true },
|
|
3823
3373
|
isDefault: true
|
|
3824
3374
|
},
|
|
@@ -3828,8 +3378,7 @@ var MODEL_CATALOG2 = [
|
|
|
3828
3378
|
modality: "video",
|
|
3829
3379
|
task: "image-to-video",
|
|
3830
3380
|
label: "Seedance 1.0 Pro (image-to-video)",
|
|
3831
|
-
description: "ByteDance Seedance 1.0 Pro via fal. Image-to-video
|
|
3832
|
-
cost: { usd: 0.62 },
|
|
3381
|
+
description: "ByteDance Seedance 1.0 Pro via fal. Image-to-video. Alternative to Kling for stylized motion.",
|
|
3833
3382
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
3834
3383
|
},
|
|
3835
3384
|
{
|
|
@@ -3839,9 +3388,7 @@ var MODEL_CATALOG2 = [
|
|
|
3839
3388
|
task: "image-to-video",
|
|
3840
3389
|
label: "Seedance 2.5 (image-to-video)",
|
|
3841
3390
|
refusesPhotorealPeople: true,
|
|
3842
|
-
description: "ByteDance Seedance 2.5 via fal. Accepts a start frame AND an end frame (end_image_url), selectable duration 4-30s, up to 1080p, with synchronised audio (generate_audio, on by default).
|
|
3843
|
-
// The default clip the estimate prices (computeVideoCostUsd): 5s at 720p 16:9.
|
|
3844
|
-
cost: { usd: 2.3112 },
|
|
3391
|
+
description: "ByteDance Seedance 2.5 via fal. Accepts a start frame AND an end frame (end_image_url), selectable duration 4-30s, up to 1080p, with synchronised audio (generate_audio, on by default). CAUTION: ByteDance partner moderation on 2.5 rejected even fal's own robot test image with content_policy_violation (observed 2026-08-21), and it refuses photoreal people, generated ones included (observed 2026-08-21 and 2026-09-23). Seedance 2.0 refuses them too, so pick another model for a person; use this one for subjects without people.",
|
|
3845
3392
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3846
3393
|
},
|
|
3847
3394
|
{
|
|
@@ -3851,9 +3398,7 @@ var MODEL_CATALOG2 = [
|
|
|
3851
3398
|
task: "image-to-video",
|
|
3852
3399
|
label: "Seedance 2.0 (image-to-video)",
|
|
3853
3400
|
refusesPhotorealPeople: true,
|
|
3854
|
-
description: "ByteDance Seedance 2.0 via fal. Start frame plus optional end frame (end_image_url), duration 4-15s, up to 4k, and it accepts seven explicit aspect ratios where 2.5 is fixed to auto. It refuses photoreal people, generated ones included, in every fal mode (observed 2026-09-23). Not simply superseded by 2.5: 2.0 generated from photographic input that 2.5 refused on content policy (observed 2026-08-21), and it is the only one offering 4k.
|
|
3855
|
-
// The default clip the estimate prices (computeVideoCostUsd): 5s at 720p 16:9.
|
|
3856
|
-
cost: { usd: 1.512 },
|
|
3401
|
+
description: "ByteDance Seedance 2.0 via fal. Start frame plus optional end frame (end_image_url), duration 4-15s, up to 4k, and it accepts seven explicit aspect ratios where 2.5 is fixed to auto. It refuses photoreal people, generated ones included, in every fal mode (observed 2026-09-23). Not simply superseded by 2.5: 2.0 generated from photographic input that 2.5 refused on content policy (observed 2026-08-21), and it is the only one offering 4k.",
|
|
3857
3402
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3858
3403
|
},
|
|
3859
3404
|
// ── A start-frame model that accepts photoreal generated characters ───────
|
|
@@ -3869,25 +3414,17 @@ var MODEL_CATALOG2 = [
|
|
|
3869
3414
|
modality: "video",
|
|
3870
3415
|
task: "image-to-video",
|
|
3871
3416
|
label: "Grok Imagine (image-to-video)",
|
|
3872
|
-
description: "xAI Grok Imagine Video via fal. Animates a start frame with audio, 1 to 15 s, 480p or 720p, aspect auto or eight explicit ratios. Accepts photoreal generated characters that Seedance refuses (tested 2026-09-23).
|
|
3873
|
-
// 5 s at the 720p default plus fal's $0.002 for the input image.
|
|
3874
|
-
cost: { usd: 0.352 },
|
|
3417
|
+
description: "xAI Grok Imagine Video via fal. Animates a start frame with audio, 1 to 15 s, 480p or 720p, aspect auto or eight explicit ratios. Accepts photoreal generated characters that Seedance refuses (tested 2026-09-23). No end frame.",
|
|
3875
3418
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
3876
3419
|
},
|
|
3877
3420
|
// ── Google Veo 3.1 (fal): start frame, and first and last frame ──────────
|
|
3878
|
-
// Accepted every photoreal still of a minted character on 2026-09-23 and
|
|
3879
|
-
// landed exactly on the end frame; the best quality tested that day. Durations
|
|
3880
|
-
// 4, 6 or 8 s (Lite first-and-last: 8 s only), aspect auto, 16:9 or 9:16.
|
|
3881
|
-
// Studio sends it SILENT unless the job sets generateAudio: true (audio costs
|
|
3882
|
-
// 50 to 100% more), so the anchors are 8 s silent at 720p. fal vetted 2026-09-23.
|
|
3883
3421
|
{
|
|
3884
3422
|
id: "fal/veo-3-1-lite-image-to-video",
|
|
3885
3423
|
provider: "fal",
|
|
3886
3424
|
modality: "video",
|
|
3887
3425
|
task: "image-to-video",
|
|
3888
3426
|
label: "Veo 3.1 Lite (image-to-video)",
|
|
3889
|
-
description: "Google Veo 3.1 Lite via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.
|
|
3890
|
-
cost: { usd: 0.24 },
|
|
3427
|
+
description: "Google Veo 3.1 Lite via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.",
|
|
3891
3428
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
3892
3429
|
},
|
|
3893
3430
|
{
|
|
@@ -3896,8 +3433,7 @@ var MODEL_CATALOG2 = [
|
|
|
3896
3433
|
modality: "video",
|
|
3897
3434
|
task: "image-to-video",
|
|
3898
3435
|
label: "Veo 3.1 Lite (first and last frame)",
|
|
3899
|
-
description: "Google Veo 3.1 Lite via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 8 s only, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.
|
|
3900
|
-
cost: { usd: 0.24 },
|
|
3436
|
+
description: "Google Veo 3.1 Lite via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 8 s only, 720p or 1080p. Accepts photoreal generated characters Seedance refuses.",
|
|
3901
3437
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3902
3438
|
},
|
|
3903
3439
|
{
|
|
@@ -3906,8 +3442,7 @@ var MODEL_CATALOG2 = [
|
|
|
3906
3442
|
modality: "video",
|
|
3907
3443
|
task: "image-to-video",
|
|
3908
3444
|
label: "Veo 3.1 Fast (image-to-video)",
|
|
3909
|
-
description: "Google Veo 3.1 Fast via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
3910
|
-
cost: { usd: 0.8 },
|
|
3445
|
+
description: "Google Veo 3.1 Fast via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
3911
3446
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
3912
3447
|
},
|
|
3913
3448
|
{
|
|
@@ -3916,8 +3451,7 @@ var MODEL_CATALOG2 = [
|
|
|
3916
3451
|
modality: "video",
|
|
3917
3452
|
task: "image-to-video",
|
|
3918
3453
|
label: "Veo 3.1 Fast (first and last frame)",
|
|
3919
|
-
description: "Google Veo 3.1 Fast via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
3920
|
-
cost: { usd: 0.8 },
|
|
3454
|
+
description: "Google Veo 3.1 Fast via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
3921
3455
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3922
3456
|
},
|
|
3923
3457
|
{
|
|
@@ -3926,8 +3460,7 @@ var MODEL_CATALOG2 = [
|
|
|
3926
3460
|
modality: "video",
|
|
3927
3461
|
task: "image-to-video",
|
|
3928
3462
|
label: "Veo 3.1 (image-to-video)",
|
|
3929
|
-
description: "Google Veo 3.1 via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
3930
|
-
cost: { usd: 1.6 },
|
|
3463
|
+
description: "Google Veo 3.1 via fal, image-to-video: animates a start frame, 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
3931
3464
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
3932
3465
|
},
|
|
3933
3466
|
{
|
|
@@ -3936,27 +3469,17 @@ var MODEL_CATALOG2 = [
|
|
|
3936
3469
|
modality: "video",
|
|
3937
3470
|
task: "image-to-video",
|
|
3938
3471
|
label: "Veo 3.1 (first and last frame)",
|
|
3939
|
-
description: "Google Veo 3.1 via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.
|
|
3940
|
-
cost: { usd: 1.6 },
|
|
3472
|
+
description: "Google Veo 3.1 via fal, first and last frame: animates from a start frame and lands exactly on the end frame (both required), 4, 6 or 8 s, 720p, 1080p or 4K. Accepts photoreal generated characters Seedance refuses.",
|
|
3941
3473
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3942
3474
|
},
|
|
3943
3475
|
// ── KIE.ai video: the cheaper route to the same upstream models ──────────
|
|
3944
|
-
// Async via KIE's Veo and createTask APIs (providers/kie-video.ts). 20 to 85%
|
|
3945
|
-
// below fal (KIE price feed, 2026-09-23). KIE offers no data processing
|
|
3946
|
-
// agreement. Decided 2026-09-23 (Q5 C of the routing plan): the automatic
|
|
3947
|
-
// routes try KIE first for everything, a recorded risk; pinning the fal
|
|
3948
|
-
// entry of a model is how a job with a real person's photo is kept off KIE.
|
|
3949
|
-
// Anchors are the model's default clip at 720p (Kling: its fixed size). KIE
|
|
3950
|
-
// docs vetted 2026-09-23.
|
|
3951
3476
|
{
|
|
3952
3477
|
id: "kie/veo-3-1-lite",
|
|
3953
3478
|
provider: "kie",
|
|
3954
3479
|
modality: "video",
|
|
3955
3480
|
task: "image-to-video",
|
|
3956
3481
|
label: "Veo 3.1 Lite (KIE)",
|
|
3957
|
-
description: "Google Veo 3.1 Lite via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23.
|
|
3958
|
-
cost: { usd: 0.15 },
|
|
3959
|
-
listPrice: { source: "owner", model: "openrouter/veo-3-1-lite" },
|
|
3482
|
+
description: "Google Veo 3.1 Lite via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23. KIE's Auto aspect letterboxes, so pick 16:9 or 9:16.",
|
|
3960
3483
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3961
3484
|
},
|
|
3962
3485
|
{
|
|
@@ -3965,9 +3488,7 @@ var MODEL_CATALOG2 = [
|
|
|
3965
3488
|
modality: "video",
|
|
3966
3489
|
task: "image-to-video",
|
|
3967
3490
|
label: "Veo 3.1 Fast (KIE)",
|
|
3968
|
-
description: "Google Veo 3.1 Fast via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23.
|
|
3969
|
-
cost: { usd: 0.3 },
|
|
3970
|
-
listPrice: { source: "owner", model: "openrouter/veo-3-1-fast" },
|
|
3491
|
+
description: "Google Veo 3.1 Fast via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Accepted a minted character's photoreal stills on 2026-09-23. Pick 16:9 or 9:16.",
|
|
3971
3492
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3972
3493
|
},
|
|
3973
3494
|
{
|
|
@@ -3976,25 +3497,17 @@ var MODEL_CATALOG2 = [
|
|
|
3976
3497
|
modality: "video",
|
|
3977
3498
|
task: "image-to-video",
|
|
3978
3499
|
label: "Veo 3.1 (KIE)",
|
|
3979
|
-
description: "Google Veo 3.1 (quality tier) via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Same upstream model as the tested Lite and Fast tiers.
|
|
3980
|
-
cost: { usd: 1.25 },
|
|
3981
|
-
listPrice: { source: "owner", model: "openrouter/veo-3-1" },
|
|
3500
|
+
description: "Google Veo 3.1 (quality tier) via KIE. A start frame, or a start and an end frame; 4, 6 or 8 s; 720p, 1080p or 4K; always with audio. Same upstream model as the tested Lite and Fast tiers.",
|
|
3982
3501
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3983
3502
|
},
|
|
3984
3503
|
// ── OpenRouter video: Google Veo 3.1 at Google's own prices ───────────────
|
|
3985
|
-
// Async via OpenRouter's video API (providers/openrouter-video.ts). One entry
|
|
3986
|
-
// per tier, like KIE: an end frame adds a last frame. 16:9 or 9:16 only (no
|
|
3987
|
-
// auto), frames must be JPEG or PNG (WebP is refused). Studio sends it SILENT
|
|
3988
|
-
// unless the job sets generateAudio: true, like the fal Veo entries, so the
|
|
3989
|
-
// anchors are 8 s silent at 720p. OpenRouter models endpoint vetted 2026-10-04.
|
|
3990
3504
|
{
|
|
3991
3505
|
id: "openrouter/veo-3-1-lite",
|
|
3992
3506
|
provider: "openrouter",
|
|
3993
3507
|
modality: "video",
|
|
3994
3508
|
task: "image-to-video",
|
|
3995
3509
|
label: "Veo 3.1 Lite (OpenRouter)",
|
|
3996
|
-
description: "Google Veo 3.1 Lite via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p or 1080p; 16:9 or 9:16, one must be set. Accepted a minted character's photoreal still on 2026-10-04.
|
|
3997
|
-
cost: { usd: 0.24 },
|
|
3510
|
+
description: "Google Veo 3.1 Lite via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p or 1080p; 16:9 or 9:16, one must be set. Accepted a minted character's photoreal still on 2026-10-04.",
|
|
3998
3511
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
3999
3512
|
},
|
|
4000
3513
|
{
|
|
@@ -4003,8 +3516,7 @@ var MODEL_CATALOG2 = [
|
|
|
4003
3516
|
modality: "video",
|
|
4004
3517
|
task: "image-to-video",
|
|
4005
3518
|
label: "Veo 3.1 Fast (OpenRouter)",
|
|
4006
|
-
description: "Google Veo 3.1 Fast via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.
|
|
4007
|
-
cost: { usd: 0.64 },
|
|
3519
|
+
description: "Google Veo 3.1 Fast via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.",
|
|
4008
3520
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4009
3521
|
},
|
|
4010
3522
|
{
|
|
@@ -4013,8 +3525,7 @@ var MODEL_CATALOG2 = [
|
|
|
4013
3525
|
modality: "video",
|
|
4014
3526
|
task: "image-to-video",
|
|
4015
3527
|
label: "Veo 3.1 (OpenRouter)",
|
|
4016
|
-
description: "Google Veo 3.1 (quality tier) via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.
|
|
4017
|
-
cost: { usd: 1.6 },
|
|
3528
|
+
description: "Google Veo 3.1 (quality tier) via OpenRouter. A start frame, or a start and an end frame (JPEG or PNG, not WebP); 4, 6 or 8 s; 720p, 1080p or 4K; 16:9 or 9:16, one must be set.",
|
|
4018
3529
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4019
3530
|
},
|
|
4020
3531
|
{
|
|
@@ -4023,9 +3534,7 @@ var MODEL_CATALOG2 = [
|
|
|
4023
3534
|
modality: "video",
|
|
4024
3535
|
task: "image-to-video",
|
|
4025
3536
|
label: "Grok Imagine (KIE)",
|
|
4026
|
-
description: "xAI Grok Imagine via KIE. A start frame, 6 to 30 s, 480p, 720p or 1080p, with audio. Accepted a minted character's photoreal stills on 2026-09-23.
|
|
4027
|
-
cost: { usd: 0.135 },
|
|
4028
|
-
listPrice: { source: "fal", model: "fal/grok-imagine-image-to-video" },
|
|
3537
|
+
description: "xAI Grok Imagine via KIE. A start frame, 6 to 30 s, 480p, 720p or 1080p, with audio. Accepted a minted character's photoreal stills on 2026-09-23. No end frame.",
|
|
4029
3538
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
4030
3539
|
},
|
|
4031
3540
|
{
|
|
@@ -4034,9 +3543,7 @@ var MODEL_CATALOG2 = [
|
|
|
4034
3543
|
modality: "video",
|
|
4035
3544
|
task: "image-to-video",
|
|
4036
3545
|
label: "Grok Imagine 1.5 (KIE, preview)",
|
|
4037
|
-
description: "xAI Grok Imagine 1.5 preview via KIE. A start frame, 1 to 15 s, 480p or 720p. Not yet tested with a minted character.
|
|
4038
|
-
cost: { usd: 0.18 },
|
|
4039
|
-
listPrice: { source: "fal", model: "fal/grok-imagine-1-5-image-to-video" },
|
|
3546
|
+
description: "xAI Grok Imagine 1.5 preview via KIE. A start frame, 1 to 15 s, 480p or 720p. Not yet tested with a minted character. No end frame.",
|
|
4040
3547
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
4041
3548
|
},
|
|
4042
3549
|
{
|
|
@@ -4045,9 +3552,7 @@ var MODEL_CATALOG2 = [
|
|
|
4045
3552
|
modality: "video",
|
|
4046
3553
|
task: "image-to-video",
|
|
4047
3554
|
label: "Kling 2.5 Turbo Pro (KIE)",
|
|
4048
|
-
description: "Kuaishou Kling 2.5 Turbo Pro via KIE. A start frame and an optional end frame, 5 or 10 s, fixed size. The fal route accepted minted characters; this KIE route is not yet tested with a minted character.
|
|
4049
|
-
cost: { usd: 0.21 },
|
|
4050
|
-
listPrice: { source: "fal", model: "fal/kling-v2-5-image-to-video" },
|
|
3555
|
+
description: "Kuaishou Kling 2.5 Turbo Pro via KIE. A start frame and an optional end frame, 5 or 10 s, fixed size. The fal route accepted minted characters; this KIE route is not yet tested with a minted character.",
|
|
4051
3556
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4052
3557
|
},
|
|
4053
3558
|
{
|
|
@@ -4056,9 +3561,7 @@ var MODEL_CATALOG2 = [
|
|
|
4056
3561
|
modality: "video",
|
|
4057
3562
|
task: "image-to-video",
|
|
4058
3563
|
label: "Kling 2.6 (KIE)",
|
|
4059
|
-
description: "Kuaishou Kling 2.6 via KIE. A start frame, 5 or 10 s, fixed size, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
4060
|
-
cost: { usd: 0.275 },
|
|
4061
|
-
listPrice: { source: "fal", model: "fal/kling-2-6-image-to-video" },
|
|
3564
|
+
description: "Kuaishou Kling 2.6 via KIE. A start frame, 5 or 10 s, fixed size, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
4062
3565
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
4063
3566
|
},
|
|
4064
3567
|
{
|
|
@@ -4068,9 +3571,7 @@ var MODEL_CATALOG2 = [
|
|
|
4068
3571
|
task: "image-to-video",
|
|
4069
3572
|
label: "Seedance 2.0 (KIE)",
|
|
4070
3573
|
refusesPhotorealPeople: true,
|
|
4071
|
-
description: "ByteDance Seedance 2.0 via KIE. A start frame and an optional end frame, 4 to 15 s, 480p to 4K. Seedance 2.0 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.
|
|
4072
|
-
cost: { usd: 1.025 },
|
|
4073
|
-
listPrice: { source: "fal", model: "fal/seedance-2-0-image-to-video" },
|
|
3574
|
+
description: "ByteDance Seedance 2.0 via KIE. A start frame and an optional end frame, 4 to 15 s, 480p to 4K. Seedance 2.0 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.",
|
|
4074
3575
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4075
3576
|
},
|
|
4076
3577
|
{
|
|
@@ -4080,9 +3581,7 @@ var MODEL_CATALOG2 = [
|
|
|
4080
3581
|
task: "image-to-video",
|
|
4081
3582
|
label: "Seedance 2.5 (KIE)",
|
|
4082
3583
|
refusesPhotorealPeople: true,
|
|
4083
|
-
description: "ByteDance Seedance 2.5 via KIE. A start frame and an optional end frame, 4 to 30 s, 480p to 1080p. Seedance 2.5 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-08-21 and 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.
|
|
4084
|
-
cost: { usd: 1.575 },
|
|
4085
|
-
listPrice: { source: "fal", model: "fal/seedance-2-5-image-to-video" },
|
|
3584
|
+
description: "ByteDance Seedance 2.5 via KIE. A start frame and an optional end frame, 4 to 30 s, 480p to 1080p. Seedance 2.5 refuses photoreal people, generated ones included: on fal it refused them in every mode (observed 2026-08-21 and 2026-09-23). The refusal comes from the moderation of the model itself, so this route carries the same caution; the KIE route itself has not been run with a person.",
|
|
4086
3585
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4087
3586
|
},
|
|
4088
3587
|
{
|
|
@@ -4091,9 +3590,7 @@ var MODEL_CATALOG2 = [
|
|
|
4091
3590
|
modality: "video",
|
|
4092
3591
|
task: "image-to-video",
|
|
4093
3592
|
label: "Wan 3.0 (KIE)",
|
|
4094
|
-
description: "Alibaba Wan 3.0 via KIE (hosted only, no downloadable weights). A start frame and an optional end frame, 2 to 30 s, 480p, 720p or 1080p, audio included. Accepted a minted character's photoreal stills on 2026-09-24.
|
|
4095
|
-
cost: { usd: 0.4 },
|
|
4096
|
-
listPrice: { source: "fal", model: "fal/wan-3-0-image-to-video" },
|
|
3593
|
+
description: "Alibaba Wan 3.0 via KIE (hosted only, no downloadable weights). A start frame and an optional end frame, 2 to 30 s, 480p, 720p or 1080p, audio included. Accepted a minted character's photoreal stills on 2026-09-24.",
|
|
4097
3594
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4098
3595
|
},
|
|
4099
3596
|
{
|
|
@@ -4102,9 +3599,7 @@ var MODEL_CATALOG2 = [
|
|
|
4102
3599
|
modality: "video",
|
|
4103
3600
|
task: "image-to-video",
|
|
4104
3601
|
label: "MiniMax H3 (KIE)",
|
|
4105
|
-
description: "MiniMax H3 via KIE. A start frame and an optional end frame, 4 to 15 s, 768p (the 720p setting) or 2K (the 1080p setting). Accepted a minted character's photoreal stills on 2026-09-24. Its open weights exclude the EU by license; this is KIE's hosted service.
|
|
4106
|
-
cost: { usd: 0.24 },
|
|
4107
|
-
listPrice: { source: "unrecorded" },
|
|
3602
|
+
description: "MiniMax H3 via KIE. A start frame and an optional end frame, 4 to 15 s, 768p (the 720p setting) or 2K (the 1080p setting). Accepted a minted character's photoreal stills on 2026-09-24. Its open weights exclude the EU by license; this is KIE's hosted service.",
|
|
4108
3603
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4109
3604
|
},
|
|
4110
3605
|
{
|
|
@@ -4113,9 +3608,7 @@ var MODEL_CATALOG2 = [
|
|
|
4113
3608
|
modality: "video",
|
|
4114
3609
|
task: "image-to-video",
|
|
4115
3610
|
label: "Gemini Omni 1.1 Flash (KIE)",
|
|
4116
|
-
description: "Google Gemini Omni 1.1 Flash via KIE, first-and-last-frame mode. A start frame and an optional end frame, 4, 6, 8 or 10 s, 720p to 4K, 16:9 or 9:16. KIE refuses registered characters in this mode, so identity comes from the frames alone. Accepted a minted character's photoreal stills on 2026-09-24 (set 9:16 for a portrait still: it defaults to 16:9 and crops).
|
|
4117
|
-
cost: { usd: 0.525 },
|
|
4118
|
-
listPrice: { source: "unrecorded" },
|
|
3611
|
+
description: "Google Gemini Omni 1.1 Flash via KIE, first-and-last-frame mode. A start frame and an optional end frame, 4, 6, 8 or 10 s, 720p to 4K, 16:9 or 9:16. KIE refuses registered characters in this mode, so identity comes from the frames alone. Accepted a minted character's photoreal stills on 2026-09-24 (set 9:16 for a portrait still: it defaults to 16:9 and crops). No fal equivalent.",
|
|
4119
3612
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4120
3613
|
},
|
|
4121
3614
|
{
|
|
@@ -4124,9 +3617,7 @@ var MODEL_CATALOG2 = [
|
|
|
4124
3617
|
modality: "video",
|
|
4125
3618
|
task: "image-to-video",
|
|
4126
3619
|
label: "Kling O3 (KIE)",
|
|
4127
|
-
description: "Kuaishou Kling O3 (KIE calls it Kling 3.0 Omni) via KIE. A start frame and an optional end frame, 3 to 15 s, 720p to 4K in the start frame's shape, silent unless the job sets generateAudio. Accepted a minted character's photoreal stills on 2026-09-24.
|
|
4128
|
-
cost: { usd: 0.35 },
|
|
4129
|
-
listPrice: { source: "unrecorded" },
|
|
3620
|
+
description: "Kuaishou Kling O3 (KIE calls it Kling 3.0 Omni) via KIE. A start frame and an optional end frame, 3 to 15 s, 720p to 4K in the start frame's shape, silent unless the job sets generateAudio. Accepted a minted character's photoreal stills on 2026-09-24.",
|
|
4130
3621
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4131
3622
|
},
|
|
4132
3623
|
{
|
|
@@ -4135,9 +3626,7 @@ var MODEL_CATALOG2 = [
|
|
|
4135
3626
|
modality: "video",
|
|
4136
3627
|
task: "image-to-video",
|
|
4137
3628
|
label: "Grok Imagine 1.5 (image-to-video)",
|
|
4138
|
-
description: "xAI Grok Imagine 1.5 via fal, the fallback for the KIE entry. Animates a start frame with audio, 1 to 15 s, 480p to 1080p, in the start frame's shape. Not yet tested with a minted character (1.0 accepted them).
|
|
4139
|
-
// 8 s at the 720p default plus $0.01 for the input image.
|
|
4140
|
-
cost: { usd: 1.13 },
|
|
3629
|
+
description: "xAI Grok Imagine 1.5 via fal, the fallback for the KIE entry. Animates a start frame with audio, 1 to 15 s, 480p to 1080p, in the start frame's shape. Not yet tested with a minted character (1.0 accepted them). No end frame.",
|
|
4141
3630
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
4142
3631
|
},
|
|
4143
3632
|
{
|
|
@@ -4146,9 +3635,8 @@ var MODEL_CATALOG2 = [
|
|
|
4146
3635
|
modality: "video",
|
|
4147
3636
|
task: "image-to-video",
|
|
4148
3637
|
label: "Wan 3.0 (image-to-video)",
|
|
4149
|
-
description: "Alibaba Wan 3.0 via fal, the fallback for the KIE entry. A start frame and an optional end frame, 480p to 1080p (1080p unless set), audio included. Not yet tested with a minted character.
|
|
3638
|
+
description: "Alibaba Wan 3.0 via fal, the fallback for the KIE entry. A start frame and an optional end frame, 480p to 1080p (1080p unless set), audio included. Not yet tested with a minted character.",
|
|
4150
3639
|
// 5 s at fal's 1080p default.
|
|
4151
|
-
cost: { usd: 1 },
|
|
4152
3640
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4153
3641
|
},
|
|
4154
3642
|
{
|
|
@@ -4157,8 +3645,7 @@ var MODEL_CATALOG2 = [
|
|
|
4157
3645
|
modality: "video",
|
|
4158
3646
|
task: "image-to-video",
|
|
4159
3647
|
label: "Kling 2.6 Pro (image-to-video)",
|
|
4160
|
-
description: "Kuaishou Kling 2.6 Pro via fal, the fallback for the KIE entry. A start frame and an optional end frame, 5 or 10 s, fixed 1080p, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
4161
|
-
cost: { usd: 0.35 },
|
|
3648
|
+
description: "Kuaishou Kling 2.6 Pro via fal, the fallback for the KIE entry. A start frame and an optional end frame, 5 or 10 s, fixed 1080p, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
4162
3649
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4163
3650
|
},
|
|
4164
3651
|
{
|
|
@@ -4167,8 +3654,7 @@ var MODEL_CATALOG2 = [
|
|
|
4167
3654
|
modality: "video",
|
|
4168
3655
|
task: "image-to-video",
|
|
4169
3656
|
label: "Kling O3 Standard (image-to-video)",
|
|
4170
|
-
description: "Kuaishou Kling O3 Standard via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
4171
|
-
cost: { usd: 0.42 },
|
|
3657
|
+
description: "Kuaishou Kling O3 Standard via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
4172
3658
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4173
3659
|
},
|
|
4174
3660
|
{
|
|
@@ -4177,8 +3663,7 @@ var MODEL_CATALOG2 = [
|
|
|
4177
3663
|
modality: "video",
|
|
4178
3664
|
task: "image-to-video",
|
|
4179
3665
|
label: "Kling O3 Pro (image-to-video)",
|
|
4180
|
-
description: "Kuaishou Kling O3 Pro via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.
|
|
4181
|
-
cost: { usd: 0.56 },
|
|
3666
|
+
description: "Kuaishou Kling O3 Pro via fal, a fallback for the KIE entry. A start frame and an optional end frame, 3 to 15 s, in the start frame's shape at the tier's size, silent unless the job sets generateAudio. Not yet tested with a minted character.",
|
|
4182
3667
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4183
3668
|
},
|
|
4184
3669
|
{
|
|
@@ -4187,9 +3672,8 @@ var MODEL_CATALOG2 = [
|
|
|
4187
3672
|
modality: "video",
|
|
4188
3673
|
task: "image-to-video",
|
|
4189
3674
|
label: "LTX-2.5 Fast (image-to-video)",
|
|
4190
|
-
description: "Lightricks LTX-2.5 Fast (ltx.io calls it Lite) via fal; not served by KIE. A start frame and an optional end frame, 6 to 20 s in 2 s steps, 720p, 1080p or 4K, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.
|
|
3675
|
+
description: "Lightricks LTX-2.5 Fast (ltx.io calls it Lite) via fal; not served by KIE. A start frame and an optional end frame, 6 to 20 s in 2 s steps, 720p, 1080p or 4K, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.",
|
|
4191
3676
|
// 6 s at fal's 1080p default.
|
|
4192
|
-
cost: { usd: 0.78 },
|
|
4193
3677
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4194
3678
|
},
|
|
4195
3679
|
{
|
|
@@ -4198,34 +3682,18 @@ var MODEL_CATALOG2 = [
|
|
|
4198
3682
|
modality: "video",
|
|
4199
3683
|
task: "image-to-video",
|
|
4200
3684
|
label: "LTX-2.5 Pro (image-to-video)",
|
|
4201
|
-
description: "Lightricks LTX-2.5 Pro via fal; not served by KIE. A start frame and an optional end frame, 6, 8 or 10 s, 720p or 1080p, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.
|
|
3685
|
+
description: "Lightricks LTX-2.5 Pro via fal; not served by KIE. A start frame and an optional end frame, 6, 8 or 10 s, 720p or 1080p, aspect auto, 16:9 or 9:16, with native audio included. Accepted a minted character's photoreal stills on 2026-09-26.",
|
|
4202
3686
|
// 6 s at fal's 1080p default.
|
|
4203
|
-
cost: { usd: 1.02 },
|
|
4204
3687
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4205
3688
|
},
|
|
4206
3689
|
// ── FLUX.3 (Black Forest Labs) ───────────────────────────────────────────
|
|
4207
|
-
// One model, three tiers of the same three input shapes:
|
|
4208
|
-
// draft $0.06/s, fixed 720p, plus a draft_cache bundle (preview)
|
|
4209
|
-
// direct $0.17/s at 720p, $0.29/s at 1080p, one shot (finished)
|
|
4210
|
-
// enhance $0.29/s, fixed 1080p, from the cache only (finished)
|
|
4211
|
-
// Draft + enhance totals $0.35/s, a 21% premium over direct 1080p on a first-try
|
|
4212
|
-
// keeper and cheaper from the second attempt on, which is exactly the
|
|
4213
|
-
// generate-several-pick-one shape. Use direct when one confident render is
|
|
4214
|
-
// enough or 720p is the deliverable; use draft + enhance when a human picks.
|
|
4215
|
-
// The completion handler mirrors each draft's cache into Storage Brain, so an
|
|
4216
|
-
// approval gate between the two can take as long as it needs (measured: the
|
|
4217
|
-
// bundle is ~29 KB and fal enhances from a re-hosted copy, 2026-08-23).
|
|
4218
|
-
// Different model owner than Seedance, so ByteDance partner moderation does
|
|
4219
|
-
// not apply here. That changes which filter runs, and nothing about whether we
|
|
4220
|
-
// hold the depicted person's consent.
|
|
4221
3690
|
{
|
|
4222
3691
|
id: "fal/flux-3-image-to-video-draft",
|
|
4223
3692
|
provider: "fal",
|
|
4224
3693
|
modality: "video",
|
|
4225
3694
|
task: "image-to-video",
|
|
4226
3695
|
label: "FLUX.3 draft (image-to-video)",
|
|
4227
|
-
description: "Black Forest Labs FLUX.3 draft tier via fal. Single opening keyframe, duration auto or 5-20s, fixed 720p, audio ON by default (generate_audio).
|
|
4228
|
-
cost: { usd: 0.3 },
|
|
3696
|
+
description: "Black Forest Labs FLUX.3 draft tier via fal. Single opening keyframe, duration auto or 5-20s, fixed 720p, audio ON by default (generate_audio). Returns a draft_cache for a later full-quality enhance pass, which bills separately. Accepts no resolution, seed or negative prompt. PREVIEW QUALITY: do not ship a draft as a deliverable.",
|
|
4229
3697
|
capabilities: { needsImageInput: true, maxInputImages: 1, emitsDraftCache: true }
|
|
4230
3698
|
},
|
|
4231
3699
|
{
|
|
@@ -4234,8 +3702,7 @@ var MODEL_CATALOG2 = [
|
|
|
4234
3702
|
modality: "video",
|
|
4235
3703
|
task: "image-to-video",
|
|
4236
3704
|
label: "FLUX.3 draft (first + last frame)",
|
|
4237
|
-
description: "Black Forest Labs FLUX.3 draft tier via fal. Start AND end keyframe, duration 5-20s, fixed 720p, audio ON by default.
|
|
4238
|
-
cost: { usd: 0.3 },
|
|
3705
|
+
description: "Black Forest Labs FLUX.3 draft tier via fal. Start AND end keyframe, duration 5-20s, fixed 720p, audio ON by default. Note it names the start frame start_image_url, not image_url. Minimum 5s, so a 4s cut means rendering 5s and trimming. PREVIEW QUALITY: enhance before shipping.",
|
|
4239
3706
|
capabilities: { needsImageInput: true, maxInputImages: 2, emitsDraftCache: true, acceptsEndFrame: true }
|
|
4240
3707
|
},
|
|
4241
3708
|
{
|
|
@@ -4244,8 +3711,7 @@ var MODEL_CATALOG2 = [
|
|
|
4244
3711
|
modality: "video",
|
|
4245
3712
|
task: "image-to-video",
|
|
4246
3713
|
label: "FLUX.3 draft (keyframes)",
|
|
4247
|
-
description: "Black Forest Labs FLUX.3 draft tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, fixed 720p, audio ON by default.
|
|
4248
|
-
cost: { usd: 0.3 },
|
|
3714
|
+
description: "Black Forest Labs FLUX.3 draft tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, fixed 720p, audio ON by default. The only endpoint here that expresses motion through more than two keyframes, so it can describe a pass-by or a multi-beat action that a first/last pair structurally cannot. Falls back to deriving two keyframes from the standard start/end inputs. PREVIEW QUALITY: enhance before shipping.",
|
|
4249
3715
|
capabilities: { needsImageInput: true, maxInputImages: 10, emitsDraftCache: true, acceptsKeyframes: true }
|
|
4250
3716
|
},
|
|
4251
3717
|
{
|
|
@@ -4254,8 +3720,7 @@ var MODEL_CATALOG2 = [
|
|
|
4254
3720
|
modality: "video",
|
|
4255
3721
|
task: "image-to-video",
|
|
4256
3722
|
label: "FLUX.3 (image-to-video)",
|
|
4257
|
-
description: "Black Forest Labs FLUX.3 direct tier via fal. Single opening keyframe, duration auto or 5-20s, resolution 720p (default) or 1080p, audio ON by default.
|
|
4258
|
-
cost: { usd: 0.85 },
|
|
3723
|
+
description: "Black Forest Labs FLUX.3 direct tier via fal. Single opening keyframe, duration auto or 5-20s, resolution 720p (default) or 1080p, audio ON by default. One-shot finished render, returns the seed.",
|
|
4259
3724
|
capabilities: { needsImageInput: true, maxInputImages: 1 }
|
|
4260
3725
|
},
|
|
4261
3726
|
{
|
|
@@ -4264,8 +3729,7 @@ var MODEL_CATALOG2 = [
|
|
|
4264
3729
|
modality: "video",
|
|
4265
3730
|
task: "image-to-video",
|
|
4266
3731
|
label: "FLUX.3 (first + last frame)",
|
|
4267
|
-
description: "Black Forest Labs FLUX.3 direct tier via fal. Start AND end keyframe (start_image_url / end_image_url), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default.
|
|
4268
|
-
cost: { usd: 0.85 },
|
|
3732
|
+
description: "Black Forest Labs FLUX.3 direct tier via fal. Start AND end keyframe (start_image_url / end_image_url), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default. Minimum 5s, so a 4s cut means rendering 5s and trimming. Finished quality, returns the seed.",
|
|
4269
3733
|
capabilities: { needsImageInput: true, maxInputImages: 1, acceptsEndFrame: true }
|
|
4270
3734
|
},
|
|
4271
3735
|
{
|
|
@@ -4274,8 +3738,7 @@ var MODEL_CATALOG2 = [
|
|
|
4274
3738
|
modality: "video",
|
|
4275
3739
|
task: "image-to-video",
|
|
4276
3740
|
label: "FLUX.3 (keyframes)",
|
|
4277
|
-
description: "Black Forest Labs FLUX.3 direct tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default.
|
|
4278
|
-
cost: { usd: 0.85 },
|
|
3741
|
+
description: "Black Forest Labs FLUX.3 direct tier via fal. Up to 10 images pinned to positions on a 24 fps timeline (params.keyframes as [{ imageUrl, frameIndex }]), duration 5-20s, resolution 720p (default) or 1080p, audio ON by default. Multi-beat actions and pass-bys that a first/last pair cannot express. Finished quality, returns the seed.",
|
|
4279
3742
|
capabilities: { needsImageInput: true, maxInputImages: 10, acceptsKeyframes: true }
|
|
4280
3743
|
},
|
|
4281
3744
|
{
|
|
@@ -4284,8 +3747,7 @@ var MODEL_CATALOG2 = [
|
|
|
4284
3747
|
modality: "video",
|
|
4285
3748
|
task: "video-enhance",
|
|
4286
3749
|
label: "FLUX.3 enhance (draft to 1080p)",
|
|
4287
|
-
description: "Black Forest Labs FLUX.3 draft-enhance via fal. Input is ONLY the draft_cache of a FLUX.3 draft node (wire the draft node in; nothing else can be enhanced, only re-rendered). Renders the same take, same motion and composition, at a fixed 1080p with synchronized audio.
|
|
4288
|
-
cost: { usd: 1.45 },
|
|
3750
|
+
description: "Black Forest Labs FLUX.3 draft-enhance via fal. Input is ONLY the draft_cache of a FLUX.3 draft node (wire the draft node in; nothing else can be enhanced, only re-rendered). Renders the same take, same motion and composition, at a fixed 1080p with synchronized audio. No prompt, duration, aspect or audio knobs (all baked into the cache); safety_tolerance only. Output has no seed or cache.",
|
|
4289
3751
|
capabilities: { needsImageInput: false, maxInputImages: 0 },
|
|
4290
3752
|
isDefault: true
|
|
4291
3753
|
},
|
|
@@ -4295,54 +3757,32 @@ var MODEL_CATALOG2 = [
|
|
|
4295
3757
|
modality: "video",
|
|
4296
3758
|
task: "text-to-video",
|
|
4297
3759
|
label: "Seedance 1.0 Pro (text-to-video)",
|
|
4298
|
-
description: "ByteDance Seedance 1.0 Pro via fal. Text-to-video
|
|
4299
|
-
cost: { usd: 0.62 },
|
|
3760
|
+
description: "ByteDance Seedance 1.0 Pro via fal. Text-to-video. Default text-to-video.",
|
|
4300
3761
|
capabilities: { maxInputImages: 0 },
|
|
4301
3762
|
isDefault: true
|
|
4302
3763
|
},
|
|
4303
|
-
// Video-to-video: Wan 2.2 Animate Replace swaps the person in a source video
|
|
4304
|
-
// for the character in ONE reference image, keeping scene + motion. Priced
|
|
4305
|
-
// per video second by resolution (fal pricing, vetted 2026-08-20): 480p $0.04,
|
|
4306
|
-
// 580p $0.06, 720p $0.08. The catalog usd anchors a 5s clip at 720p, the same
|
|
4307
|
-
// way Kling anchors its base clip; the provider scales by duration + resolution.
|
|
4308
|
-
// Output is 50fps, 720p max. Only model for the task, so it is the default.
|
|
4309
3764
|
{
|
|
4310
3765
|
id: "fal/wan-animate-replace",
|
|
4311
3766
|
provider: "fal",
|
|
4312
3767
|
modality: "video",
|
|
4313
3768
|
task: "video-to-video",
|
|
4314
3769
|
label: "Wan 2.2 Animate Replace (video-to-video)",
|
|
4315
|
-
description: "Wan 2.2 14B Animate Replace via fal. Replaces the person in a source video with the character from one reference image, preserving motion and scene.
|
|
4316
|
-
cost: { usd: 0.4 },
|
|
3770
|
+
description: "Wan 2.2 14B Animate Replace via fal. Replaces the person in a source video with the character from one reference image, preserving motion and scene. Default video-to-video.",
|
|
4317
3771
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
4318
3772
|
isDefault: true
|
|
4319
3773
|
},
|
|
4320
|
-
// Kling O3 Pro Edit (fal, July 2026): also keeps the source clip's motion, but
|
|
4321
|
-
// takes the character as an ELEMENT of up to four images (a front view plus
|
|
4322
|
-
// back and profile views, which a person seen from behind needs) and renders
|
|
4323
|
-
// at the source resolution instead of Wan's 720p cap. $0.168 per output
|
|
4324
|
-
// second at any resolution; the catalog usd anchors 5s like the Wan entry.
|
|
4325
|
-
// Source clip 3 to 15 s, 720 to 3840 px, mp4 or mov (fal enforces).
|
|
4326
3774
|
{
|
|
4327
3775
|
id: "fal/kling-o3-edit",
|
|
4328
3776
|
provider: "fal",
|
|
4329
3777
|
modality: "video",
|
|
4330
3778
|
task: "video-to-video",
|
|
4331
3779
|
label: "Kling O3 Pro Edit (video-to-video)",
|
|
4332
|
-
description: "Kuaishou Kling O3 Pro Edit via fal. Replaces the person in a source video (3 to 15 s) with a character given as up to four images: the first wire is the front view, the rest are further views such as back and profile. Keeps motion, audio and the source resolution.
|
|
4333
|
-
cost: { usd: 0.84 },
|
|
3780
|
+
description: "Kuaishou Kling O3 Pro Edit via fal. Replaces the person in a source video (3 to 15 s) with a character given as up to four images: the first wire is the front view, the rest are further views such as back and profile. Keeps motion, audio and the source resolution.",
|
|
4334
3781
|
// `resolutions: []`: it renders at the source's size and refuses a
|
|
4335
3782
|
// resolution, so the settings panel offers none and validation refuses one.
|
|
4336
3783
|
capabilities: { needsImageInput: true, maxInputImages: 4, resolutions: [] }
|
|
4337
3784
|
},
|
|
4338
3785
|
// ── fal.ai: vision + utility (B4) ──────────────────────────────────────
|
|
4339
|
-
// All sync via fal's subscribe. Two return text/json (vision), two return a
|
|
4340
|
-
// new image (upscale / background-remove). fal bills these per compute second
|
|
4341
|
-
// and does NOT return a per-call cost, so the catalog usd is a UI hint only
|
|
4342
|
-
// (the provider leaves costUsd undefined, same as an unknown image endpoint).
|
|
4343
|
-
// Endpoint ids + schemas verified 2026-06-16 against the fal model /api pages.
|
|
4344
|
-
// Modality stays `image` (these consume / produce images); one isDefault per
|
|
4345
|
-
// (image, task) for the four new tasks.
|
|
4346
3786
|
{
|
|
4347
3787
|
id: "fal/florence-2-detailed-caption",
|
|
4348
3788
|
provider: "fal",
|
|
@@ -4350,7 +3790,6 @@ var MODEL_CATALOG2 = [
|
|
|
4350
3790
|
task: "image-to-text",
|
|
4351
3791
|
label: "Florence-2 Detailed Caption (fal)",
|
|
4352
3792
|
description: "Microsoft Florence-2 Large detailed caption via fal. Returns a rich text description of an image (caption -> job.output.text, no asset). Default image-to-text.",
|
|
4353
|
-
cost: { usd: 3e-3 },
|
|
4354
3793
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
4355
3794
|
isDefault: true
|
|
4356
3795
|
},
|
|
@@ -4364,7 +3803,6 @@ var MODEL_CATALOG2 = [
|
|
|
4364
3803
|
task: "video-to-text",
|
|
4365
3804
|
label: "Motion record (Studio)",
|
|
4366
3805
|
description: "Measures a clip's camera motion from its frames (phase correlation every 0.1 s: pan, tilt, dolly, steadiness, subject motion) and writes a deterministic description to job.output.text plus the full record to job.output.json. Runs in Studio, costs nothing. Default video-to-text.",
|
|
4367
|
-
cost: { usd: 0 },
|
|
4368
3806
|
isDefault: true
|
|
4369
3807
|
},
|
|
4370
3808
|
{
|
|
@@ -4374,17 +3812,9 @@ var MODEL_CATALOG2 = [
|
|
|
4374
3812
|
task: "image-to-json",
|
|
4375
3813
|
label: "MoonDreamNext VQA (fal)",
|
|
4376
3814
|
description: "MoonDreamNext visual question answering via fal. Answers a prompt about an image; the provider parses the answer into structured JSON (-> job.output.json, no asset). Default image-to-json.",
|
|
4377
|
-
cost: { usd: 3e-3 },
|
|
4378
3815
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
4379
3816
|
isDefault: true
|
|
4380
3817
|
},
|
|
4381
|
-
// Judge (P3 J1). The same MoonDreamNext VQA endpoint `fal/moondream-next-vqa`
|
|
4382
|
-
// above already runs shotReview.ts's ranking call, under a separate catalog
|
|
4383
|
-
// id because a catalog entry's `task` is fixed and `listByTask('judge')`
|
|
4384
|
-
// needs at least one entry to give a placed judge node a selectable default
|
|
4385
|
-
// model. Not dispatched yet: `judge` runs as a human gate (`taskExecution`
|
|
4386
|
-
// in task-kind.ts) and makes no model call at all until J5 wires the actual
|
|
4387
|
-
// ranking back onto shotReview.ts rather than a second implementation.
|
|
4388
3818
|
{
|
|
4389
3819
|
id: "fal/moondream-next-vqa-judge",
|
|
4390
3820
|
provider: "fal",
|
|
@@ -4392,22 +3822,16 @@ var MODEL_CATALOG2 = [
|
|
|
4392
3822
|
task: "judge",
|
|
4393
3823
|
label: "MoonDreamNext VQA (judge ranking)",
|
|
4394
3824
|
description: "The judge node's ranking call: the same MoonDreamNext VQA endpoint shotReview.ts already uses to score a candidate image. A judge node runs as a human GATE (it parks the run on a decision, see taskExecution), so it has no job kind; this model is what P3 J5 will rank candidates with. Default judge.",
|
|
4395
|
-
cost: { usd: 3e-3 },
|
|
4396
3825
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
4397
3826
|
isDefault: true
|
|
4398
3827
|
},
|
|
4399
|
-
// Rig and animate (2026-09-26): Meshy on fal. One entry for both of fal's
|
|
4400
|
-
// Meshy endpoints: a rig with no presets calls `fal-ai/meshy/rigging`, one
|
|
4401
|
-
// with presets calls `fal-ai/meshy/rigging/multi-animation`, and the price
|
|
4402
|
-
// rule is the same for both (models/pricing.ts `meshyRigCostUsd`).
|
|
4403
3828
|
{
|
|
4404
3829
|
id: "fal/meshy-rigging",
|
|
4405
3830
|
provider: "fal",
|
|
4406
3831
|
modality: "3d",
|
|
4407
3832
|
task: "rig",
|
|
4408
3833
|
label: "Meshy rig and animate (fal)",
|
|
4409
|
-
description: "Adds a skeleton and skin weights to a humanoid mesh and applies up to 10 animation presets from Meshy's 678-preset library; walk and run clips are always included.
|
|
4410
|
-
cost: { usd: FAL_MESHY_RIG_USD2 },
|
|
3834
|
+
description: "Adds a skeleton and skin weights to a humanoid mesh and applies up to 10 animation presets from Meshy's 678-preset library; walk and run clips are always included. Humanoid characters only.",
|
|
4411
3835
|
isDefault: true
|
|
4412
3836
|
},
|
|
4413
3837
|
{
|
|
@@ -4416,8 +3840,7 @@ var MODEL_CATALOG2 = [
|
|
|
4416
3840
|
modality: "image",
|
|
4417
3841
|
task: "upscale",
|
|
4418
3842
|
label: "AuraSR Upscale (fal)",
|
|
4419
|
-
description: "AuraSR GigaGAN upscaler via fal. Produces a higher-resolution Image asset from a source image (default 4x). Default upscale.
|
|
4420
|
-
cost: { usd: 0.01 },
|
|
3843
|
+
description: "AuraSR GigaGAN upscaler via fal. Produces a higher-resolution Image asset from a source image (default 4x). Default upscale.",
|
|
4421
3844
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
4422
3845
|
isDefault: true
|
|
4423
3846
|
},
|
|
@@ -4427,35 +3850,21 @@ var MODEL_CATALOG2 = [
|
|
|
4427
3850
|
modality: "image",
|
|
4428
3851
|
task: "background-remove",
|
|
4429
3852
|
label: "BiRefNet v2 Background Removal (fal)",
|
|
4430
|
-
description: "BiRefNet v2 background removal via fal. Produces a transparent-background PNG Image asset from a source image. Default background-remove.
|
|
4431
|
-
cost: { usd: 0.01 },
|
|
3853
|
+
description: "BiRefNet v2 background removal via fal. Produces a transparent-background PNG Image asset from a source image. Default background-remove.",
|
|
4432
3854
|
capabilities: { needsImageInput: true, maxInputImages: 1 },
|
|
4433
3855
|
isDefault: true
|
|
4434
3856
|
},
|
|
4435
3857
|
// ── audio: music via Suno-through-KIE (B2) ─────────────────────────────
|
|
4436
|
-
// Async via KIE's Suno job API (createTask -> webhook / record-info poll).
|
|
4437
|
-
// KIE does not return a per-song USD on the result, so the catalog usd is a
|
|
4438
|
-
// flat per-song estimate (~$0.03-$0.04 per song per audio-providers.md, KIE's
|
|
4439
|
-
// markup keeps it in that band). V5 is Suno's current top model.
|
|
4440
3858
|
{
|
|
4441
3859
|
id: "kie/suno-v5",
|
|
4442
3860
|
provider: "kie",
|
|
4443
3861
|
modality: "audio",
|
|
4444
3862
|
task: "text-to-audio",
|
|
4445
3863
|
label: "Suno V5 (KIE)",
|
|
4446
|
-
description: "Suno V5 music generation via KIE. Text-to-music with or without lyrics; ~4 min cap per generation. Default text-to-audio. No IP indemnity (KIE aggregator).
|
|
4447
|
-
cost: { usd: 0.04 },
|
|
4448
|
-
listPrice: { source: "unrecorded" },
|
|
3864
|
+
description: "Suno V5 music generation via KIE. Text-to-music with or without lyrics; ~4 min cap per generation. Default text-to-audio. No IP indemnity (KIE aggregator).",
|
|
4449
3865
|
isDefault: true
|
|
4450
3866
|
},
|
|
4451
3867
|
// ── audio: voice via ElevenLabs (B2) ───────────────────────────────────
|
|
4452
|
-
// Sync against the official ElevenLabs API (xi-api-key). TTS returns audio
|
|
4453
|
-
// bytes inline; STT returns a transcript (text, not a binary asset). Prices
|
|
4454
|
-
// per ElevenLabs API price page (checked 2026-09-27): text-to-speech
|
|
4455
|
-
// Multilingual v2 is $0.10 per 1,000 characters (not about $0.0003 per
|
|
4456
|
-
// character). Scribe v1 is no longer on the price page; Scribe v2 is $0.22
|
|
4457
|
-
// per audio hour. The catalog usd is a per-call hint, the provider does not
|
|
4458
|
-
// bill per call so cost stays approximate.
|
|
4459
3868
|
{
|
|
4460
3869
|
id: "elevenlabs/tts-multilingual-v2",
|
|
4461
3870
|
provider: "elevenlabs",
|
|
@@ -4463,7 +3872,6 @@ var MODEL_CATALOG2 = [
|
|
|
4463
3872
|
task: "text-to-speech",
|
|
4464
3873
|
label: "ElevenLabs Multilingual v2 (TTS)",
|
|
4465
3874
|
description: "ElevenLabs Multilingual v2 text-to-speech. 99+ languages, brand-voice cloning capable. Default text-to-speech. Returns mp3 bytes synchronously.",
|
|
4466
|
-
cost: { usd: 0.03 },
|
|
4467
3875
|
isDefault: true
|
|
4468
3876
|
},
|
|
4469
3877
|
{
|
|
@@ -4473,28 +3881,16 @@ var MODEL_CATALOG2 = [
|
|
|
4473
3881
|
task: "speech-to-text",
|
|
4474
3882
|
label: "ElevenLabs Scribe v1 (STT)",
|
|
4475
3883
|
description: "ElevenLabs Scribe v1 speech-to-text. Whisper-class transcription; returns a transcript (text), not a binary asset. Default speech-to-text.",
|
|
4476
|
-
cost: { usd: 0.01 },
|
|
4477
3884
|
isDefault: true
|
|
4478
3885
|
},
|
|
4479
3886
|
// ── text: LLM director (B3) ────────────────────────────────────────────
|
|
4480
|
-
// The director's brain, NOT an asset-generation path: prompt improvement and
|
|
4481
|
-
// shot descriptions via a synchronous TextClient (no Jobs, no Assets). KIE
|
|
4482
|
-
// exposes Claude (Sonnet / Opus) at a lower rate than the official API via an
|
|
4483
|
-
// Anthropic-Messages-compatible endpoint (api.kie.ai/claude/v1/messages,
|
|
4484
|
-
// vetted 2026-06-16); OpenRouter routes the same Claude family through its
|
|
4485
|
-
// OpenAI chat/completions surface and returns the authoritative usage.cost.
|
|
4486
|
-
// KIE / OpenRouter report real cost per call, so the catalog usd is a UI hint.
|
|
4487
|
-
// Exactly one isDefault for (text, text-generation): KIE Sonnet (cheapest
|
|
4488
|
-
// reliable director path with no IP-indemnity concern for internal use).
|
|
4489
3887
|
{
|
|
4490
3888
|
id: "kie/claude-sonnet-4-5",
|
|
4491
3889
|
provider: "kie",
|
|
4492
3890
|
modality: "text",
|
|
4493
3891
|
task: "text-generation",
|
|
4494
3892
|
label: "Claude Sonnet 4.5 (KIE)",
|
|
4495
|
-
description: "Anthropic Claude Sonnet 4.5 via KIE
|
|
4496
|
-
cost: { usd: 0.01 },
|
|
4497
|
-
listPrice: { source: "unrecorded" },
|
|
3893
|
+
description: "Anthropic Claude Sonnet 4.5 via KIE. Default LLM director: prompt improvement + shot descriptions.",
|
|
4498
3894
|
isDefault: true
|
|
4499
3895
|
},
|
|
4500
3896
|
{
|
|
@@ -4503,9 +3899,7 @@ var MODEL_CATALOG2 = [
|
|
|
4503
3899
|
modality: "text",
|
|
4504
3900
|
task: "text-generation",
|
|
4505
3901
|
label: "Claude Opus 4.5 (KIE)",
|
|
4506
|
-
description: "Anthropic Claude Opus 4.5 via KIE. Higher quality
|
|
4507
|
-
cost: { usd: 0.05 },
|
|
4508
|
-
listPrice: { source: "unrecorded" }
|
|
3902
|
+
description: "Anthropic Claude Opus 4.5 via KIE. Higher quality; use for harder director reasoning."
|
|
4509
3903
|
},
|
|
4510
3904
|
{
|
|
4511
3905
|
id: "openrouter/claude-sonnet-4-6",
|
|
@@ -4513,25 +3907,15 @@ var MODEL_CATALOG2 = [
|
|
|
4513
3907
|
modality: "text",
|
|
4514
3908
|
task: "text-generation",
|
|
4515
3909
|
label: "Claude Sonnet 4.6 (OpenRouter)",
|
|
4516
|
-
description: "Anthropic Claude Sonnet 4.6 via OpenRouter (OpenAI chat/completions shape). Alternative director path; returns authoritative usage.cost per request."
|
|
4517
|
-
|
|
4518
|
-
},
|
|
4519
|
-
// The prompt-improve models (2026-09-27). Marlin asked for a more capable
|
|
4520
|
-
// model than the default director for the Improve button. On his real
|
|
4521
|
-
// image-edit prompt ("make her look a bit like a red panda, cartoonish, like
|
|
4522
|
-
// from Disney") GPT-6 Astra was the only one of five that kept the "a bit":
|
|
4523
|
-
// a light transformation that keeps her recognizable, at about $0.011 per
|
|
4524
|
-
// rewrite in 6 s. Claude Opus 5.5 wrote the richest detail ($0.012, 9.5 s)
|
|
4525
|
-
// and is Astra's fallback from a different vendor. Costs are that measured
|
|
4526
|
-
// call; OpenRouter bills the real usage.cost.
|
|
3910
|
+
description: "Anthropic Claude Sonnet 4.6 via OpenRouter (OpenAI chat/completions shape). Alternative director path; returns authoritative usage.cost per request."
|
|
3911
|
+
},
|
|
4527
3912
|
{
|
|
4528
3913
|
id: "openrouter/gpt-6-astra",
|
|
4529
3914
|
provider: "openrouter",
|
|
4530
3915
|
modality: "text",
|
|
4531
3916
|
task: "text-generation",
|
|
4532
3917
|
label: "GPT-6 Astra (OpenRouter)",
|
|
4533
|
-
description: "OpenAI GPT-6 Astra, the flagship of the GPT-6 series, via OpenRouter. Writes the Improve rewrites: the most faithful to the intent of a rough prompt in a five-model comparison on 2026-09-27.
|
|
4534
|
-
cost: { usd: 0.011 }
|
|
3918
|
+
description: "OpenAI GPT-6 Astra, the flagship of the GPT-6 series, via OpenRouter. Writes the Improve rewrites: the most faithful to the intent of a rough prompt in a five-model comparison on 2026-09-27."
|
|
4535
3919
|
},
|
|
4536
3920
|
{
|
|
4537
3921
|
id: "openrouter/claude-opus-5-5",
|
|
@@ -4539,8 +3923,7 @@ var MODEL_CATALOG2 = [
|
|
|
4539
3923
|
modality: "text",
|
|
4540
3924
|
task: "text-generation",
|
|
4541
3925
|
label: "Claude Opus 5.5 (OpenRouter)",
|
|
4542
|
-
description: "Anthropic Claude Opus 5.5 via OpenRouter. The fallback for GPT-6 Astra on Improve, from a different vendor so one outage cannot break it.
|
|
4543
|
-
cost: { usd: 0.012 }
|
|
3926
|
+
description: "Anthropic Claude Opus 5.5 via OpenRouter. The fallback for GPT-6 Astra on Improve, from a different vendor so one outage cannot break it."
|
|
4544
3927
|
},
|
|
4545
3928
|
// ── Vertex AI: fallback path, kept unwired for v0.1 ────────────────────
|
|
4546
3929
|
// Provider code is still in place so a future flip back is one isDefault
|
|
@@ -4570,20 +3953,30 @@ var MODEL_CATALOG2 = [
|
|
|
4570
3953
|
description: "Vertex AI direct, newest flash variant. Global region. Preview status."
|
|
4571
3954
|
}
|
|
4572
3955
|
];
|
|
3956
|
+
var PINNED_FAL_NOTE2 = "Pinned to fal: a job on this entry never goes to KIE.";
|
|
3957
|
+
var PINNED_KIE_NOTE2 = "Pinned to KIE: no fal fallback. Pick the automatic entry of this model to get one.";
|
|
3958
|
+
function withRouteNote2(entry) {
|
|
3959
|
+
const role = routeRoleOf2(entry.id);
|
|
3960
|
+
if (!role) return entry;
|
|
3961
|
+
const note = role.role === "fallback" ? PINNED_FAL_NOTE2 : PINNED_KIE_NOTE2;
|
|
3962
|
+
return { ...entry, description: `${entry.description ?? ""} ${note}`.trim() };
|
|
3963
|
+
}
|
|
3964
|
+
var MODEL_CATALOG2 = CATALOG_ENTRIES2.map(withRouteNote2);
|
|
4573
3965
|
var routeEntries2 = /* @__PURE__ */ new Map();
|
|
4574
3966
|
function routeEntry2(id) {
|
|
4575
3967
|
const cached = routeEntries2.get(id);
|
|
4576
3968
|
if (cached) return cached;
|
|
4577
3969
|
const route = getRoute2(id);
|
|
4578
|
-
const primary = route ?
|
|
3970
|
+
const primary = route ? CATALOG_ENTRIES2.find((m) => m.id === route.primary) : void 0;
|
|
4579
3971
|
if (!route || !primary) return void 0;
|
|
4580
3972
|
const entry = {
|
|
4581
3973
|
...primary,
|
|
4582
|
-
//
|
|
3974
|
+
// Whether a route is the default of its task is `getDefaultModelId`'s
|
|
3975
|
+
// answer, never a flag copied from its KIE side.
|
|
4583
3976
|
isDefault: void 0,
|
|
4584
3977
|
id: route.id,
|
|
4585
3978
|
label: route.label,
|
|
4586
|
-
description: `Runs on KIE first and, when KIE fails on its side, again on fal with the same settings. ${primary.description ?? ""}`.trim()
|
|
3979
|
+
description: `Runs on KIE first and, when KIE fails on its side, again on fal with the same settings. ` + `To keep a job off KIE, pin the fal entry of this model. ${primary.description ?? ""}`.trim()
|
|
4587
3980
|
};
|
|
4588
3981
|
routeEntries2.set(id, entry);
|
|
4589
3982
|
return entry;
|
|
@@ -4591,6 +3984,23 @@ function routeEntry2(id) {
|
|
|
4591
3984
|
function tryGetModel2(id) {
|
|
4592
3985
|
return MODEL_CATALOG2.find((m) => m.id === id) ?? routeEntry2(id);
|
|
4593
3986
|
}
|
|
3987
|
+
function imageResolutionTier(value) {
|
|
3988
|
+
if (typeof value !== "string") return null;
|
|
3989
|
+
switch (value.trim().toLowerCase()) {
|
|
3990
|
+
case "0.5k":
|
|
3991
|
+
case "512px":
|
|
3992
|
+
case "512":
|
|
3993
|
+
return "0.5K";
|
|
3994
|
+
case "1k":
|
|
3995
|
+
return "1K";
|
|
3996
|
+
case "2k":
|
|
3997
|
+
return "2K";
|
|
3998
|
+
case "4k":
|
|
3999
|
+
return "4K";
|
|
4000
|
+
default:
|
|
4001
|
+
return null;
|
|
4002
|
+
}
|
|
4003
|
+
}
|
|
4594
4004
|
function supportedResolutions(model) {
|
|
4595
4005
|
const declared = model?.capabilities?.resolutions;
|
|
4596
4006
|
return declared ? declared : null;
|
|
@@ -5288,6 +4698,29 @@ function paramTypeForInput(type) {
|
|
|
5288
4698
|
function isUsableSourceUrl(url) {
|
|
5289
4699
|
return url.length > 0 && !url.startsWith("data:");
|
|
5290
4700
|
}
|
|
4701
|
+
function refNodesOf(binding) {
|
|
4702
|
+
if (binding.kind === "ref") return [binding.node];
|
|
4703
|
+
if (binding.kind === "list")
|
|
4704
|
+
return binding.items.flatMap((item) => item.kind === "ref" ? [item.node] : []);
|
|
4705
|
+
return [];
|
|
4706
|
+
}
|
|
4707
|
+
function upstreamClosure(doc, only) {
|
|
4708
|
+
const deps = /* @__PURE__ */ new Map();
|
|
4709
|
+
for (const e of doc.edges) {
|
|
4710
|
+
const list = deps.get(e.target);
|
|
4711
|
+
if (list) list.push(e.source);
|
|
4712
|
+
else deps.set(e.target, [e.source]);
|
|
4713
|
+
}
|
|
4714
|
+
const closure = /* @__PURE__ */ new Set();
|
|
4715
|
+
const queue = [...only];
|
|
4716
|
+
while (queue.length > 0) {
|
|
4717
|
+
const id = queue.pop();
|
|
4718
|
+
if (closure.has(id)) continue;
|
|
4719
|
+
closure.add(id);
|
|
4720
|
+
for (const source of deps.get(id) ?? []) queue.push(source);
|
|
4721
|
+
}
|
|
4722
|
+
return closure;
|
|
4723
|
+
}
|
|
5291
4724
|
function documentToDefinition(doc, opts = {}) {
|
|
5292
4725
|
const integrity = validateDocument(doc);
|
|
5293
4726
|
if (!integrity.ok)
|
|
@@ -5295,8 +4728,9 @@ function documentToDefinition(doc, opts = {}) {
|
|
|
5295
4728
|
ok: false,
|
|
5296
4729
|
issues: [{ code: "integrity", message: integrity.message }]
|
|
5297
4730
|
};
|
|
5298
|
-
|
|
4731
|
+
let issues = [];
|
|
5299
4732
|
const byId = new Map(doc.nodes.map((n) => [n.id, n]));
|
|
4733
|
+
const scope = opts.only && opts.only.length > 0 ? upstreamClosure(doc, opts.only) : null;
|
|
5300
4734
|
const incoming = /* @__PURE__ */ new Map();
|
|
5301
4735
|
for (const e of doc.edges) {
|
|
5302
4736
|
const list = incoming.get(e.target);
|
|
@@ -5313,7 +4747,7 @@ function documentToDefinition(doc, opts = {}) {
|
|
|
5313
4747
|
...n.cardinality === "many" ? { cardinality: "many" } : {},
|
|
5314
4748
|
...n.default !== void 0 ? { default: n.default } : {}
|
|
5315
4749
|
}));
|
|
5316
|
-
|
|
4750
|
+
let nodes = [];
|
|
5317
4751
|
for (const node of doc.nodes) {
|
|
5318
4752
|
if (node.kind !== "task") continue;
|
|
5319
4753
|
const { task } = node;
|
|
@@ -5449,6 +4883,32 @@ function documentToDefinition(doc, opts = {}) {
|
|
|
5449
4883
|
Object.assign(inputs, settingsBindings(task, node.settings));
|
|
5450
4884
|
nodes.push({ id: node.id, task, model: node.model, inputs });
|
|
5451
4885
|
}
|
|
4886
|
+
if (scope) {
|
|
4887
|
+
const projected = new Set(nodes.map((n) => n.id));
|
|
4888
|
+
const left = /* @__PURE__ */ new Set();
|
|
4889
|
+
for (const issue of issues)
|
|
4890
|
+
if (issue.nodeId !== void 0 && !scope.has(issue.nodeId))
|
|
4891
|
+
left.add(issue.nodeId);
|
|
4892
|
+
for (const n of doc.nodes)
|
|
4893
|
+
if (n.kind === "task" && !scope.has(n.id) && !projected.has(n.id))
|
|
4894
|
+
left.add(n.id);
|
|
4895
|
+
let grew = left.size > 0;
|
|
4896
|
+
while (grew) {
|
|
4897
|
+
grew = false;
|
|
4898
|
+
for (const n of nodes) {
|
|
4899
|
+
if (left.has(n.id) || scope.has(n.id)) continue;
|
|
4900
|
+
const reads = Object.values(n.inputs).flatMap(refNodesOf);
|
|
4901
|
+
if (reads.some((id) => left.has(id))) {
|
|
4902
|
+
left.add(n.id);
|
|
4903
|
+
grew = true;
|
|
4904
|
+
}
|
|
4905
|
+
}
|
|
4906
|
+
}
|
|
4907
|
+
issues = issues.filter(
|
|
4908
|
+
(issue) => issue.nodeId === void 0 || scope.has(issue.nodeId)
|
|
4909
|
+
);
|
|
4910
|
+
nodes = nodes.filter((n) => !left.has(n.id));
|
|
4911
|
+
}
|
|
5452
4912
|
if (nodes.length === 0 && issues.length === 0) {
|
|
5453
4913
|
issues.push({
|
|
5454
4914
|
code: "no_task_nodes",
|
|
@@ -5972,7 +5432,7 @@ var studioWorkflowDescribe = defineTool({
|
|
|
5972
5432
|
inputSchema: {
|
|
5973
5433
|
tasks: z7.array(z7.string().min(1)).min(1).optional().describe('Only these task ids (e.g. ["text-to-image", "image-to-video"]). An unknown id is an error that lists the known ones.'),
|
|
5974
5434
|
includeSettings: z7.boolean().default(false).describe("Include each task's settings knobs (key, type, range, default)."),
|
|
5975
|
-
includeModels: z7.boolean().default(false).describe("Include the model catalog per task (id, label, provider,
|
|
5435
|
+
includeModels: z7.boolean().default(false).describe("Include the model catalog per task (id, label, provider, price, isDefault). price is what one generation costs your company at the default settings: { usd, fromUsd? }.")
|
|
5976
5436
|
},
|
|
5977
5437
|
annotations: { readOnlyHint: true },
|
|
5978
5438
|
handler: async (args, ctx) => {
|
|
@@ -6249,7 +5709,7 @@ var studioListProjects = defineTool({
|
|
|
6249
5709
|
});
|
|
6250
5710
|
var studioGenerateImage = defineTool({
|
|
6251
5711
|
name: "studio_generate_image",
|
|
6252
|
-
description:
|
|
5712
|
+
description: "Generate an image from a prompt. A brand is optional: pass brandSlug to have the Studio apply that brand's style prefix and reference images server-side, or leave it out for an image without a brand. Optionally pin a character (characterSlug) so its identity references are injected too. A brandSlug or characterSlug that names nothing your company can use is refused before anything is spent (404, code input_not_found), and the error text says what to do next: act on it or relay it as written. The image is filed in projectId when given, otherwise in the project named after the brand (created on first use), otherwise in the project \"default\". Submits a job and, when wait=true (default), polls until it finishes and returns the signed image URL and costUsd (what the job cost your company: for a company on prepaid credits, what left its balance). With wait=false it returns the jobId immediately for studio_get_job. candidateCount asks for up to four candidates, but some models render one image regardless of the count: the result carries `candidates: { requested, rendered, mayRender? }`, and a `notice` to pass on to the user whenever fewer images will be made than were asked for. A typical image costs about $0.06 on prepaid credits without a subscription; the job's costUsd is the exact amount.",
|
|
6253
5713
|
inputSchema: {
|
|
6254
5714
|
brandSlug: slug.optional().describe(
|
|
6255
5715
|
"Optional. The slug of a brand of your company (create one with studio_create_brand). Omit it to generate without a brand. A slug that names no brand of your company is refused with 404 input_not_found; it is never used as a project name."
|
|
@@ -6303,7 +5763,7 @@ var studioGenerateImage = defineTool({
|
|
|
6303
5763
|
var GENERATE_3D_TASKS = /* @__PURE__ */ new Set(["text-to-3d", "image-to-3d"]);
|
|
6304
5764
|
var studioGenerate3d = defineTool({
|
|
6305
5765
|
name: "studio_generate_3d",
|
|
6306
|
-
description: "Generate one 3D model (a textured GLB mesh) through 3D AI Studio, from a text prompt or from one image (imageUrl). Text models: studio3d/tripo-3-1-text-to-3d (the default), studio3d/hunyuan-3-1-rapid, studio3d/hunyuan-3-1-pro. Image models: studio3d/trellis-2 (the default when imageUrl is given), studio3d/tripo-3-1-image-to-3d. Submits a job and, when wait=true (default), polls until it finishes (usually one to five minutes) and returns the signed GLB URL and its cost in USD (Studio prices the request it sent, since 3D AI Studio reports no per-job charge). With wait=false it returns the jobId for studio_get_job.
|
|
5766
|
+
description: "Generate one 3D model (a textured GLB mesh) through 3D AI Studio, from a text prompt or from one image (imageUrl). Text models: studio3d/tripo-3-1-text-to-3d (the default), studio3d/hunyuan-3-1-rapid, studio3d/hunyuan-3-1-pro. Image models: studio3d/trellis-2 (the default when imageUrl is given), studio3d/tripo-3-1-image-to-3d. Submits a job and, when wait=true (default), polls until it finishes (usually one to five minutes) and returns the signed GLB URL and its cost in USD (Studio prices the request it sent, since 3D AI Studio reports no per-job charge). With wait=false it returns the jobId for studio_get_job. The price follows the model and the quality flags; the returned costUsd is the exact amount.",
|
|
6307
5767
|
inputSchema: {
|
|
6308
5768
|
prompt: z8.string().min(1).max(1024).describe("What to model. With imageUrl, a short description of the object in the image."),
|
|
6309
5769
|
imageUrl: httpUrl.optional().describe("Public http(s) URL of one image to model from. Selects an image model."),
|
|
@@ -6367,7 +5827,7 @@ var studioFindAnimations = defineTool({
|
|
|
6367
5827
|
});
|
|
6368
5828
|
var studioRig3d = defineTool({
|
|
6369
5829
|
name: "studio_rig_3d",
|
|
6370
|
-
description: "Rig a humanoid 3D model and animate it (Meshy on fal): adds a skeleton and skin weights to a Model3D asset and applies up to 10 animation presets from Meshy's library; walk and run clips always come with the rig. Pass the mesh's assetId (studio_generate_3d returns it as assetId) and presets as names or ids (find them with studio_find_animations). Runs as a one-node workflow, so the cost gate and quota apply. Waits by default (usually one to three minutes) and returns the rigged GLB url, each clip's name and url, and costUsd:
|
|
5830
|
+
description: "Rig a humanoid 3D model and animate it (Meshy on fal): adds a skeleton and skin weights to a Model3D asset and applies up to 10 animation presets from Meshy's library; walk and run clips always come with the rig. Pass the mesh's assetId (studio_generate_3d returns it as assetId) and presets as names or ids (find them with studio_find_animations). Runs as a one-node workflow, so the cost gate and quota apply. Waits by default (usually one to three minutes) and returns the rigged GLB url, each clip's name and url, and costUsd (what it cost your company: a price per rig plus a price per preset). Humanoid characters only: an animal or an object will fail at the provider.",
|
|
6371
5831
|
inputSchema: {
|
|
6372
5832
|
projectId: z8.string().min(1).describe("The project the mesh lives in (from studio_list_projects)."),
|
|
6373
5833
|
meshAssetId: z8.string().min(1).describe("The Model3D asset to rig: the assetId studio_generate_3d returned."),
|
|
@@ -6703,7 +6163,7 @@ var studioGetRunOutput = defineTool({
|
|
|
6703
6163
|
});
|
|
6704
6164
|
var studioReplaceCharacterInVideo = defineTool({
|
|
6705
6165
|
name: "studio_replace_character_in_video",
|
|
6706
|
-
description: 'Put a minted character into a video shot through the still-swap route: (1) an image-edit node (fal/nano-banana-2-edit) replaces the person in a scene FRAME with the character; (2) an image-to-video node animates that still (default fal/seedance-pro-image-to-video; with endFrameUrl it switches to fal/kling-v2-5-image-to-video and binds the end keyframe so the clip lands on it). Be honest with the user about what this route is: the video step REGENERATES the motion from the stills, so the original performance, timing and background are recreated rather than preserved; when the original motion must survive exactly, say so before spending. Declare scope: identity (default) takes face, head and hair and keeps the footage body; full_body also takes the character body proportions, which changes the silhouette. Pass preserve with the two or three shot-specific constraints most likely to fail, from looking at the frame (e.g. "keep the open door in front of his body", "match the face soft focus"), or a complete swapPrompt of your own. Never add a realism suffix like "photorealistic" or a promise that every pixel stays identical; the model cannot keep either and the suffix sharpens deliberately soft subjects. Give the character as characterSlug (its full-body reference is used, falling back to three-quarter then face) or as an explicit characterReferenceUrl. Requires a frame URL: extract a representative frame from the video yourself first (this tool does not decode video). Waits for both nodes and returns stillUrl, videoUrl, runId and costUsd (about $
|
|
6166
|
+
description: 'Put a minted character into a video shot through the still-swap route: (1) an image-edit node (fal/nano-banana-2-edit) replaces the person in a scene FRAME with the character; (2) an image-to-video node animates that still (default fal/seedance-pro-image-to-video; with endFrameUrl it switches to fal/kling-v2-5-image-to-video and binds the end keyframe so the clip lands on it). Be honest with the user about what this route is: the video step REGENERATES the motion from the stills, so the original performance, timing and background are recreated rather than preserved; when the original motion must survive exactly, say so before spending. Declare scope: identity (default) takes face, head and hair and keeps the footage body; full_body also takes the character body proportions, which changes the silhouette. Pass preserve with the two or three shot-specific constraints most likely to fail, from looking at the frame (e.g. "keep the open door in front of his body", "match the face soft focus"), or a complete swapPrompt of your own. Never add a realism suffix like "photorealistic" or a promise that every pixel stays identical; the model cannot keep either and the suffix sharpens deliberately soft subjects. Give the character as characterSlug (its full-body reference is used, falling back to three-quarter then face) or as an explicit characterReferenceUrl. Requires a frame URL: extract a representative frame from the video yourself first (this tool does not decode video). Waits for both nodes and returns stillUrl, videoUrl, runId and costUsd (what the take cost your company; about $1.05 with the default models on prepaid credits without a subscription). Inspect the still before paying for more takes, keep generated cuts under 5 seconds, and budget one take plus two retries per shot. Do not use video-to-video swap models on dark or handheld footage.',
|
|
6707
6167
|
inputSchema: {
|
|
6708
6168
|
projectId: z8.string().min(1).describe("Project id from studio_list_projects."),
|
|
6709
6169
|
sceneFrameUrl: httpUrl.describe("Public or signed URL of ONE frame of the target shot (png/jpg)."),
|
|
@@ -6782,7 +6242,7 @@ var studioReplaceCharacterInVideo = defineTool({
|
|
|
6782
6242
|
});
|
|
6783
6243
|
var studioGetSpend = defineTool({
|
|
6784
6244
|
name: "studio_get_spend",
|
|
6785
|
-
description:
|
|
6245
|
+
description: `Read the spend ledger: total USD and job counts for today, the last 7 days and the last 30 days, plus the most recent paid actions. The amounts are what the company paid (each job's costUsd): for a company on prepaid credits, what left its balance for those jobs. tzOffsetMinutes is the viewer's Date.getTimezoneOffset() so "today" rolls at local midnight (default UTC).`,
|
|
6786
6246
|
inputSchema: {
|
|
6787
6247
|
tzOffsetMinutes: z8.number().int().min(-840).max(840).optional()
|
|
6788
6248
|
},
|
|
@@ -6794,7 +6254,7 @@ var studioGetSpend = defineTool({
|
|
|
6794
6254
|
});
|
|
6795
6255
|
var studioGetUsage = defineTool({
|
|
6796
6256
|
name: "studio_get_usage",
|
|
6797
|
-
description: "Read what limits the company this key belongs to, and what it has used: month-to-date spend (usedUsd, realizedUsd, inFlightEstimatedUsd) and job count
|
|
6257
|
+
description: "Read what limits the company this key belongs to, and what it has used: month-to-date spend (usedUsd, realizedUsd, inFlightEstimatedUsd) and job count in what the company paid, the monthly cap (capUsd) and requests-per-minute limit (rpm), null meaning none, and a per-model breakdown, most expensive first. A company on prepaid credits (every new company; a company the Studio already knew keeps the caps it had) has no monthly cap unless the Lumitra operator set one; `credits` says what limits it instead: `balanceUsd` (the prepaid balance), `dailyLimitUsd` (null: none), `usedTodayUsd` (what left the balance today, running jobs included), `dailyResetsAt` (midnight UTC) and `operatorMonthlyLimit` (true when the Lumitra operator set a monthly limit on top; its amount is not reported, and capUsd is null on credits). Each finished generation is paid from the balance at Studio's price for it, the same amount the job reports as costUsd, so every figure here is in the dollars the balance is in. balanceUsd does not yet subtract what is reserved for requests that are still starting or running, so the room for a new request can be smaller than balanceUsd. A company not on credits has `credits` null and is held to its monthly cap (20 USD by default, capSource \"default\", unless the Lumitra operator set a plan). Call this before a large batch to check remaining room, or after a 402 or 429 to see what tripped. The refusal's own error text says which limit it was and what to do, so relay it as written; it also names the code: `credits_exhausted` (the balance does not cover the request: add credits on the Billing page, or wait a few seconds when part of the balance is only reserved), `daily_cap_reached` (on credits a company owner or admin raises the daily limit on the Billing page; it resets at midnight UTC), `monthly_cap_reached` (only the Lumitra operator can raise it) or `velocity_limit_reached` (too many paid requests in a short time: wait as long as the text says). usedUsd includes in-flight (not yet settled) job estimates, so it can go DOWN as well as up: a job that later fails releases its estimate.",
|
|
6798
6258
|
inputSchema: {},
|
|
6799
6259
|
annotations: { readOnlyHint: true },
|
|
6800
6260
|
handler: async (_args, ctx) => {
|
|
@@ -6914,7 +6374,7 @@ function registerTools(server, ctx) {
|
|
|
6914
6374
|
|
|
6915
6375
|
// src/server.ts
|
|
6916
6376
|
var SERVER_NAME = "lumitra-studio";
|
|
6917
|
-
var SERVER_VERSION = "0.
|
|
6377
|
+
var SERVER_VERSION = "0.6.0";
|
|
6918
6378
|
function createStudioMcpServer(opts = {}) {
|
|
6919
6379
|
const config = opts.config ?? resolveConfig(opts.env ?? process.env);
|
|
6920
6380
|
const client = new StudioClient(config, {
|