@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/dist/image.js CHANGED
@@ -51,14 +51,31 @@ function falHttpError(status, body, requestId) {
51
51
  }
52
52
  //#endregion
53
53
  //#region src/models.ts
54
- const AA_IMAGE_LEADERBOARD_SNAPSHOT = "2026-08-23";
54
+ const AA_IMAGE_LEADERBOARD_SNAPSHOT = "2026-10-07";
55
55
  const AA_IMAGE_SOURCES = ["https://artificialanalysis.ai/image/leaderboard/text-to-image", "https://artificialanalysis.ai/image/leaderboard/editing"];
56
56
  const FAL_PRICING_CHECKED_AT = "2026-05-12";
57
57
  const FAL_PRICING_CHECKED_JUL_2026 = "2026-07-11";
58
58
  const FAL_PRICING_CHECKED_AUG_2026 = "2026-08-23";
59
59
  const FAL_PRICING_CHECKED_SEP_2026 = "2026-09-16";
60
+ const FAL_PRICING_CHECKED_OCT_2026 = "2026-10-29";
60
61
  const MODELS = {
61
62
  flare: {
63
+ benchmark: {
64
+ artificialAnalysis: {
65
+ editing: {
66
+ elo: 1163,
67
+ rank: 2
68
+ },
69
+ snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
70
+ sourceUrls: AA_IMAGE_SOURCES,
71
+ textToImage: {
72
+ elo: 1191,
73
+ rank: 2
74
+ }
75
+ },
76
+ useCase: "Frontier generation and editing, evaluated at max quality"
77
+ },
78
+ defaultQuality: "max",
62
79
  customImageSize: {
63
80
  maxEdge: 3840,
64
81
  maxPixels: 8294400,
@@ -95,6 +112,22 @@ const MODELS = {
95
112
  useQueue: true
96
113
  },
97
114
  sunburst: {
115
+ benchmark: {
116
+ artificialAnalysis: {
117
+ editing: {
118
+ elo: 1183,
119
+ rank: 1
120
+ },
121
+ snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
122
+ sourceUrls: AA_IMAGE_SOURCES,
123
+ textToImage: {
124
+ elo: 1198,
125
+ rank: 1
126
+ }
127
+ },
128
+ useCase: "Frontier generation and editing, evaluated at max quality"
129
+ },
130
+ defaultQuality: "max",
98
131
  customImageSize: {
99
132
  maxEdge: 3840,
100
133
  maxPixels: 8294400,
@@ -134,14 +167,14 @@ const MODELS = {
134
167
  benchmark: {
135
168
  artificialAnalysis: {
136
169
  editing: {
137
- elo: 1256,
138
- rank: 3
170
+ elo: 1125,
171
+ rank: 5
139
172
  },
140
173
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
141
174
  sourceUrls: AA_IMAGE_SOURCES,
142
175
  textToImage: {
143
- elo: 1369,
144
- rank: 1
176
+ elo: 1172,
177
+ rank: 3
145
178
  }
146
179
  },
147
180
  speed: {
@@ -154,7 +187,7 @@ const MODELS = {
154
187
  quality: "frontier",
155
188
  speed: "very_slow"
156
189
  },
157
- useCase: "Highest-ranked text-to-image quality and transparent PNGs"
190
+ useCase: "Established frontier generation and transparent PNGs"
158
191
  },
159
192
  customImageSize: {
160
193
  maxEdge: 3840,
@@ -205,14 +238,14 @@ const MODELS = {
205
238
  benchmark: {
206
239
  artificialAnalysis: {
207
240
  editing: {
208
- elo: 1250,
209
- rank: 5
241
+ elo: 1103,
242
+ rank: 12
210
243
  },
211
244
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
212
245
  sourceUrls: AA_IMAGE_SOURCES,
213
246
  textToImage: {
214
- elo: 1310,
215
- rank: 4
247
+ elo: 1107,
248
+ rank: 8
216
249
  }
217
250
  },
218
251
  speed: {
@@ -225,7 +258,7 @@ const MODELS = {
225
258
  quality: "frontier",
226
259
  speed: "slow"
227
260
  },
228
- useCase: "Best OpenAI edit quality with transparent PNG support"
261
+ useCase: "Established OpenAI editor with transparent PNG support"
229
262
  },
230
263
  editEndpoint: "fal-ai/gpt-image-1.5/edit",
231
264
  endpoint: "fal-ai/gpt-image-1.5",
@@ -258,18 +291,103 @@ const MODELS = {
258
291
  supportsSyncMode: true,
259
292
  type: "generation"
260
293
  },
261
- banana2: {
294
+ banana21: {
295
+ benchmark: { useCase: "Efficient generation and reference editing; Arena #5 generation / #6 editing, preliminary 2026-10-06" },
296
+ editEndpoint: "google/nano-banana-2.1/edit",
297
+ endpoint: "google/nano-banana-2.1",
298
+ maxReferenceImages: 14,
299
+ name: "Nano Banana 2.1",
300
+ pricePerImageUsd: null,
301
+ 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",
302
+ sizeMode: "aspect_ratio",
303
+ supportedAspects: [
304
+ "auto",
305
+ "21:9",
306
+ "16:9",
307
+ "3:2",
308
+ "4:3",
309
+ "5:4",
310
+ "1:1",
311
+ "4:5",
312
+ "3:4",
313
+ "2:3",
314
+ "9:16",
315
+ "4:1",
316
+ "1:4",
317
+ "8:1",
318
+ "1:8"
319
+ ],
320
+ supportedResolutions: [
321
+ "1K",
322
+ "2K",
323
+ "4K"
324
+ ],
325
+ supportsAspect: true,
326
+ supportsEdit: true,
327
+ supportsLimitGenerations: true,
328
+ supportsNumImages: true,
329
+ supportsOutputFormat: true,
330
+ supportsResolution: true,
331
+ supportsSafetyTolerance: true,
332
+ supportsSeed: true,
333
+ supportsSyncMode: true,
334
+ supportsThinkingLevel: true,
335
+ supportsWebSearch: true,
336
+ type: "generation"
337
+ },
338
+ "mai-image-2.5": {
262
339
  benchmark: {
263
340
  artificialAnalysis: {
264
341
  editing: {
265
- elo: 1249,
342
+ elo: 1114,
266
343
  rank: 7
267
344
  },
268
345
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
269
346
  sourceUrls: AA_IMAGE_SOURCES,
270
347
  textToImage: {
271
- elo: 1320,
272
- rank: 3
348
+ elo: 1104,
349
+ rank: 10
350
+ }
351
+ },
352
+ useCase: "Strong single-reference editing at a lower price than MAI 2.5 Pro"
353
+ },
354
+ editEndpoint: "microsoft/mai-image-2.5/edit",
355
+ endpoint: "microsoft/mai-image-2.5",
356
+ maxReferenceImages: 1,
357
+ name: "MAI Image 2.5",
358
+ pricePerImageUsd: null,
359
+ pricing: "Token-based: text input $5/M, image input $8/M; ~$0.05 image output plus input",
360
+ sizeMode: "aspect_ratio",
361
+ supportedAspects: [
362
+ "auto",
363
+ "1:1",
364
+ "4:3",
365
+ "3:4",
366
+ "16:9",
367
+ "9:16",
368
+ "3:2",
369
+ "2:3"
370
+ ],
371
+ supportsAspect: true,
372
+ supportsEdit: true,
373
+ supportsNumImages: true,
374
+ supportsOutputFormat: true,
375
+ supportsResolution: false,
376
+ supportsSyncMode: true,
377
+ type: "generation"
378
+ },
379
+ banana2: {
380
+ benchmark: {
381
+ artificialAnalysis: {
382
+ editing: {
383
+ elo: 1110,
384
+ rank: 9
385
+ },
386
+ snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
387
+ sourceUrls: AA_IMAGE_SOURCES,
388
+ textToImage: {
389
+ elo: 1126,
390
+ rank: 6
273
391
  }
274
392
  },
275
393
  tiers: {
@@ -277,7 +395,7 @@ const MODELS = {
277
395
  quality: "frontier",
278
396
  speed: "unknown"
279
397
  },
280
- useCase: "Best balance of quality, edit support, web search, and cost"
398
+ useCase: "Previous-generation Gemini workhorse; retains 0.5K output"
281
399
  },
282
400
  editEndpoint: "fal-ai/nano-banana-2/edit",
283
401
  endpoint: "fal-ai/nano-banana-2",
@@ -313,14 +431,14 @@ const MODELS = {
313
431
  benchmark: {
314
432
  artificialAnalysis: {
315
433
  editing: {
316
- elo: 1245,
317
- rank: 9
434
+ elo: 1101,
435
+ rank: 13
318
436
  },
319
437
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
320
438
  sourceUrls: AA_IMAGE_SOURCES,
321
439
  textToImage: {
322
- elo: 1297,
323
- rank: 6
440
+ elo: 1102,
441
+ rank: 11
324
442
  }
325
443
  },
326
444
  speed: {
@@ -385,11 +503,15 @@ const MODELS = {
385
503
  gemini: {
386
504
  benchmark: { artificialAnalysis: {
387
505
  editing: {
388
- elo: 1180,
389
- rank: 29
506
+ elo: 987,
507
+ rank: 50
390
508
  },
391
509
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
392
- sourceUrls: AA_IMAGE_SOURCES
510
+ sourceUrls: AA_IMAGE_SOURCES,
511
+ textToImage: {
512
+ elo: 985,
513
+ rank: 60
514
+ }
393
515
  } },
394
516
  editEndpoint: "fal-ai/gemini-25-flash-image/edit",
395
517
  endpoint: "fal-ai/gemini-25-flash-image",
@@ -430,18 +552,6 @@ const MODELS = {
430
552
  type: "generation"
431
553
  },
432
554
  gemini3: {
433
- benchmark: { artificialAnalysis: {
434
- editing: {
435
- elo: 1245,
436
- rank: 9
437
- },
438
- snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
439
- sourceUrls: AA_IMAGE_SOURCES,
440
- textToImage: {
441
- elo: 1297,
442
- rank: 6
443
- }
444
- } },
445
555
  editEndpoint: "fal-ai/gemini-3-pro-image-preview/edit",
446
556
  endpoint: "fal-ai/gemini-3-pro-image-preview",
447
557
  falPricing: {
@@ -491,14 +601,14 @@ const MODELS = {
491
601
  benchmark: {
492
602
  artificialAnalysis: {
493
603
  editing: {
494
- elo: 1185,
495
- rank: 28
604
+ elo: 1015,
605
+ rank: 36
496
606
  },
497
607
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
498
608
  sourceUrls: AA_IMAGE_SOURCES,
499
609
  textToImage: {
500
- elo: 1226,
501
- rank: 16
610
+ elo: 1030,
611
+ rank: 21
502
612
  }
503
613
  },
504
614
  speed: {
@@ -511,7 +621,7 @@ const MODELS = {
511
621
  quality: "best",
512
622
  speed: "balanced"
513
623
  },
514
- useCase: "High-ranked budget generation and large multi-reference edits"
624
+ useCase: "Legacy budget generation and large multi-reference edits"
515
625
  },
516
626
  customImageSize: {
517
627
  maxPixels: 16777216,
@@ -545,14 +655,14 @@ const MODELS = {
545
655
  benchmark: {
546
656
  artificialAnalysis: {
547
657
  editing: {
548
- elo: 1186,
549
- rank: 26
658
+ elo: 1037,
659
+ rank: 32
550
660
  },
551
661
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
552
662
  sourceUrls: AA_IMAGE_SOURCES,
553
663
  textToImage: {
554
- elo: 1203,
555
- rank: 32
664
+ elo: 1022,
665
+ rank: 26
556
666
  }
557
667
  },
558
668
  speed: {
@@ -598,14 +708,14 @@ const MODELS = {
598
708
  seedream5: {
599
709
  benchmark: { artificialAnalysis: {
600
710
  editing: {
601
- elo: 1248,
602
- rank: 8
711
+ elo: 1108,
712
+ rank: 11
603
713
  },
604
714
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
605
715
  sourceUrls: AA_IMAGE_SOURCES,
606
716
  textToImage: {
607
- elo: 1279,
608
- rank: 10
717
+ elo: 1081,
718
+ rank: 15
609
719
  }
610
720
  } },
611
721
  customImageSize: {
@@ -640,11 +750,15 @@ const MODELS = {
640
750
  "seedream5-lite": {
641
751
  benchmark: { artificialAnalysis: {
642
752
  editing: {
643
- elo: 1169,
644
- rank: 32
753
+ elo: 1057,
754
+ rank: 24
645
755
  },
646
756
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
647
- sourceUrls: AA_IMAGE_SOURCES
757
+ sourceUrls: AA_IMAGE_SOURCES,
758
+ textToImage: {
759
+ elo: 1012,
760
+ rank: 36
761
+ }
648
762
  } },
649
763
  customImageSize: {
650
764
  maxPixels: 16777216,
@@ -678,14 +792,14 @@ const MODELS = {
678
792
  benchmark: {
679
793
  artificialAnalysis: {
680
794
  editing: {
681
- elo: 1201,
682
- rank: 19
795
+ elo: 997,
796
+ rank: 49
683
797
  },
684
798
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
685
799
  sourceUrls: AA_IMAGE_SOURCES,
686
800
  textToImage: {
687
- elo: 1225,
688
- rank: 17
801
+ elo: 1020,
802
+ rank: 28
689
803
  }
690
804
  },
691
805
  speed: {
@@ -737,14 +851,14 @@ const MODELS = {
737
851
  benchmark: {
738
852
  artificialAnalysis: {
739
853
  editing: {
740
- elo: 1170,
741
- rank: 31
854
+ elo: 1007,
855
+ rank: 41
742
856
  },
743
857
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
744
858
  sourceUrls: AA_IMAGE_SOURCES,
745
859
  textToImage: {
746
- elo: 1207,
747
- rank: 30
860
+ elo: 1004,
861
+ rank: 41
748
862
  }
749
863
  },
750
864
  speed: {
@@ -795,11 +909,15 @@ const MODELS = {
795
909
  "flux2-flex": {
796
910
  benchmark: {
797
911
  artificialAnalysis: {
912
+ editing: {
913
+ elo: 1007,
914
+ rank: 42
915
+ },
798
916
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
799
917
  sourceUrls: AA_IMAGE_SOURCES,
800
918
  textToImage: {
801
- elo: 1223,
802
- rank: 18
919
+ elo: 1027,
920
+ rank: 22
803
921
  }
804
922
  },
805
923
  speed: {
@@ -853,8 +971,16 @@ const MODELS = {
853
971
  "flux2-dev": {
854
972
  benchmark: {
855
973
  artificialAnalysis: {
974
+ editing: {
975
+ elo: 1e3,
976
+ rank: 45
977
+ },
856
978
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
857
- sourceUrls: AA_IMAGE_SOURCES
979
+ sourceUrls: AA_IMAGE_SOURCES,
980
+ textToImage: {
981
+ elo: 1e3,
982
+ rank: 42
983
+ }
858
984
  },
859
985
  speed: {
860
986
  medianSeconds: 4.6,
@@ -1017,24 +1143,12 @@ const MODELS = {
1017
1143
  },
1018
1144
  reve: {
1019
1145
  benchmark: {
1020
- artificialAnalysis: {
1021
- editing: {
1022
- elo: 1263,
1023
- rank: 2
1024
- },
1025
- snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1026
- sourceUrls: AA_IMAGE_SOURCES,
1027
- textToImage: {
1028
- elo: 1322,
1029
- rank: 2
1030
- }
1031
- },
1032
1146
  tiers: {
1033
1147
  price: "premium",
1034
1148
  quality: "frontier",
1035
1149
  speed: "unknown"
1036
1150
  },
1037
- useCase: "Highest-ranked editor reachable on fal; strong prompt adherence and text rendering"
1151
+ useCase: "Historical Reve route; not currently verified on fal"
1038
1152
  },
1039
1153
  editEndpoint: "fal-ai/reve/edit",
1040
1154
  endpoint: "fal-ai/reve/text-to-image",
@@ -1075,8 +1189,8 @@ const MODELS = {
1075
1189
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1076
1190
  sourceUrls: AA_IMAGE_SOURCES,
1077
1191
  textToImage: {
1078
- elo: 1215,
1079
- rank: 25
1192
+ elo: 984,
1193
+ rank: 62
1080
1194
  }
1081
1195
  } },
1082
1196
  customImageSize: {},
@@ -1134,8 +1248,8 @@ const MODELS = {
1134
1248
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1135
1249
  sourceUrls: AA_IMAGE_SOURCES,
1136
1250
  textToImage: {
1137
- elo: 1220,
1138
- rank: 19
1251
+ elo: 1004,
1252
+ rank: 40
1139
1253
  }
1140
1254
  } },
1141
1255
  customImageSize: {
@@ -1173,14 +1287,14 @@ const MODELS = {
1173
1287
  benchmark: {
1174
1288
  artificialAnalysis: {
1175
1289
  editing: {
1176
- elo: 1214,
1177
- rank: 16
1290
+ elo: 1073,
1291
+ rank: 19
1178
1292
  },
1179
1293
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1180
1294
  sourceUrls: AA_IMAGE_SOURCES,
1181
1295
  textToImage: {
1182
- elo: 1216,
1183
- rank: 23
1296
+ elo: 1019,
1297
+ rank: 30
1184
1298
  }
1185
1299
  },
1186
1300
  speed: {
@@ -1233,7 +1347,11 @@ const MODELS = {
1233
1347
  benchmark: {
1234
1348
  artificialAnalysis: {
1235
1349
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1236
- sourceUrls: AA_IMAGE_SOURCES
1350
+ sourceUrls: AA_IMAGE_SOURCES,
1351
+ textToImage: {
1352
+ elo: 890,
1353
+ rank: 106
1354
+ }
1237
1355
  },
1238
1356
  speed: {
1239
1357
  medianSeconds: 23.3,
@@ -1275,14 +1393,14 @@ const MODELS = {
1275
1393
  benchmark: {
1276
1394
  artificialAnalysis: {
1277
1395
  editing: {
1278
- elo: 1218,
1279
- rank: 15
1396
+ elo: 1056,
1397
+ rank: 25
1280
1398
  },
1281
1399
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1282
1400
  sourceUrls: AA_IMAGE_SOURCES,
1283
1401
  textToImage: {
1284
- elo: 1272,
1285
- rank: 11
1402
+ elo: 1075,
1403
+ rank: 16
1286
1404
  }
1287
1405
  },
1288
1406
  tiers: {
@@ -1290,12 +1408,13 @@ const MODELS = {
1290
1408
  quality: "better",
1291
1409
  speed: "unknown"
1292
1410
  },
1293
- useCase: "Strong quality per dollar - 11th on text-to-image at $30/1k"
1411
+ useCase: "Strong generation with negative-prompt and seed controls"
1294
1412
  },
1295
1413
  customImageSize: {
1296
1414
  maxPixels: 4194304,
1297
1415
  minPixels: 262144
1298
1416
  },
1417
+ editEndpoint: "alibaba/qwen-image-3/edit",
1299
1418
  endpoint: "alibaba/qwen-image-3/text-to-image",
1300
1419
  falPricing: {
1301
1420
  checkedAt: FAL_PRICING_CHECKED_SEP_2026,
@@ -1306,12 +1425,13 @@ const MODELS = {
1306
1425
  unit: "images",
1307
1426
  unitPrice: .04
1308
1427
  },
1428
+ maxReferenceImages: 3,
1309
1429
  name: "Qwen Image 3",
1310
1430
  pricePerImageUsd: .04,
1311
1431
  pricing: "$0.04 (1K) / $0.075 (2K)",
1312
1432
  sizeMode: "image_size_enum",
1313
1433
  supportsAspect: true,
1314
- supportsEdit: false,
1434
+ supportsEdit: true,
1315
1435
  supportsNegativePrompt: true,
1316
1436
  supportsNumImages: true,
1317
1437
  supportsOutputFormat: true,
@@ -1324,17 +1444,17 @@ const MODELS = {
1324
1444
  benchmark: {
1325
1445
  artificialAnalysis: {
1326
1446
  editing: {
1327
- elo: 1272,
1328
- rank: 1
1447
+ elo: 1110,
1448
+ rank: 10
1329
1449
  },
1330
1450
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1331
1451
  sourceUrls: AA_IMAGE_SOURCES,
1332
1452
  textToImage: {
1333
- elo: 1293,
1334
- rank: 7
1453
+ elo: 1100,
1454
+ rank: 12
1335
1455
  }
1336
1456
  },
1337
- useCase: "Highest-ranked image editor, single reference image"
1457
+ useCase: "Strong single-reference editor; MAI 2.5 ranks higher on the current editing board"
1338
1458
  },
1339
1459
  editEndpoint: "microsoft/mai-image-2.5-pro/edit",
1340
1460
  editImagesField: "image_url",
@@ -1373,20 +1493,26 @@ const MODELS = {
1373
1493
  },
1374
1494
  "banana2-lite": {
1375
1495
  benchmark: { artificialAnalysis: {
1496
+ editing: {
1497
+ elo: 1046,
1498
+ rank: 26
1499
+ },
1376
1500
  snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1377
1501
  sourceUrls: AA_IMAGE_SOURCES,
1378
1502
  textToImage: {
1379
- elo: 1289,
1380
- rank: 8
1503
+ elo: 1095,
1504
+ rank: 13
1381
1505
  }
1382
1506
  } },
1507
+ editEndpoint: "google/nano-banana-2-lite/edit",
1508
+ maxReferenceImages: 14,
1383
1509
  endpoint: "google/nano-banana-2-lite",
1384
1510
  name: "Nano Banana 2 Lite",
1385
- 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.048)",
1386
- pricePerImageUsd: .048,
1511
+ 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)",
1512
+ pricePerImageUsd: null,
1387
1513
  sizeMode: "aspect_ratio",
1388
1514
  supportsAspect: true,
1389
- supportsEdit: false,
1515
+ supportsEdit: true,
1390
1516
  supportsLimitGenerations: true,
1391
1517
  supportsNumImages: true,
1392
1518
  supportsOutputFormat: true,
@@ -1459,6 +1585,21 @@ const MODELS = {
1459
1585
  type: "generation"
1460
1586
  },
1461
1587
  "grok-image-2": {
1588
+ benchmark: {
1589
+ artificialAnalysis: {
1590
+ editing: {
1591
+ elo: 1110,
1592
+ rank: 8
1593
+ },
1594
+ snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
1595
+ sourceUrls: AA_IMAGE_SOURCES,
1596
+ textToImage: {
1597
+ elo: 1156,
1598
+ rank: 4
1599
+ }
1600
+ },
1601
+ useCase: "Strong generation and editing with predictable per-image billing"
1602
+ },
1462
1603
  editEndpoint: "xai/grok-imagine-image/v2.0/edit",
1463
1604
  endpoint: "xai/grok-imagine-image/v2.0/text-to-image",
1464
1605
  falPricing: {
@@ -1493,6 +1634,120 @@ const MODELS = {
1493
1634
  supportsSyncMode: true,
1494
1635
  type: "generation"
1495
1636
  },
1637
+ "muse-image": {
1638
+ benchmark: { useCase: "Low-cost generation and multi-reference editing; Arena #8 generation / #10 editing, 2026-10-29" },
1639
+ editEndpoint: "meta/muse-image/edit",
1640
+ endpoint: "meta/muse-image/text-to-image",
1641
+ falPricing: {
1642
+ checkedAt: FAL_PRICING_CHECKED_OCT_2026,
1643
+ currency: "USD",
1644
+ endpointId: "meta/muse-image/text-to-image",
1645
+ estimatedCostPerImageUsd: .01,
1646
+ source: "fal-pricing-api",
1647
+ unit: "images",
1648
+ unitPrice: .01
1649
+ },
1650
+ maxReferenceImages: 10,
1651
+ name: "Meta Muse Image",
1652
+ pricePerImageUsd: .01,
1653
+ pricing: "$0.01",
1654
+ sizeMode: "aspect_ratio",
1655
+ supportedAspects: [
1656
+ "1:1",
1657
+ "4:3",
1658
+ "3:4",
1659
+ "16:9",
1660
+ "9:16",
1661
+ "3:2",
1662
+ "2:3",
1663
+ "4:5",
1664
+ "5:4",
1665
+ "21:9",
1666
+ "4:1",
1667
+ "1:4",
1668
+ "8:1",
1669
+ "1:8"
1670
+ ],
1671
+ supportsAspect: true,
1672
+ supportsEdit: true,
1673
+ supportsNumImages: true,
1674
+ supportsOutputFormat: true,
1675
+ supportsResolution: false,
1676
+ supportsSyncMode: true,
1677
+ type: "generation"
1678
+ },
1679
+ krea3: {
1680
+ 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" },
1681
+ customImageSize: {
1682
+ maxEdge: 3200,
1683
+ maxPixels: 4220160,
1684
+ minEdge: 256,
1685
+ multipleOf: 16
1686
+ },
1687
+ editEndpoint: "krea/v3/edit",
1688
+ endpoint: "krea/v3/text-to-image",
1689
+ falPricing: {
1690
+ checkedAt: FAL_PRICING_CHECKED_OCT_2026,
1691
+ currency: "USD",
1692
+ endpointId: "krea/v3/text-to-image",
1693
+ estimatedCostPerImageUsd: .025,
1694
+ source: "fal-pricing-api",
1695
+ unit: "megapixels",
1696
+ unitPrice: .025
1697
+ },
1698
+ maxReferenceImages: 8,
1699
+ name: "Krea 3",
1700
+ pricePerImageUsd: .025,
1701
+ pricing: "$0.025/MP (edits also bill each reference)",
1702
+ sizeMode: "image_size_enum",
1703
+ supportedOutputFormats: ["png", "jpeg"],
1704
+ supportsAspect: true,
1705
+ supportsEdit: true,
1706
+ supportsNegativePrompt: true,
1707
+ supportsNumImages: false,
1708
+ supportsOutputFormat: true,
1709
+ supportsResolution: false,
1710
+ supportsSafetyChecker: true,
1711
+ supportsSeed: true,
1712
+ supportsSyncMode: true,
1713
+ type: "generation"
1714
+ },
1715
+ "grok-image-quality": {
1716
+ benchmark: { useCase: "Detailed generation and editing with stronger text rendering; Arena #11 editing, 2026-10-29" },
1717
+ editEndpoint: "xai/grok-imagine-image/quality/edit",
1718
+ endpoint: "xai/grok-imagine-image/quality/text-to-image",
1719
+ falPricing: {
1720
+ checkedAt: FAL_PRICING_CHECKED_OCT_2026,
1721
+ currency: "USD",
1722
+ endpointId: "xai/grok-imagine-image/quality/text-to-image",
1723
+ estimatedCostPerImageUsd: .05,
1724
+ source: "fal-pricing-api",
1725
+ unit: "images",
1726
+ unitPrice: .05
1727
+ },
1728
+ maxReferenceImages: 3,
1729
+ name: "Grok Imagine Image Quality",
1730
+ pricePerImageUsd: .05,
1731
+ pricing: "$0.05 (1K) / $0.07 (2K)",
1732
+ sizeMode: "aspect_ratio",
1733
+ supportedAspects: [
1734
+ "16:9",
1735
+ "4:3",
1736
+ "3:2",
1737
+ "1:1",
1738
+ "2:3",
1739
+ "3:4",
1740
+ "9:16"
1741
+ ],
1742
+ supportedResolutions: ["1K", "2K"],
1743
+ supportsAspect: true,
1744
+ supportsEdit: true,
1745
+ supportsNumImages: true,
1746
+ supportsOutputFormat: true,
1747
+ supportsResolution: true,
1748
+ supportsSyncMode: true,
1749
+ type: "generation"
1750
+ },
1496
1751
  kling: {
1497
1752
  endpoint: "fal-ai/kling-video/v3/pro/image-to-video",
1498
1753
  name: "Kling v3 Pro",
@@ -1557,35 +1812,28 @@ const MODELS = {
1557
1812
  }
1558
1813
  };
1559
1814
  [
1560
- "flare",
1561
1815
  "sunburst",
1816
+ "flare",
1562
1817
  "gpt2",
1563
1818
  "gpt",
1819
+ "banana21",
1564
1820
  "banana2",
1565
1821
  "banana",
1566
- "gemini",
1567
- "gemini3",
1568
- "seedream4",
1569
- "seedream45",
1822
+ "mai-image-2.5",
1823
+ "mai-image-2.5-pro",
1570
1824
  "seedream5",
1571
- "seedream5-lite",
1572
- "flux2-max",
1573
- "flux2-pro",
1825
+ "qwen3",
1826
+ "banana2-lite",
1827
+ "grok-image-2",
1828
+ "grok-image-quality",
1829
+ "grok-image",
1830
+ "muse-image",
1831
+ "krea3",
1574
1832
  "flux2-flex",
1575
- "flux2-dev",
1833
+ "flux2-pro",
1576
1834
  "flux2-turbo",
1577
- "flux",
1578
- "flux-fast",
1579
- "recraft",
1580
- "recraft4",
1581
- "ideogram",
1835
+ "seedream5-lite",
1582
1836
  "ideogram4",
1583
- "grok-image",
1584
- "grok-image-2",
1585
- "qwen",
1586
- "qwen3",
1587
- "mai-image-2.5-pro",
1588
- "banana2-lite",
1589
1837
  "ideogram3-transparent",
1590
1838
  "recraft41"
1591
1839
  ].filter((id) => MODELS[id]?.supportsEdit === true);
@@ -3314,6 +3562,8 @@ const FAL_IMAGE_PRICE_USD = {
3314
3562
  "ideogram/v4": MODELS.ideogram4?.pricePerImageUsd ?? .03,
3315
3563
  "xai/grok-imagine-image": MODELS["grok-image"]?.pricePerImageUsd ?? .02,
3316
3564
  "xai/grok-imagine-image/v2.0/text-to-image": MODELS["grok-image-2"]?.pricePerImageUsd ?? .06,
3565
+ "xai/grok-imagine-image/quality/text-to-image": MODELS["grok-image-quality"]?.pricePerImageUsd ?? .05,
3566
+ "meta/muse-image/text-to-image": MODELS["muse-image"]?.pricePerImageUsd ?? .01,
3317
3567
  "microsoft/mai-image-2.5-pro": MODELS["mai-image-2.5-pro"]?.pricePerImageUsd ?? .17,
3318
3568
  "fal-ai/ideogram/v3/generate-transparent": MODELS["ideogram3-transparent"]?.pricePerImageUsd ?? .06,
3319
3569
  "alibaba/qwen-image-3/text-to-image": MODELS.qwen3?.pricePerImageUsd ?? .04,