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