@howells/motif-sdk 0.4.0 → 0.5.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/dist/index.cjs +143 -2
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +143 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -146,6 +146,7 @@ var AA_IMAGE_SOURCES = [
|
|
|
146
146
|
"https://artificialanalysis.ai/image/leaderboard/editing"
|
|
147
147
|
];
|
|
148
148
|
var FAL_PRICING_CHECKED_AT = "2026-05-12";
|
|
149
|
+
var FAL_PRICING_CHECKED_JUL_2026 = "2026-07-11";
|
|
149
150
|
var MODELS = {
|
|
150
151
|
// ─── Generation Models ────────────────────────────────────────
|
|
151
152
|
gpt2: {
|
|
@@ -455,6 +456,58 @@ var MODELS = {
|
|
|
455
456
|
supportsSyncMode: true,
|
|
456
457
|
maxReferenceImages: 10
|
|
457
458
|
},
|
|
459
|
+
seedream5: {
|
|
460
|
+
name: "Seedream 5.0 Pro",
|
|
461
|
+
endpoint: "bytedance/seedream/v5/pro/text-to-image",
|
|
462
|
+
editEndpoint: "bytedance/seedream/v5/pro/edit",
|
|
463
|
+
type: "generation",
|
|
464
|
+
// fal tiers Seedream v5 Pro by output size: $0.0675 up to 1536², $0.135 up to 2048².
|
|
465
|
+
pricing: "$0.0675 (\u22641536\xB2) / $0.135 (\u22642048\xB2)",
|
|
466
|
+
pricePerImageUsd: 0.0675,
|
|
467
|
+
falPricing: {
|
|
468
|
+
endpointId: "bytedance/seedream/v5/pro/text-to-image",
|
|
469
|
+
unitPrice: 0.0675,
|
|
470
|
+
unit: "images",
|
|
471
|
+
currency: "USD",
|
|
472
|
+
estimatedCostPerImageUsd: 0.0675,
|
|
473
|
+
source: "fal-pricing-api",
|
|
474
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
475
|
+
},
|
|
476
|
+
sizeMode: "image_size_enum",
|
|
477
|
+
supportsAspect: true,
|
|
478
|
+
supportsResolution: false,
|
|
479
|
+
supportsEdit: true,
|
|
480
|
+
supportsNumImages: true,
|
|
481
|
+
supportsSeed: true,
|
|
482
|
+
supportsSyncMode: true,
|
|
483
|
+
maxReferenceImages: 10
|
|
484
|
+
},
|
|
485
|
+
"seedream5-lite": {
|
|
486
|
+
name: "Seedream 5.0 Lite",
|
|
487
|
+
endpoint: "fal-ai/bytedance/seedream/v5/lite/text-to-image",
|
|
488
|
+
editEndpoint: "fal-ai/bytedance/seedream/v5/lite/edit",
|
|
489
|
+
type: "generation",
|
|
490
|
+
// Flat price regardless of resolution; native up to Auto 3K (~9.4MP).
|
|
491
|
+
pricing: "$0.035",
|
|
492
|
+
pricePerImageUsd: 0.035,
|
|
493
|
+
falPricing: {
|
|
494
|
+
endpointId: "fal-ai/bytedance/seedream/v5/lite/text-to-image",
|
|
495
|
+
unitPrice: 0.035,
|
|
496
|
+
unit: "images",
|
|
497
|
+
currency: "USD",
|
|
498
|
+
estimatedCostPerImageUsd: 0.035,
|
|
499
|
+
source: "fal-pricing-api",
|
|
500
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
501
|
+
},
|
|
502
|
+
sizeMode: "image_size_enum",
|
|
503
|
+
supportsAspect: true,
|
|
504
|
+
supportsResolution: false,
|
|
505
|
+
supportsEdit: true,
|
|
506
|
+
supportsNumImages: true,
|
|
507
|
+
supportsSeed: true,
|
|
508
|
+
supportsSyncMode: true,
|
|
509
|
+
maxReferenceImages: 10
|
|
510
|
+
},
|
|
458
511
|
"flux2-max": {
|
|
459
512
|
name: "FLUX.2 Max",
|
|
460
513
|
endpoint: "fal-ai/flux-2-max",
|
|
@@ -588,7 +641,7 @@ var MODELS = {
|
|
|
588
641
|
maxReferenceImages: 10
|
|
589
642
|
},
|
|
590
643
|
"flux2-dev": {
|
|
591
|
-
name: "FLUX.2
|
|
644
|
+
name: "FLUX.2 [dev]",
|
|
592
645
|
endpoint: "fal-ai/flux-2",
|
|
593
646
|
editEndpoint: "fal-ai/flux-2/edit",
|
|
594
647
|
type: "generation",
|
|
@@ -631,6 +684,32 @@ var MODELS = {
|
|
|
631
684
|
supportsSyncMode: true,
|
|
632
685
|
maxReferenceImages: 10
|
|
633
686
|
},
|
|
687
|
+
"flux2-turbo": {
|
|
688
|
+
name: "FLUX.2 Turbo",
|
|
689
|
+
endpoint: "fal-ai/flux-2/turbo",
|
|
690
|
+
type: "generation",
|
|
691
|
+
pricing: "$0.008/MP",
|
|
692
|
+
pricePerImageUsd: 8e-3,
|
|
693
|
+
falPricing: {
|
|
694
|
+
endpointId: "fal-ai/flux-2/turbo",
|
|
695
|
+
unitPrice: 8e-3,
|
|
696
|
+
unit: "megapixels",
|
|
697
|
+
currency: "USD",
|
|
698
|
+
estimatedCostPerImageUsd: 8e-3,
|
|
699
|
+
source: "fal-pricing-api",
|
|
700
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
701
|
+
},
|
|
702
|
+
sizeMode: "image_size_enum",
|
|
703
|
+
supportsAspect: true,
|
|
704
|
+
supportsResolution: false,
|
|
705
|
+
supportsEdit: false,
|
|
706
|
+
supportsNumImages: true,
|
|
707
|
+
supportsOutputFormat: true,
|
|
708
|
+
supportsSafetyChecker: true,
|
|
709
|
+
supportsSeed: true,
|
|
710
|
+
supportsGuidanceScale: true,
|
|
711
|
+
supportsSyncMode: true
|
|
712
|
+
},
|
|
634
713
|
flux: {
|
|
635
714
|
name: "FLUX Pro Ultra",
|
|
636
715
|
endpoint: "fal-ai/flux-pro/v1.1-ultra",
|
|
@@ -709,6 +788,29 @@ var MODELS = {
|
|
|
709
788
|
supportsStyle: true,
|
|
710
789
|
supportsSyncMode: true
|
|
711
790
|
},
|
|
791
|
+
recraft4: {
|
|
792
|
+
name: "Recraft V4",
|
|
793
|
+
endpoint: "fal-ai/recraft/v4/text-to-image",
|
|
794
|
+
type: "generation",
|
|
795
|
+
pricing: "$0.04",
|
|
796
|
+
pricePerImageUsd: 0.04,
|
|
797
|
+
falPricing: {
|
|
798
|
+
endpointId: "fal-ai/recraft/v4/text-to-image",
|
|
799
|
+
unitPrice: 0.04,
|
|
800
|
+
unit: "images",
|
|
801
|
+
currency: "USD",
|
|
802
|
+
estimatedCostPerImageUsd: 0.04,
|
|
803
|
+
source: "fal-pricing-api",
|
|
804
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
805
|
+
},
|
|
806
|
+
sizeMode: "image_size_enum",
|
|
807
|
+
supportsAspect: true,
|
|
808
|
+
supportsResolution: false,
|
|
809
|
+
supportsEdit: false,
|
|
810
|
+
supportsNumImages: false,
|
|
811
|
+
supportsStyle: true,
|
|
812
|
+
supportsSyncMode: true
|
|
813
|
+
},
|
|
712
814
|
ideogram: {
|
|
713
815
|
name: "Ideogram V3",
|
|
714
816
|
endpoint: "fal-ai/ideogram/v3",
|
|
@@ -736,6 +838,36 @@ var MODELS = {
|
|
|
736
838
|
supportsStyle: true,
|
|
737
839
|
supportsSyncMode: true
|
|
738
840
|
},
|
|
841
|
+
ideogram4: {
|
|
842
|
+
name: "Ideogram V4",
|
|
843
|
+
endpoint: "ideogram/v4",
|
|
844
|
+
type: "generation",
|
|
845
|
+
// fal bills v4 per output megapixel by rendering speed: TURBO $0.03, BALANCED
|
|
846
|
+
// $0.06, QUALITY $0.10 (plus a flat $0.03 when prompt expansion is used).
|
|
847
|
+
// Headline uses the TURBO 1MP rate, matching how ideogram v3 is modeled.
|
|
848
|
+
pricing: "$0.03",
|
|
849
|
+
pricePerImageUsd: 0.03,
|
|
850
|
+
falPricing: {
|
|
851
|
+
endpointId: "ideogram/v4",
|
|
852
|
+
unitPrice: 0.03,
|
|
853
|
+
unit: "megapixels",
|
|
854
|
+
currency: "USD",
|
|
855
|
+
estimatedCostPerImageUsd: 0.03,
|
|
856
|
+
source: "fal-pricing-api",
|
|
857
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
858
|
+
},
|
|
859
|
+
sizeMode: "image_size_enum",
|
|
860
|
+
supportsAspect: true,
|
|
861
|
+
supportsResolution: false,
|
|
862
|
+
supportsEdit: false,
|
|
863
|
+
supportsNumImages: true,
|
|
864
|
+
supportsRenderingSpeed: true,
|
|
865
|
+
supportsSeed: true,
|
|
866
|
+
supportsOutputFormat: true,
|
|
867
|
+
supportedOutputFormats: ["jpeg", "png"],
|
|
868
|
+
supportsSafetyChecker: true,
|
|
869
|
+
supportsSyncMode: true
|
|
870
|
+
},
|
|
739
871
|
"grok-image": {
|
|
740
872
|
name: "Grok Imagine Image",
|
|
741
873
|
endpoint: "xai/grok-imagine-image",
|
|
@@ -831,7 +963,7 @@ var MODELS = {
|
|
|
831
963
|
name: "Clarity Upscaler",
|
|
832
964
|
endpoint: "fal-ai/clarity-upscaler",
|
|
833
965
|
type: "utility",
|
|
834
|
-
pricing: "$0.
|
|
966
|
+
pricing: "$0.03/MP",
|
|
835
967
|
supportsAspect: false,
|
|
836
968
|
supportsResolution: false,
|
|
837
969
|
supportsEdit: false,
|
|
@@ -877,14 +1009,19 @@ var GENERATION_MODELS = [
|
|
|
877
1009
|
"gemini3",
|
|
878
1010
|
"seedream4",
|
|
879
1011
|
"seedream45",
|
|
1012
|
+
"seedream5",
|
|
1013
|
+
"seedream5-lite",
|
|
880
1014
|
"flux2-max",
|
|
881
1015
|
"flux2-pro",
|
|
882
1016
|
"flux2-flex",
|
|
883
1017
|
"flux2-dev",
|
|
1018
|
+
"flux2-turbo",
|
|
884
1019
|
"flux",
|
|
885
1020
|
"flux-fast",
|
|
886
1021
|
"recraft",
|
|
1022
|
+
"recraft4",
|
|
887
1023
|
"ideogram",
|
|
1024
|
+
"ideogram4",
|
|
888
1025
|
"grok-image",
|
|
889
1026
|
"qwen"
|
|
890
1027
|
];
|
|
@@ -945,6 +1082,9 @@ function estimateCost(model, resolution, numImages = 1) {
|
|
|
945
1082
|
if ((model === "banana" || model === "gemini3") && resolution === "4K") {
|
|
946
1083
|
return configuredPrice * 2 * numImages;
|
|
947
1084
|
}
|
|
1085
|
+
if (model === "seedream5" && (resolution === "2K" || resolution === "4K")) {
|
|
1086
|
+
return configuredPrice * 2 * numImages;
|
|
1087
|
+
}
|
|
948
1088
|
if (model === "banana2") {
|
|
949
1089
|
const multiplier = resolution === "4K" ? 2 : resolution === "2K" ? 1.5 : resolution === "0.5K" ? 0.75 : 1;
|
|
950
1090
|
return configuredPrice * multiplier * numImages;
|
|
@@ -969,6 +1109,7 @@ function estimateCost(model, resolution, numImages = 1) {
|
|
|
969
1109
|
case "flux-fast":
|
|
970
1110
|
return 3e-3 * numImages;
|
|
971
1111
|
case "clarity":
|
|
1112
|
+
return 0.03 * numImages;
|
|
972
1113
|
case "crystal":
|
|
973
1114
|
case "rmbg":
|
|
974
1115
|
case "bria":
|
package/dist/index.d.cts
CHANGED
|
@@ -463,9 +463,9 @@ declare const VIDEO_TEXT_TO_VIDEO_TOP_15: LeaderboardSnapshot;
|
|
|
463
463
|
declare const VIDEO_IMAGE_TO_VIDEO_TOP_15: LeaderboardSnapshot;
|
|
464
464
|
|
|
465
465
|
declare const MODELS: Record<string, ModelConfig>;
|
|
466
|
-
declare const GENERATION_MODELS: readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux", "flux-fast", "recraft", "ideogram", "grok-image", "qwen"];
|
|
466
|
+
declare const GENERATION_MODELS: readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "seedream5", "seedream5-lite", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux2-turbo", "flux", "flux-fast", "recraft", "recraft4", "ideogram", "ideogram4", "grok-image", "qwen"];
|
|
467
467
|
/** Models whose fal endpoints support image editing (vary/edit flows). */
|
|
468
|
-
declare const EDIT_CAPABLE_MODELS: ("gpt2" | "gpt" | "banana2" | "banana" | "gemini" | "gemini3" | "seedream4" | "seedream45" | "flux2-max" | "flux2-pro" | "flux2-flex" | "flux2-dev" | "flux" | "flux-fast" | "recraft" | "ideogram" | "grok-image" | "qwen")[];
|
|
468
|
+
declare const EDIT_CAPABLE_MODELS: ("gpt2" | "gpt" | "banana2" | "banana" | "gemini" | "gemini3" | "seedream4" | "seedream45" | "seedream5" | "seedream5-lite" | "flux2-max" | "flux2-pro" | "flux2-flex" | "flux2-dev" | "flux2-turbo" | "flux" | "flux-fast" | "recraft" | "recraft4" | "ideogram" | "ideogram4" | "grok-image" | "qwen")[];
|
|
469
469
|
declare const UTILITY_MODELS: readonly ["clarity", "crystal", "rmbg", "bria"];
|
|
470
470
|
declare const VIDEO_MODELS: readonly ["kling"];
|
|
471
471
|
type GenerationModelName = (typeof GENERATION_MODELS)[number];
|
|
@@ -554,7 +554,7 @@ declare class MotifServer {
|
|
|
554
554
|
/** Model registry. */
|
|
555
555
|
get models(): Record<string, ModelConfig>;
|
|
556
556
|
/** Generation model keys. */
|
|
557
|
-
get generationModels(): readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux", "flux-fast", "recraft", "ideogram", "grok-image", "qwen"];
|
|
557
|
+
get generationModels(): readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "seedream5", "seedream5-lite", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux2-turbo", "flux", "flux-fast", "recraft", "recraft4", "ideogram", "ideogram4", "grok-image", "qwen"];
|
|
558
558
|
/** Utility model keys. */
|
|
559
559
|
get utilityModels(): readonly ["clarity", "crystal", "rmbg", "bria"];
|
|
560
560
|
/** Registered fal utility/tool endpoints. */
|
package/dist/index.d.ts
CHANGED
|
@@ -463,9 +463,9 @@ declare const VIDEO_TEXT_TO_VIDEO_TOP_15: LeaderboardSnapshot;
|
|
|
463
463
|
declare const VIDEO_IMAGE_TO_VIDEO_TOP_15: LeaderboardSnapshot;
|
|
464
464
|
|
|
465
465
|
declare const MODELS: Record<string, ModelConfig>;
|
|
466
|
-
declare const GENERATION_MODELS: readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux", "flux-fast", "recraft", "ideogram", "grok-image", "qwen"];
|
|
466
|
+
declare const GENERATION_MODELS: readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "seedream5", "seedream5-lite", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux2-turbo", "flux", "flux-fast", "recraft", "recraft4", "ideogram", "ideogram4", "grok-image", "qwen"];
|
|
467
467
|
/** Models whose fal endpoints support image editing (vary/edit flows). */
|
|
468
|
-
declare const EDIT_CAPABLE_MODELS: ("gpt2" | "gpt" | "banana2" | "banana" | "gemini" | "gemini3" | "seedream4" | "seedream45" | "flux2-max" | "flux2-pro" | "flux2-flex" | "flux2-dev" | "flux" | "flux-fast" | "recraft" | "ideogram" | "grok-image" | "qwen")[];
|
|
468
|
+
declare const EDIT_CAPABLE_MODELS: ("gpt2" | "gpt" | "banana2" | "banana" | "gemini" | "gemini3" | "seedream4" | "seedream45" | "seedream5" | "seedream5-lite" | "flux2-max" | "flux2-pro" | "flux2-flex" | "flux2-dev" | "flux2-turbo" | "flux" | "flux-fast" | "recraft" | "recraft4" | "ideogram" | "ideogram4" | "grok-image" | "qwen")[];
|
|
469
469
|
declare const UTILITY_MODELS: readonly ["clarity", "crystal", "rmbg", "bria"];
|
|
470
470
|
declare const VIDEO_MODELS: readonly ["kling"];
|
|
471
471
|
type GenerationModelName = (typeof GENERATION_MODELS)[number];
|
|
@@ -554,7 +554,7 @@ declare class MotifServer {
|
|
|
554
554
|
/** Model registry. */
|
|
555
555
|
get models(): Record<string, ModelConfig>;
|
|
556
556
|
/** Generation model keys. */
|
|
557
|
-
get generationModels(): readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux", "flux-fast", "recraft", "ideogram", "grok-image", "qwen"];
|
|
557
|
+
get generationModels(): readonly ["gpt2", "gpt", "banana2", "banana", "gemini", "gemini3", "seedream4", "seedream45", "seedream5", "seedream5-lite", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux2-turbo", "flux", "flux-fast", "recraft", "recraft4", "ideogram", "ideogram4", "grok-image", "qwen"];
|
|
558
558
|
/** Utility model keys. */
|
|
559
559
|
get utilityModels(): readonly ["clarity", "crystal", "rmbg", "bria"];
|
|
560
560
|
/** Registered fal utility/tool endpoints. */
|
package/dist/index.js
CHANGED
|
@@ -87,6 +87,7 @@ var AA_IMAGE_SOURCES = [
|
|
|
87
87
|
"https://artificialanalysis.ai/image/leaderboard/editing"
|
|
88
88
|
];
|
|
89
89
|
var FAL_PRICING_CHECKED_AT = "2026-05-12";
|
|
90
|
+
var FAL_PRICING_CHECKED_JUL_2026 = "2026-07-11";
|
|
90
91
|
var MODELS = {
|
|
91
92
|
// ─── Generation Models ────────────────────────────────────────
|
|
92
93
|
gpt2: {
|
|
@@ -396,6 +397,58 @@ var MODELS = {
|
|
|
396
397
|
supportsSyncMode: true,
|
|
397
398
|
maxReferenceImages: 10
|
|
398
399
|
},
|
|
400
|
+
seedream5: {
|
|
401
|
+
name: "Seedream 5.0 Pro",
|
|
402
|
+
endpoint: "bytedance/seedream/v5/pro/text-to-image",
|
|
403
|
+
editEndpoint: "bytedance/seedream/v5/pro/edit",
|
|
404
|
+
type: "generation",
|
|
405
|
+
// fal tiers Seedream v5 Pro by output size: $0.0675 up to 1536², $0.135 up to 2048².
|
|
406
|
+
pricing: "$0.0675 (\u22641536\xB2) / $0.135 (\u22642048\xB2)",
|
|
407
|
+
pricePerImageUsd: 0.0675,
|
|
408
|
+
falPricing: {
|
|
409
|
+
endpointId: "bytedance/seedream/v5/pro/text-to-image",
|
|
410
|
+
unitPrice: 0.0675,
|
|
411
|
+
unit: "images",
|
|
412
|
+
currency: "USD",
|
|
413
|
+
estimatedCostPerImageUsd: 0.0675,
|
|
414
|
+
source: "fal-pricing-api",
|
|
415
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
416
|
+
},
|
|
417
|
+
sizeMode: "image_size_enum",
|
|
418
|
+
supportsAspect: true,
|
|
419
|
+
supportsResolution: false,
|
|
420
|
+
supportsEdit: true,
|
|
421
|
+
supportsNumImages: true,
|
|
422
|
+
supportsSeed: true,
|
|
423
|
+
supportsSyncMode: true,
|
|
424
|
+
maxReferenceImages: 10
|
|
425
|
+
},
|
|
426
|
+
"seedream5-lite": {
|
|
427
|
+
name: "Seedream 5.0 Lite",
|
|
428
|
+
endpoint: "fal-ai/bytedance/seedream/v5/lite/text-to-image",
|
|
429
|
+
editEndpoint: "fal-ai/bytedance/seedream/v5/lite/edit",
|
|
430
|
+
type: "generation",
|
|
431
|
+
// Flat price regardless of resolution; native up to Auto 3K (~9.4MP).
|
|
432
|
+
pricing: "$0.035",
|
|
433
|
+
pricePerImageUsd: 0.035,
|
|
434
|
+
falPricing: {
|
|
435
|
+
endpointId: "fal-ai/bytedance/seedream/v5/lite/text-to-image",
|
|
436
|
+
unitPrice: 0.035,
|
|
437
|
+
unit: "images",
|
|
438
|
+
currency: "USD",
|
|
439
|
+
estimatedCostPerImageUsd: 0.035,
|
|
440
|
+
source: "fal-pricing-api",
|
|
441
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
442
|
+
},
|
|
443
|
+
sizeMode: "image_size_enum",
|
|
444
|
+
supportsAspect: true,
|
|
445
|
+
supportsResolution: false,
|
|
446
|
+
supportsEdit: true,
|
|
447
|
+
supportsNumImages: true,
|
|
448
|
+
supportsSeed: true,
|
|
449
|
+
supportsSyncMode: true,
|
|
450
|
+
maxReferenceImages: 10
|
|
451
|
+
},
|
|
399
452
|
"flux2-max": {
|
|
400
453
|
name: "FLUX.2 Max",
|
|
401
454
|
endpoint: "fal-ai/flux-2-max",
|
|
@@ -529,7 +582,7 @@ var MODELS = {
|
|
|
529
582
|
maxReferenceImages: 10
|
|
530
583
|
},
|
|
531
584
|
"flux2-dev": {
|
|
532
|
-
name: "FLUX.2
|
|
585
|
+
name: "FLUX.2 [dev]",
|
|
533
586
|
endpoint: "fal-ai/flux-2",
|
|
534
587
|
editEndpoint: "fal-ai/flux-2/edit",
|
|
535
588
|
type: "generation",
|
|
@@ -572,6 +625,32 @@ var MODELS = {
|
|
|
572
625
|
supportsSyncMode: true,
|
|
573
626
|
maxReferenceImages: 10
|
|
574
627
|
},
|
|
628
|
+
"flux2-turbo": {
|
|
629
|
+
name: "FLUX.2 Turbo",
|
|
630
|
+
endpoint: "fal-ai/flux-2/turbo",
|
|
631
|
+
type: "generation",
|
|
632
|
+
pricing: "$0.008/MP",
|
|
633
|
+
pricePerImageUsd: 8e-3,
|
|
634
|
+
falPricing: {
|
|
635
|
+
endpointId: "fal-ai/flux-2/turbo",
|
|
636
|
+
unitPrice: 8e-3,
|
|
637
|
+
unit: "megapixels",
|
|
638
|
+
currency: "USD",
|
|
639
|
+
estimatedCostPerImageUsd: 8e-3,
|
|
640
|
+
source: "fal-pricing-api",
|
|
641
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
642
|
+
},
|
|
643
|
+
sizeMode: "image_size_enum",
|
|
644
|
+
supportsAspect: true,
|
|
645
|
+
supportsResolution: false,
|
|
646
|
+
supportsEdit: false,
|
|
647
|
+
supportsNumImages: true,
|
|
648
|
+
supportsOutputFormat: true,
|
|
649
|
+
supportsSafetyChecker: true,
|
|
650
|
+
supportsSeed: true,
|
|
651
|
+
supportsGuidanceScale: true,
|
|
652
|
+
supportsSyncMode: true
|
|
653
|
+
},
|
|
575
654
|
flux: {
|
|
576
655
|
name: "FLUX Pro Ultra",
|
|
577
656
|
endpoint: "fal-ai/flux-pro/v1.1-ultra",
|
|
@@ -650,6 +729,29 @@ var MODELS = {
|
|
|
650
729
|
supportsStyle: true,
|
|
651
730
|
supportsSyncMode: true
|
|
652
731
|
},
|
|
732
|
+
recraft4: {
|
|
733
|
+
name: "Recraft V4",
|
|
734
|
+
endpoint: "fal-ai/recraft/v4/text-to-image",
|
|
735
|
+
type: "generation",
|
|
736
|
+
pricing: "$0.04",
|
|
737
|
+
pricePerImageUsd: 0.04,
|
|
738
|
+
falPricing: {
|
|
739
|
+
endpointId: "fal-ai/recraft/v4/text-to-image",
|
|
740
|
+
unitPrice: 0.04,
|
|
741
|
+
unit: "images",
|
|
742
|
+
currency: "USD",
|
|
743
|
+
estimatedCostPerImageUsd: 0.04,
|
|
744
|
+
source: "fal-pricing-api",
|
|
745
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
746
|
+
},
|
|
747
|
+
sizeMode: "image_size_enum",
|
|
748
|
+
supportsAspect: true,
|
|
749
|
+
supportsResolution: false,
|
|
750
|
+
supportsEdit: false,
|
|
751
|
+
supportsNumImages: false,
|
|
752
|
+
supportsStyle: true,
|
|
753
|
+
supportsSyncMode: true
|
|
754
|
+
},
|
|
653
755
|
ideogram: {
|
|
654
756
|
name: "Ideogram V3",
|
|
655
757
|
endpoint: "fal-ai/ideogram/v3",
|
|
@@ -677,6 +779,36 @@ var MODELS = {
|
|
|
677
779
|
supportsStyle: true,
|
|
678
780
|
supportsSyncMode: true
|
|
679
781
|
},
|
|
782
|
+
ideogram4: {
|
|
783
|
+
name: "Ideogram V4",
|
|
784
|
+
endpoint: "ideogram/v4",
|
|
785
|
+
type: "generation",
|
|
786
|
+
// fal bills v4 per output megapixel by rendering speed: TURBO $0.03, BALANCED
|
|
787
|
+
// $0.06, QUALITY $0.10 (plus a flat $0.03 when prompt expansion is used).
|
|
788
|
+
// Headline uses the TURBO 1MP rate, matching how ideogram v3 is modeled.
|
|
789
|
+
pricing: "$0.03",
|
|
790
|
+
pricePerImageUsd: 0.03,
|
|
791
|
+
falPricing: {
|
|
792
|
+
endpointId: "ideogram/v4",
|
|
793
|
+
unitPrice: 0.03,
|
|
794
|
+
unit: "megapixels",
|
|
795
|
+
currency: "USD",
|
|
796
|
+
estimatedCostPerImageUsd: 0.03,
|
|
797
|
+
source: "fal-pricing-api",
|
|
798
|
+
checkedAt: FAL_PRICING_CHECKED_JUL_2026
|
|
799
|
+
},
|
|
800
|
+
sizeMode: "image_size_enum",
|
|
801
|
+
supportsAspect: true,
|
|
802
|
+
supportsResolution: false,
|
|
803
|
+
supportsEdit: false,
|
|
804
|
+
supportsNumImages: true,
|
|
805
|
+
supportsRenderingSpeed: true,
|
|
806
|
+
supportsSeed: true,
|
|
807
|
+
supportsOutputFormat: true,
|
|
808
|
+
supportedOutputFormats: ["jpeg", "png"],
|
|
809
|
+
supportsSafetyChecker: true,
|
|
810
|
+
supportsSyncMode: true
|
|
811
|
+
},
|
|
680
812
|
"grok-image": {
|
|
681
813
|
name: "Grok Imagine Image",
|
|
682
814
|
endpoint: "xai/grok-imagine-image",
|
|
@@ -772,7 +904,7 @@ var MODELS = {
|
|
|
772
904
|
name: "Clarity Upscaler",
|
|
773
905
|
endpoint: "fal-ai/clarity-upscaler",
|
|
774
906
|
type: "utility",
|
|
775
|
-
pricing: "$0.
|
|
907
|
+
pricing: "$0.03/MP",
|
|
776
908
|
supportsAspect: false,
|
|
777
909
|
supportsResolution: false,
|
|
778
910
|
supportsEdit: false,
|
|
@@ -818,14 +950,19 @@ var GENERATION_MODELS = [
|
|
|
818
950
|
"gemini3",
|
|
819
951
|
"seedream4",
|
|
820
952
|
"seedream45",
|
|
953
|
+
"seedream5",
|
|
954
|
+
"seedream5-lite",
|
|
821
955
|
"flux2-max",
|
|
822
956
|
"flux2-pro",
|
|
823
957
|
"flux2-flex",
|
|
824
958
|
"flux2-dev",
|
|
959
|
+
"flux2-turbo",
|
|
825
960
|
"flux",
|
|
826
961
|
"flux-fast",
|
|
827
962
|
"recraft",
|
|
963
|
+
"recraft4",
|
|
828
964
|
"ideogram",
|
|
965
|
+
"ideogram4",
|
|
829
966
|
"grok-image",
|
|
830
967
|
"qwen"
|
|
831
968
|
];
|
|
@@ -886,6 +1023,9 @@ function estimateCost(model, resolution, numImages = 1) {
|
|
|
886
1023
|
if ((model === "banana" || model === "gemini3") && resolution === "4K") {
|
|
887
1024
|
return configuredPrice * 2 * numImages;
|
|
888
1025
|
}
|
|
1026
|
+
if (model === "seedream5" && (resolution === "2K" || resolution === "4K")) {
|
|
1027
|
+
return configuredPrice * 2 * numImages;
|
|
1028
|
+
}
|
|
889
1029
|
if (model === "banana2") {
|
|
890
1030
|
const multiplier = resolution === "4K" ? 2 : resolution === "2K" ? 1.5 : resolution === "0.5K" ? 0.75 : 1;
|
|
891
1031
|
return configuredPrice * multiplier * numImages;
|
|
@@ -910,6 +1050,7 @@ function estimateCost(model, resolution, numImages = 1) {
|
|
|
910
1050
|
case "flux-fast":
|
|
911
1051
|
return 3e-3 * numImages;
|
|
912
1052
|
case "clarity":
|
|
1053
|
+
return 0.03 * numImages;
|
|
913
1054
|
case "crystal":
|
|
914
1055
|
case "rmbg":
|
|
915
1056
|
case "bria":
|