@shop-os/modelkit 0.1.6 → 0.1.8
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 +13 -0
- package/dist/catalog.cjs +2140 -0
- package/dist/catalog.cjs.map +1 -0
- package/dist/catalog.d.cts +458 -0
- package/dist/catalog.d.ts +458 -0
- package/dist/catalog.js +2117 -0
- package/dist/catalog.js.map +1 -0
- package/dist/index.cjs +783 -82
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -1
- package/dist/index.d.ts +42 -1
- package/dist/index.js +783 -82
- package/dist/index.js.map +1 -1
- package/package.json +7 -2
package/dist/index.js
CHANGED
|
@@ -35,6 +35,23 @@ var Catalog = class _Catalog {
|
|
|
35
35
|
for (const model of models) this.add(model);
|
|
36
36
|
}
|
|
37
37
|
add(model) {
|
|
38
|
+
if (this.byId.has(model.id)) {
|
|
39
|
+
throw new Error(`Duplicate model id "${model.id}"`);
|
|
40
|
+
}
|
|
41
|
+
if (this.byAlias.has(model.id)) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
`Model id "${model.id}" collides with an alias of "${this.byAlias.get(model.id)}"`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
for (const alias of model.aliases) {
|
|
47
|
+
if (alias === model.id) {
|
|
48
|
+
throw new Error(`Alias "${alias}" collides with its own model id "${model.id}"`);
|
|
49
|
+
}
|
|
50
|
+
const existing = this.byAlias.get(alias);
|
|
51
|
+
if (existing !== void 0) {
|
|
52
|
+
throw new Error(`Duplicate alias "${alias}" (already maps to "${existing}")`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
38
55
|
this.byId.set(model.id, model);
|
|
39
56
|
this.byAlias.set(model.id, model.id);
|
|
40
57
|
for (const alias of model.aliases) this.byAlias.set(alias, model.id);
|
|
@@ -83,6 +100,7 @@ var Catalog = class _Catalog {
|
|
|
83
100
|
|
|
84
101
|
// src/catalog/image.ts
|
|
85
102
|
var IMAGE_USAGE = { unit: "images", modality: "IMAGE" };
|
|
103
|
+
var IMAGE_GENERATE_EDIT = { imageGenerate: true, imageEdit: true };
|
|
86
104
|
var GEMINI_RATIOS = [
|
|
87
105
|
"1:1",
|
|
88
106
|
"2:3",
|
|
@@ -96,7 +114,7 @@ var GEMINI_RATIOS = [
|
|
|
96
114
|
"5:4",
|
|
97
115
|
"adaptive"
|
|
98
116
|
];
|
|
99
|
-
function geminiImage(id, label, aliases, sizes) {
|
|
117
|
+
function geminiImage(id, label, aliases, sizes, display, exposure) {
|
|
100
118
|
const model = {
|
|
101
119
|
id,
|
|
102
120
|
aliases,
|
|
@@ -105,6 +123,7 @@ function geminiImage(id, label, aliases, sizes) {
|
|
|
105
123
|
adapter: "google-image",
|
|
106
124
|
providerModelId: id,
|
|
107
125
|
lifecycle: "active",
|
|
126
|
+
exposure,
|
|
108
127
|
constraints: {
|
|
109
128
|
aspectRatios: [...GEMINI_RATIOS],
|
|
110
129
|
sizes,
|
|
@@ -112,40 +131,88 @@ function geminiImage(id, label, aliases, sizes) {
|
|
|
112
131
|
},
|
|
113
132
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
114
133
|
usage: { ...IMAGE_USAGE },
|
|
115
|
-
pricingKind: "image_size"
|
|
134
|
+
pricingKind: "image_size",
|
|
135
|
+
display,
|
|
136
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
116
137
|
};
|
|
117
138
|
return model;
|
|
118
139
|
}
|
|
119
140
|
var IMAGE_MODELS = [
|
|
120
|
-
geminiImage(
|
|
141
|
+
geminiImage(
|
|
142
|
+
"gemini-3-pro-image-preview",
|
|
143
|
+
"Nano Banana Pro",
|
|
144
|
+
["nb-pro"],
|
|
145
|
+
["1K", "2K", "4K"],
|
|
146
|
+
{
|
|
147
|
+
provider: "google",
|
|
148
|
+
description: "Create stunning, production-quality visuals with exceptional realism, detail, and typography. Best for campaigns, e-commerce, product photography, and hero creatives.",
|
|
149
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
150
|
+
},
|
|
151
|
+
"catalog"
|
|
152
|
+
),
|
|
121
153
|
geminiImage(
|
|
122
154
|
"gemini-3.1-flash-image-preview",
|
|
123
|
-
"Nano Banana
|
|
155
|
+
"Nano Banana 2",
|
|
124
156
|
["nb-2"],
|
|
125
157
|
// Flash 3.1 is the only Gemini image model with the 512 tier.
|
|
126
|
-
["512", "1K", "2K", "4K"]
|
|
158
|
+
["512", "1K", "2K", "4K"],
|
|
159
|
+
{
|
|
160
|
+
provider: "google",
|
|
161
|
+
description: "Generate high-quality images at speed. Perfect for brainstorming, moodboards, concept testing, creative exploration, and large batch workflows.",
|
|
162
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
163
|
+
},
|
|
164
|
+
"catalog"
|
|
165
|
+
),
|
|
166
|
+
geminiImage(
|
|
167
|
+
"gemini-3.1-flash-lite-image",
|
|
168
|
+
"Nano Banana Lite",
|
|
169
|
+
["nb-lite"],
|
|
170
|
+
["1K"],
|
|
171
|
+
{
|
|
172
|
+
provider: "google",
|
|
173
|
+
description: "The fastest and most affordable image model. Ideal for rapid drafts, bulk exploration, and iterative concept testing at 1K resolution.",
|
|
174
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
175
|
+
},
|
|
176
|
+
"catalog"
|
|
127
177
|
),
|
|
128
|
-
geminiImage("gemini-3.1-flash-lite-image", "Nano Banana Lite", ["nb-lite"], ["1K"]),
|
|
129
178
|
// trigger-workflows validates 1K only; pricing seeds 2K/4K rows so allow all three.
|
|
130
|
-
geminiImage(
|
|
179
|
+
geminiImage(
|
|
180
|
+
"gemini-2.5-flash-image",
|
|
181
|
+
"Gemini 2.5 Flash Image",
|
|
182
|
+
[],
|
|
183
|
+
["1K", "2K", "4K"],
|
|
184
|
+
{
|
|
185
|
+
provider: "google",
|
|
186
|
+
description: "Nano Banana (legacy Gemini 2.5 Flash Image) native image generation and editing model for high-volume, low-latency creative workflows."
|
|
187
|
+
},
|
|
188
|
+
"internal"
|
|
189
|
+
),
|
|
131
190
|
{
|
|
132
191
|
// Cowork "auto" lets OpenAI pick the size; the canonical equivalent is adaptive.
|
|
133
192
|
id: "gpt-image-2",
|
|
134
193
|
aliases: [],
|
|
135
|
-
label: "GPT
|
|
194
|
+
label: "GPT-image-2",
|
|
136
195
|
type: "image",
|
|
137
196
|
adapter: "openai-image",
|
|
138
197
|
providerModelId: "gpt-image-2",
|
|
139
198
|
lifecycle: "active",
|
|
199
|
+
exposure: "catalog",
|
|
140
200
|
constraints: {
|
|
141
201
|
aspectRatios: ["1:1", "3:2", "2:3", "16:9", "9:16", "4:5", "5:4", "adaptive"],
|
|
142
202
|
sizes: ["1K", "2K", "4K"],
|
|
203
|
+
qualityOptions: ["auto", "low", "medium", "high"],
|
|
143
204
|
references: { images: 16 },
|
|
144
205
|
supports: ["quality", "count"]
|
|
145
206
|
},
|
|
146
207
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
147
208
|
usage: { ...IMAGE_USAGE },
|
|
148
|
-
pricingKind: "image_size"
|
|
209
|
+
pricingKind: "image_size",
|
|
210
|
+
display: {
|
|
211
|
+
provider: "openai",
|
|
212
|
+
description: "The most capable model for image editing and complex creative instructions. Excels at text rendering, visual consistency, design generation, and iterative refinement.",
|
|
213
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/1204b494-8962-4f7f-af5e-699a8bdc98e3_compressed.png"
|
|
214
|
+
},
|
|
215
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
149
216
|
},
|
|
150
217
|
{
|
|
151
218
|
// Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
|
|
@@ -156,15 +223,22 @@ var IMAGE_MODELS = [
|
|
|
156
223
|
adapter: "openai-image",
|
|
157
224
|
providerModelId: "gpt-image-2.5-sunburst",
|
|
158
225
|
lifecycle: "active",
|
|
226
|
+
exposure: "internal",
|
|
159
227
|
constraints: {
|
|
160
228
|
aspectRatios: ["1:1", "3:2", "2:3", "16:9", "9:16", "4:5", "5:4", "adaptive"],
|
|
161
229
|
sizes: ["1K", "2K", "4K"],
|
|
230
|
+
qualityOptions: ["auto", "low", "medium", "high"],
|
|
162
231
|
references: { images: 16 },
|
|
163
232
|
supports: ["quality", "count"]
|
|
164
233
|
},
|
|
165
234
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
166
235
|
usage: { ...IMAGE_USAGE },
|
|
167
|
-
pricingKind: "image_size"
|
|
236
|
+
pricingKind: "image_size",
|
|
237
|
+
display: {
|
|
238
|
+
provider: "openai",
|
|
239
|
+
description: "OpenAI's most capable GPT Image 2.5 tier, built for editing precision; takes text and image input and outputs images in low, medium, high, xhigh, or max quality."
|
|
240
|
+
},
|
|
241
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
168
242
|
},
|
|
169
243
|
{
|
|
170
244
|
// Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
|
|
@@ -175,25 +249,33 @@ var IMAGE_MODELS = [
|
|
|
175
249
|
adapter: "openai-image",
|
|
176
250
|
providerModelId: "gpt-image-2.5-flare",
|
|
177
251
|
lifecycle: "active",
|
|
252
|
+
exposure: "internal",
|
|
178
253
|
constraints: {
|
|
179
254
|
aspectRatios: ["1:1", "3:2", "2:3", "16:9", "9:16", "4:5", "5:4", "adaptive"],
|
|
180
255
|
sizes: ["1K", "2K", "4K"],
|
|
256
|
+
qualityOptions: ["auto", "low", "medium", "high"],
|
|
181
257
|
references: { images: 16 },
|
|
182
258
|
supports: ["quality", "count"]
|
|
183
259
|
},
|
|
184
260
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
185
261
|
usage: { ...IMAGE_USAGE },
|
|
186
|
-
pricingKind: "image_size"
|
|
262
|
+
pricingKind: "image_size",
|
|
263
|
+
display: {
|
|
264
|
+
provider: "openai",
|
|
265
|
+
description: "OpenAI's fastest GPT Image 2.5 tier for high-quality everyday image generation and editing; takes text and image input and outputs images."
|
|
266
|
+
},
|
|
267
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
187
268
|
},
|
|
188
269
|
{
|
|
189
270
|
// Cowork allows 7 ratios; trigger-workflows allows 9 (adds 3:2, 9:21, drops 4:5/5:4).
|
|
190
271
|
id: "muse-image-1.0",
|
|
191
|
-
aliases: [],
|
|
272
|
+
aliases: ["meta-muse"],
|
|
192
273
|
label: "Meta Muse",
|
|
193
274
|
type: "image",
|
|
194
275
|
adapter: "fal",
|
|
195
276
|
providerModelId: "muse-image-1.0",
|
|
196
277
|
lifecycle: "active",
|
|
278
|
+
exposure: "catalog",
|
|
197
279
|
constraints: {
|
|
198
280
|
aspectRatios: [
|
|
199
281
|
"21:9",
|
|
@@ -215,7 +297,13 @@ var IMAGE_MODELS = [
|
|
|
215
297
|
},
|
|
216
298
|
defaults: { size: "1K", aspectRatio: "1:1", outputFormat: "png", count: 1 },
|
|
217
299
|
usage: { ...IMAGE_USAGE },
|
|
218
|
-
pricingKind: "image_size"
|
|
300
|
+
pricingKind: "image_size",
|
|
301
|
+
display: {
|
|
302
|
+
provider: "meta",
|
|
303
|
+
description: "Meta's image model with built-in world knowledge and strong prompt adherence. Great for concept-rich scenes, realistic compositions, and reference-guided edits.",
|
|
304
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/characters/1787909065794-k9a7zz.png"
|
|
305
|
+
},
|
|
306
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
219
307
|
},
|
|
220
308
|
{
|
|
221
309
|
id: "seedream-5-0-pro",
|
|
@@ -225,6 +313,7 @@ var IMAGE_MODELS = [
|
|
|
225
313
|
adapter: "ark",
|
|
226
314
|
providerModelId: "dola-seedream-5-0-pro-260628",
|
|
227
315
|
lifecycle: "active",
|
|
316
|
+
exposure: "catalog",
|
|
228
317
|
constraints: {
|
|
229
318
|
aspectRatios: ["1:1", "4:3", "3:4", "16:9", "9:16", "3:2", "2:3", "21:9", "4:5", "5:4"],
|
|
230
319
|
sizes: ["1K", "2K"],
|
|
@@ -235,7 +324,12 @@ var IMAGE_MODELS = [
|
|
|
235
324
|
},
|
|
236
325
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
237
326
|
usage: { ...IMAGE_USAGE },
|
|
238
|
-
pricingKind: "image_size"
|
|
327
|
+
pricingKind: "image_size",
|
|
328
|
+
display: {
|
|
329
|
+
provider: "bytedance",
|
|
330
|
+
description: "ByteDance Seedream 5.0 Pro text-to-image and multi-reference image-to-image (up to 10 inputs) with region editing; outputs 1K, 1.5K, or 2K."
|
|
331
|
+
},
|
|
332
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
239
333
|
},
|
|
240
334
|
{
|
|
241
335
|
id: "seedream-4.5",
|
|
@@ -245,6 +339,7 @@ var IMAGE_MODELS = [
|
|
|
245
339
|
adapter: "ark",
|
|
246
340
|
providerModelId: "seedream-4-5-251128",
|
|
247
341
|
lifecycle: "active",
|
|
342
|
+
exposure: "internal",
|
|
248
343
|
constraints: {
|
|
249
344
|
// 97:30 has no Ark size spelling; the A+ flow pads inputs to 97:30 and
|
|
250
345
|
// omits the ratio instead. Advertise only sizes the adapter can send.
|
|
@@ -267,7 +362,12 @@ var IMAGE_MODELS = [
|
|
|
267
362
|
},
|
|
268
363
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
269
364
|
usage: { ...IMAGE_USAGE },
|
|
270
|
-
pricingKind: "image_size"
|
|
365
|
+
pricingKind: "image_size",
|
|
366
|
+
display: {
|
|
367
|
+
provider: "bytedance",
|
|
368
|
+
description: "ByteDance Seedream 4.5 text-to-image and image-to-image with up to 14 reference images and batch image-set generation; outputs 2K or 4K."
|
|
369
|
+
},
|
|
370
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
271
371
|
},
|
|
272
372
|
{
|
|
273
373
|
id: "flux-2-pro",
|
|
@@ -277,6 +377,7 @@ var IMAGE_MODELS = [
|
|
|
277
377
|
adapter: "prodia",
|
|
278
378
|
providerModelId: "flux-2-pro",
|
|
279
379
|
lifecycle: "active",
|
|
380
|
+
exposure: "catalog",
|
|
280
381
|
constraints: {
|
|
281
382
|
aspectRatios: ["1:1", "2:3", "3:2", "16:9", "9:16", "4:3", "3:4", "4:5", "5:4", "21:9"],
|
|
282
383
|
sizes: ["1K"],
|
|
@@ -285,7 +386,12 @@ var IMAGE_MODELS = [
|
|
|
285
386
|
},
|
|
286
387
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
287
388
|
usage: { ...IMAGE_USAGE },
|
|
288
|
-
pricingKind: "image_size"
|
|
389
|
+
pricingKind: "image_size",
|
|
390
|
+
display: {
|
|
391
|
+
provider: "black-forest-labs",
|
|
392
|
+
description: "Black Forest Labs FLUX.2 [pro] text-to-image and multi-reference editing model served via Prodia; takes a prompt and up to 8 input images and outputs up to 4096x4096."
|
|
393
|
+
},
|
|
394
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
289
395
|
},
|
|
290
396
|
{
|
|
291
397
|
// Prodia's gemini-3-pro jobs take aspect_ratio + resolution (1K/2K/4K), not
|
|
@@ -298,6 +404,7 @@ var IMAGE_MODELS = [
|
|
|
298
404
|
adapter: "prodia",
|
|
299
405
|
providerModelId: "inference.gemini-3-pro.img2img.v1",
|
|
300
406
|
lifecycle: "active",
|
|
407
|
+
exposure: "internal",
|
|
301
408
|
constraints: {
|
|
302
409
|
aspectRatios: ["1:1", "2:3", "3:2", "4:3", "3:4", "4:5", "5:4", "9:16", "16:9", "21:9"],
|
|
303
410
|
sizes: ["1K", "2K", "4K"],
|
|
@@ -306,7 +413,12 @@ var IMAGE_MODELS = [
|
|
|
306
413
|
},
|
|
307
414
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
308
415
|
usage: { ...IMAGE_USAGE },
|
|
309
|
-
pricingKind: "image_size"
|
|
416
|
+
pricingKind: "image_size",
|
|
417
|
+
display: {
|
|
418
|
+
provider: "google",
|
|
419
|
+
description: "Google Gemini 3 Pro image generation and editing served via Prodia; takes a prompt plus up to 3 reference images and outputs 1K, 2K, or 4K."
|
|
420
|
+
},
|
|
421
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
310
422
|
},
|
|
311
423
|
{
|
|
312
424
|
// Nano Banana (img2img.v2) is flat-rate with aspect_ratio only; 3:2, 4:5,
|
|
@@ -318,6 +430,7 @@ var IMAGE_MODELS = [
|
|
|
318
430
|
adapter: "prodia",
|
|
319
431
|
providerModelId: "inference.nano-banana.img2img.v2",
|
|
320
432
|
lifecycle: "active",
|
|
433
|
+
exposure: "internal",
|
|
321
434
|
constraints: {
|
|
322
435
|
aspectRatios: ["1:1", "2:3", "3:4", "4:3", "9:16", "16:9", "21:9"],
|
|
323
436
|
sizes: ["1K"],
|
|
@@ -326,7 +439,12 @@ var IMAGE_MODELS = [
|
|
|
326
439
|
},
|
|
327
440
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
328
441
|
usage: { ...IMAGE_USAGE },
|
|
329
|
-
pricingKind: "image_size"
|
|
442
|
+
pricingKind: "image_size",
|
|
443
|
+
display: {
|
|
444
|
+
provider: "google",
|
|
445
|
+
description: "Google Nano Banana image generation and editing served via Prodia; takes a prompt plus 1-3 input images and matches the first input's aspect ratio in roughly 8 seconds."
|
|
446
|
+
},
|
|
447
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
330
448
|
},
|
|
331
449
|
{
|
|
332
450
|
// WAN 2.7 takes `images` (up to 9) and a `size` enum whose exact values
|
|
@@ -339,6 +457,7 @@ var IMAGE_MODELS = [
|
|
|
339
457
|
adapter: "replicate",
|
|
340
458
|
providerModelId: "wan-video/wan-2.7-image-pro",
|
|
341
459
|
lifecycle: "active",
|
|
460
|
+
exposure: "internal",
|
|
342
461
|
constraints: {
|
|
343
462
|
aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
|
|
344
463
|
sizes: ["1K", "2K", "4K"],
|
|
@@ -347,7 +466,12 @@ var IMAGE_MODELS = [
|
|
|
347
466
|
},
|
|
348
467
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
349
468
|
usage: { unit: "compute_seconds", modality: "IMAGE" },
|
|
350
|
-
pricingKind: "image_size"
|
|
469
|
+
pricingKind: "image_size",
|
|
470
|
+
display: {
|
|
471
|
+
provider: "alibaba",
|
|
472
|
+
description: "Alibaba Wan 2.7 Image Pro text-to-image and image-editing model; takes a prompt plus up to 9 reference images and generates up to 4K (4096x4096)."
|
|
473
|
+
},
|
|
474
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
351
475
|
},
|
|
352
476
|
{
|
|
353
477
|
// Qwen Image 2 Pro has aspect_ratio but no size input; resolution follows
|
|
@@ -360,6 +484,7 @@ var IMAGE_MODELS = [
|
|
|
360
484
|
adapter: "replicate",
|
|
361
485
|
providerModelId: "qwen/qwen-image-2-pro",
|
|
362
486
|
lifecycle: "active",
|
|
487
|
+
exposure: "internal",
|
|
363
488
|
constraints: {
|
|
364
489
|
aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"],
|
|
365
490
|
sizes: [],
|
|
@@ -369,7 +494,12 @@ var IMAGE_MODELS = [
|
|
|
369
494
|
},
|
|
370
495
|
defaults: { aspectRatio: "1:1" },
|
|
371
496
|
usage: { unit: "compute_seconds", modality: "IMAGE" },
|
|
372
|
-
pricingKind: "image_size"
|
|
497
|
+
pricingKind: "image_size",
|
|
498
|
+
display: {
|
|
499
|
+
provider: "alibaba",
|
|
500
|
+
description: "Alibaba Qwen Image 2 Pro unified text-to-image and editing model; takes a prompt plus an optional single reference image and generates native 2K output."
|
|
501
|
+
},
|
|
502
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
373
503
|
},
|
|
374
504
|
{
|
|
375
505
|
// Qwen Image Edit Plus takes aspect_ratio (or match_input_image) and
|
|
@@ -382,6 +512,7 @@ var IMAGE_MODELS = [
|
|
|
382
512
|
adapter: "replicate",
|
|
383
513
|
providerModelId: "qwen-edit-apps/qwen-image-edit-plus-lora-skin",
|
|
384
514
|
lifecycle: "active",
|
|
515
|
+
exposure: "internal",
|
|
385
516
|
constraints: {
|
|
386
517
|
aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
|
|
387
518
|
sizes: [],
|
|
@@ -391,7 +522,12 @@ var IMAGE_MODELS = [
|
|
|
391
522
|
},
|
|
392
523
|
defaults: { outputFormat: "png" },
|
|
393
524
|
usage: { unit: "compute_seconds", modality: "IMAGE" },
|
|
394
|
-
pricingKind: "image_size"
|
|
525
|
+
pricingKind: "image_size",
|
|
526
|
+
display: {
|
|
527
|
+
provider: "alibaba",
|
|
528
|
+
description: "Alibaba Qwen Image Edit Plus with Lightning and a skin-retouching LoRA; takes one or more reference images plus an edit prompt and outputs webp, jpg, or png."
|
|
529
|
+
},
|
|
530
|
+
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
395
531
|
}
|
|
396
532
|
];
|
|
397
533
|
|
|
@@ -405,6 +541,7 @@ var OTHER_MODELS = [
|
|
|
405
541
|
adapter: "google-genai",
|
|
406
542
|
providerModelId: "lyria-3-clip-preview",
|
|
407
543
|
lifecycle: "active",
|
|
544
|
+
exposure: "catalog",
|
|
408
545
|
constraints: {
|
|
409
546
|
durations: [30],
|
|
410
547
|
references: { images: 10 },
|
|
@@ -412,7 +549,12 @@ var OTHER_MODELS = [
|
|
|
412
549
|
},
|
|
413
550
|
defaults: {},
|
|
414
551
|
usage: { unit: "images", modality: "AUDIO" },
|
|
415
|
-
pricingKind: "flat"
|
|
552
|
+
pricingKind: "flat",
|
|
553
|
+
display: {
|
|
554
|
+
provider: "google",
|
|
555
|
+
description: "Google Lyria 3 Clip short music clips, loops, and previews; takes text and up to 10 image prompts and returns a fixed 30-second MP3 plus lyrics."
|
|
556
|
+
},
|
|
557
|
+
capabilities: {}
|
|
416
558
|
},
|
|
417
559
|
{
|
|
418
560
|
id: "lyria-3-pro-preview",
|
|
@@ -422,13 +564,19 @@ var OTHER_MODELS = [
|
|
|
422
564
|
adapter: "google-genai",
|
|
423
565
|
providerModelId: "lyria-3-pro-preview",
|
|
424
566
|
lifecycle: "active",
|
|
567
|
+
exposure: "catalog",
|
|
425
568
|
constraints: {
|
|
426
569
|
references: { images: 10 },
|
|
427
570
|
supports: []
|
|
428
571
|
},
|
|
429
572
|
defaults: {},
|
|
430
573
|
usage: { unit: "images", modality: "AUDIO" },
|
|
431
|
-
pricingKind: "flat"
|
|
574
|
+
pricingKind: "flat",
|
|
575
|
+
display: {
|
|
576
|
+
provider: "google",
|
|
577
|
+
description: "Google Lyria 3 Pro flagship music model for full-length songs with verses, choruses, and bridges; takes text and up to 10 image prompts and returns MP3 plus lyrics."
|
|
578
|
+
},
|
|
579
|
+
capabilities: {}
|
|
432
580
|
},
|
|
433
581
|
{
|
|
434
582
|
id: "google/lyria-2",
|
|
@@ -438,13 +586,19 @@ var OTHER_MODELS = [
|
|
|
438
586
|
adapter: "replicate",
|
|
439
587
|
providerModelId: "google/lyria-2",
|
|
440
588
|
lifecycle: "active",
|
|
589
|
+
exposure: "internal",
|
|
441
590
|
constraints: {
|
|
442
591
|
durations: [30],
|
|
443
592
|
supports: ["seed", "negativePrompt"]
|
|
444
593
|
},
|
|
445
594
|
defaults: {},
|
|
446
595
|
usage: { unit: "compute_seconds", modality: "AUDIO" },
|
|
447
|
-
pricingKind: "flat"
|
|
596
|
+
pricingKind: "flat",
|
|
597
|
+
display: {
|
|
598
|
+
provider: "google",
|
|
599
|
+
description: "Lyria 2 music generation on Replicate; produces 30 seconds of 48 kHz stereo audio from a text prompt."
|
|
600
|
+
},
|
|
601
|
+
capabilities: {}
|
|
448
602
|
},
|
|
449
603
|
{
|
|
450
604
|
id: "mmaudio",
|
|
@@ -454,6 +608,7 @@ var OTHER_MODELS = [
|
|
|
454
608
|
adapter: "replicate",
|
|
455
609
|
providerModelId: "zsxkib/mmaudio:62871fb59889b2d7c13777f08deb3b36bdff88f7e1d53a50ad7694548a41b484",
|
|
456
610
|
lifecycle: "active",
|
|
611
|
+
exposure: "catalog",
|
|
457
612
|
constraints: {
|
|
458
613
|
durations: { min: 1, max: 30 },
|
|
459
614
|
requires: ["sourceVideo"],
|
|
@@ -461,7 +616,12 @@ var OTHER_MODELS = [
|
|
|
461
616
|
},
|
|
462
617
|
defaults: { durationSeconds: 8 },
|
|
463
618
|
usage: { unit: "compute_seconds", modality: "AUDIO" },
|
|
464
|
-
pricingKind: "flat"
|
|
619
|
+
pricingKind: "flat",
|
|
620
|
+
display: {
|
|
621
|
+
provider: "mmaudio",
|
|
622
|
+
description: "MMAudio V2 video-to-audio model on Replicate; takes a source video and prompt and synthesizes synchronized environmental, action, and speech-like audio."
|
|
623
|
+
},
|
|
624
|
+
capabilities: {}
|
|
465
625
|
},
|
|
466
626
|
{
|
|
467
627
|
id: "elevenlabs-music",
|
|
@@ -471,6 +631,7 @@ var OTHER_MODELS = [
|
|
|
471
631
|
adapter: "replicate",
|
|
472
632
|
providerModelId: "elevenlabs/music",
|
|
473
633
|
lifecycle: "active",
|
|
634
|
+
exposure: "internal",
|
|
474
635
|
constraints: {
|
|
475
636
|
durations: { min: 5, max: 300 },
|
|
476
637
|
supports: ["instrumental"]
|
|
@@ -478,7 +639,12 @@ var OTHER_MODELS = [
|
|
|
478
639
|
defaults: { durationSeconds: 15, instrumental: true },
|
|
479
640
|
// Replicate's run() does not report predict_time; billed by generated length.
|
|
480
641
|
usage: { unit: "seconds", modality: "AUDIO" },
|
|
481
|
-
pricingKind: "flat"
|
|
642
|
+
pricingKind: "flat",
|
|
643
|
+
display: {
|
|
644
|
+
provider: "elevenlabs",
|
|
645
|
+
description: "ElevenLabs Music text-to-music on Replicate; generates full songs, instrumental or with vocals, up to 5 minutes long at up to 44.1 kHz."
|
|
646
|
+
},
|
|
647
|
+
capabilities: {}
|
|
482
648
|
},
|
|
483
649
|
{
|
|
484
650
|
id: "topaz",
|
|
@@ -488,6 +654,7 @@ var OTHER_MODELS = [
|
|
|
488
654
|
adapter: "replicate",
|
|
489
655
|
providerModelId: "topazlabs/image-upscale",
|
|
490
656
|
lifecycle: "active",
|
|
657
|
+
exposure: "catalog",
|
|
491
658
|
constraints: {
|
|
492
659
|
references: { images: 1 },
|
|
493
660
|
requires: ["references"],
|
|
@@ -495,7 +662,12 @@ var OTHER_MODELS = [
|
|
|
495
662
|
},
|
|
496
663
|
defaults: { scaleFactor: 2, outputFormat: "png" },
|
|
497
664
|
usage: { unit: "compute_seconds", modality: "IMAGE" },
|
|
498
|
-
pricingKind: "flat"
|
|
665
|
+
pricingKind: "flat",
|
|
666
|
+
display: {
|
|
667
|
+
provider: "topaz",
|
|
668
|
+
description: "Topaz Labs AI image upscaling on Replicate; takes one input image and upscales up to 6x with selectable enhancement models and optional face enhancement."
|
|
669
|
+
},
|
|
670
|
+
capabilities: { imageEdit: true }
|
|
499
671
|
},
|
|
500
672
|
{
|
|
501
673
|
id: "bg-remove",
|
|
@@ -505,6 +677,7 @@ var OTHER_MODELS = [
|
|
|
505
677
|
adapter: "prodia",
|
|
506
678
|
providerModelId: "inference.remove-background.v1",
|
|
507
679
|
lifecycle: "active",
|
|
680
|
+
exposure: "catalog",
|
|
508
681
|
constraints: {
|
|
509
682
|
references: { images: 1 },
|
|
510
683
|
requires: ["references"],
|
|
@@ -512,7 +685,12 @@ var OTHER_MODELS = [
|
|
|
512
685
|
},
|
|
513
686
|
defaults: {},
|
|
514
687
|
usage: { unit: "images", modality: "IMAGE" },
|
|
515
|
-
pricingKind: "flat"
|
|
688
|
+
pricingKind: "flat",
|
|
689
|
+
display: {
|
|
690
|
+
provider: "prodia",
|
|
691
|
+
description: "Prodia background removal; takes one input image and returns a PNG cut-out of the subject plus an optional black-and-white mask."
|
|
692
|
+
},
|
|
693
|
+
capabilities: { imageEdit: true }
|
|
516
694
|
}
|
|
517
695
|
];
|
|
518
696
|
|
|
@@ -527,6 +705,7 @@ function text(id, label, providerModelId, extra) {
|
|
|
527
705
|
adapter: "ai-sdk-text",
|
|
528
706
|
providerModelId,
|
|
529
707
|
lifecycle: "active",
|
|
708
|
+
exposure: "internal",
|
|
530
709
|
constraints: { supports: [] },
|
|
531
710
|
defaults: {},
|
|
532
711
|
usage: { ...TEXT_USAGE },
|
|
@@ -535,66 +714,465 @@ function text(id, label, providerModelId, extra) {
|
|
|
535
714
|
};
|
|
536
715
|
}
|
|
537
716
|
var TEXT_MODELS = [
|
|
538
|
-
text("gpt-4o", "GPT-4o", "gpt-4o"
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
717
|
+
text("gpt-4o", "GPT-4o", "gpt-4o", {
|
|
718
|
+
exposure: "internal",
|
|
719
|
+
display: {
|
|
720
|
+
provider: "openai",
|
|
721
|
+
costTier: 2,
|
|
722
|
+
description: "OpenAI GPT-4o flagship multimodal model; text and image input, 128K-token context."
|
|
723
|
+
},
|
|
724
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
|
|
725
|
+
}),
|
|
726
|
+
text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
|
|
727
|
+
exposure: "internal",
|
|
728
|
+
display: {
|
|
729
|
+
provider: "openai",
|
|
730
|
+
costTier: 1,
|
|
731
|
+
description: "OpenAI GPT-4o mini fast, low-cost multimodal model; text and image input, 128K-token context."
|
|
732
|
+
},
|
|
733
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
|
|
734
|
+
}),
|
|
735
|
+
text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
|
|
736
|
+
exposure: "catalog",
|
|
737
|
+
display: {
|
|
738
|
+
provider: "openai",
|
|
739
|
+
costTier: 3,
|
|
740
|
+
description: "OpenAI GPT-5.1 reasoning model for coding and agentic tasks; text and image input, 400K-token context."
|
|
741
|
+
},
|
|
742
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
|
|
743
|
+
}),
|
|
744
|
+
text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
|
|
745
|
+
exposure: "catalog",
|
|
746
|
+
display: {
|
|
747
|
+
provider: "openai",
|
|
748
|
+
costTier: 3,
|
|
749
|
+
description: "OpenAI GPT-5.2 reasoning model for complex professional work; text and image input, 400K-token context."
|
|
750
|
+
},
|
|
751
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
|
|
752
|
+
}),
|
|
753
|
+
// 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
|
|
754
|
+
text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
|
|
755
|
+
exposure: "internal",
|
|
756
|
+
display: {
|
|
757
|
+
provider: "openai",
|
|
758
|
+
costTier: 3,
|
|
759
|
+
description: "OpenAI GPT-5.4 flagship reasoning model; text and image input, 1.05M-token context."
|
|
760
|
+
},
|
|
761
|
+
capabilities: {
|
|
762
|
+
vision: true,
|
|
763
|
+
tools: true,
|
|
764
|
+
structuredOutput: true,
|
|
765
|
+
contextWindow: 105e4
|
|
766
|
+
}
|
|
767
|
+
}),
|
|
543
768
|
// OpenAI never shipped gpt-5.1-mini or gpt-5.2-mini; callers that still send them get 5.4 mini.
|
|
544
769
|
text("gpt-5.4-mini", "GPT-5.4 mini", "gpt-5.4-mini", {
|
|
545
|
-
|
|
770
|
+
exposure: "catalog",
|
|
771
|
+
aliases: ["gpt-5.1-mini", "gpt-5.2-mini"],
|
|
772
|
+
display: {
|
|
773
|
+
provider: "openai",
|
|
774
|
+
costTier: 1,
|
|
775
|
+
description: "OpenAI GPT-5.4 mini efficient reasoning model for high-volume workloads; text and image input, 400K-token context."
|
|
776
|
+
},
|
|
777
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
|
|
778
|
+
}),
|
|
779
|
+
text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
|
|
780
|
+
exposure: "catalog",
|
|
781
|
+
display: {
|
|
782
|
+
provider: "openai",
|
|
783
|
+
costTier: 3,
|
|
784
|
+
description: "OpenAI GPT-5.5 flagship reasoning model for the most complex professional and coding work; text and image input, 1.05M-token context."
|
|
785
|
+
},
|
|
786
|
+
capabilities: {
|
|
787
|
+
vision: true,
|
|
788
|
+
tools: true,
|
|
789
|
+
structuredOutput: true,
|
|
790
|
+
contextWindow: 105e4
|
|
791
|
+
}
|
|
792
|
+
}),
|
|
793
|
+
text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna", {
|
|
794
|
+
exposure: "catalog",
|
|
795
|
+
display: {
|
|
796
|
+
provider: "openai",
|
|
797
|
+
costTier: 1,
|
|
798
|
+
description: "OpenAI GPT-5.6 Luna cost-optimized tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
|
|
799
|
+
},
|
|
800
|
+
capabilities: {
|
|
801
|
+
vision: true,
|
|
802
|
+
tools: true,
|
|
803
|
+
structuredOutput: true,
|
|
804
|
+
contextWindow: 105e4
|
|
805
|
+
}
|
|
806
|
+
}),
|
|
807
|
+
text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra", {
|
|
808
|
+
exposure: "catalog",
|
|
809
|
+
display: {
|
|
810
|
+
provider: "openai",
|
|
811
|
+
costTier: 2,
|
|
812
|
+
description: "OpenAI GPT-5.6 Terra balanced tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
|
|
813
|
+
},
|
|
814
|
+
capabilities: {
|
|
815
|
+
vision: true,
|
|
816
|
+
tools: true,
|
|
817
|
+
structuredOutput: true,
|
|
818
|
+
contextWindow: 105e4
|
|
819
|
+
}
|
|
820
|
+
}),
|
|
821
|
+
text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol", {
|
|
822
|
+
exposure: "catalog",
|
|
823
|
+
display: {
|
|
824
|
+
provider: "openai",
|
|
825
|
+
costTier: 3,
|
|
826
|
+
description: "OpenAI GPT-5.6 Sol flagship tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
|
|
827
|
+
},
|
|
828
|
+
capabilities: {
|
|
829
|
+
vision: true,
|
|
830
|
+
tools: true,
|
|
831
|
+
structuredOutput: true,
|
|
832
|
+
contextWindow: 105e4
|
|
833
|
+
}
|
|
546
834
|
}),
|
|
547
|
-
text("gpt-5.5", "GPT-5.5", "gpt-5.5"),
|
|
548
|
-
text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna"),
|
|
549
|
-
text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra"),
|
|
550
|
-
text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol"),
|
|
551
835
|
// Library key "claude-sonnet-4.5" maps to the SDK id "claude-sonnet-4-5".
|
|
552
836
|
text("claude-sonnet-4-5", "Claude Sonnet 4.5", "claude-sonnet-4-5", {
|
|
553
|
-
|
|
837
|
+
exposure: "internal",
|
|
838
|
+
aliases: ["claude-sonnet-4.5", "claude-sonnet-4-5-20250929"],
|
|
839
|
+
display: {
|
|
840
|
+
provider: "anthropic",
|
|
841
|
+
costTier: 2,
|
|
842
|
+
description: "Anthropic Claude Sonnet 4.5 (legacy) balanced model; text and image input, 200K-token context."
|
|
843
|
+
},
|
|
844
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 2e5 }
|
|
554
845
|
}),
|
|
555
846
|
// Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
|
|
556
847
|
text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
|
|
848
|
+
exposure: "catalog",
|
|
557
849
|
aliases: [
|
|
558
850
|
"claude-sonnet-4.6",
|
|
559
851
|
"claude-sonnet-4",
|
|
560
852
|
"claude-sonnet-4.0",
|
|
561
853
|
"claude-sonnet-4-20250514"
|
|
562
|
-
]
|
|
854
|
+
],
|
|
855
|
+
display: {
|
|
856
|
+
provider: "anthropic",
|
|
857
|
+
costTier: 2,
|
|
858
|
+
description: "Anthropic Claude Sonnet 4.6 (legacy) balanced model; text and image input, 1M-token context."
|
|
859
|
+
},
|
|
860
|
+
capabilities: {
|
|
861
|
+
vision: true,
|
|
862
|
+
tools: true,
|
|
863
|
+
structuredOutput: true,
|
|
864
|
+
contextWindow: 1e6
|
|
865
|
+
}
|
|
866
|
+
}),
|
|
867
|
+
text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5", {
|
|
868
|
+
exposure: "catalog",
|
|
869
|
+
display: {
|
|
870
|
+
provider: "anthropic",
|
|
871
|
+
costTier: 3,
|
|
872
|
+
description: "Anthropic Claude Sonnet 5 current balanced model; text and image input, 1M-token context."
|
|
873
|
+
},
|
|
874
|
+
capabilities: {
|
|
875
|
+
vision: true,
|
|
876
|
+
tools: true,
|
|
877
|
+
structuredOutput: true,
|
|
878
|
+
contextWindow: 1e6
|
|
879
|
+
}
|
|
563
880
|
}),
|
|
564
|
-
text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5"),
|
|
565
881
|
text("claude-opus-4-8", "Claude Opus 4.8", "claude-opus-4-8", {
|
|
566
|
-
|
|
882
|
+
exposure: "catalog",
|
|
883
|
+
aliases: ["claude-opus-4.8", "claude-opus-4", "claude-opus-4.0", "claude-opus-4-20250514"],
|
|
884
|
+
display: {
|
|
885
|
+
provider: "anthropic",
|
|
886
|
+
costTier: 3,
|
|
887
|
+
description: "Anthropic Claude Opus 4.8 (legacy) frontier model; text and image input, 1M-token context."
|
|
888
|
+
},
|
|
889
|
+
capabilities: {
|
|
890
|
+
vision: true,
|
|
891
|
+
tools: true,
|
|
892
|
+
structuredOutput: true,
|
|
893
|
+
contextWindow: 1e6
|
|
894
|
+
}
|
|
567
895
|
}),
|
|
568
896
|
text("claude-haiku-4-5", "Claude Haiku 4.5", "claude-haiku-4-5", {
|
|
569
|
-
|
|
897
|
+
exposure: "catalog",
|
|
898
|
+
aliases: ["claude-haiku-4.5", "claude-haiku-4-5-20251001", "claude-haiku-4"],
|
|
899
|
+
display: {
|
|
900
|
+
provider: "anthropic",
|
|
901
|
+
costTier: 1,
|
|
902
|
+
description: "Anthropic Claude Haiku 4.5 fast model with near-frontier intelligence; text and image input, 200K-token context."
|
|
903
|
+
},
|
|
904
|
+
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 2e5 }
|
|
570
905
|
}),
|
|
571
906
|
text("claude-opus-5", "Claude Opus 5", "claude-opus-5", {
|
|
572
|
-
|
|
907
|
+
exposure: "internal",
|
|
908
|
+
aliases: ["claude-opus-5.0"],
|
|
909
|
+
display: {
|
|
910
|
+
provider: "anthropic",
|
|
911
|
+
costTier: 3,
|
|
912
|
+
description: "Anthropic Claude Opus 5 current frontier model for agentic coding and enterprise work; text and image input, 1M-token context."
|
|
913
|
+
},
|
|
914
|
+
capabilities: {
|
|
915
|
+
vision: true,
|
|
916
|
+
tools: true,
|
|
917
|
+
structuredOutput: true,
|
|
918
|
+
contextWindow: 1e6
|
|
919
|
+
}
|
|
920
|
+
}),
|
|
921
|
+
text("claude-fable-5", "Claude Fable 5", "claude-fable-5", {
|
|
922
|
+
exposure: "internal",
|
|
923
|
+
display: {
|
|
924
|
+
provider: "anthropic",
|
|
925
|
+
costTier: 3,
|
|
926
|
+
description: "Anthropic Claude Fable 5 (legacy) model for demanding reasoning and long-horizon agentic work; text and image input, 1M-token context."
|
|
927
|
+
},
|
|
928
|
+
capabilities: {
|
|
929
|
+
vision: true,
|
|
930
|
+
tools: true,
|
|
931
|
+
structuredOutput: true,
|
|
932
|
+
contextWindow: 1e6
|
|
933
|
+
}
|
|
934
|
+
}),
|
|
935
|
+
text("gemini-2.5-flash", "Gemini 2.5 Flash", "gemini-2.5-flash", {
|
|
936
|
+
exposure: "internal",
|
|
937
|
+
display: {
|
|
938
|
+
provider: "google",
|
|
939
|
+
costTier: 1,
|
|
940
|
+
description: "Google Gemini 2.5 Flash low-latency multimodal model for high-volume reasoning over text, images, video, and audio; 1M-token context."
|
|
941
|
+
},
|
|
942
|
+
capabilities: {
|
|
943
|
+
vision: true,
|
|
944
|
+
tools: true,
|
|
945
|
+
structuredOutput: true,
|
|
946
|
+
contextWindow: 1048576
|
|
947
|
+
}
|
|
948
|
+
}),
|
|
949
|
+
text("gemini-2.5-pro", "Gemini 2.5 Pro", "gemini-2.5-pro", {
|
|
950
|
+
exposure: "internal",
|
|
951
|
+
display: {
|
|
952
|
+
provider: "google",
|
|
953
|
+
costTier: 2,
|
|
954
|
+
description: "Google Gemini 2.5 Pro thinking model for complex reasoning over code, math, and documents; text, image, video, audio, and PDF input, 1M-token context."
|
|
955
|
+
},
|
|
956
|
+
capabilities: {
|
|
957
|
+
vision: true,
|
|
958
|
+
tools: true,
|
|
959
|
+
structuredOutput: true,
|
|
960
|
+
contextWindow: 1048576
|
|
961
|
+
}
|
|
962
|
+
}),
|
|
963
|
+
text("gemini-3.1-pro-preview", "Gemini 3.1 Pro (preview)", "gemini-3.1-pro-preview", {
|
|
964
|
+
exposure: "catalog",
|
|
965
|
+
display: {
|
|
966
|
+
provider: "google",
|
|
967
|
+
costTier: 2,
|
|
968
|
+
description: "Google Gemini 3.1 Pro preview reasoning model for software engineering, tool use, and reliable agentic workflows; 1M-token context."
|
|
969
|
+
},
|
|
970
|
+
capabilities: {
|
|
971
|
+
vision: true,
|
|
972
|
+
tools: true,
|
|
973
|
+
structuredOutput: true,
|
|
974
|
+
contextWindow: 1048576
|
|
975
|
+
}
|
|
976
|
+
}),
|
|
977
|
+
text("gemini-3.5-flash", "Gemini 3.5 Flash", "gemini-3.5-flash", {
|
|
978
|
+
exposure: "catalog",
|
|
979
|
+
display: {
|
|
980
|
+
provider: "google",
|
|
981
|
+
costTier: 1,
|
|
982
|
+
description: "Google Gemini 3.5 Flash high-throughput model for frontier-level agentic tasks; text, image, video, audio, and PDF input, 1M-token context."
|
|
983
|
+
},
|
|
984
|
+
capabilities: {
|
|
985
|
+
vision: true,
|
|
986
|
+
tools: true,
|
|
987
|
+
structuredOutput: true,
|
|
988
|
+
contextWindow: 1048576
|
|
989
|
+
}
|
|
990
|
+
}),
|
|
991
|
+
text("gemini-3.6-flash", "Gemini 3.6 Flash", "gemini-3.6-flash", {
|
|
992
|
+
exposure: "catalog",
|
|
993
|
+
display: {
|
|
994
|
+
provider: "google",
|
|
995
|
+
costTier: 1,
|
|
996
|
+
description: "Google Gemini 3.6 Flash general-purpose multimodal agentic model balancing speed and capability; 1M-token context."
|
|
997
|
+
},
|
|
998
|
+
capabilities: {
|
|
999
|
+
vision: true,
|
|
1000
|
+
tools: true,
|
|
1001
|
+
structuredOutput: true,
|
|
1002
|
+
contextWindow: 1048576
|
|
1003
|
+
}
|
|
1004
|
+
}),
|
|
1005
|
+
text("gemini-3.7-flash", "Gemini 3.7 Flash", "gemini-3.7-flash", {
|
|
1006
|
+
exposure: "catalog",
|
|
1007
|
+
display: {
|
|
1008
|
+
provider: "google",
|
|
1009
|
+
costTier: 1,
|
|
1010
|
+
recommended: true,
|
|
1011
|
+
description: "Google Gemini 3.7 Flash natively multimodal reasoning model for coding, agentic workflows, and multi-step execution; 1M-token context."
|
|
1012
|
+
},
|
|
1013
|
+
capabilities: {
|
|
1014
|
+
vision: true,
|
|
1015
|
+
tools: true,
|
|
1016
|
+
structuredOutput: true,
|
|
1017
|
+
contextWindow: 1048576
|
|
1018
|
+
}
|
|
1019
|
+
}),
|
|
1020
|
+
text("gemini-3.8-flash", "Gemini 3.8 Flash", "gemini-3.8-flash", {
|
|
1021
|
+
exposure: "internal",
|
|
1022
|
+
display: {
|
|
1023
|
+
provider: "google",
|
|
1024
|
+
costTier: 1,
|
|
1025
|
+
description: "Google Gemini 3.8 Flash frontier model for long-horizon software engineering, autonomous agents, and enterprise workflows; 1M-token context."
|
|
1026
|
+
},
|
|
1027
|
+
capabilities: {
|
|
1028
|
+
vision: true,
|
|
1029
|
+
tools: true,
|
|
1030
|
+
structuredOutput: true,
|
|
1031
|
+
contextWindow: 1048576
|
|
1032
|
+
}
|
|
573
1033
|
}),
|
|
574
|
-
text("claude-fable-5", "Claude Fable 5", "claude-fable-5"),
|
|
575
|
-
text("gemini-2.5-flash", "Gemini 2.5 Flash", "gemini-2.5-flash"),
|
|
576
|
-
text("gemini-2.5-pro", "Gemini 2.5 Pro", "gemini-2.5-pro"),
|
|
577
|
-
text("gemini-3.1-pro-preview", "Gemini 3.1 Pro (preview)", "gemini-3.1-pro-preview"),
|
|
578
|
-
text("gemini-3.5-flash", "Gemini 3.5 Flash", "gemini-3.5-flash"),
|
|
579
|
-
text("gemini-3.6-flash", "Gemini 3.6 Flash", "gemini-3.6-flash"),
|
|
580
|
-
text("gemini-3.7-flash", "Gemini 3.7 Flash", "gemini-3.7-flash"),
|
|
581
|
-
text("gemini-3.8-flash", "Gemini 3.8 Flash", "gemini-3.8-flash"),
|
|
582
1034
|
// Renamed to gemini-3.6-flash in vibe-shared model-migration.ts.
|
|
583
1035
|
text("gemini-3-flash-preview", "Gemini 3 Flash (preview)", "gemini-3-flash-preview", {
|
|
1036
|
+
exposure: "internal",
|
|
584
1037
|
lifecycle: "deprecated",
|
|
585
1038
|
replacedBy: "gemini-3.6-flash"
|
|
586
1039
|
}),
|
|
587
|
-
text("gemini-3.1-flash-lite", "Gemini 3.1 Flash Lite", "gemini-3.1-flash-lite"
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
1040
|
+
text("gemini-3.1-flash-lite", "Gemini 3.1 Flash Lite", "gemini-3.1-flash-lite", {
|
|
1041
|
+
exposure: "internal",
|
|
1042
|
+
display: {
|
|
1043
|
+
provider: "google",
|
|
1044
|
+
costTier: 1,
|
|
1045
|
+
description: "Google Gemini 3.1 Flash-Lite low-latency multimodal model for high-volume agentic, translation, and data-extraction tasks; 1M-token context."
|
|
1046
|
+
},
|
|
1047
|
+
capabilities: {
|
|
1048
|
+
vision: true,
|
|
1049
|
+
tools: true,
|
|
1050
|
+
structuredOutput: true,
|
|
1051
|
+
contextWindow: 1048576
|
|
1052
|
+
}
|
|
1053
|
+
}),
|
|
1054
|
+
text("sonar", "Sonar", "sonar", {
|
|
1055
|
+
exposure: "internal",
|
|
1056
|
+
display: {
|
|
1057
|
+
provider: "perplexity",
|
|
1058
|
+
costTier: 1,
|
|
1059
|
+
description: "Perplexity Sonar lightweight web-grounded search model returning cited answers; 128K-token context."
|
|
1060
|
+
},
|
|
1061
|
+
capabilities: {
|
|
1062
|
+
vision: true,
|
|
1063
|
+
tools: false,
|
|
1064
|
+
structuredOutput: true,
|
|
1065
|
+
contextWindow: 128e3
|
|
1066
|
+
}
|
|
1067
|
+
}),
|
|
1068
|
+
text("sonar-pro", "Sonar Pro", "sonar-pro", {
|
|
1069
|
+
exposure: "internal",
|
|
1070
|
+
display: {
|
|
1071
|
+
provider: "perplexity",
|
|
1072
|
+
costTier: 2,
|
|
1073
|
+
description: "Perplexity Sonar Pro advanced web-grounded search model for complex multi-step queries; 200K-token context."
|
|
1074
|
+
},
|
|
1075
|
+
capabilities: {
|
|
1076
|
+
vision: true,
|
|
1077
|
+
tools: false,
|
|
1078
|
+
structuredOutput: true,
|
|
1079
|
+
contextWindow: 2e5
|
|
1080
|
+
}
|
|
1081
|
+
}),
|
|
1082
|
+
text("sonar-reasoning-pro", "Sonar Reasoning Pro", "sonar-reasoning-pro", {
|
|
1083
|
+
exposure: "internal",
|
|
1084
|
+
display: {
|
|
1085
|
+
provider: "perplexity",
|
|
1086
|
+
costTier: 2,
|
|
1087
|
+
description: "Perplexity Sonar Reasoning Pro chain-of-thought web-grounded search model for complex problem-solving; 128K-token context."
|
|
1088
|
+
},
|
|
1089
|
+
capabilities: {
|
|
1090
|
+
vision: true,
|
|
1091
|
+
tools: false,
|
|
1092
|
+
structuredOutput: true,
|
|
1093
|
+
contextWindow: 128e3
|
|
1094
|
+
}
|
|
1095
|
+
}),
|
|
1096
|
+
text("deepseek-v4-flash", "DeepSeek V4 Flash", "deepseek-v4-flash", {
|
|
1097
|
+
exposure: "catalog",
|
|
1098
|
+
display: {
|
|
1099
|
+
provider: "deepseek",
|
|
1100
|
+
costTier: 1,
|
|
1101
|
+
recommended: true,
|
|
1102
|
+
description: "DeepSeek V4 Flash thinking/non-thinking model with vision, tool calls, and JSON output; 1M-token context and up to 384K output tokens."
|
|
1103
|
+
},
|
|
1104
|
+
capabilities: {
|
|
1105
|
+
vision: true,
|
|
1106
|
+
tools: true,
|
|
1107
|
+
structuredOutput: true,
|
|
1108
|
+
contextWindow: 1e6
|
|
1109
|
+
}
|
|
1110
|
+
}),
|
|
1111
|
+
text("deepseek-v4-pro", "DeepSeek V4 Pro", "deepseek-v4-pro", {
|
|
1112
|
+
exposure: "catalog",
|
|
1113
|
+
display: {
|
|
1114
|
+
provider: "deepseek",
|
|
1115
|
+
costTier: 2,
|
|
1116
|
+
description: "DeepSeek V4 Pro thinking/non-thinking text model with tool calls and JSON output (no vision); 1M-token context and up to 384K output tokens."
|
|
1117
|
+
},
|
|
1118
|
+
capabilities: {
|
|
1119
|
+
vision: false,
|
|
1120
|
+
tools: true,
|
|
1121
|
+
structuredOutput: true,
|
|
1122
|
+
contextWindow: 1e6
|
|
1123
|
+
}
|
|
1124
|
+
}),
|
|
1125
|
+
// 1M-token context: https://docs.x.ai/docs/models/grok-4.3
|
|
1126
|
+
text("grok-4.3", "Grok 4.3", "grok-4.3", {
|
|
1127
|
+
exposure: "catalog",
|
|
1128
|
+
display: {
|
|
1129
|
+
provider: "xai",
|
|
1130
|
+
costTier: 2,
|
|
1131
|
+
description: "xAI Grok 4.3 reasoning model with tool calling and structured outputs; text and image input, 1M-token context."
|
|
1132
|
+
},
|
|
1133
|
+
capabilities: {
|
|
1134
|
+
vision: true,
|
|
1135
|
+
tools: true,
|
|
1136
|
+
structuredOutput: true,
|
|
1137
|
+
contextWindow: 1e6
|
|
1138
|
+
}
|
|
1139
|
+
}),
|
|
1140
|
+
// Moonshot retired kimi-k2.5 on 2026-08-31 and no longer publishes its specs.
|
|
1141
|
+
text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
|
|
1142
|
+
exposure: "catalog",
|
|
1143
|
+
display: {
|
|
1144
|
+
provider: "moonshot",
|
|
1145
|
+
costTier: 2,
|
|
1146
|
+
description: "Moonshot Kimi K2.5; the provider retired the model on 2026-08-31 and calls now return a model-not-found error."
|
|
1147
|
+
},
|
|
1148
|
+
capabilities: {}
|
|
1149
|
+
}),
|
|
1150
|
+
text("kimi-k3", "Kimi K3", "kimi-k3", {
|
|
1151
|
+
exposure: "catalog",
|
|
1152
|
+
display: {
|
|
1153
|
+
provider: "moonshot",
|
|
1154
|
+
costTier: 2,
|
|
1155
|
+
description: "Moonshot Kimi K3 flagship model with native visual understanding and always-on thinking; text, image, and video input, 1M-token context."
|
|
1156
|
+
},
|
|
1157
|
+
capabilities: {
|
|
1158
|
+
vision: true,
|
|
1159
|
+
tools: true,
|
|
1160
|
+
structuredOutput: true,
|
|
1161
|
+
contextWindow: 1e6
|
|
1162
|
+
}
|
|
1163
|
+
}),
|
|
596
1164
|
// Cowork calls the provider "MiniMax-M3"; the pricing key is lowercase.
|
|
597
|
-
|
|
1165
|
+
// 1M-token context: https://platform.minimax.io/docs/api-reference/text-openai-api
|
|
1166
|
+
text("minimax-m3", "MiniMax M3", "MiniMax-M3", {
|
|
1167
|
+
exposure: "catalog",
|
|
1168
|
+
aliases: ["MiniMax-M3"],
|
|
1169
|
+
display: {
|
|
1170
|
+
provider: "minimax",
|
|
1171
|
+
costTier: 2,
|
|
1172
|
+
description: "MiniMax M3 frontier multimodal model for agentic reasoning, tool use, and coding; text, image, and video input, 1M-token context."
|
|
1173
|
+
},
|
|
1174
|
+
capabilities: { vision: true, tools: true, contextWindow: 1e6 }
|
|
1175
|
+
})
|
|
598
1176
|
];
|
|
599
1177
|
|
|
600
1178
|
// src/catalog/video.ts
|
|
@@ -606,6 +1184,8 @@ var GROK_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"];
|
|
|
606
1184
|
var H3_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"];
|
|
607
1185
|
var H3_REFERENCE_RATIOS = ["adaptive", ...H3_RATIOS];
|
|
608
1186
|
var NEGATIVE_PROMPT = "blur, distort, and low quality";
|
|
1187
|
+
var FRAMES_EXCLUDE_REFERENCES = { framesExcludeReferences: true };
|
|
1188
|
+
var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
|
|
609
1189
|
var VIDEO_MODELS = [
|
|
610
1190
|
{
|
|
611
1191
|
id: "veo-3.1",
|
|
@@ -620,6 +1200,7 @@ var VIDEO_MODELS = [
|
|
|
620
1200
|
adapter: "google-genai",
|
|
621
1201
|
providerModelId: "veo-3.1-generate-preview",
|
|
622
1202
|
lifecycle: "active",
|
|
1203
|
+
exposure: "catalog",
|
|
623
1204
|
constraints: {
|
|
624
1205
|
aspectRatios: [...OMNI_RATIOS],
|
|
625
1206
|
resolutions: ["720p", "1080p", "4k"],
|
|
@@ -629,7 +1210,13 @@ var VIDEO_MODELS = [
|
|
|
629
1210
|
},
|
|
630
1211
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
631
1212
|
usage: { ...VIDEO_USAGE },
|
|
632
|
-
pricingKind: "video_per_second"
|
|
1213
|
+
pricingKind: "video_per_second",
|
|
1214
|
+
display: {
|
|
1215
|
+
provider: "google",
|
|
1216
|
+
description: "Google's highest-quality video generation model. Supports up to 4K resolution and 8-second clips with reference image conditioning.",
|
|
1217
|
+
logo: GOOGLE_LOGO
|
|
1218
|
+
},
|
|
1219
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
633
1220
|
},
|
|
634
1221
|
{
|
|
635
1222
|
id: "veo-3.1-fast",
|
|
@@ -643,6 +1230,7 @@ var VIDEO_MODELS = [
|
|
|
643
1230
|
adapter: "google-genai",
|
|
644
1231
|
providerModelId: "veo-3.1-fast-generate-preview",
|
|
645
1232
|
lifecycle: "active",
|
|
1233
|
+
exposure: "internal",
|
|
646
1234
|
constraints: {
|
|
647
1235
|
aspectRatios: [...OMNI_RATIOS],
|
|
648
1236
|
resolutions: ["720p", "1080p", "4k"],
|
|
@@ -652,7 +1240,12 @@ var VIDEO_MODELS = [
|
|
|
652
1240
|
},
|
|
653
1241
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
654
1242
|
usage: { ...VIDEO_USAGE },
|
|
655
|
-
pricingKind: "video_per_second"
|
|
1243
|
+
pricingKind: "video_per_second",
|
|
1244
|
+
display: {
|
|
1245
|
+
provider: "google",
|
|
1246
|
+
description: "Faster variant of Google Veo 3.1; text- and image-to-video with natively generated audio at 4 or 8 seconds."
|
|
1247
|
+
},
|
|
1248
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
656
1249
|
},
|
|
657
1250
|
{
|
|
658
1251
|
id: "veo-3.1-lite",
|
|
@@ -666,16 +1259,22 @@ var VIDEO_MODELS = [
|
|
|
666
1259
|
adapter: "google-genai",
|
|
667
1260
|
providerModelId: "veo-3.1-lite-generate-preview",
|
|
668
1261
|
lifecycle: "active",
|
|
1262
|
+
exposure: "internal",
|
|
669
1263
|
constraints: {
|
|
670
1264
|
aspectRatios: [...OMNI_RATIOS],
|
|
671
|
-
resolutions: ["720p", "1080p"
|
|
1265
|
+
resolutions: ["720p", "1080p"],
|
|
672
1266
|
durations: [4, 8],
|
|
673
1267
|
references: { images: 3 },
|
|
674
1268
|
supports: ["lastFrame"]
|
|
675
1269
|
},
|
|
676
1270
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
677
1271
|
usage: { ...VIDEO_USAGE },
|
|
678
|
-
pricingKind: "video_per_second"
|
|
1272
|
+
pricingKind: "video_per_second",
|
|
1273
|
+
display: {
|
|
1274
|
+
provider: "google",
|
|
1275
|
+
description: "Efficiency-focused Google Veo 3.1 Lite for high-volume video generation and editing; text and image input, with no 4K output or video extension."
|
|
1276
|
+
},
|
|
1277
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
679
1278
|
},
|
|
680
1279
|
{
|
|
681
1280
|
id: "gemini-omni-flash",
|
|
@@ -691,6 +1290,7 @@ var VIDEO_MODELS = [
|
|
|
691
1290
|
adapter: "google-genai",
|
|
692
1291
|
providerModelId: "gemini-omni-flash-preview",
|
|
693
1292
|
lifecycle: "active",
|
|
1293
|
+
exposure: "catalog",
|
|
694
1294
|
constraints: {
|
|
695
1295
|
// 1.0 rejects `resolution`; it renders 720p. No defaults: the adapter
|
|
696
1296
|
// sends ratio and duration only when the caller set them, so a
|
|
@@ -702,7 +1302,13 @@ var VIDEO_MODELS = [
|
|
|
702
1302
|
},
|
|
703
1303
|
defaults: {},
|
|
704
1304
|
usage: { ...VIDEO_USAGE },
|
|
705
|
-
pricingKind: "video_per_second"
|
|
1305
|
+
pricingKind: "video_per_second",
|
|
1306
|
+
display: {
|
|
1307
|
+
provider: "google",
|
|
1308
|
+
description: "Google's conversational video model with native audio, human support, and natural language editing. Aspect ratio only \u2014 resolution and duration are model-determined.",
|
|
1309
|
+
logo: GOOGLE_LOGO
|
|
1310
|
+
},
|
|
1311
|
+
capabilities: { acceptsSourceVideo: true }
|
|
706
1312
|
},
|
|
707
1313
|
{
|
|
708
1314
|
id: "gemini-omni-1.1-flash",
|
|
@@ -712,6 +1318,7 @@ var VIDEO_MODELS = [
|
|
|
712
1318
|
adapter: "google-genai",
|
|
713
1319
|
providerModelId: "gemini-omni-1.1-flash",
|
|
714
1320
|
lifecycle: "active",
|
|
1321
|
+
exposure: "catalog",
|
|
715
1322
|
constraints: {
|
|
716
1323
|
aspectRatios: [...OMNI_RATIOS],
|
|
717
1324
|
resolutions: ["360p", "720p", "1080p", "4k"],
|
|
@@ -721,7 +1328,12 @@ var VIDEO_MODELS = [
|
|
|
721
1328
|
},
|
|
722
1329
|
defaults: {},
|
|
723
1330
|
usage: { ...VIDEO_USAGE },
|
|
724
|
-
pricingKind: "video_per_second"
|
|
1331
|
+
pricingKind: "video_per_second",
|
|
1332
|
+
display: {
|
|
1333
|
+
provider: "google",
|
|
1334
|
+
description: "Google Gemini Omni Flash 1.1 conversational video generation and editing; text, image, and up to 10-second video input, 3-10 second output at up to 4K and 24 FPS."
|
|
1335
|
+
},
|
|
1336
|
+
capabilities: { acceptsSourceVideo: true }
|
|
725
1337
|
},
|
|
726
1338
|
{
|
|
727
1339
|
// vibe-triggers and Space Builder drop the ratio when a frame is wired; Cowork always sends it.
|
|
@@ -732,10 +1344,12 @@ var VIDEO_MODELS = [
|
|
|
732
1344
|
adapter: "ark",
|
|
733
1345
|
providerModelId: "dreamina-seedance-2-0-260128",
|
|
734
1346
|
lifecycle: "active",
|
|
1347
|
+
exposure: "catalog",
|
|
735
1348
|
constraints: {
|
|
736
1349
|
aspectRatios: [...SEEDANCE_RATIOS],
|
|
737
1350
|
resolutions: ["480p", "720p", "1080p", "4k"],
|
|
738
1351
|
durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
1352
|
+
durationPresets: [4, 6, 8, 10, 12, 15],
|
|
739
1353
|
references: { images: 9, videos: 3, audios: 3, audioOnly: false },
|
|
740
1354
|
ratioIgnoredWith: ["firstFrame"],
|
|
741
1355
|
supports: ["generateAudio", "seed", "lastFrame", "watermark"]
|
|
@@ -747,7 +1361,13 @@ var VIDEO_MODELS = [
|
|
|
747
1361
|
generateAudio: true
|
|
748
1362
|
},
|
|
749
1363
|
usage: { ...VIDEO_USAGE },
|
|
750
|
-
pricingKind: "video_per_second"
|
|
1364
|
+
pricingKind: "video_per_second",
|
|
1365
|
+
display: {
|
|
1366
|
+
provider: "bytedance",
|
|
1367
|
+
description: "High-quality AI video generation with reference image conditioning. Supports 4-15 second clips with human preprocessing.",
|
|
1368
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png"
|
|
1369
|
+
},
|
|
1370
|
+
capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
|
|
751
1371
|
},
|
|
752
1372
|
{
|
|
753
1373
|
id: "seedance-2.0-fast",
|
|
@@ -757,6 +1377,7 @@ var VIDEO_MODELS = [
|
|
|
757
1377
|
adapter: "ark",
|
|
758
1378
|
providerModelId: "dreamina-seedance-2-0-fast-260128",
|
|
759
1379
|
lifecycle: "active",
|
|
1380
|
+
exposure: "catalog",
|
|
760
1381
|
constraints: {
|
|
761
1382
|
aspectRatios: [...SEEDANCE_RATIOS],
|
|
762
1383
|
resolutions: ["480p", "720p"],
|
|
@@ -772,7 +1393,12 @@ var VIDEO_MODELS = [
|
|
|
772
1393
|
generateAudio: true
|
|
773
1394
|
},
|
|
774
1395
|
usage: { ...VIDEO_USAGE },
|
|
775
|
-
pricingKind: "video_per_second"
|
|
1396
|
+
pricingKind: "video_per_second",
|
|
1397
|
+
display: {
|
|
1398
|
+
provider: "bytedance",
|
|
1399
|
+
description: "Speed- and cost-optimized ByteDance Seedance 2.0 Fast; text plus image, video, and audio references to generate or edit 4-15 second clips."
|
|
1400
|
+
},
|
|
1401
|
+
capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
|
|
776
1402
|
},
|
|
777
1403
|
{
|
|
778
1404
|
// generateAudio defaults to false here (trigger-workflows); Space Builder defaults it to true.
|
|
@@ -783,6 +1409,7 @@ var VIDEO_MODELS = [
|
|
|
783
1409
|
adapter: "ark",
|
|
784
1410
|
providerModelId: "dreamina-seedance-2-5-260628",
|
|
785
1411
|
lifecycle: "active",
|
|
1412
|
+
exposure: "catalog",
|
|
786
1413
|
constraints: {
|
|
787
1414
|
aspectRatios: [...SEEDANCE_RATIOS],
|
|
788
1415
|
resolutions: ["480p", "720p", "1080p"],
|
|
@@ -798,7 +1425,12 @@ var VIDEO_MODELS = [
|
|
|
798
1425
|
generateAudio: false
|
|
799
1426
|
},
|
|
800
1427
|
usage: { ...VIDEO_USAGE },
|
|
801
|
-
pricingKind: "video_per_second"
|
|
1428
|
+
pricingKind: "video_per_second",
|
|
1429
|
+
display: {
|
|
1430
|
+
provider: "bytedance",
|
|
1431
|
+
description: "ByteDance Seedance 2.5 for long-form storytelling and omni-reference generation/editing; up to 50 reference assets and 4-30 second clips at up to 1080p."
|
|
1432
|
+
},
|
|
1433
|
+
capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
|
|
802
1434
|
},
|
|
803
1435
|
{
|
|
804
1436
|
// Cowork allows 7 reference images and durations 4/6/8/10; Space Builder allows 5 and 1-15s.
|
|
@@ -809,17 +1441,25 @@ var VIDEO_MODELS = [
|
|
|
809
1441
|
adapter: "xai-video",
|
|
810
1442
|
providerModelId: "grok-imagine-video",
|
|
811
1443
|
lifecycle: "active",
|
|
1444
|
+
exposure: "catalog",
|
|
812
1445
|
constraints: {
|
|
813
1446
|
aspectRatios: [...GROK_RATIOS],
|
|
814
1447
|
resolutions: ["480p", "720p"],
|
|
815
1448
|
durations: { min: 1, max: 15 },
|
|
1449
|
+
durationPresets: [4, 6, 8, 10],
|
|
816
1450
|
references: { images: 7 },
|
|
817
1451
|
supports: []
|
|
818
1452
|
},
|
|
819
1453
|
// No resolution default: xAI picks its own unless the caller asks.
|
|
820
1454
|
defaults: { durationSeconds: 8, aspectRatio: "16:9" },
|
|
821
1455
|
usage: { unit: "reported_cost_usd", modality: "VIDEO" },
|
|
822
|
-
pricingKind: "video_per_second"
|
|
1456
|
+
pricingKind: "video_per_second",
|
|
1457
|
+
display: {
|
|
1458
|
+
provider: "xai",
|
|
1459
|
+
description: "xAI's reference-to-video model. Generates short clips conditioned on up to 7 reference images with flexible aspect ratios.",
|
|
1460
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/858b7fcc-9bd5-411d-aea1-a7b35ecfffab_compressed.png"
|
|
1461
|
+
},
|
|
1462
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
823
1463
|
},
|
|
824
1464
|
{
|
|
825
1465
|
id: "kling-2.5",
|
|
@@ -829,6 +1469,7 @@ var VIDEO_MODELS = [
|
|
|
829
1469
|
adapter: "higgsfield",
|
|
830
1470
|
providerModelId: "kling-video/v2.5-turbo/pro/image-to-video",
|
|
831
1471
|
lifecycle: "active",
|
|
1472
|
+
exposure: "catalog",
|
|
832
1473
|
constraints: {
|
|
833
1474
|
aspectRatios: [...KLING_RATIOS],
|
|
834
1475
|
durations: [5, 10],
|
|
@@ -842,7 +1483,12 @@ var VIDEO_MODELS = [
|
|
|
842
1483
|
negativePrompt: NEGATIVE_PROMPT
|
|
843
1484
|
},
|
|
844
1485
|
usage: { ...VIDEO_USAGE },
|
|
845
|
-
pricingKind: "video_per_second"
|
|
1486
|
+
pricingKind: "video_per_second",
|
|
1487
|
+
display: {
|
|
1488
|
+
provider: "kuaishou",
|
|
1489
|
+
description: "Kuaishou Kling 2.5 Turbo Pro image-to-video; animates a single input image from a text prompt with an optional end image, 5- or 10-second clips."
|
|
1490
|
+
},
|
|
1491
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
846
1492
|
},
|
|
847
1493
|
{
|
|
848
1494
|
// trigger-workflows validates 5/10 only; Space Builder allows 3-15s (Kling30Input).
|
|
@@ -853,6 +1499,7 @@ var VIDEO_MODELS = [
|
|
|
853
1499
|
adapter: "higgsfield",
|
|
854
1500
|
providerModelId: "kling-video/v3.0/pro/image-to-video",
|
|
855
1501
|
lifecycle: "active",
|
|
1502
|
+
exposure: "catalog",
|
|
856
1503
|
constraints: {
|
|
857
1504
|
aspectRatios: [...KLING_RATIOS],
|
|
858
1505
|
durations: { min: 3, max: 15 },
|
|
@@ -866,7 +1513,12 @@ var VIDEO_MODELS = [
|
|
|
866
1513
|
negativePrompt: NEGATIVE_PROMPT
|
|
867
1514
|
},
|
|
868
1515
|
usage: { ...VIDEO_USAGE },
|
|
869
|
-
pricingKind: "video_per_second"
|
|
1516
|
+
pricingKind: "video_per_second",
|
|
1517
|
+
display: {
|
|
1518
|
+
provider: "kuaishou",
|
|
1519
|
+
description: "Kuaishou Kling 3.0 Pro image-to-video; a required start image plus a text prompt (or multi-shot prompts) with optional end image and native audio, 3-15 second clips."
|
|
1520
|
+
},
|
|
1521
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
870
1522
|
},
|
|
871
1523
|
{
|
|
872
1524
|
// mode standard/pro selects 720p/1080p; the endpoint takes no separate resolution.
|
|
@@ -877,6 +1529,7 @@ var VIDEO_MODELS = [
|
|
|
877
1529
|
adapter: "replicate",
|
|
878
1530
|
providerModelId: "kwaivgi/kling-v3-omni-video",
|
|
879
1531
|
lifecycle: "active",
|
|
1532
|
+
exposure: "catalog",
|
|
880
1533
|
constraints: {
|
|
881
1534
|
aspectRatios: [
|
|
882
1535
|
"1:1",
|
|
@@ -897,7 +1550,12 @@ var VIDEO_MODELS = [
|
|
|
897
1550
|
},
|
|
898
1551
|
defaults: { durationSeconds: 5, aspectRatio: "16:9", generateAudio: false, mode: "pro" },
|
|
899
1552
|
usage: { unit: "compute_seconds", modality: "VIDEO" },
|
|
900
|
-
pricingKind: "video_per_second"
|
|
1553
|
+
pricingKind: "video_per_second",
|
|
1554
|
+
display: {
|
|
1555
|
+
provider: "kuaishou",
|
|
1556
|
+
description: "Kuaishou Kling Video 3.0 Omni unified generation and editing from text, start/end images, up to 7 reference images, and reference video; up to 15 seconds at up to 1080p."
|
|
1557
|
+
},
|
|
1558
|
+
capabilities: {}
|
|
901
1559
|
},
|
|
902
1560
|
{
|
|
903
1561
|
id: "minimax-h3",
|
|
@@ -907,6 +1565,7 @@ var VIDEO_MODELS = [
|
|
|
907
1565
|
adapter: "fal",
|
|
908
1566
|
providerModelId: "minimax/h3",
|
|
909
1567
|
lifecycle: "active",
|
|
1568
|
+
exposure: "catalog",
|
|
910
1569
|
constraints: {
|
|
911
1570
|
aspectRatios: [...H3_RATIOS],
|
|
912
1571
|
resolutions: ["480p", "768p", "2k", "4k"],
|
|
@@ -920,7 +1579,12 @@ var VIDEO_MODELS = [
|
|
|
920
1579
|
promptExpansion: "balanced"
|
|
921
1580
|
},
|
|
922
1581
|
usage: { ...VIDEO_USAGE },
|
|
923
|
-
pricingKind: "video_per_second"
|
|
1582
|
+
pricingKind: "video_per_second",
|
|
1583
|
+
display: {
|
|
1584
|
+
provider: "minimax",
|
|
1585
|
+
description: "MiniMax H3 multimodal video model for text-to-video, image-to-video (first/last frame), and reference-to-video with native audio, up to 2K."
|
|
1586
|
+
},
|
|
1587
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
924
1588
|
},
|
|
925
1589
|
{
|
|
926
1590
|
id: "minimax-h3-max",
|
|
@@ -930,6 +1594,7 @@ var VIDEO_MODELS = [
|
|
|
930
1594
|
adapter: "fal",
|
|
931
1595
|
providerModelId: "minimax/h3-max",
|
|
932
1596
|
lifecycle: "active",
|
|
1597
|
+
exposure: "catalog",
|
|
933
1598
|
constraints: {
|
|
934
1599
|
aspectRatios: [...H3_RATIOS],
|
|
935
1600
|
resolutions: ["480p", "768p"],
|
|
@@ -943,7 +1608,12 @@ var VIDEO_MODELS = [
|
|
|
943
1608
|
promptExpansion: "balanced"
|
|
944
1609
|
},
|
|
945
1610
|
usage: { ...VIDEO_USAGE },
|
|
946
|
-
pricingKind: "video_per_second"
|
|
1611
|
+
pricingKind: "video_per_second",
|
|
1612
|
+
display: {
|
|
1613
|
+
provider: "minimax",
|
|
1614
|
+
description: "High-speed MiniMax H3 Max variant for text-to-video and image-to-video (first/last frame) only, up to 768p."
|
|
1615
|
+
},
|
|
1616
|
+
capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
|
|
947
1617
|
},
|
|
948
1618
|
{
|
|
949
1619
|
id: "minimax-h3-reference",
|
|
@@ -953,6 +1623,7 @@ var VIDEO_MODELS = [
|
|
|
953
1623
|
adapter: "fal",
|
|
954
1624
|
providerModelId: "minimax/h3/reference-to-video",
|
|
955
1625
|
lifecycle: "active",
|
|
1626
|
+
exposure: "catalog",
|
|
956
1627
|
constraints: {
|
|
957
1628
|
aspectRatios: [...H3_REFERENCE_RATIOS],
|
|
958
1629
|
resolutions: ["480p", "768p", "2k", "4k"],
|
|
@@ -967,7 +1638,12 @@ var VIDEO_MODELS = [
|
|
|
967
1638
|
promptExpansion: "balanced"
|
|
968
1639
|
},
|
|
969
1640
|
usage: { ...VIDEO_USAGE },
|
|
970
|
-
pricingKind: "video_per_second"
|
|
1641
|
+
pricingKind: "video_per_second",
|
|
1642
|
+
display: {
|
|
1643
|
+
provider: "minimax",
|
|
1644
|
+
description: "MiniMax H3 reference-to-video mode guided by up to 9 reference images, 3 reference videos, and 3 audio clips; reference and image-to-video inputs cannot be mixed."
|
|
1645
|
+
},
|
|
1646
|
+
capabilities: {}
|
|
971
1647
|
},
|
|
972
1648
|
{
|
|
973
1649
|
id: "minimax-h3-max-reference",
|
|
@@ -977,6 +1653,7 @@ var VIDEO_MODELS = [
|
|
|
977
1653
|
adapter: "fal",
|
|
978
1654
|
providerModelId: "minimax/h3-max/reference-to-video",
|
|
979
1655
|
lifecycle: "active",
|
|
1656
|
+
exposure: "catalog",
|
|
980
1657
|
constraints: {
|
|
981
1658
|
aspectRatios: [...H3_REFERENCE_RATIOS],
|
|
982
1659
|
resolutions: ["480p", "768p"],
|
|
@@ -991,7 +1668,12 @@ var VIDEO_MODELS = [
|
|
|
991
1668
|
promptExpansion: "balanced"
|
|
992
1669
|
},
|
|
993
1670
|
usage: { ...VIDEO_USAGE },
|
|
994
|
-
pricingKind: "video_per_second"
|
|
1671
|
+
pricingKind: "video_per_second",
|
|
1672
|
+
display: {
|
|
1673
|
+
provider: "minimax",
|
|
1674
|
+
description: "MiniMax H3 Max reference-to-video on fal; conditions on reference images, videos, and audio. MiniMax's own docs do not list a reference mode for H3 Max."
|
|
1675
|
+
},
|
|
1676
|
+
capabilities: {}
|
|
995
1677
|
},
|
|
996
1678
|
{
|
|
997
1679
|
// Duration 3-10s per trigger-workflows mapDuration; the endpoint takes no resolution.
|
|
@@ -1002,6 +1684,7 @@ var VIDEO_MODELS = [
|
|
|
1002
1684
|
adapter: "fal",
|
|
1003
1685
|
providerModelId: "fal-ai/kling-video/o1/video-to-video/reference",
|
|
1004
1686
|
lifecycle: "active",
|
|
1687
|
+
exposure: "internal",
|
|
1005
1688
|
constraints: {
|
|
1006
1689
|
aspectRatios: [...KLING_RATIOS],
|
|
1007
1690
|
durations: { min: 3, max: 10 },
|
|
@@ -1010,7 +1693,12 @@ var VIDEO_MODELS = [
|
|
|
1010
1693
|
},
|
|
1011
1694
|
defaults: { durationSeconds: 5, aspectRatio: "16:9" },
|
|
1012
1695
|
usage: { ...VIDEO_USAGE },
|
|
1013
|
-
pricingKind: "video_per_second"
|
|
1696
|
+
pricingKind: "video_per_second",
|
|
1697
|
+
display: {
|
|
1698
|
+
provider: "kuaishou",
|
|
1699
|
+
description: "Kuaishou Kling O1 Reference Video-to-Video; a prompt plus a 3-10 second reference video (optional reference images) generates 3-10 second clips preserving motion and camera language."
|
|
1700
|
+
},
|
|
1701
|
+
capabilities: { acceptsSourceVideo: true }
|
|
1014
1702
|
},
|
|
1015
1703
|
{
|
|
1016
1704
|
id: "hailuo-02",
|
|
@@ -1020,6 +1708,7 @@ var VIDEO_MODELS = [
|
|
|
1020
1708
|
adapter: "replicate",
|
|
1021
1709
|
providerModelId: "minimax/hailuo-02",
|
|
1022
1710
|
lifecycle: "active",
|
|
1711
|
+
exposure: "internal",
|
|
1023
1712
|
constraints: {
|
|
1024
1713
|
resolutions: ["768p"],
|
|
1025
1714
|
durations: [6, 10],
|
|
@@ -1027,7 +1716,12 @@ var VIDEO_MODELS = [
|
|
|
1027
1716
|
},
|
|
1028
1717
|
defaults: { durationSeconds: 6, resolution: "768p" },
|
|
1029
1718
|
usage: { unit: "compute_seconds", modality: "VIDEO" },
|
|
1030
|
-
pricingKind: "video_per_second"
|
|
1719
|
+
pricingKind: "video_per_second",
|
|
1720
|
+
display: {
|
|
1721
|
+
provider: "minimax",
|
|
1722
|
+
description: "MiniMax Hailuo 02 text-to-video and image-to-video model with realistic physics and strong prompt following; outputs 768p at 6 or 10 seconds."
|
|
1723
|
+
},
|
|
1724
|
+
capabilities: {}
|
|
1031
1725
|
},
|
|
1032
1726
|
{
|
|
1033
1727
|
id: "higgsfield-dop-preview",
|
|
@@ -1037,13 +1731,19 @@ var VIDEO_MODELS = [
|
|
|
1037
1731
|
adapter: "higgsfield",
|
|
1038
1732
|
providerModelId: "dop-preview",
|
|
1039
1733
|
lifecycle: "active",
|
|
1734
|
+
exposure: "internal",
|
|
1040
1735
|
constraints: {
|
|
1041
1736
|
requires: ["firstFrame"],
|
|
1042
1737
|
supports: ["seed", "lastFrame"]
|
|
1043
1738
|
},
|
|
1044
1739
|
defaults: {},
|
|
1045
1740
|
usage: { ...VIDEO_USAGE },
|
|
1046
|
-
pricingKind: "video_per_second"
|
|
1741
|
+
pricingKind: "video_per_second",
|
|
1742
|
+
display: {
|
|
1743
|
+
provider: "higgsfield",
|
|
1744
|
+
description: "Higgsfield DOP image-to-video model; animates a required first-frame image from a text prompt with an optional last-frame image and motion controls."
|
|
1745
|
+
},
|
|
1746
|
+
capabilities: {}
|
|
1047
1747
|
}
|
|
1048
1748
|
];
|
|
1049
1749
|
|
|
@@ -1629,6 +2329,7 @@ function passthroughTextModel(model) {
|
|
|
1629
2329
|
adapter: "ai-sdk-text",
|
|
1630
2330
|
providerModelId: model.modelId,
|
|
1631
2331
|
lifecycle: "active",
|
|
2332
|
+
exposure: "internal",
|
|
1632
2333
|
constraints: {},
|
|
1633
2334
|
defaults: {},
|
|
1634
2335
|
usage: { unit: "tokens", modality: "TEXT" },
|