@howells/motif-sdk 1.0.0 → 1.1.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/image.js +31 -1
- package/dist/index.cjs +31 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +31 -1
- package/package.json +1 -1
package/dist/image.js
CHANGED
|
@@ -812,6 +812,35 @@ var MODELS = {
|
|
|
812
812
|
supportsSyncMode: true,
|
|
813
813
|
type: "generation"
|
|
814
814
|
},
|
|
815
|
+
qwen3: {
|
|
816
|
+
benchmark: {
|
|
817
|
+
tiers: { price: "budget", quality: "better", speed: "unknown" },
|
|
818
|
+
useCase: "Qwen Image 3 - successor to qwen; no leaderboard data yet"
|
|
819
|
+
},
|
|
820
|
+
endpoint: "fal-ai/qwen-image-3/text-to-image",
|
|
821
|
+
falPricing: {
|
|
822
|
+
checkedAt: "2026-08-05",
|
|
823
|
+
currency: "USD",
|
|
824
|
+
endpointId: "fal-ai/qwen-image-3/text-to-image",
|
|
825
|
+
estimatedCostPerImageUsd: 0.02,
|
|
826
|
+
source: "fal-pricing-api",
|
|
827
|
+
unit: "megapixels",
|
|
828
|
+
unitPrice: 0.02
|
|
829
|
+
},
|
|
830
|
+
name: "Qwen Image 3",
|
|
831
|
+
pricePerImageUsd: 0.02,
|
|
832
|
+
pricing: "$0.02/MP (assumed from qwen v1; fal pricing page bot-gated at check time)",
|
|
833
|
+
sizeMode: "image_size_enum",
|
|
834
|
+
supportsAspect: true,
|
|
835
|
+
supportsEdit: false,
|
|
836
|
+
supportsNegativePrompt: true,
|
|
837
|
+
supportsNumImages: true,
|
|
838
|
+
supportsOutputFormat: true,
|
|
839
|
+
supportsResolution: false,
|
|
840
|
+
supportsSafetyChecker: true,
|
|
841
|
+
supportsSeed: true,
|
|
842
|
+
type: "generation"
|
|
843
|
+
},
|
|
815
844
|
// ─── Video Models ─────────────────────────────────────────────
|
|
816
845
|
kling: {
|
|
817
846
|
endpoint: "fal-ai/kling-video/v3/pro/image-to-video",
|
|
@@ -889,7 +918,8 @@ var GENERATION_MODELS = [
|
|
|
889
918
|
"ideogram",
|
|
890
919
|
"ideogram4",
|
|
891
920
|
"grok-image",
|
|
892
|
-
"qwen"
|
|
921
|
+
"qwen",
|
|
922
|
+
"qwen3"
|
|
893
923
|
];
|
|
894
924
|
var EDIT_CAPABLE_MODELS = GENERATION_MODELS.filter(
|
|
895
925
|
(id) => MODELS[id]?.supportsEdit === true
|
package/dist/index.cjs
CHANGED
|
@@ -964,6 +964,35 @@ var MODELS = {
|
|
|
964
964
|
supportsSyncMode: true,
|
|
965
965
|
type: "generation"
|
|
966
966
|
},
|
|
967
|
+
qwen3: {
|
|
968
|
+
benchmark: {
|
|
969
|
+
tiers: { price: "budget", quality: "better", speed: "unknown" },
|
|
970
|
+
useCase: "Qwen Image 3 - successor to qwen; no leaderboard data yet"
|
|
971
|
+
},
|
|
972
|
+
endpoint: "fal-ai/qwen-image-3/text-to-image",
|
|
973
|
+
falPricing: {
|
|
974
|
+
checkedAt: "2026-08-05",
|
|
975
|
+
currency: "USD",
|
|
976
|
+
endpointId: "fal-ai/qwen-image-3/text-to-image",
|
|
977
|
+
estimatedCostPerImageUsd: 0.02,
|
|
978
|
+
source: "fal-pricing-api",
|
|
979
|
+
unit: "megapixels",
|
|
980
|
+
unitPrice: 0.02
|
|
981
|
+
},
|
|
982
|
+
name: "Qwen Image 3",
|
|
983
|
+
pricePerImageUsd: 0.02,
|
|
984
|
+
pricing: "$0.02/MP (assumed from qwen v1; fal pricing page bot-gated at check time)",
|
|
985
|
+
sizeMode: "image_size_enum",
|
|
986
|
+
supportsAspect: true,
|
|
987
|
+
supportsEdit: false,
|
|
988
|
+
supportsNegativePrompt: true,
|
|
989
|
+
supportsNumImages: true,
|
|
990
|
+
supportsOutputFormat: true,
|
|
991
|
+
supportsResolution: false,
|
|
992
|
+
supportsSafetyChecker: true,
|
|
993
|
+
supportsSeed: true,
|
|
994
|
+
type: "generation"
|
|
995
|
+
},
|
|
967
996
|
// ─── Video Models ─────────────────────────────────────────────
|
|
968
997
|
kling: {
|
|
969
998
|
endpoint: "fal-ai/kling-video/v3/pro/image-to-video",
|
|
@@ -1041,7 +1070,8 @@ var GENERATION_MODELS = [
|
|
|
1041
1070
|
"ideogram",
|
|
1042
1071
|
"ideogram4",
|
|
1043
1072
|
"grok-image",
|
|
1044
|
-
"qwen"
|
|
1073
|
+
"qwen",
|
|
1074
|
+
"qwen3"
|
|
1045
1075
|
];
|
|
1046
1076
|
var EDIT_CAPABLE_MODELS = GENERATION_MODELS.filter(
|
|
1047
1077
|
(id) => MODELS[id]?.supportsEdit === true
|
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", "seedream5", "seedream5-lite", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux2-turbo", "flux", "flux-fast", "recraft", "recraft4", "ideogram", "ideogram4", "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", "qwen3"];
|
|
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" | "seedream5" | "seedream5-lite" | "flux2-max" | "flux2-pro" | "flux2-flex" | "flux2-dev" | "flux2-turbo" | "flux" | "flux-fast" | "recraft" | "recraft4" | "ideogram" | "ideogram4" | "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" | "qwen3")[];
|
|
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];
|
|
@@ -558,7 +558,7 @@ declare class FalClient {
|
|
|
558
558
|
/** Model registry. */
|
|
559
559
|
get models(): Record<string, ModelConfig>;
|
|
560
560
|
/** Generation model keys. */
|
|
561
|
-
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"];
|
|
561
|
+
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", "qwen3"];
|
|
562
562
|
/** Utility model keys. */
|
|
563
563
|
get utilityModels(): readonly ["clarity", "crystal", "rmbg", "bria"];
|
|
564
564
|
/** 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", "seedream5", "seedream5-lite", "flux2-max", "flux2-pro", "flux2-flex", "flux2-dev", "flux2-turbo", "flux", "flux-fast", "recraft", "recraft4", "ideogram", "ideogram4", "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", "qwen3"];
|
|
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" | "seedream5" | "seedream5-lite" | "flux2-max" | "flux2-pro" | "flux2-flex" | "flux2-dev" | "flux2-turbo" | "flux" | "flux-fast" | "recraft" | "recraft4" | "ideogram" | "ideogram4" | "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" | "qwen3")[];
|
|
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];
|
|
@@ -558,7 +558,7 @@ declare class FalClient {
|
|
|
558
558
|
/** Model registry. */
|
|
559
559
|
get models(): Record<string, ModelConfig>;
|
|
560
560
|
/** Generation model keys. */
|
|
561
|
-
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"];
|
|
561
|
+
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", "qwen3"];
|
|
562
562
|
/** Utility model keys. */
|
|
563
563
|
get utilityModels(): readonly ["clarity", "crystal", "rmbg", "bria"];
|
|
564
564
|
/** Registered fal utility/tool endpoints. */
|
package/dist/index.js
CHANGED
|
@@ -905,6 +905,35 @@ var MODELS = {
|
|
|
905
905
|
supportsSyncMode: true,
|
|
906
906
|
type: "generation"
|
|
907
907
|
},
|
|
908
|
+
qwen3: {
|
|
909
|
+
benchmark: {
|
|
910
|
+
tiers: { price: "budget", quality: "better", speed: "unknown" },
|
|
911
|
+
useCase: "Qwen Image 3 - successor to qwen; no leaderboard data yet"
|
|
912
|
+
},
|
|
913
|
+
endpoint: "fal-ai/qwen-image-3/text-to-image",
|
|
914
|
+
falPricing: {
|
|
915
|
+
checkedAt: "2026-08-05",
|
|
916
|
+
currency: "USD",
|
|
917
|
+
endpointId: "fal-ai/qwen-image-3/text-to-image",
|
|
918
|
+
estimatedCostPerImageUsd: 0.02,
|
|
919
|
+
source: "fal-pricing-api",
|
|
920
|
+
unit: "megapixels",
|
|
921
|
+
unitPrice: 0.02
|
|
922
|
+
},
|
|
923
|
+
name: "Qwen Image 3",
|
|
924
|
+
pricePerImageUsd: 0.02,
|
|
925
|
+
pricing: "$0.02/MP (assumed from qwen v1; fal pricing page bot-gated at check time)",
|
|
926
|
+
sizeMode: "image_size_enum",
|
|
927
|
+
supportsAspect: true,
|
|
928
|
+
supportsEdit: false,
|
|
929
|
+
supportsNegativePrompt: true,
|
|
930
|
+
supportsNumImages: true,
|
|
931
|
+
supportsOutputFormat: true,
|
|
932
|
+
supportsResolution: false,
|
|
933
|
+
supportsSafetyChecker: true,
|
|
934
|
+
supportsSeed: true,
|
|
935
|
+
type: "generation"
|
|
936
|
+
},
|
|
908
937
|
// ─── Video Models ─────────────────────────────────────────────
|
|
909
938
|
kling: {
|
|
910
939
|
endpoint: "fal-ai/kling-video/v3/pro/image-to-video",
|
|
@@ -982,7 +1011,8 @@ var GENERATION_MODELS = [
|
|
|
982
1011
|
"ideogram",
|
|
983
1012
|
"ideogram4",
|
|
984
1013
|
"grok-image",
|
|
985
|
-
"qwen"
|
|
1014
|
+
"qwen",
|
|
1015
|
+
"qwen3"
|
|
986
1016
|
];
|
|
987
1017
|
var EDIT_CAPABLE_MODELS = GENERATION_MODELS.filter(
|
|
988
1018
|
(id) => MODELS[id]?.supportsEdit === true
|