@howells/motif-sdk 5.1.1 → 5.3.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 +16 -0
- package/dist/image.js +370 -120
- package/dist/index.cjs +581 -253
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +581 -253
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -707,14 +707,31 @@ function getOpenAiKeyFromEnv(input = process.env) {
|
|
|
707
707
|
}
|
|
708
708
|
//#endregion
|
|
709
709
|
//#region src/models.ts
|
|
710
|
-
const AA_IMAGE_LEADERBOARD_SNAPSHOT = "2026-
|
|
710
|
+
const AA_IMAGE_LEADERBOARD_SNAPSHOT = "2026-10-07";
|
|
711
711
|
const AA_IMAGE_SOURCES = ["https://artificialanalysis.ai/image/leaderboard/text-to-image", "https://artificialanalysis.ai/image/leaderboard/editing"];
|
|
712
712
|
const FAL_PRICING_CHECKED_AT = "2026-05-12";
|
|
713
713
|
const FAL_PRICING_CHECKED_JUL_2026 = "2026-07-11";
|
|
714
714
|
const FAL_PRICING_CHECKED_AUG_2026 = "2026-08-23";
|
|
715
715
|
const FAL_PRICING_CHECKED_SEP_2026 = "2026-09-16";
|
|
716
|
+
const FAL_PRICING_CHECKED_OCT_2026 = "2026-10-29";
|
|
716
717
|
const MODELS = {
|
|
717
718
|
flare: {
|
|
719
|
+
benchmark: {
|
|
720
|
+
artificialAnalysis: {
|
|
721
|
+
editing: {
|
|
722
|
+
elo: 1163,
|
|
723
|
+
rank: 2
|
|
724
|
+
},
|
|
725
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
726
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
727
|
+
textToImage: {
|
|
728
|
+
elo: 1191,
|
|
729
|
+
rank: 2
|
|
730
|
+
}
|
|
731
|
+
},
|
|
732
|
+
useCase: "Frontier generation and editing, evaluated at max quality"
|
|
733
|
+
},
|
|
734
|
+
defaultQuality: "max",
|
|
718
735
|
customImageSize: {
|
|
719
736
|
maxEdge: 3840,
|
|
720
737
|
maxPixels: 8294400,
|
|
@@ -751,6 +768,22 @@ const MODELS = {
|
|
|
751
768
|
useQueue: true
|
|
752
769
|
},
|
|
753
770
|
sunburst: {
|
|
771
|
+
benchmark: {
|
|
772
|
+
artificialAnalysis: {
|
|
773
|
+
editing: {
|
|
774
|
+
elo: 1183,
|
|
775
|
+
rank: 1
|
|
776
|
+
},
|
|
777
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
778
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
779
|
+
textToImage: {
|
|
780
|
+
elo: 1198,
|
|
781
|
+
rank: 1
|
|
782
|
+
}
|
|
783
|
+
},
|
|
784
|
+
useCase: "Frontier generation and editing, evaluated at max quality"
|
|
785
|
+
},
|
|
786
|
+
defaultQuality: "max",
|
|
754
787
|
customImageSize: {
|
|
755
788
|
maxEdge: 3840,
|
|
756
789
|
maxPixels: 8294400,
|
|
@@ -790,14 +823,14 @@ const MODELS = {
|
|
|
790
823
|
benchmark: {
|
|
791
824
|
artificialAnalysis: {
|
|
792
825
|
editing: {
|
|
793
|
-
elo:
|
|
794
|
-
rank:
|
|
826
|
+
elo: 1125,
|
|
827
|
+
rank: 5
|
|
795
828
|
},
|
|
796
829
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
797
830
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
798
831
|
textToImage: {
|
|
799
|
-
elo:
|
|
800
|
-
rank:
|
|
832
|
+
elo: 1172,
|
|
833
|
+
rank: 3
|
|
801
834
|
}
|
|
802
835
|
},
|
|
803
836
|
speed: {
|
|
@@ -810,7 +843,7 @@ const MODELS = {
|
|
|
810
843
|
quality: "frontier",
|
|
811
844
|
speed: "very_slow"
|
|
812
845
|
},
|
|
813
|
-
useCase: "
|
|
846
|
+
useCase: "Established frontier generation and transparent PNGs"
|
|
814
847
|
},
|
|
815
848
|
customImageSize: {
|
|
816
849
|
maxEdge: 3840,
|
|
@@ -861,14 +894,14 @@ const MODELS = {
|
|
|
861
894
|
benchmark: {
|
|
862
895
|
artificialAnalysis: {
|
|
863
896
|
editing: {
|
|
864
|
-
elo:
|
|
865
|
-
rank:
|
|
897
|
+
elo: 1103,
|
|
898
|
+
rank: 12
|
|
866
899
|
},
|
|
867
900
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
868
901
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
869
902
|
textToImage: {
|
|
870
|
-
elo:
|
|
871
|
-
rank:
|
|
903
|
+
elo: 1107,
|
|
904
|
+
rank: 8
|
|
872
905
|
}
|
|
873
906
|
},
|
|
874
907
|
speed: {
|
|
@@ -881,7 +914,7 @@ const MODELS = {
|
|
|
881
914
|
quality: "frontier",
|
|
882
915
|
speed: "slow"
|
|
883
916
|
},
|
|
884
|
-
useCase: "
|
|
917
|
+
useCase: "Established OpenAI editor with transparent PNG support"
|
|
885
918
|
},
|
|
886
919
|
editEndpoint: "fal-ai/gpt-image-1.5/edit",
|
|
887
920
|
endpoint: "fal-ai/gpt-image-1.5",
|
|
@@ -914,18 +947,103 @@ const MODELS = {
|
|
|
914
947
|
supportsSyncMode: true,
|
|
915
948
|
type: "generation"
|
|
916
949
|
},
|
|
917
|
-
|
|
950
|
+
banana21: {
|
|
951
|
+
benchmark: { useCase: "Efficient generation and reference editing; Arena #5 generation / #6 editing, preliminary 2026-10-06" },
|
|
952
|
+
editEndpoint: "google/nano-banana-2.1/edit",
|
|
953
|
+
endpoint: "google/nano-banana-2.1",
|
|
954
|
+
maxReferenceImages: 14,
|
|
955
|
+
name: "Nano Banana 2.1",
|
|
956
|
+
pricePerImageUsd: null,
|
|
957
|
+
pricing: "Token-based: input $1.764/M, text/thinking output $8.823/M, image output $35.294/M; ~ $0.040 / $0.059 / $0.134 at 1K / 2K / 4K plus variable usage",
|
|
958
|
+
sizeMode: "aspect_ratio",
|
|
959
|
+
supportedAspects: [
|
|
960
|
+
"auto",
|
|
961
|
+
"21:9",
|
|
962
|
+
"16:9",
|
|
963
|
+
"3:2",
|
|
964
|
+
"4:3",
|
|
965
|
+
"5:4",
|
|
966
|
+
"1:1",
|
|
967
|
+
"4:5",
|
|
968
|
+
"3:4",
|
|
969
|
+
"2:3",
|
|
970
|
+
"9:16",
|
|
971
|
+
"4:1",
|
|
972
|
+
"1:4",
|
|
973
|
+
"8:1",
|
|
974
|
+
"1:8"
|
|
975
|
+
],
|
|
976
|
+
supportedResolutions: [
|
|
977
|
+
"1K",
|
|
978
|
+
"2K",
|
|
979
|
+
"4K"
|
|
980
|
+
],
|
|
981
|
+
supportsAspect: true,
|
|
982
|
+
supportsEdit: true,
|
|
983
|
+
supportsLimitGenerations: true,
|
|
984
|
+
supportsNumImages: true,
|
|
985
|
+
supportsOutputFormat: true,
|
|
986
|
+
supportsResolution: true,
|
|
987
|
+
supportsSafetyTolerance: true,
|
|
988
|
+
supportsSeed: true,
|
|
989
|
+
supportsSyncMode: true,
|
|
990
|
+
supportsThinkingLevel: true,
|
|
991
|
+
supportsWebSearch: true,
|
|
992
|
+
type: "generation"
|
|
993
|
+
},
|
|
994
|
+
"mai-image-2.5": {
|
|
918
995
|
benchmark: {
|
|
919
996
|
artificialAnalysis: {
|
|
920
997
|
editing: {
|
|
921
|
-
elo:
|
|
998
|
+
elo: 1114,
|
|
922
999
|
rank: 7
|
|
923
1000
|
},
|
|
924
1001
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
925
1002
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
926
1003
|
textToImage: {
|
|
927
|
-
elo:
|
|
928
|
-
rank:
|
|
1004
|
+
elo: 1104,
|
|
1005
|
+
rank: 10
|
|
1006
|
+
}
|
|
1007
|
+
},
|
|
1008
|
+
useCase: "Strong single-reference editing at a lower price than MAI 2.5 Pro"
|
|
1009
|
+
},
|
|
1010
|
+
editEndpoint: "microsoft/mai-image-2.5/edit",
|
|
1011
|
+
endpoint: "microsoft/mai-image-2.5",
|
|
1012
|
+
maxReferenceImages: 1,
|
|
1013
|
+
name: "MAI Image 2.5",
|
|
1014
|
+
pricePerImageUsd: null,
|
|
1015
|
+
pricing: "Token-based: text input $5/M, image input $8/M; ~$0.05 image output plus input",
|
|
1016
|
+
sizeMode: "aspect_ratio",
|
|
1017
|
+
supportedAspects: [
|
|
1018
|
+
"auto",
|
|
1019
|
+
"1:1",
|
|
1020
|
+
"4:3",
|
|
1021
|
+
"3:4",
|
|
1022
|
+
"16:9",
|
|
1023
|
+
"9:16",
|
|
1024
|
+
"3:2",
|
|
1025
|
+
"2:3"
|
|
1026
|
+
],
|
|
1027
|
+
supportsAspect: true,
|
|
1028
|
+
supportsEdit: true,
|
|
1029
|
+
supportsNumImages: true,
|
|
1030
|
+
supportsOutputFormat: true,
|
|
1031
|
+
supportsResolution: false,
|
|
1032
|
+
supportsSyncMode: true,
|
|
1033
|
+
type: "generation"
|
|
1034
|
+
},
|
|
1035
|
+
banana2: {
|
|
1036
|
+
benchmark: {
|
|
1037
|
+
artificialAnalysis: {
|
|
1038
|
+
editing: {
|
|
1039
|
+
elo: 1110,
|
|
1040
|
+
rank: 9
|
|
1041
|
+
},
|
|
1042
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1043
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1044
|
+
textToImage: {
|
|
1045
|
+
elo: 1126,
|
|
1046
|
+
rank: 6
|
|
929
1047
|
}
|
|
930
1048
|
},
|
|
931
1049
|
tiers: {
|
|
@@ -933,7 +1051,7 @@ const MODELS = {
|
|
|
933
1051
|
quality: "frontier",
|
|
934
1052
|
speed: "unknown"
|
|
935
1053
|
},
|
|
936
|
-
useCase: "
|
|
1054
|
+
useCase: "Previous-generation Gemini workhorse; retains 0.5K output"
|
|
937
1055
|
},
|
|
938
1056
|
editEndpoint: "fal-ai/nano-banana-2/edit",
|
|
939
1057
|
endpoint: "fal-ai/nano-banana-2",
|
|
@@ -969,14 +1087,14 @@ const MODELS = {
|
|
|
969
1087
|
benchmark: {
|
|
970
1088
|
artificialAnalysis: {
|
|
971
1089
|
editing: {
|
|
972
|
-
elo:
|
|
973
|
-
rank:
|
|
1090
|
+
elo: 1101,
|
|
1091
|
+
rank: 13
|
|
974
1092
|
},
|
|
975
1093
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
976
1094
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
977
1095
|
textToImage: {
|
|
978
|
-
elo:
|
|
979
|
-
rank:
|
|
1096
|
+
elo: 1102,
|
|
1097
|
+
rank: 11
|
|
980
1098
|
}
|
|
981
1099
|
},
|
|
982
1100
|
speed: {
|
|
@@ -1041,11 +1159,15 @@ const MODELS = {
|
|
|
1041
1159
|
gemini: {
|
|
1042
1160
|
benchmark: { artificialAnalysis: {
|
|
1043
1161
|
editing: {
|
|
1044
|
-
elo:
|
|
1045
|
-
rank:
|
|
1162
|
+
elo: 987,
|
|
1163
|
+
rank: 50
|
|
1046
1164
|
},
|
|
1047
1165
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1048
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
1166
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1167
|
+
textToImage: {
|
|
1168
|
+
elo: 985,
|
|
1169
|
+
rank: 60
|
|
1170
|
+
}
|
|
1049
1171
|
} },
|
|
1050
1172
|
editEndpoint: "fal-ai/gemini-25-flash-image/edit",
|
|
1051
1173
|
endpoint: "fal-ai/gemini-25-flash-image",
|
|
@@ -1086,18 +1208,6 @@ const MODELS = {
|
|
|
1086
1208
|
type: "generation"
|
|
1087
1209
|
},
|
|
1088
1210
|
gemini3: {
|
|
1089
|
-
benchmark: { artificialAnalysis: {
|
|
1090
|
-
editing: {
|
|
1091
|
-
elo: 1245,
|
|
1092
|
-
rank: 9
|
|
1093
|
-
},
|
|
1094
|
-
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1095
|
-
sourceUrls: AA_IMAGE_SOURCES,
|
|
1096
|
-
textToImage: {
|
|
1097
|
-
elo: 1297,
|
|
1098
|
-
rank: 6
|
|
1099
|
-
}
|
|
1100
|
-
} },
|
|
1101
1211
|
editEndpoint: "fal-ai/gemini-3-pro-image-preview/edit",
|
|
1102
1212
|
endpoint: "fal-ai/gemini-3-pro-image-preview",
|
|
1103
1213
|
falPricing: {
|
|
@@ -1147,14 +1257,14 @@ const MODELS = {
|
|
|
1147
1257
|
benchmark: {
|
|
1148
1258
|
artificialAnalysis: {
|
|
1149
1259
|
editing: {
|
|
1150
|
-
elo:
|
|
1151
|
-
rank:
|
|
1260
|
+
elo: 1015,
|
|
1261
|
+
rank: 36
|
|
1152
1262
|
},
|
|
1153
1263
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1154
1264
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1155
1265
|
textToImage: {
|
|
1156
|
-
elo:
|
|
1157
|
-
rank:
|
|
1266
|
+
elo: 1030,
|
|
1267
|
+
rank: 21
|
|
1158
1268
|
}
|
|
1159
1269
|
},
|
|
1160
1270
|
speed: {
|
|
@@ -1167,7 +1277,7 @@ const MODELS = {
|
|
|
1167
1277
|
quality: "best",
|
|
1168
1278
|
speed: "balanced"
|
|
1169
1279
|
},
|
|
1170
|
-
useCase: "
|
|
1280
|
+
useCase: "Legacy budget generation and large multi-reference edits"
|
|
1171
1281
|
},
|
|
1172
1282
|
customImageSize: {
|
|
1173
1283
|
maxPixels: 16777216,
|
|
@@ -1201,14 +1311,14 @@ const MODELS = {
|
|
|
1201
1311
|
benchmark: {
|
|
1202
1312
|
artificialAnalysis: {
|
|
1203
1313
|
editing: {
|
|
1204
|
-
elo:
|
|
1205
|
-
rank:
|
|
1314
|
+
elo: 1037,
|
|
1315
|
+
rank: 32
|
|
1206
1316
|
},
|
|
1207
1317
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1208
1318
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1209
1319
|
textToImage: {
|
|
1210
|
-
elo:
|
|
1211
|
-
rank:
|
|
1320
|
+
elo: 1022,
|
|
1321
|
+
rank: 26
|
|
1212
1322
|
}
|
|
1213
1323
|
},
|
|
1214
1324
|
speed: {
|
|
@@ -1254,14 +1364,14 @@ const MODELS = {
|
|
|
1254
1364
|
seedream5: {
|
|
1255
1365
|
benchmark: { artificialAnalysis: {
|
|
1256
1366
|
editing: {
|
|
1257
|
-
elo:
|
|
1258
|
-
rank:
|
|
1367
|
+
elo: 1108,
|
|
1368
|
+
rank: 11
|
|
1259
1369
|
},
|
|
1260
1370
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1261
1371
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1262
1372
|
textToImage: {
|
|
1263
|
-
elo:
|
|
1264
|
-
rank:
|
|
1373
|
+
elo: 1081,
|
|
1374
|
+
rank: 15
|
|
1265
1375
|
}
|
|
1266
1376
|
} },
|
|
1267
1377
|
customImageSize: {
|
|
@@ -1296,11 +1406,15 @@ const MODELS = {
|
|
|
1296
1406
|
"seedream5-lite": {
|
|
1297
1407
|
benchmark: { artificialAnalysis: {
|
|
1298
1408
|
editing: {
|
|
1299
|
-
elo:
|
|
1300
|
-
rank:
|
|
1409
|
+
elo: 1057,
|
|
1410
|
+
rank: 24
|
|
1301
1411
|
},
|
|
1302
1412
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1303
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
1413
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1414
|
+
textToImage: {
|
|
1415
|
+
elo: 1012,
|
|
1416
|
+
rank: 36
|
|
1417
|
+
}
|
|
1304
1418
|
} },
|
|
1305
1419
|
customImageSize: {
|
|
1306
1420
|
maxPixels: 16777216,
|
|
@@ -1334,14 +1448,14 @@ const MODELS = {
|
|
|
1334
1448
|
benchmark: {
|
|
1335
1449
|
artificialAnalysis: {
|
|
1336
1450
|
editing: {
|
|
1337
|
-
elo:
|
|
1338
|
-
rank:
|
|
1451
|
+
elo: 997,
|
|
1452
|
+
rank: 49
|
|
1339
1453
|
},
|
|
1340
1454
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1341
1455
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1342
1456
|
textToImage: {
|
|
1343
|
-
elo:
|
|
1344
|
-
rank:
|
|
1457
|
+
elo: 1020,
|
|
1458
|
+
rank: 28
|
|
1345
1459
|
}
|
|
1346
1460
|
},
|
|
1347
1461
|
speed: {
|
|
@@ -1393,14 +1507,14 @@ const MODELS = {
|
|
|
1393
1507
|
benchmark: {
|
|
1394
1508
|
artificialAnalysis: {
|
|
1395
1509
|
editing: {
|
|
1396
|
-
elo:
|
|
1397
|
-
rank:
|
|
1510
|
+
elo: 1007,
|
|
1511
|
+
rank: 41
|
|
1398
1512
|
},
|
|
1399
1513
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1400
1514
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1401
1515
|
textToImage: {
|
|
1402
|
-
elo:
|
|
1403
|
-
rank:
|
|
1516
|
+
elo: 1004,
|
|
1517
|
+
rank: 41
|
|
1404
1518
|
}
|
|
1405
1519
|
},
|
|
1406
1520
|
speed: {
|
|
@@ -1451,11 +1565,15 @@ const MODELS = {
|
|
|
1451
1565
|
"flux2-flex": {
|
|
1452
1566
|
benchmark: {
|
|
1453
1567
|
artificialAnalysis: {
|
|
1568
|
+
editing: {
|
|
1569
|
+
elo: 1007,
|
|
1570
|
+
rank: 42
|
|
1571
|
+
},
|
|
1454
1572
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1455
1573
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1456
1574
|
textToImage: {
|
|
1457
|
-
elo:
|
|
1458
|
-
rank:
|
|
1575
|
+
elo: 1027,
|
|
1576
|
+
rank: 22
|
|
1459
1577
|
}
|
|
1460
1578
|
},
|
|
1461
1579
|
speed: {
|
|
@@ -1509,8 +1627,16 @@ const MODELS = {
|
|
|
1509
1627
|
"flux2-dev": {
|
|
1510
1628
|
benchmark: {
|
|
1511
1629
|
artificialAnalysis: {
|
|
1630
|
+
editing: {
|
|
1631
|
+
elo: 1e3,
|
|
1632
|
+
rank: 45
|
|
1633
|
+
},
|
|
1512
1634
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1513
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
1635
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1636
|
+
textToImage: {
|
|
1637
|
+
elo: 1e3,
|
|
1638
|
+
rank: 42
|
|
1639
|
+
}
|
|
1514
1640
|
},
|
|
1515
1641
|
speed: {
|
|
1516
1642
|
medianSeconds: 4.6,
|
|
@@ -1673,24 +1799,12 @@ const MODELS = {
|
|
|
1673
1799
|
},
|
|
1674
1800
|
reve: {
|
|
1675
1801
|
benchmark: {
|
|
1676
|
-
artificialAnalysis: {
|
|
1677
|
-
editing: {
|
|
1678
|
-
elo: 1263,
|
|
1679
|
-
rank: 2
|
|
1680
|
-
},
|
|
1681
|
-
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1682
|
-
sourceUrls: AA_IMAGE_SOURCES,
|
|
1683
|
-
textToImage: {
|
|
1684
|
-
elo: 1322,
|
|
1685
|
-
rank: 2
|
|
1686
|
-
}
|
|
1687
|
-
},
|
|
1688
1802
|
tiers: {
|
|
1689
1803
|
price: "premium",
|
|
1690
1804
|
quality: "frontier",
|
|
1691
1805
|
speed: "unknown"
|
|
1692
1806
|
},
|
|
1693
|
-
useCase: "
|
|
1807
|
+
useCase: "Historical Reve route; not currently verified on fal"
|
|
1694
1808
|
},
|
|
1695
1809
|
editEndpoint: "fal-ai/reve/edit",
|
|
1696
1810
|
endpoint: "fal-ai/reve/text-to-image",
|
|
@@ -1731,8 +1845,8 @@ const MODELS = {
|
|
|
1731
1845
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1732
1846
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1733
1847
|
textToImage: {
|
|
1734
|
-
elo:
|
|
1735
|
-
rank:
|
|
1848
|
+
elo: 984,
|
|
1849
|
+
rank: 62
|
|
1736
1850
|
}
|
|
1737
1851
|
} },
|
|
1738
1852
|
customImageSize: {},
|
|
@@ -1790,8 +1904,8 @@ const MODELS = {
|
|
|
1790
1904
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1791
1905
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1792
1906
|
textToImage: {
|
|
1793
|
-
elo:
|
|
1794
|
-
rank:
|
|
1907
|
+
elo: 1004,
|
|
1908
|
+
rank: 40
|
|
1795
1909
|
}
|
|
1796
1910
|
} },
|
|
1797
1911
|
customImageSize: {
|
|
@@ -1829,14 +1943,14 @@ const MODELS = {
|
|
|
1829
1943
|
benchmark: {
|
|
1830
1944
|
artificialAnalysis: {
|
|
1831
1945
|
editing: {
|
|
1832
|
-
elo:
|
|
1833
|
-
rank:
|
|
1946
|
+
elo: 1073,
|
|
1947
|
+
rank: 19
|
|
1834
1948
|
},
|
|
1835
1949
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1836
1950
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1837
1951
|
textToImage: {
|
|
1838
|
-
elo:
|
|
1839
|
-
rank:
|
|
1952
|
+
elo: 1019,
|
|
1953
|
+
rank: 30
|
|
1840
1954
|
}
|
|
1841
1955
|
},
|
|
1842
1956
|
speed: {
|
|
@@ -1889,7 +2003,11 @@ const MODELS = {
|
|
|
1889
2003
|
benchmark: {
|
|
1890
2004
|
artificialAnalysis: {
|
|
1891
2005
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1892
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
2006
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
2007
|
+
textToImage: {
|
|
2008
|
+
elo: 890,
|
|
2009
|
+
rank: 106
|
|
2010
|
+
}
|
|
1893
2011
|
},
|
|
1894
2012
|
speed: {
|
|
1895
2013
|
medianSeconds: 23.3,
|
|
@@ -1931,14 +2049,14 @@ const MODELS = {
|
|
|
1931
2049
|
benchmark: {
|
|
1932
2050
|
artificialAnalysis: {
|
|
1933
2051
|
editing: {
|
|
1934
|
-
elo:
|
|
1935
|
-
rank:
|
|
2052
|
+
elo: 1056,
|
|
2053
|
+
rank: 25
|
|
1936
2054
|
},
|
|
1937
2055
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1938
2056
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1939
2057
|
textToImage: {
|
|
1940
|
-
elo:
|
|
1941
|
-
rank:
|
|
2058
|
+
elo: 1075,
|
|
2059
|
+
rank: 16
|
|
1942
2060
|
}
|
|
1943
2061
|
},
|
|
1944
2062
|
tiers: {
|
|
@@ -1946,12 +2064,13 @@ const MODELS = {
|
|
|
1946
2064
|
quality: "better",
|
|
1947
2065
|
speed: "unknown"
|
|
1948
2066
|
},
|
|
1949
|
-
useCase: "Strong
|
|
2067
|
+
useCase: "Strong generation with negative-prompt and seed controls"
|
|
1950
2068
|
},
|
|
1951
2069
|
customImageSize: {
|
|
1952
2070
|
maxPixels: 4194304,
|
|
1953
2071
|
minPixels: 262144
|
|
1954
2072
|
},
|
|
2073
|
+
editEndpoint: "alibaba/qwen-image-3/edit",
|
|
1955
2074
|
endpoint: "alibaba/qwen-image-3/text-to-image",
|
|
1956
2075
|
falPricing: {
|
|
1957
2076
|
checkedAt: FAL_PRICING_CHECKED_SEP_2026,
|
|
@@ -1962,12 +2081,13 @@ const MODELS = {
|
|
|
1962
2081
|
unit: "images",
|
|
1963
2082
|
unitPrice: .04
|
|
1964
2083
|
},
|
|
2084
|
+
maxReferenceImages: 3,
|
|
1965
2085
|
name: "Qwen Image 3",
|
|
1966
2086
|
pricePerImageUsd: .04,
|
|
1967
2087
|
pricing: "$0.04 (1K) / $0.075 (2K)",
|
|
1968
2088
|
sizeMode: "image_size_enum",
|
|
1969
2089
|
supportsAspect: true,
|
|
1970
|
-
supportsEdit:
|
|
2090
|
+
supportsEdit: true,
|
|
1971
2091
|
supportsNegativePrompt: true,
|
|
1972
2092
|
supportsNumImages: true,
|
|
1973
2093
|
supportsOutputFormat: true,
|
|
@@ -1980,17 +2100,17 @@ const MODELS = {
|
|
|
1980
2100
|
benchmark: {
|
|
1981
2101
|
artificialAnalysis: {
|
|
1982
2102
|
editing: {
|
|
1983
|
-
elo:
|
|
1984
|
-
rank:
|
|
2103
|
+
elo: 1110,
|
|
2104
|
+
rank: 10
|
|
1985
2105
|
},
|
|
1986
2106
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1987
2107
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1988
2108
|
textToImage: {
|
|
1989
|
-
elo:
|
|
1990
|
-
rank:
|
|
2109
|
+
elo: 1100,
|
|
2110
|
+
rank: 12
|
|
1991
2111
|
}
|
|
1992
2112
|
},
|
|
1993
|
-
useCase: "
|
|
2113
|
+
useCase: "Strong single-reference editor; MAI 2.5 ranks higher on the current editing board"
|
|
1994
2114
|
},
|
|
1995
2115
|
editEndpoint: "microsoft/mai-image-2.5-pro/edit",
|
|
1996
2116
|
editImagesField: "image_url",
|
|
@@ -2029,20 +2149,26 @@ const MODELS = {
|
|
|
2029
2149
|
},
|
|
2030
2150
|
"banana2-lite": {
|
|
2031
2151
|
benchmark: { artificialAnalysis: {
|
|
2152
|
+
editing: {
|
|
2153
|
+
elo: 1046,
|
|
2154
|
+
rank: 26
|
|
2155
|
+
},
|
|
2032
2156
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
2033
2157
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
2034
2158
|
textToImage: {
|
|
2035
|
-
elo:
|
|
2036
|
-
rank:
|
|
2159
|
+
elo: 1095,
|
|
2160
|
+
rank: 13
|
|
2037
2161
|
}
|
|
2038
2162
|
} },
|
|
2163
|
+
editEndpoint: "google/nano-banana-2-lite/edit",
|
|
2164
|
+
maxReferenceImages: 14,
|
|
2039
2165
|
endpoint: "google/nano-banana-2-lite",
|
|
2040
2166
|
name: "Nano Banana 2 Lite",
|
|
2041
|
-
pricing: "Token-based: text $0.3125/M input, $1.875/M output; image $0.3125/M input, $37.50/M output; fixed 1K output (~$0.
|
|
2042
|
-
pricePerImageUsd:
|
|
2167
|
+
pricing: "Token-based: text $0.3125/M input, $1.875/M output; image $0.3125/M input, $37.50/M output; fixed 1K output (~$0.042 image output, plus input/thinking)",
|
|
2168
|
+
pricePerImageUsd: null,
|
|
2043
2169
|
sizeMode: "aspect_ratio",
|
|
2044
2170
|
supportsAspect: true,
|
|
2045
|
-
supportsEdit:
|
|
2171
|
+
supportsEdit: true,
|
|
2046
2172
|
supportsLimitGenerations: true,
|
|
2047
2173
|
supportsNumImages: true,
|
|
2048
2174
|
supportsOutputFormat: true,
|
|
@@ -2115,6 +2241,21 @@ const MODELS = {
|
|
|
2115
2241
|
type: "generation"
|
|
2116
2242
|
},
|
|
2117
2243
|
"grok-image-2": {
|
|
2244
|
+
benchmark: {
|
|
2245
|
+
artificialAnalysis: {
|
|
2246
|
+
editing: {
|
|
2247
|
+
elo: 1110,
|
|
2248
|
+
rank: 8
|
|
2249
|
+
},
|
|
2250
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
2251
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
2252
|
+
textToImage: {
|
|
2253
|
+
elo: 1156,
|
|
2254
|
+
rank: 4
|
|
2255
|
+
}
|
|
2256
|
+
},
|
|
2257
|
+
useCase: "Strong generation and editing with predictable per-image billing"
|
|
2258
|
+
},
|
|
2118
2259
|
editEndpoint: "xai/grok-imagine-image/v2.0/edit",
|
|
2119
2260
|
endpoint: "xai/grok-imagine-image/v2.0/text-to-image",
|
|
2120
2261
|
falPricing: {
|
|
@@ -2149,6 +2290,120 @@ const MODELS = {
|
|
|
2149
2290
|
supportsSyncMode: true,
|
|
2150
2291
|
type: "generation"
|
|
2151
2292
|
},
|
|
2293
|
+
"muse-image": {
|
|
2294
|
+
benchmark: { useCase: "Low-cost generation and multi-reference editing; Arena #8 generation / #10 editing, 2026-10-29" },
|
|
2295
|
+
editEndpoint: "meta/muse-image/edit",
|
|
2296
|
+
endpoint: "meta/muse-image/text-to-image",
|
|
2297
|
+
falPricing: {
|
|
2298
|
+
checkedAt: FAL_PRICING_CHECKED_OCT_2026,
|
|
2299
|
+
currency: "USD",
|
|
2300
|
+
endpointId: "meta/muse-image/text-to-image",
|
|
2301
|
+
estimatedCostPerImageUsd: .01,
|
|
2302
|
+
source: "fal-pricing-api",
|
|
2303
|
+
unit: "images",
|
|
2304
|
+
unitPrice: .01
|
|
2305
|
+
},
|
|
2306
|
+
maxReferenceImages: 10,
|
|
2307
|
+
name: "Meta Muse Image",
|
|
2308
|
+
pricePerImageUsd: .01,
|
|
2309
|
+
pricing: "$0.01",
|
|
2310
|
+
sizeMode: "aspect_ratio",
|
|
2311
|
+
supportedAspects: [
|
|
2312
|
+
"1:1",
|
|
2313
|
+
"4:3",
|
|
2314
|
+
"3:4",
|
|
2315
|
+
"16:9",
|
|
2316
|
+
"9:16",
|
|
2317
|
+
"3:2",
|
|
2318
|
+
"2:3",
|
|
2319
|
+
"4:5",
|
|
2320
|
+
"5:4",
|
|
2321
|
+
"21:9",
|
|
2322
|
+
"4:1",
|
|
2323
|
+
"1:4",
|
|
2324
|
+
"8:1",
|
|
2325
|
+
"1:8"
|
|
2326
|
+
],
|
|
2327
|
+
supportsAspect: true,
|
|
2328
|
+
supportsEdit: true,
|
|
2329
|
+
supportsNumImages: true,
|
|
2330
|
+
supportsOutputFormat: true,
|
|
2331
|
+
supportsResolution: false,
|
|
2332
|
+
supportsSyncMode: true,
|
|
2333
|
+
type: "generation"
|
|
2334
|
+
},
|
|
2335
|
+
krea3: {
|
|
2336
|
+
benchmark: { useCase: "Reference editing with prompt planning. Motif sends fal's defaults (berry, medium reasoning), which Arena has not scored; Arena's 1411 editing score (2026-10-29) is for Ultra, available with --param reasoning_level=ultra" },
|
|
2337
|
+
customImageSize: {
|
|
2338
|
+
maxEdge: 3200,
|
|
2339
|
+
maxPixels: 4220160,
|
|
2340
|
+
minEdge: 256,
|
|
2341
|
+
multipleOf: 16
|
|
2342
|
+
},
|
|
2343
|
+
editEndpoint: "krea/v3/edit",
|
|
2344
|
+
endpoint: "krea/v3/text-to-image",
|
|
2345
|
+
falPricing: {
|
|
2346
|
+
checkedAt: FAL_PRICING_CHECKED_OCT_2026,
|
|
2347
|
+
currency: "USD",
|
|
2348
|
+
endpointId: "krea/v3/text-to-image",
|
|
2349
|
+
estimatedCostPerImageUsd: .025,
|
|
2350
|
+
source: "fal-pricing-api",
|
|
2351
|
+
unit: "megapixels",
|
|
2352
|
+
unitPrice: .025
|
|
2353
|
+
},
|
|
2354
|
+
maxReferenceImages: 8,
|
|
2355
|
+
name: "Krea 3",
|
|
2356
|
+
pricePerImageUsd: .025,
|
|
2357
|
+
pricing: "$0.025/MP (edits also bill each reference)",
|
|
2358
|
+
sizeMode: "image_size_enum",
|
|
2359
|
+
supportedOutputFormats: ["png", "jpeg"],
|
|
2360
|
+
supportsAspect: true,
|
|
2361
|
+
supportsEdit: true,
|
|
2362
|
+
supportsNegativePrompt: true,
|
|
2363
|
+
supportsNumImages: false,
|
|
2364
|
+
supportsOutputFormat: true,
|
|
2365
|
+
supportsResolution: false,
|
|
2366
|
+
supportsSafetyChecker: true,
|
|
2367
|
+
supportsSeed: true,
|
|
2368
|
+
supportsSyncMode: true,
|
|
2369
|
+
type: "generation"
|
|
2370
|
+
},
|
|
2371
|
+
"grok-image-quality": {
|
|
2372
|
+
benchmark: { useCase: "Detailed generation and editing with stronger text rendering; Arena #11 editing, 2026-10-29" },
|
|
2373
|
+
editEndpoint: "xai/grok-imagine-image/quality/edit",
|
|
2374
|
+
endpoint: "xai/grok-imagine-image/quality/text-to-image",
|
|
2375
|
+
falPricing: {
|
|
2376
|
+
checkedAt: FAL_PRICING_CHECKED_OCT_2026,
|
|
2377
|
+
currency: "USD",
|
|
2378
|
+
endpointId: "xai/grok-imagine-image/quality/text-to-image",
|
|
2379
|
+
estimatedCostPerImageUsd: .05,
|
|
2380
|
+
source: "fal-pricing-api",
|
|
2381
|
+
unit: "images",
|
|
2382
|
+
unitPrice: .05
|
|
2383
|
+
},
|
|
2384
|
+
maxReferenceImages: 3,
|
|
2385
|
+
name: "Grok Imagine Image Quality",
|
|
2386
|
+
pricePerImageUsd: .05,
|
|
2387
|
+
pricing: "$0.05 (1K) / $0.07 (2K)",
|
|
2388
|
+
sizeMode: "aspect_ratio",
|
|
2389
|
+
supportedAspects: [
|
|
2390
|
+
"16:9",
|
|
2391
|
+
"4:3",
|
|
2392
|
+
"3:2",
|
|
2393
|
+
"1:1",
|
|
2394
|
+
"2:3",
|
|
2395
|
+
"3:4",
|
|
2396
|
+
"9:16"
|
|
2397
|
+
],
|
|
2398
|
+
supportedResolutions: ["1K", "2K"],
|
|
2399
|
+
supportsAspect: true,
|
|
2400
|
+
supportsEdit: true,
|
|
2401
|
+
supportsNumImages: true,
|
|
2402
|
+
supportsOutputFormat: true,
|
|
2403
|
+
supportsResolution: true,
|
|
2404
|
+
supportsSyncMode: true,
|
|
2405
|
+
type: "generation"
|
|
2406
|
+
},
|
|
2152
2407
|
kling: {
|
|
2153
2408
|
endpoint: "fal-ai/kling-video/v3/pro/image-to-video",
|
|
2154
2409
|
name: "Kling v3 Pro",
|
|
@@ -2212,38 +2467,47 @@ const MODELS = {
|
|
|
2212
2467
|
type: "utility"
|
|
2213
2468
|
}
|
|
2214
2469
|
};
|
|
2470
|
+
/** Curated generation choices; predecessor routes are explicit-only. */
|
|
2215
2471
|
const GENERATION_MODELS = [
|
|
2216
|
-
"flare",
|
|
2217
2472
|
"sunburst",
|
|
2473
|
+
"flare",
|
|
2218
2474
|
"gpt2",
|
|
2219
2475
|
"gpt",
|
|
2476
|
+
"banana21",
|
|
2220
2477
|
"banana2",
|
|
2221
2478
|
"banana",
|
|
2479
|
+
"mai-image-2.5",
|
|
2480
|
+
"mai-image-2.5-pro",
|
|
2481
|
+
"seedream5",
|
|
2482
|
+
"qwen3",
|
|
2483
|
+
"banana2-lite",
|
|
2484
|
+
"grok-image-2",
|
|
2485
|
+
"grok-image-quality",
|
|
2486
|
+
"grok-image",
|
|
2487
|
+
"muse-image",
|
|
2488
|
+
"krea3",
|
|
2489
|
+
"flux2-flex",
|
|
2490
|
+
"flux2-pro",
|
|
2491
|
+
"flux2-turbo",
|
|
2492
|
+
"seedream5-lite",
|
|
2493
|
+
"ideogram4",
|
|
2494
|
+
"ideogram3-transparent",
|
|
2495
|
+
"recraft41"
|
|
2496
|
+
];
|
|
2497
|
+
/** Retained for old pins, explicit overrides and tuned Looks, never auto-selected. */
|
|
2498
|
+
const LEGACY_GENERATION_MODELS = [
|
|
2222
2499
|
"gemini",
|
|
2223
2500
|
"gemini3",
|
|
2224
2501
|
"seedream4",
|
|
2225
2502
|
"seedream45",
|
|
2226
|
-
"seedream5",
|
|
2227
|
-
"seedream5-lite",
|
|
2228
2503
|
"flux2-max",
|
|
2229
|
-
"flux2-pro",
|
|
2230
|
-
"flux2-flex",
|
|
2231
2504
|
"flux2-dev",
|
|
2232
|
-
"flux2-turbo",
|
|
2233
2505
|
"flux",
|
|
2234
2506
|
"flux-fast",
|
|
2235
2507
|
"recraft",
|
|
2236
2508
|
"recraft4",
|
|
2237
2509
|
"ideogram",
|
|
2238
|
-
"
|
|
2239
|
-
"grok-image",
|
|
2240
|
-
"grok-image-2",
|
|
2241
|
-
"qwen",
|
|
2242
|
-
"qwen3",
|
|
2243
|
-
"mai-image-2.5-pro",
|
|
2244
|
-
"banana2-lite",
|
|
2245
|
-
"ideogram3-transparent",
|
|
2246
|
-
"recraft41"
|
|
2510
|
+
"qwen"
|
|
2247
2511
|
];
|
|
2248
2512
|
GENERATION_MODELS.filter((id) => MODELS[id]?.supportsEdit === true);
|
|
2249
2513
|
const UTILITY_MODELS = [
|
|
@@ -2263,6 +2527,7 @@ function estimateCost(model, resolution, numImages = 1, editImages = 0) {
|
|
|
2263
2527
|
if (configuredPrice === null) return null;
|
|
2264
2528
|
if (model === "mai-image-2.5-pro" && editImages > 0) return .27 * numImages;
|
|
2265
2529
|
if (model === "grok-image-2" && editImages > 0) return (resolution === "2K" || resolution === "4K" ? .08 : .06) * numImages + .01 * editImages;
|
|
2530
|
+
if (model === "grok-image-quality") return (resolution === "2K" || resolution === "4K" ? .07 : .05) * numImages + .01 * editImages;
|
|
2266
2531
|
if (configuredPrice !== void 0) {
|
|
2267
2532
|
if ((model === "banana" || model === "gemini3") && resolution === "4K") return configuredPrice * 2 * numImages;
|
|
2268
2533
|
if (model === "seedream5" && (resolution === "2K" || resolution === "4K")) return configuredPrice * 2 * numImages;
|
|
@@ -2618,9 +2883,9 @@ function buildGenerateBody(options) {
|
|
|
2618
2883
|
break;
|
|
2619
2884
|
case "aspect_ratio":
|
|
2620
2885
|
if (config.supportsAspect) body.aspect_ratio = aspect;
|
|
2621
|
-
if (config.supportsResolution) body.resolution = model === "grok-image" || model === "grok-image-2" ? resolution.toLowerCase() : resolution;
|
|
2886
|
+
if (config.supportsResolution) body.resolution = model === "grok-image" || model === "grok-image-2" || model === "grok-image-quality" ? resolution.toLowerCase() : resolution;
|
|
2622
2887
|
}
|
|
2623
|
-
if (config.supportsQuality === true) body.quality = quality ?? "high";
|
|
2888
|
+
if (config.supportsQuality === true) body.quality = quality ?? config.defaultQuality ?? "high";
|
|
2624
2889
|
if (config.supportsBackground === true && background) body.background = background;
|
|
2625
2890
|
if (config.supportsBackground === true && transparent === true) body.background = "transparent";
|
|
2626
2891
|
if (transparent === true && config.supportsOutputFormat === true) body.output_format = "png";
|
|
@@ -5048,134 +5313,7 @@ const TIERS = [
|
|
|
5048
5313
|
];
|
|
5049
5314
|
const DEFAULT_TIER = "balanced";
|
|
5050
5315
|
const HAND_RANKED_AT = "2026-09-16";
|
|
5051
|
-
const
|
|
5052
|
-
{
|
|
5053
|
-
model: "gpt2",
|
|
5054
|
-
tier: "quality"
|
|
5055
|
-
},
|
|
5056
|
-
{
|
|
5057
|
-
model: "banana2",
|
|
5058
|
-
tier: "quality"
|
|
5059
|
-
},
|
|
5060
|
-
{
|
|
5061
|
-
model: "gpt",
|
|
5062
|
-
tier: "quality"
|
|
5063
|
-
},
|
|
5064
|
-
{
|
|
5065
|
-
model: "sunburst",
|
|
5066
|
-
tier: "quality"
|
|
5067
|
-
},
|
|
5068
|
-
{
|
|
5069
|
-
model: "gemini3",
|
|
5070
|
-
tier: "quality"
|
|
5071
|
-
},
|
|
5072
|
-
{
|
|
5073
|
-
model: "mai-image-2.5-pro",
|
|
5074
|
-
tier: "quality"
|
|
5075
|
-
},
|
|
5076
|
-
{
|
|
5077
|
-
model: "seedream5",
|
|
5078
|
-
tier: "quality"
|
|
5079
|
-
},
|
|
5080
|
-
{
|
|
5081
|
-
model: "flux2-max",
|
|
5082
|
-
tier: "quality"
|
|
5083
|
-
},
|
|
5084
|
-
{
|
|
5085
|
-
model: "banana",
|
|
5086
|
-
tier: "balanced"
|
|
5087
|
-
},
|
|
5088
|
-
{
|
|
5089
|
-
model: "ideogram3-transparent",
|
|
5090
|
-
requires: ["transparency"],
|
|
5091
|
-
supports: ["transparency"],
|
|
5092
|
-
tier: "balanced"
|
|
5093
|
-
},
|
|
5094
|
-
{
|
|
5095
|
-
model: "flare",
|
|
5096
|
-
tier: "balanced"
|
|
5097
|
-
},
|
|
5098
|
-
{
|
|
5099
|
-
model: "banana2-lite",
|
|
5100
|
-
tier: "balanced"
|
|
5101
|
-
},
|
|
5102
|
-
{
|
|
5103
|
-
model: "qwen3",
|
|
5104
|
-
tier: "balanced"
|
|
5105
|
-
},
|
|
5106
|
-
{
|
|
5107
|
-
model: "seedream4",
|
|
5108
|
-
tier: "balanced"
|
|
5109
|
-
},
|
|
5110
|
-
{
|
|
5111
|
-
model: "flux2-flex",
|
|
5112
|
-
tier: "balanced"
|
|
5113
|
-
},
|
|
5114
|
-
{
|
|
5115
|
-
model: "ideogram4",
|
|
5116
|
-
tier: "balanced"
|
|
5117
|
-
},
|
|
5118
|
-
{
|
|
5119
|
-
model: "grok-image",
|
|
5120
|
-
tier: "balanced"
|
|
5121
|
-
},
|
|
5122
|
-
{
|
|
5123
|
-
model: "recraft4",
|
|
5124
|
-
tier: "balanced"
|
|
5125
|
-
},
|
|
5126
|
-
{
|
|
5127
|
-
model: "flux2-pro",
|
|
5128
|
-
tier: "balanced"
|
|
5129
|
-
},
|
|
5130
|
-
{
|
|
5131
|
-
model: "seedream45",
|
|
5132
|
-
tier: "balanced"
|
|
5133
|
-
},
|
|
5134
|
-
{
|
|
5135
|
-
model: "grok-image-2",
|
|
5136
|
-
tier: "balanced"
|
|
5137
|
-
},
|
|
5138
|
-
{
|
|
5139
|
-
model: "recraft41",
|
|
5140
|
-
tier: "balanced"
|
|
5141
|
-
},
|
|
5142
|
-
{
|
|
5143
|
-
model: "flux2-turbo",
|
|
5144
|
-
tier: "fast"
|
|
5145
|
-
},
|
|
5146
|
-
{
|
|
5147
|
-
model: "flux2-dev",
|
|
5148
|
-
tier: "fast"
|
|
5149
|
-
},
|
|
5150
|
-
{
|
|
5151
|
-
model: "flux-fast",
|
|
5152
|
-
tier: "fast"
|
|
5153
|
-
},
|
|
5154
|
-
{
|
|
5155
|
-
model: "seedream5-lite",
|
|
5156
|
-
tier: "fast"
|
|
5157
|
-
},
|
|
5158
|
-
{
|
|
5159
|
-
model: "gemini",
|
|
5160
|
-
tier: "fast"
|
|
5161
|
-
},
|
|
5162
|
-
{
|
|
5163
|
-
model: "qwen",
|
|
5164
|
-
tier: "fast"
|
|
5165
|
-
},
|
|
5166
|
-
{
|
|
5167
|
-
model: "ideogram",
|
|
5168
|
-
tier: "fast"
|
|
5169
|
-
},
|
|
5170
|
-
{
|
|
5171
|
-
model: "recraft",
|
|
5172
|
-
tier: "fast"
|
|
5173
|
-
},
|
|
5174
|
-
{
|
|
5175
|
-
model: "flux",
|
|
5176
|
-
tier: "fast"
|
|
5177
|
-
}
|
|
5178
|
-
];
|
|
5316
|
+
const IMAGE_RANKED_AT = "2026-10-29";
|
|
5179
5317
|
/** Every Task with a Model. A Task is absent here until it has at least one Model. */
|
|
5180
5318
|
const TASKS = {
|
|
5181
5319
|
animate: {
|
|
@@ -5346,10 +5484,109 @@ const TASKS = {
|
|
|
5346
5484
|
summary: "Remove an object, person, text or clutter from an image and fill the gap."
|
|
5347
5485
|
},
|
|
5348
5486
|
generate: {
|
|
5349
|
-
basis: "
|
|
5350
|
-
models:
|
|
5487
|
+
basis: "Order follows Arena text-to-image (https://arena.ai/leaderboard/image/text-to-image), read 2026-10-29 (MOT-72). Sunburst and Flare lead quality at the benchmarked max setting. Balanced starts with Nano Banana 2.1 on preliminary Arena evidence, then Grok Image 2 and Muse Image. Models not yet on the board follow the ranked ones in their Tier, in their previous order. The Artificial Analysis v2 snapshot of 2026-10-07 stays as recorded benchmark data. Fast keeps Nano Banana 2 Lite, budget Grok and Seedream 5 Lite, and FLUX.2 Turbo. Design, transparency and tuned Look routes are capability exceptions. Generation with References uses the separate editing ranking. Older routes are explicit/pin/Look-only.",
|
|
5488
|
+
models: [
|
|
5489
|
+
{
|
|
5490
|
+
model: "sunburst",
|
|
5491
|
+
tier: "quality"
|
|
5492
|
+
},
|
|
5493
|
+
{
|
|
5494
|
+
model: "flare",
|
|
5495
|
+
tier: "quality"
|
|
5496
|
+
},
|
|
5497
|
+
{
|
|
5498
|
+
model: "gpt2",
|
|
5499
|
+
tier: "quality"
|
|
5500
|
+
},
|
|
5501
|
+
{
|
|
5502
|
+
model: "seedream5",
|
|
5503
|
+
tier: "quality"
|
|
5504
|
+
},
|
|
5505
|
+
{
|
|
5506
|
+
model: "gpt",
|
|
5507
|
+
tier: "quality"
|
|
5508
|
+
},
|
|
5509
|
+
{
|
|
5510
|
+
model: "mai-image-2.5-pro",
|
|
5511
|
+
tier: "quality"
|
|
5512
|
+
},
|
|
5513
|
+
{
|
|
5514
|
+
model: "banana21",
|
|
5515
|
+
tier: "balanced"
|
|
5516
|
+
},
|
|
5517
|
+
{
|
|
5518
|
+
model: "grok-image-2",
|
|
5519
|
+
tier: "balanced"
|
|
5520
|
+
},
|
|
5521
|
+
{
|
|
5522
|
+
model: "muse-image",
|
|
5523
|
+
tier: "balanced"
|
|
5524
|
+
},
|
|
5525
|
+
{
|
|
5526
|
+
model: "banana2",
|
|
5527
|
+
tier: "balanced"
|
|
5528
|
+
},
|
|
5529
|
+
{
|
|
5530
|
+
model: "qwen3",
|
|
5531
|
+
tier: "balanced"
|
|
5532
|
+
},
|
|
5533
|
+
{
|
|
5534
|
+
model: "mai-image-2.5",
|
|
5535
|
+
tier: "balanced"
|
|
5536
|
+
},
|
|
5537
|
+
{
|
|
5538
|
+
model: "banana",
|
|
5539
|
+
tier: "balanced"
|
|
5540
|
+
},
|
|
5541
|
+
{
|
|
5542
|
+
model: "ideogram4",
|
|
5543
|
+
tier: "balanced"
|
|
5544
|
+
},
|
|
5545
|
+
{
|
|
5546
|
+
model: "flux2-flex",
|
|
5547
|
+
tier: "balanced"
|
|
5548
|
+
},
|
|
5549
|
+
{
|
|
5550
|
+
model: "recraft41",
|
|
5551
|
+
tier: "balanced"
|
|
5552
|
+
},
|
|
5553
|
+
{
|
|
5554
|
+
model: "flux2-pro",
|
|
5555
|
+
tier: "balanced"
|
|
5556
|
+
},
|
|
5557
|
+
{
|
|
5558
|
+
model: "krea3",
|
|
5559
|
+
tier: "balanced"
|
|
5560
|
+
},
|
|
5561
|
+
{
|
|
5562
|
+
model: "grok-image-quality",
|
|
5563
|
+
tier: "balanced"
|
|
5564
|
+
},
|
|
5565
|
+
{
|
|
5566
|
+
model: "ideogram3-transparent",
|
|
5567
|
+
requires: ["transparency"],
|
|
5568
|
+
supports: ["transparency"],
|
|
5569
|
+
tier: "balanced"
|
|
5570
|
+
},
|
|
5571
|
+
{
|
|
5572
|
+
model: "banana2-lite",
|
|
5573
|
+
tier: "fast"
|
|
5574
|
+
},
|
|
5575
|
+
{
|
|
5576
|
+
model: "grok-image",
|
|
5577
|
+
tier: "fast"
|
|
5578
|
+
},
|
|
5579
|
+
{
|
|
5580
|
+
model: "seedream5-lite",
|
|
5581
|
+
tier: "fast"
|
|
5582
|
+
},
|
|
5583
|
+
{
|
|
5584
|
+
model: "flux2-turbo",
|
|
5585
|
+
tier: "fast"
|
|
5586
|
+
}
|
|
5587
|
+
],
|
|
5351
5588
|
notFor: "Variations of an image you already have (vary), or a consistent set of images (series run).",
|
|
5352
|
-
rankedAt:
|
|
5589
|
+
rankedAt: IMAGE_RANKED_AT,
|
|
5353
5590
|
rankedFrom: "hand",
|
|
5354
5591
|
summary: "Make an image from a prompt, or change an image you pass as a reference."
|
|
5355
5592
|
},
|
|
@@ -5834,10 +6071,91 @@ const TASKS = {
|
|
|
5834
6071
|
summary: "Trace a raster image to a clean SVG."
|
|
5835
6072
|
},
|
|
5836
6073
|
vary: {
|
|
5837
|
-
basis: "
|
|
5838
|
-
models:
|
|
6074
|
+
basis: "Order follows Arena image edit, single image (https://arena.ai/leaderboard/image/image-edit/single-image), read 2026-10-29 (MOT-72). Editing order differs from generation: Grok Image 2 leads balanced, ahead of Nano Banana 2.1, and Seedream 5 Pro outranks GPT Image 1.5. Arena scores Krea 3 only at its Ultra setting, which costs $0.27 to $0.35 an edit and ignores the requested size, so krea3, which runs fal's default setting, is ranked as unscored. Models not yet on the board follow the ranked ones in their Tier, in their previous order. The Artificial Analysis v2 snapshot of 2026-10-07 stays as recorded benchmark data. Sunburst and Flare use max quality. vary reuses a previously chosen Model when explicitly supplied, including retained legacy routes.",
|
|
6075
|
+
models: [
|
|
6076
|
+
{
|
|
6077
|
+
model: "sunburst",
|
|
6078
|
+
tier: "quality"
|
|
6079
|
+
},
|
|
6080
|
+
{
|
|
6081
|
+
model: "flare",
|
|
6082
|
+
tier: "quality"
|
|
6083
|
+
},
|
|
6084
|
+
{
|
|
6085
|
+
model: "gpt2",
|
|
6086
|
+
tier: "quality"
|
|
6087
|
+
},
|
|
6088
|
+
{
|
|
6089
|
+
model: "seedream5",
|
|
6090
|
+
tier: "quality"
|
|
6091
|
+
},
|
|
6092
|
+
{
|
|
6093
|
+
model: "gpt",
|
|
6094
|
+
tier: "quality"
|
|
6095
|
+
},
|
|
6096
|
+
{
|
|
6097
|
+
model: "mai-image-2.5-pro",
|
|
6098
|
+
tier: "quality"
|
|
6099
|
+
},
|
|
6100
|
+
{
|
|
6101
|
+
model: "grok-image-2",
|
|
6102
|
+
tier: "balanced"
|
|
6103
|
+
},
|
|
6104
|
+
{
|
|
6105
|
+
model: "banana21",
|
|
6106
|
+
tier: "balanced"
|
|
6107
|
+
},
|
|
6108
|
+
{
|
|
6109
|
+
model: "mai-image-2.5",
|
|
6110
|
+
tier: "balanced"
|
|
6111
|
+
},
|
|
6112
|
+
{
|
|
6113
|
+
model: "muse-image",
|
|
6114
|
+
tier: "balanced"
|
|
6115
|
+
},
|
|
6116
|
+
{
|
|
6117
|
+
model: "grok-image-quality",
|
|
6118
|
+
tier: "balanced"
|
|
6119
|
+
},
|
|
6120
|
+
{
|
|
6121
|
+
model: "banana",
|
|
6122
|
+
tier: "balanced"
|
|
6123
|
+
},
|
|
6124
|
+
{
|
|
6125
|
+
model: "banana2",
|
|
6126
|
+
tier: "balanced"
|
|
6127
|
+
},
|
|
6128
|
+
{
|
|
6129
|
+
model: "krea3",
|
|
6130
|
+
tier: "balanced"
|
|
6131
|
+
},
|
|
6132
|
+
{
|
|
6133
|
+
model: "qwen3",
|
|
6134
|
+
tier: "balanced"
|
|
6135
|
+
},
|
|
6136
|
+
{
|
|
6137
|
+
model: "flux2-pro",
|
|
6138
|
+
tier: "balanced"
|
|
6139
|
+
},
|
|
6140
|
+
{
|
|
6141
|
+
model: "flux2-flex",
|
|
6142
|
+
tier: "balanced"
|
|
6143
|
+
},
|
|
6144
|
+
{
|
|
6145
|
+
model: "grok-image",
|
|
6146
|
+
tier: "fast"
|
|
6147
|
+
},
|
|
6148
|
+
{
|
|
6149
|
+
model: "banana2-lite",
|
|
6150
|
+
tier: "fast"
|
|
6151
|
+
},
|
|
6152
|
+
{
|
|
6153
|
+
model: "seedream5-lite",
|
|
6154
|
+
tier: "fast"
|
|
6155
|
+
}
|
|
6156
|
+
],
|
|
5839
6157
|
notFor: "A specific change to an image described in words (generate with a reference), or a set of different scenes in one style (series run).",
|
|
5840
|
-
rankedAt:
|
|
6158
|
+
rankedAt: IMAGE_RANKED_AT,
|
|
5841
6159
|
rankedFrom: "hand",
|
|
5842
6160
|
summary: "Make variations of an image you already have."
|
|
5843
6161
|
}
|
|
@@ -8222,7 +8540,7 @@ function resolveFixed(task, fixed, request, needed, keys) {
|
|
|
8222
8540
|
const { chosenBy, model } = fixed;
|
|
8223
8541
|
const tier = request.tier ?? "balanced";
|
|
8224
8542
|
const entries = TASKS[task].models;
|
|
8225
|
-
const entry = entries.find((candidate) => candidate.model === model && candidate.mode === request.mode);
|
|
8543
|
+
const entry = entries.find((candidate) => candidate.model === model && candidate.mode === request.mode) ?? legacyEntry(task, model, request.mode, tier);
|
|
8226
8544
|
const profile = modelProfile(model);
|
|
8227
8545
|
if (entry === void 0 || profile === void 0) {
|
|
8228
8546
|
const servesTask = entries.some((candidate) => candidate.model === model);
|
|
@@ -8235,6 +8553,14 @@ function resolveFixed(task, fixed, request, needed, keys) {
|
|
|
8235
8553
|
unblockers.push(unblockerFor(result));
|
|
8236
8554
|
return unresolved(task, result.blockedBy, unblockers, `${model} (${chosenBy}) ${describeBlock(result.blockedBy, result.missingKey, result.missingInput)}.`, result.missingKey);
|
|
8237
8555
|
}
|
|
8556
|
+
/** Old pins and tuned Looks remain usable without recommending predecessors. */
|
|
8557
|
+
function legacyEntry(task, model, mode, tier) {
|
|
8558
|
+
if (mode !== void 0 || task !== "generate" && task !== "vary" || !LEGACY_GENERATION_MODELS.some((id) => id === model) || task === "vary" && MODELS[model]?.supportsEdit !== true) return;
|
|
8559
|
+
return {
|
|
8560
|
+
model,
|
|
8561
|
+
tier
|
|
8562
|
+
};
|
|
8563
|
+
}
|
|
8238
8564
|
function unknownForMode(task, model, mode, entries) {
|
|
8239
8565
|
const otherModes = entries.filter((candidate) => candidate.model === model).map((candidate) => candidate.mode ?? "no mode");
|
|
8240
8566
|
const inMode = [...new Set(entries.filter((candidate) => candidate.mode === mode).map((candidate) => candidate.model))];
|
|
@@ -8251,7 +8577,7 @@ function resolveRanked(task, request, needed, keys) {
|
|
|
8251
8577
|
const qualifying = /* @__PURE__ */ new Map();
|
|
8252
8578
|
let firstBlock;
|
|
8253
8579
|
let keyBlock;
|
|
8254
|
-
const definition = TASKS[task];
|
|
8580
|
+
const definition = task === "generate" && (request.references ?? 0) > 0 ? TASKS.vary : TASKS[task];
|
|
8255
8581
|
for (const entry of definition.models) {
|
|
8256
8582
|
if (entry.mode !== request.mode) continue;
|
|
8257
8583
|
const { model, tier: modelTier } = entry;
|
|
@@ -8400,6 +8726,8 @@ const FAL_IMAGE_PRICE_USD = {
|
|
|
8400
8726
|
"ideogram/v4": MODELS.ideogram4?.pricePerImageUsd ?? .03,
|
|
8401
8727
|
"xai/grok-imagine-image": MODELS["grok-image"]?.pricePerImageUsd ?? .02,
|
|
8402
8728
|
"xai/grok-imagine-image/v2.0/text-to-image": MODELS["grok-image-2"]?.pricePerImageUsd ?? .06,
|
|
8729
|
+
"xai/grok-imagine-image/quality/text-to-image": MODELS["grok-image-quality"]?.pricePerImageUsd ?? .05,
|
|
8730
|
+
"meta/muse-image/text-to-image": MODELS["muse-image"]?.pricePerImageUsd ?? .01,
|
|
8403
8731
|
"microsoft/mai-image-2.5-pro": MODELS["mai-image-2.5-pro"]?.pricePerImageUsd ?? .17,
|
|
8404
8732
|
"fal-ai/ideogram/v3/generate-transparent": MODELS["ideogram3-transparent"]?.pricePerImageUsd ?? .06,
|
|
8405
8733
|
"alibaba/qwen-image-3/text-to-image": MODELS.qwen3?.pricePerImageUsd ?? .04,
|