@apicity/kie 0.5.4 → 0.6.1

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.
@@ -1,3 +1,22 @@
1
+ import { HAPPYHORSE_DURATION_MAX_SECONDS, HAPPYHORSE_DURATION_MIN_SECONDS, Wan27VideoEditDurationValues, } from "./zod.js";
2
+ const happyHorseDurationField = {
3
+ type: "integer",
4
+ minimum: HAPPYHORSE_DURATION_MIN_SECONDS,
5
+ maximum: HAPPYHORSE_DURATION_MAX_SECONDS,
6
+ default: 5,
7
+ description: `Duration in seconds, ${HAPPYHORSE_DURATION_MIN_SECONDS}-${HAPPYHORSE_DURATION_MAX_SECONDS} (default 5)`,
8
+ };
9
+ const happyHorse11AspectRatios = [
10
+ "16:9",
11
+ "9:16",
12
+ "3:4",
13
+ "4:3",
14
+ "4:5",
15
+ "5:4",
16
+ "1:1",
17
+ "9:21",
18
+ "21:9",
19
+ ];
1
20
  export const modelInputSchemas = {
2
21
  "kling-3.0/video": {
3
22
  type: "video",
@@ -169,6 +188,8 @@ export const modelInputSchemas = {
169
188
  prompt: {
170
189
  type: "string",
171
190
  required: true,
191
+ minLength: 1,
192
+ maxLength: 5000,
172
193
  description: "Image generation prompt (max 5000 chars)",
173
194
  },
174
195
  aspect_ratio: {
@@ -191,11 +212,14 @@ export const modelInputSchemas = {
191
212
  fields: {
192
213
  prompt: {
193
214
  type: "string",
215
+ maxLength: 390000,
194
216
  description: "Modification prompt (max 390000 chars)",
195
217
  },
196
218
  image_urls: {
197
219
  type: "array",
198
220
  required: true,
221
+ minItems: 1,
222
+ maxItems: 1,
199
223
  description: "Input image URL (exactly 1)",
200
224
  items: { type: "string" },
201
225
  },
@@ -213,6 +237,8 @@ export const modelInputSchemas = {
213
237
  prompt: {
214
238
  type: "string",
215
239
  required: true,
240
+ minLength: 1,
241
+ maxLength: 5000,
216
242
  description: "Video generation prompt (max 5000 chars)",
217
243
  },
218
244
  aspect_ratio: {
@@ -226,7 +252,10 @@ export const modelInputSchemas = {
226
252
  description: "Generation mode (default normal)",
227
253
  },
228
254
  duration: {
229
- type: "number",
255
+ type: "integer",
256
+ minimum: 6,
257
+ maximum: 30,
258
+ default: 6,
230
259
  description: "Duration in seconds (6-30, default 6)",
231
260
  },
232
261
  resolution: {
@@ -245,10 +274,13 @@ export const modelInputSchemas = {
245
274
  fields: {
246
275
  prompt: {
247
276
  type: "string",
248
- description: "Video generation prompt (max 5000 chars)",
277
+ maxLength: 4096,
278
+ description: "Video generation prompt (max 4096 chars)",
249
279
  },
250
280
  image_urls: {
251
281
  type: "array",
282
+ minItems: 1,
283
+ maxItems: 7,
252
284
  description: "External JPEG/PNG/WEBP image URLs (max 7, 10MB each); mutually exclusive with task_id",
253
285
  items: { type: "string" },
254
286
  },
@@ -256,15 +288,24 @@ export const modelInputSchemas = {
256
288
  type: "string",
257
289
  description: "Grok-generated image task ID; use with index and without image_urls",
258
290
  },
259
- index: { type: "number", description: "Image index (0-5, default 0)" },
291
+ index: {
292
+ type: "integer",
293
+ minimum: 0,
294
+ maximum: 5,
295
+ default: 0,
296
+ description: "Image index (0-5, default 0)",
297
+ },
260
298
  mode: {
261
299
  type: "string",
262
300
  enum: ["fun", "normal", "spicy"],
263
- description: "Generation mode (default normal; spicy is unavailable with external image_urls)",
301
+ description: "Generation mode (default normal; spicy requires task_id and is unavailable with external image_urls)",
264
302
  },
265
303
  duration: {
266
- type: "number",
267
- description: "Duration in seconds (6-30, default 6)",
304
+ type: "integer",
305
+ minimum: 6,
306
+ maximum: 30,
307
+ default: 6,
308
+ description: "Duration in whole seconds (6-30, default 6)",
268
309
  },
269
310
  resolution: {
270
311
  type: "string",
@@ -289,11 +330,13 @@ export const modelInputSchemas = {
289
330
  fields: {
290
331
  prompt: {
291
332
  type: "string",
333
+ maxLength: 4096,
292
334
  description: "Video generation prompt (max 4096 chars)",
293
335
  },
294
336
  image_urls: {
295
337
  type: "array",
296
338
  required: true,
339
+ minItems: 1,
297
340
  description: "Input image URLs (jpeg/png/webp, max 20MB each)",
298
341
  items: { type: "string" },
299
342
  },
@@ -308,7 +351,10 @@ export const modelInputSchemas = {
308
351
  description: "Output resolution (default 480p)",
309
352
  },
310
353
  duration: {
311
- type: "number",
354
+ type: "integer",
355
+ minimum: 1,
356
+ maximum: 15,
357
+ default: 8,
312
358
  description: "Duration in seconds (1-15, default 8)",
313
359
  },
314
360
  nsfw_checker: {
@@ -323,11 +369,14 @@ export const modelInputSchemas = {
323
369
  task_id: {
324
370
  type: "string",
325
371
  required: true,
372
+ maxLength: 100,
326
373
  description: "Video task ID to extend (max 100 chars)",
327
374
  },
328
375
  prompt: {
329
376
  type: "string",
330
377
  required: true,
378
+ minLength: 1,
379
+ maxLength: 5000,
331
380
  description: "Extension prompt",
332
381
  },
333
382
  extend_at: {
@@ -349,6 +398,7 @@ export const modelInputSchemas = {
349
398
  task_id: {
350
399
  type: "string",
351
400
  required: true,
401
+ maxLength: 100,
352
402
  description: "Video task ID to upscale (max 100 chars)",
353
403
  },
354
404
  },
@@ -523,6 +573,70 @@ export const modelInputSchemas = {
523
573
  },
524
574
  },
525
575
  },
576
+ "bytedance/seedance-2-mini": {
577
+ type: "video",
578
+ fields: {
579
+ prompt: {
580
+ type: "string",
581
+ maxLength: 20000,
582
+ description: "Text prompt or description for the generated video",
583
+ },
584
+ reference_image_urls: {
585
+ type: "array",
586
+ default: [],
587
+ description: "Reference image URLs (JPEG, PNG, WEBP, JPG, or GIF; max 30 MB each)",
588
+ items: { type: "string" },
589
+ },
590
+ reference_video_urls: {
591
+ type: "array",
592
+ maxItems: 3,
593
+ default: [],
594
+ description: "Reference video URLs (MP4, MOV, or MKV; up to 3 videos, 15 seconds total)",
595
+ items: { type: "string" },
596
+ },
597
+ reference_audio_urls: {
598
+ type: "array",
599
+ maxItems: 3,
600
+ default: [],
601
+ description: "Reference audio URLs (MP3 or WAV; up to 3 clips, 15 seconds total)",
602
+ items: { type: "string" },
603
+ },
604
+ generate_audio: {
605
+ type: "boolean",
606
+ default: true,
607
+ description: "Generate accompanying audio (default true)",
608
+ },
609
+ resolution: {
610
+ type: "string",
611
+ enum: ["480p", "720p"],
612
+ default: "720p",
613
+ description: "Output resolution (default 720p)",
614
+ },
615
+ aspect_ratio: {
616
+ type: "string",
617
+ enum: ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "adaptive"],
618
+ default: "16:9",
619
+ description: "Output aspect ratio (default 16:9)",
620
+ },
621
+ duration: {
622
+ type: "integer",
623
+ minimum: 4,
624
+ maximum: 15,
625
+ default: 15,
626
+ description: "Duration in seconds, 4-15 (default 15)",
627
+ },
628
+ web_search: {
629
+ type: "boolean",
630
+ default: false,
631
+ description: "Use online search (default false)",
632
+ },
633
+ nsfw_checker: {
634
+ type: "boolean",
635
+ default: true,
636
+ description: "Content safety filter (default true)",
637
+ },
638
+ },
639
+ },
526
640
  "nano-banana-2": {
527
641
  type: "image",
528
642
  fields: {
@@ -823,10 +937,13 @@ export const modelInputSchemas = {
823
937
  prompt: {
824
938
  type: "string",
825
939
  required: true,
940
+ minLength: 1,
941
+ maxLength: 5000,
826
942
  description: "Positive prompt (max 5000 chars)",
827
943
  },
828
944
  negative_prompt: {
829
945
  type: "string",
946
+ maxLength: 500,
830
947
  description: "Negative prompt (max 500 chars)",
831
948
  },
832
949
  first_frame_url: {
@@ -851,7 +968,10 @@ export const modelInputSchemas = {
851
968
  description: "Video resolution (default 1080p)",
852
969
  },
853
970
  duration: {
854
- type: "number",
971
+ type: "integer",
972
+ minimum: 2,
973
+ maximum: 15,
974
+ default: 5,
855
975
  description: "Duration in seconds, 2-15 (default 5)",
856
976
  },
857
977
  prompt_extend: {
@@ -863,7 +983,9 @@ export const modelInputSchemas = {
863
983
  description: "AI-generated watermark (default false)",
864
984
  },
865
985
  seed: {
866
- type: "number",
986
+ type: "integer",
987
+ minimum: 0,
988
+ maximum: 2147483647,
867
989
  description: "Random seed (0-2147483647)",
868
990
  },
869
991
  nsfw_checker: {
@@ -878,10 +1000,13 @@ export const modelInputSchemas = {
878
1000
  prompt: {
879
1001
  type: "string",
880
1002
  required: true,
1003
+ minLength: 1,
1004
+ maxLength: 5000,
881
1005
  description: "Positive prompt (max 5000 chars)",
882
1006
  },
883
1007
  negative_prompt: {
884
1008
  type: "string",
1009
+ maxLength: 500,
885
1010
  description: "Negative prompt (max 500 chars)",
886
1011
  },
887
1012
  audio_url: {
@@ -899,7 +1024,10 @@ export const modelInputSchemas = {
899
1024
  description: "Video aspect ratio (default 16:9)",
900
1025
  },
901
1026
  duration: {
902
- type: "number",
1027
+ type: "integer",
1028
+ minimum: 2,
1029
+ maximum: 15,
1030
+ default: 5,
903
1031
  description: "Duration in seconds, 2-15 (default 5)",
904
1032
  },
905
1033
  prompt_extend: {
@@ -911,7 +1039,9 @@ export const modelInputSchemas = {
911
1039
  description: "AI-generated watermark (default false)",
912
1040
  },
913
1041
  seed: {
914
- type: "number",
1042
+ type: "integer",
1043
+ minimum: 0,
1044
+ maximum: 2147483647,
915
1045
  description: "Random seed (0-2147483647)",
916
1046
  },
917
1047
  nsfw_checker: {
@@ -926,18 +1056,23 @@ export const modelInputSchemas = {
926
1056
  prompt: {
927
1057
  type: "string",
928
1058
  required: true,
1059
+ minLength: 1,
1060
+ maxLength: 5000,
929
1061
  description: "Positive prompt (max 5000 chars)",
930
1062
  },
931
1063
  negative_prompt: {
932
1064
  type: "string",
1065
+ maxLength: 500,
933
1066
  description: "Negative prompt (max 500 chars)",
934
1067
  },
935
1068
  reference_image: {
936
1069
  type: "array",
1070
+ maxItems: 5,
937
1071
  description: "Array of reference image URLs (max 5 total with videos)",
938
1072
  },
939
1073
  reference_video: {
940
1074
  type: "array",
1075
+ maxItems: 5,
941
1076
  description: "Array of reference video URLs (max 5 total with images)",
942
1077
  },
943
1078
  first_frame: {
@@ -959,7 +1094,10 @@ export const modelInputSchemas = {
959
1094
  description: "Video aspect ratio (default 16:9, ignored if first_frame set)",
960
1095
  },
961
1096
  duration: {
962
- type: "number",
1097
+ type: "integer",
1098
+ minimum: 2,
1099
+ maximum: 10,
1100
+ default: 5,
963
1101
  description: "Duration in seconds, 2-10 (default 5)",
964
1102
  },
965
1103
  prompt_extend: {
@@ -971,7 +1109,9 @@ export const modelInputSchemas = {
971
1109
  description: "AI-generated watermark (default false)",
972
1110
  },
973
1111
  seed: {
974
- type: "number",
1112
+ type: "integer",
1113
+ minimum: 0,
1114
+ maximum: 2147483647,
975
1115
  description: "Random seed (0-2147483647)",
976
1116
  },
977
1117
  nsfw_checker: {
@@ -985,10 +1125,12 @@ export const modelInputSchemas = {
985
1125
  fields: {
986
1126
  prompt: {
987
1127
  type: "string",
1128
+ maxLength: 5000,
988
1129
  description: "Positive prompt (max 5000 chars)",
989
1130
  },
990
1131
  negative_prompt: {
991
1132
  type: "string",
1133
+ maxLength: 500,
992
1134
  description: "Negative prompt (max 500 chars)",
993
1135
  },
994
1136
  video_url: {
@@ -1011,7 +1153,11 @@ export const modelInputSchemas = {
1011
1153
  description: "Output aspect ratio (default matches input video)",
1012
1154
  },
1013
1155
  duration: {
1014
- type: "number",
1156
+ type: "integer",
1157
+ enum: Wan27VideoEditDurationValues,
1158
+ minimum: 0,
1159
+ maximum: 10,
1160
+ default: 0,
1015
1161
  description: "Duration in seconds, 0 or 2-10 (default 0 = full input duration)",
1016
1162
  },
1017
1163
  audio_setting: {
@@ -1028,7 +1174,9 @@ export const modelInputSchemas = {
1028
1174
  description: "AI-generated watermark (default false)",
1029
1175
  },
1030
1176
  seed: {
1031
- type: "number",
1177
+ type: "integer",
1178
+ minimum: 0,
1179
+ maximum: 2147483647,
1032
1180
  description: "Random seed (0-2147483647)",
1033
1181
  },
1034
1182
  nsfw_checker: {
@@ -1043,10 +1191,13 @@ export const modelInputSchemas = {
1043
1191
  prompt: {
1044
1192
  type: "string",
1045
1193
  required: true,
1194
+ minLength: 1,
1195
+ maxLength: 5000,
1046
1196
  description: "Prompt for image generation or editing (max 5000 chars)",
1047
1197
  },
1048
1198
  input_urls: {
1049
1199
  type: "array",
1200
+ maxItems: 9,
1050
1201
  description: "Array of input image URLs (max 9)",
1051
1202
  },
1052
1203
  aspect_ratio: {
@@ -1059,7 +1210,9 @@ export const modelInputSchemas = {
1059
1210
  description: "Enable sequential/group image mode (default false)",
1060
1211
  },
1061
1212
  n: {
1062
- type: "number",
1213
+ type: "integer",
1214
+ minimum: 1,
1215
+ maximum: 12,
1063
1216
  description: "Number of images to generate: 1-4 when sequential=false (default 4), 1-12 when sequential=true (default 12)",
1064
1217
  },
1065
1218
  resolution: {
@@ -1073,6 +1226,8 @@ export const modelInputSchemas = {
1073
1226
  },
1074
1227
  color_palette: {
1075
1228
  type: "array",
1229
+ minItems: 3,
1230
+ maxItems: 10,
1076
1231
  description: "Custom color theme with 3-10 {hex, ratio} entries (only when sequential=false)",
1077
1232
  },
1078
1233
  bbox_list: {
@@ -1084,7 +1239,9 @@ export const modelInputSchemas = {
1084
1239
  description: "Add watermark (default false)",
1085
1240
  },
1086
1241
  seed: {
1087
- type: "number",
1242
+ type: "integer",
1243
+ minimum: 0,
1244
+ maximum: 2147483647,
1088
1245
  description: "Random seed (0-2147483647)",
1089
1246
  },
1090
1247
  nsfw_checker: {
@@ -1099,10 +1256,13 @@ export const modelInputSchemas = {
1099
1256
  prompt: {
1100
1257
  type: "string",
1101
1258
  required: true,
1259
+ minLength: 1,
1260
+ maxLength: 5000,
1102
1261
  description: "Prompt for image generation or editing (max 5000 chars)",
1103
1262
  },
1104
1263
  input_urls: {
1105
1264
  type: "array",
1265
+ maxItems: 9,
1106
1266
  description: "Array of input image URLs (max 9)",
1107
1267
  },
1108
1268
  aspect_ratio: {
@@ -1115,7 +1275,9 @@ export const modelInputSchemas = {
1115
1275
  description: "Enable sequential/group image mode (default false)",
1116
1276
  },
1117
1277
  n: {
1118
- type: "number",
1278
+ type: "integer",
1279
+ minimum: 1,
1280
+ maximum: 12,
1119
1281
  description: "Number of images to generate: 1-4 when sequential=false (default 4), 1-12 when sequential=true (default 12)",
1120
1282
  },
1121
1283
  resolution: {
@@ -1129,6 +1291,8 @@ export const modelInputSchemas = {
1129
1291
  },
1130
1292
  color_palette: {
1131
1293
  type: "array",
1294
+ minItems: 3,
1295
+ maxItems: 10,
1132
1296
  description: "Custom color theme with 3-10 {hex, ratio} entries (only when sequential=false)",
1133
1297
  },
1134
1298
  bbox_list: {
@@ -1140,7 +1304,9 @@ export const modelInputSchemas = {
1140
1304
  description: "Add watermark (default false)",
1141
1305
  },
1142
1306
  seed: {
1143
- type: "number",
1307
+ type: "integer",
1308
+ minimum: 0,
1309
+ maximum: 2147483647,
1144
1310
  description: "Random seed (0-2147483647)",
1145
1311
  },
1146
1312
  nsfw_checker: {
@@ -1317,6 +1483,8 @@ export const modelInputSchemas = {
1317
1483
  prompt: {
1318
1484
  type: "string",
1319
1485
  required: true,
1486
+ minLength: 1,
1487
+ maxLength: 5000,
1320
1488
  description: "Video generation prompt (max 5000 non-Chinese / 2500 Chinese chars)",
1321
1489
  },
1322
1490
  resolution: {
@@ -1329,12 +1497,11 @@ export const modelInputSchemas = {
1329
1497
  enum: ["16:9", "9:16", "1:1", "4:3", "3:4"],
1330
1498
  description: "Output aspect ratio (default 16:9)",
1331
1499
  },
1332
- duration: {
1333
- type: "number",
1334
- description: "Duration in seconds, 3-15 (default 5)",
1335
- },
1500
+ duration: happyHorseDurationField,
1336
1501
  seed: {
1337
- type: "number",
1502
+ type: "integer",
1503
+ minimum: 0,
1504
+ maximum: 2147483647,
1338
1505
  description: "Random seed (0-2147483647)",
1339
1506
  },
1340
1507
  },
@@ -1344,11 +1511,14 @@ export const modelInputSchemas = {
1344
1511
  fields: {
1345
1512
  prompt: {
1346
1513
  type: "string",
1514
+ maxLength: 5000,
1347
1515
  description: "Video generation prompt (max 5000 non-Chinese / 2500 Chinese chars)",
1348
1516
  },
1349
1517
  image_urls: {
1350
1518
  type: "array",
1351
1519
  required: true,
1520
+ minItems: 1,
1521
+ maxItems: 1,
1352
1522
  description: "First-frame image URL list (exactly 1 image required)",
1353
1523
  items: { type: "string" },
1354
1524
  },
@@ -1357,12 +1527,11 @@ export const modelInputSchemas = {
1357
1527
  enum: ["720p", "1080p"],
1358
1528
  description: "Output resolution (default 1080p)",
1359
1529
  },
1360
- duration: {
1361
- type: "number",
1362
- description: "Duration in seconds, 3-15 (default 5)",
1363
- },
1530
+ duration: happyHorseDurationField,
1364
1531
  seed: {
1365
- type: "number",
1532
+ type: "integer",
1533
+ minimum: 0,
1534
+ maximum: 2147483647,
1366
1535
  description: "Random seed (0-2147483647)",
1367
1536
  },
1368
1537
  },
@@ -1373,11 +1542,15 @@ export const modelInputSchemas = {
1373
1542
  prompt: {
1374
1543
  type: "string",
1375
1544
  required: true,
1545
+ minLength: 1,
1546
+ maxLength: 5000,
1376
1547
  description: "Video generation prompt (max 5000 non-Chinese / 2500 Chinese chars)",
1377
1548
  },
1378
1549
  reference_image: {
1379
1550
  type: "array",
1380
1551
  required: true,
1552
+ minItems: 1,
1553
+ maxItems: 9,
1381
1554
  description: "Reference image URLs (1-9 images; order defines character1, character2, ...)",
1382
1555
  items: { type: "string" },
1383
1556
  },
@@ -1391,12 +1564,11 @@ export const modelInputSchemas = {
1391
1564
  enum: ["16:9", "9:16", "1:1", "4:3", "3:4"],
1392
1565
  description: "Output aspect ratio (default 16:9)",
1393
1566
  },
1394
- duration: {
1395
- type: "number",
1396
- description: "Duration in seconds, 3-15 (default 5)",
1397
- },
1567
+ duration: happyHorseDurationField,
1398
1568
  seed: {
1399
- type: "number",
1569
+ type: "integer",
1570
+ minimum: 0,
1571
+ maximum: 2147483647,
1400
1572
  description: "Random seed (0-2147483647)",
1401
1573
  },
1402
1574
  },
@@ -1407,6 +1579,8 @@ export const modelInputSchemas = {
1407
1579
  prompt: {
1408
1580
  type: "string",
1409
1581
  required: true,
1582
+ minLength: 1,
1583
+ maxLength: 5000,
1410
1584
  description: "Edit instruction (max 5000 non-Chinese / 2500 Chinese chars)",
1411
1585
  },
1412
1586
  video_url: {
@@ -1416,6 +1590,7 @@ export const modelInputSchemas = {
1416
1590
  },
1417
1591
  reference_image: {
1418
1592
  type: "array",
1593
+ maxItems: 5,
1419
1594
  description: "Optional reference image URLs (0-5)",
1420
1595
  items: { type: "string" },
1421
1596
  },
@@ -1430,11 +1605,102 @@ export const modelInputSchemas = {
1430
1605
  description: "Audio handling: auto (model decides) or origin (keep original) (default auto)",
1431
1606
  },
1432
1607
  seed: {
1433
- type: "number",
1608
+ type: "integer",
1609
+ minimum: 0,
1610
+ maximum: 2147483647,
1434
1611
  description: "Random seed (0-2147483647)",
1435
1612
  },
1436
1613
  },
1437
1614
  },
1615
+ // Sources:
1616
+ // - https://docs.kie.ai/market/happyhorse-1-1/image-to-video
1617
+ // - https://docs.kie.ai/market/happyhorse-1-1/text-to-video
1618
+ // - https://docs.kie.ai/market/happyhorse-1-1/reference-to-video
1619
+ // - https://kie.ai/happyhorse-1-1
1620
+ "happyhorse-1-1/text-to-video": {
1621
+ type: "video",
1622
+ fields: {
1623
+ prompt: {
1624
+ type: "string",
1625
+ required: true,
1626
+ minLength: 1,
1627
+ maxLength: 5000,
1628
+ description: "Video generation prompt (max 5000 non-Chinese / 2500 Chinese chars)",
1629
+ },
1630
+ resolution: {
1631
+ type: "string",
1632
+ enum: ["720p", "1080p"],
1633
+ default: "1080p",
1634
+ description: "Output resolution (default 1080p)",
1635
+ },
1636
+ aspect_ratio: {
1637
+ type: "string",
1638
+ enum: happyHorse11AspectRatios,
1639
+ default: "16:9",
1640
+ description: "Output aspect ratio (default 16:9)",
1641
+ },
1642
+ duration: happyHorseDurationField,
1643
+ },
1644
+ },
1645
+ "happyhorse-1-1/image-to-video": {
1646
+ type: "video",
1647
+ fields: {
1648
+ prompt: {
1649
+ type: "string",
1650
+ maxLength: 5000,
1651
+ default: "",
1652
+ description: "Video generation prompt (max 5000 non-Chinese / 2500 Chinese chars)",
1653
+ },
1654
+ image_urls: {
1655
+ type: "array",
1656
+ required: true,
1657
+ minItems: 1,
1658
+ maxItems: 1,
1659
+ description: "First-frame image URL list (exactly 1 JPEG/JPG/PNG/WEBP image, max 20 MB)",
1660
+ items: { type: "string" },
1661
+ },
1662
+ resolution: {
1663
+ type: "string",
1664
+ enum: ["720p", "1080p"],
1665
+ default: "1080p",
1666
+ description: "Output resolution (default 1080p)",
1667
+ },
1668
+ duration: happyHorseDurationField,
1669
+ },
1670
+ },
1671
+ "happyhorse-1-1/reference-to-video": {
1672
+ type: "video",
1673
+ fields: {
1674
+ prompt: {
1675
+ type: "string",
1676
+ required: true,
1677
+ minLength: 1,
1678
+ maxLength: 5000,
1679
+ description: "Video generation prompt (max 5000 non-Chinese / 2500 Chinese chars)",
1680
+ },
1681
+ reference_image: {
1682
+ type: "array",
1683
+ required: true,
1684
+ minItems: 1,
1685
+ maxItems: 9,
1686
+ description: "Reference image URLs (1-9 JPEG/JPG/PNG/WEBP images, max 20 MB each)",
1687
+ items: { type: "string" },
1688
+ },
1689
+ resolution: {
1690
+ type: "string",
1691
+ enum: ["720p", "1080p"],
1692
+ default: "1080p",
1693
+ description: "Output resolution (default 1080p)",
1694
+ },
1695
+ aspect_ratio: {
1696
+ type: "string",
1697
+ enum: happyHorse11AspectRatios,
1698
+ default: "16:9",
1699
+ description: "Output aspect ratio (default 16:9)",
1700
+ },
1701
+ duration: happyHorseDurationField,
1702
+ },
1703
+ },
1438
1704
  "omnihuman-1-5": {
1439
1705
  type: "video",
1440
1706
  fields: {
@@ -1445,6 +1711,7 @@ export const modelInputSchemas = {
1445
1711
  },
1446
1712
  mask_url: {
1447
1713
  type: "array",
1714
+ maxItems: 5,
1448
1715
  description: "Optional subject mask image URLs (jpeg/png/webp, max 5, max 10MB each)",
1449
1716
  items: { type: "string" },
1450
1717
  },
@@ -1455,6 +1722,7 @@ export const modelInputSchemas = {
1455
1722
  },
1456
1723
  prompt: {
1457
1724
  type: "string",
1725
+ maxLength: 1000,
1458
1726
  description: "Optional motion prompt (max 1000 chars; Chinese, English, Japanese, Korean, Spanish, or Indonesian)",
1459
1727
  },
1460
1728
  output_resolution: {
@@ -1467,7 +1735,9 @@ export const modelInputSchemas = {
1467
1735
  description: "Fast mode trades quality for speed (default false)",
1468
1736
  },
1469
1737
  seed: {
1470
- type: "number",
1738
+ type: "integer",
1739
+ minimum: -1,
1740
+ default: -1,
1471
1741
  description: "Random seed (-1 for random, default -1)",
1472
1742
  },
1473
1743
  },
@@ -1513,5 +1783,85 @@ export const modelInputSchemas = {
1513
1783
  },
1514
1784
  },
1515
1785
  },
1786
+ "gemini-omni-video": {
1787
+ type: "video",
1788
+ fields: {
1789
+ prompt: {
1790
+ type: "string",
1791
+ required: true,
1792
+ minLength: 1,
1793
+ maxLength: 20000,
1794
+ description: "Multimodal video generation prompt (max 20000 chars)",
1795
+ },
1796
+ image_urls: {
1797
+ type: "array",
1798
+ maxItems: 7,
1799
+ description: "Reference image URLs (max 7, each image up to 20MB; each counts as 1 quota unit)",
1800
+ items: { type: "string" },
1801
+ },
1802
+ audio_ids: {
1803
+ type: "array",
1804
+ maxItems: 3,
1805
+ description: "Audio IDs created by gemini-omni-audio (max 3; does not count toward visual quota)",
1806
+ items: { type: "string" },
1807
+ },
1808
+ video_list: {
1809
+ type: "array",
1810
+ maxItems: 1,
1811
+ description: "Reference video clip list (max 1; source video under 100MB and 30s; each clip counts as 2 quota units)",
1812
+ items: {
1813
+ type: "object",
1814
+ properties: {
1815
+ url: {
1816
+ type: "string",
1817
+ required: true,
1818
+ description: "Reference video URL",
1819
+ },
1820
+ start: {
1821
+ type: "number",
1822
+ required: true,
1823
+ minimum: 0,
1824
+ description: "Clip start time in seconds",
1825
+ },
1826
+ ends: {
1827
+ type: "number",
1828
+ required: true,
1829
+ minimum: 0,
1830
+ description: "Clip end time in seconds; must be greater than start and less than 10 seconds after start",
1831
+ },
1832
+ },
1833
+ },
1834
+ },
1835
+ character_ids: {
1836
+ type: "array",
1837
+ maxItems: 3,
1838
+ description: "Character IDs created by gemini-omni-character (max 3; each counts as 1 quota unit)",
1839
+ items: { type: "string" },
1840
+ },
1841
+ duration: {
1842
+ type: "string",
1843
+ required: true,
1844
+ enum: ["4", "6", "8", "10"],
1845
+ description: "Output duration in seconds; ignored by Kie when video input is provided",
1846
+ },
1847
+ aspect_ratio: {
1848
+ type: "string",
1849
+ enum: ["16:9", "9:16"],
1850
+ description: "Output aspect ratio",
1851
+ },
1852
+ seed: {
1853
+ type: "integer",
1854
+ minimum: 0,
1855
+ maximum: 2147483647,
1856
+ description: "Random seed",
1857
+ },
1858
+ resolution: {
1859
+ type: "string",
1860
+ enum: ["720p", "1080p", "4k"],
1861
+ default: "720p",
1862
+ description: "Output resolution (default 720p)",
1863
+ },
1864
+ },
1865
+ },
1516
1866
  };
1517
1867
  //# sourceMappingURL=model-schemas.js.map