@gptmarket/temporal-types 0.0.23 → 0.0.25

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gptmarket/temporal-types",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "description": "TypeScript types and workflow registry for GPTMarket Temporal workflows",
5
5
  "main": "index.ts",
6
6
  "types": "index.ts",
package/registry.ts CHANGED
@@ -366,6 +366,202 @@ export const ruby: WorkflowDefinition<Types.RubyInput, Types.RubyOutput> = {
366
366
  ],
367
367
  };
368
368
 
369
+ export const slideshow_to_video: WorkflowDefinition<
370
+ Types.SlideshowToVideoInput,
371
+ Types.SlideshowToVideoOutput
372
+ > = {
373
+ id: "slideshow_to_video",
374
+ name: "Slideshow To Video",
375
+ description:
376
+ "Slideshow to Video Workflow - Create TikTok-style videos from images.",
377
+ workflowClass: "SlideshowToVideoWorkflow",
378
+ inputType: "SlideshowToVideoInput",
379
+ outputType: "SlideshowToVideoOutput",
380
+ fields: [
381
+ {
382
+ name: "secret_key",
383
+ type: "text",
384
+ label: "Secret Key",
385
+ description:
386
+ "Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True)",
387
+ required: false,
388
+ default: null,
389
+ },
390
+ {
391
+ name: "rewrite_enabled",
392
+ type: "checkbox",
393
+ label: "Rewrite Enabled",
394
+ description:
395
+ "Make your content appear as fresh, original uploads. Bypasses duplicate detection and AI content filters on social platforms.",
396
+ required: false,
397
+ default: false,
398
+ },
399
+ {
400
+ name: "rewrite_device",
401
+ type: "select",
402
+ label: "Rewrite Device",
403
+ description:
404
+ "Make media appear as if created on this device. Adds authenticity and helps bypass platform detection. Random device if not specified.",
405
+ required: false,
406
+ default: null,
407
+ options: [
408
+ { value: "iPhone 17 Pro Max", label: "Iphone 17 Pro Max" },
409
+ { value: "iPhone 17 Pro", label: "Iphone 17 Pro" },
410
+ { value: "iPhone 17 Plus", label: "Iphone 17 Plus" },
411
+ { value: "iPhone 17", label: "Iphone 17" },
412
+ { value: "iPhone 16 Pro Max", label: "Iphone 16 Pro Max" },
413
+ { value: "iPhone 16 Pro", label: "Iphone 16 Pro" },
414
+ { value: "iPhone 16 Plus", label: "Iphone 16 Plus" },
415
+ { value: "iPhone 16", label: "Iphone 16" },
416
+ { value: "iPhone 15 Pro Max", label: "Iphone 15 Pro Max" },
417
+ { value: "iPhone 15 Pro", label: "Iphone 15 Pro" },
418
+ { value: "iPhone 15 Plus", label: "Iphone 15 Plus" },
419
+ { value: "iPhone 15", label: "Iphone 15" },
420
+ { value: "iPhone 14 Pro Max", label: "Iphone 14 Pro Max" },
421
+ { value: "iPhone 14 Pro", label: "Iphone 14 Pro" },
422
+ { value: "iPhone 14 Plus", label: "Iphone 14 Plus" },
423
+ { value: "iPhone 14", label: "Iphone 14" },
424
+ { value: "iPhone 13 Pro Max", label: "Iphone 13 Pro Max" },
425
+ { value: "iPhone 13 Pro", label: "Iphone 13 Pro" },
426
+ { value: "iPhone 13", label: "Iphone 13" },
427
+ { value: "iPhone 13 mini", label: "Iphone 13 Mini" },
428
+ {
429
+ value: "Ray-Ban Meta Smart Glasses",
430
+ label: "Ray-Ban Meta Smart Glasses",
431
+ },
432
+ ],
433
+ },
434
+ {
435
+ name: "image_urls",
436
+ type: "json",
437
+ label: "Image Urls",
438
+ description: "List of image URLs to include in slideshow (1-100 images)",
439
+ required: true,
440
+ default: null,
441
+ validation: { minLength: 1, maxLength: 100 },
442
+ },
443
+ {
444
+ name: "duration_per_image",
445
+ type: "number",
446
+ label: "Duration Per Image",
447
+ description:
448
+ "Duration each image is displayed (seconds). Use 0.1-0.3 for TikTok style.",
449
+ required: false,
450
+ default: 0.5,
451
+ validation: { min: 0.1, max: 30.0 },
452
+ },
453
+ {
454
+ name: "aspect_ratio",
455
+ type: "select",
456
+ label: "Aspect Ratio",
457
+ description:
458
+ "Aspect ratio: 9:16 (TikTok/Reels), 16:9 (YouTube), 1:1 (Instagram)",
459
+ required: false,
460
+ default: "9:16",
461
+ options: [
462
+ { value: "9:16", label: "9:16" },
463
+ { value: "16:9", label: "16:9" },
464
+ { value: "1:1", label: "1:1" },
465
+ ],
466
+ },
467
+ {
468
+ name: "text",
469
+ type: "textarea",
470
+ label: "Text",
471
+ description: "Text to overlay on video (optional)",
472
+ required: false,
473
+ default: null,
474
+ },
475
+ {
476
+ name: "text_position",
477
+ type: "select",
478
+ label: "Text Position",
479
+ description: "Text position: top, center, bottom",
480
+ required: false,
481
+ default: "center",
482
+ options: [
483
+ { value: "top", label: "Top" },
484
+ { value: "center", label: "Center" },
485
+ { value: "bottom", label: "Bottom" },
486
+ ],
487
+ },
488
+ {
489
+ name: "text_font",
490
+ type: "select",
491
+ label: "Text Font",
492
+ description:
493
+ "Font: impact, arial, helvetica, roboto, montserrat, oswald, bebas",
494
+ required: false,
495
+ default: "impact",
496
+ options: [
497
+ { value: "impact", label: "Impact" },
498
+ { value: "arial", label: "Arial" },
499
+ { value: "helvetica", label: "Helvetica" },
500
+ { value: "roboto", label: "Roboto" },
501
+ { value: "montserrat", label: "Montserrat" },
502
+ { value: "oswald", label: "Oswald" },
503
+ { value: "bebas", label: "Bebas" },
504
+ ],
505
+ },
506
+ {
507
+ name: "text_color",
508
+ type: "select",
509
+ label: "Text Color",
510
+ description: "Text color: white, black, yellow, red, blue, green",
511
+ required: false,
512
+ default: "white",
513
+ options: [
514
+ { value: "white", label: "White" },
515
+ { value: "black", label: "Black" },
516
+ { value: "yellow", label: "Yellow" },
517
+ { value: "red", label: "Red" },
518
+ { value: "blue", label: "Blue" },
519
+ { value: "green", label: "Green" },
520
+ ],
521
+ },
522
+ {
523
+ name: "text_background",
524
+ type: "select",
525
+ label: "Text Background",
526
+ description:
527
+ "Text background: black@0.6, black@0.8, white@0.6, white@0.8, none",
528
+ required: false,
529
+ default: "black@0.6",
530
+ options: [
531
+ { value: "black@0.6", label: "Black@0.6" },
532
+ { value: "black@0.8", label: "Black@0.8" },
533
+ { value: "white@0.6", label: "White@0.6" },
534
+ { value: "white@0.8", label: "White@0.8" },
535
+ { value: "none", label: "None" },
536
+ ],
537
+ },
538
+ {
539
+ name: "text_border_width",
540
+ type: "select",
541
+ label: "Text Border Width",
542
+ description: "Text border/outline width (0 to disable)",
543
+ required: false,
544
+ default: 2,
545
+ options: [
546
+ { value: "0", label: "0" },
547
+ { value: "1", label: "1" },
548
+ { value: "2", label: "2" },
549
+ { value: "3", label: "3" },
550
+ { value: "4", label: "4" },
551
+ { value: "5", label: "5" },
552
+ ],
553
+ },
554
+ {
555
+ name: "text_border_color",
556
+ type: "textarea",
557
+ label: "Text Border Color",
558
+ description: "Text border color",
559
+ required: false,
560
+ default: "black",
561
+ },
562
+ ],
563
+ };
564
+
369
565
  export const slideshows_pinterest: WorkflowDefinition<
370
566
  Types.SlideshowsPinterestInput,
371
567
  Types.SlideshowsPinterestOutput
@@ -438,6 +634,110 @@ export const slideshows_pinterest: WorkflowDefinition<
438
634
  required: true,
439
635
  default: null,
440
636
  },
637
+ {
638
+ name: "text",
639
+ type: "textarea",
640
+ label: "Text",
641
+ description: "Text to overlay on video (optional)",
642
+ required: false,
643
+ default: null,
644
+ },
645
+ {
646
+ name: "text_position",
647
+ type: "select",
648
+ label: "Text Position",
649
+ description: "Text position: top, center, bottom",
650
+ required: false,
651
+ default: "center",
652
+ options: [
653
+ { value: "top", label: "Top" },
654
+ { value: "center", label: "Center" },
655
+ { value: "bottom", label: "Bottom" },
656
+ ],
657
+ },
658
+ {
659
+ name: "text_font",
660
+ type: "select",
661
+ label: "Text Font",
662
+ description:
663
+ "Font: impact, arial, helvetica, roboto, montserrat, oswald, bebas",
664
+ required: false,
665
+ default: "impact",
666
+ options: [
667
+ { value: "impact", label: "Impact" },
668
+ { value: "arial", label: "Arial" },
669
+ { value: "helvetica", label: "Helvetica" },
670
+ { value: "roboto", label: "Roboto" },
671
+ { value: "montserrat", label: "Montserrat" },
672
+ { value: "oswald", label: "Oswald" },
673
+ { value: "bebas", label: "Bebas" },
674
+ ],
675
+ },
676
+ {
677
+ name: "text_font_scale",
678
+ type: "number",
679
+ label: "Text Font Scale",
680
+ description: "Font scale divisor (height/scale). Lower = bigger text.",
681
+ required: false,
682
+ default: 30.0,
683
+ validation: { min: 10.0, max: 100.0 },
684
+ },
685
+ {
686
+ name: "text_color",
687
+ type: "select",
688
+ label: "Text Color",
689
+ description: "Text color: white, black, yellow, red, blue, green",
690
+ required: false,
691
+ default: "white",
692
+ options: [
693
+ { value: "white", label: "White" },
694
+ { value: "black", label: "Black" },
695
+ { value: "yellow", label: "Yellow" },
696
+ { value: "red", label: "Red" },
697
+ { value: "blue", label: "Blue" },
698
+ { value: "green", label: "Green" },
699
+ ],
700
+ },
701
+ {
702
+ name: "text_background",
703
+ type: "select",
704
+ label: "Text Background",
705
+ description:
706
+ "Text background: black@0.6, black@0.8, white@0.6, white@0.8, none",
707
+ required: false,
708
+ default: "black@0.6",
709
+ options: [
710
+ { value: "black@0.6", label: "Black@0.6" },
711
+ { value: "black@0.8", label: "Black@0.8" },
712
+ { value: "white@0.6", label: "White@0.6" },
713
+ { value: "white@0.8", label: "White@0.8" },
714
+ { value: "none", label: "None" },
715
+ ],
716
+ },
717
+ {
718
+ name: "text_border_width",
719
+ type: "select",
720
+ label: "Text Border Width",
721
+ description: "Text border/outline width (0 to disable)",
722
+ required: false,
723
+ default: 2,
724
+ options: [
725
+ { value: "0", label: "0" },
726
+ { value: "1", label: "1" },
727
+ { value: "2", label: "2" },
728
+ { value: "3", label: "3" },
729
+ { value: "4", label: "4" },
730
+ { value: "5", label: "5" },
731
+ ],
732
+ },
733
+ {
734
+ name: "text_border_color",
735
+ type: "textarea",
736
+ label: "Text Border Color",
737
+ description: "Text border color",
738
+ required: false,
739
+ default: "black",
740
+ },
441
741
  ],
442
742
  };
443
743
 
@@ -1424,6 +1724,7 @@ export const speaking_priest: WorkflowDefinition<
1424
1724
 
1425
1725
  export const workflowRegistry = {
1426
1726
  ruby,
1727
+ slideshow_to_video,
1427
1728
  slideshows_pinterest,
1428
1729
  speaking_doctor,
1429
1730
  speaking_monk,
@@ -1453,6 +1754,7 @@ export function getWorkflowIds(): WorkflowId[] {
1453
1754
  // Type mappings
1454
1755
  export type WorkflowInputMap = {
1455
1756
  ruby: Types.RubyInput;
1757
+ slideshow_to_video: Types.SlideshowToVideoInput;
1456
1758
  slideshows_pinterest: Types.SlideshowsPinterestInput;
1457
1759
  speaking_doctor: Types.SpeakingDoctorInput;
1458
1760
  speaking_monk: Types.SpeakingMonkInput;
@@ -1461,6 +1763,7 @@ export type WorkflowInputMap = {
1461
1763
 
1462
1764
  export type WorkflowOutputMap = {
1463
1765
  ruby: Types.RubyOutput;
1766
+ slideshow_to_video: Types.SlideshowToVideoOutput;
1464
1767
  slideshows_pinterest: Types.SlideshowsPinterestOutput;
1465
1768
  speaking_doctor: Types.SpeakingDoctorOutput;
1466
1769
  speaking_monk: Types.SpeakingMonkOutput;
@@ -0,0 +1,180 @@
1
+ {
2
+ "description": "Input for Slideshow to Video workflow.\n\nCreates a TikTok-style video from images with hard cuts.\nUse duration_per_image of 0.1-0.3 seconds for fast, engaging content.",
3
+ "properties": {
4
+ "secret_key": {
5
+ "anyOf": [
6
+ {
7
+ "type": "string"
8
+ },
9
+ {
10
+ "type": "null"
11
+ }
12
+ ],
13
+ "default": null,
14
+ "description": "Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True)",
15
+ "title": "Secret Key"
16
+ },
17
+ "rewrite_enabled": {
18
+ "default": false,
19
+ "description": "Make your content appear as fresh, original uploads. Bypasses duplicate detection and AI content filters on social platforms.",
20
+ "title": "Rewrite Enabled",
21
+ "type": "boolean"
22
+ },
23
+ "rewrite_device": {
24
+ "anyOf": [
25
+ {
26
+ "enum": [
27
+ "iPhone 17 Pro Max",
28
+ "iPhone 17 Pro",
29
+ "iPhone 17 Plus",
30
+ "iPhone 17",
31
+ "iPhone 16 Pro Max",
32
+ "iPhone 16 Pro",
33
+ "iPhone 16 Plus",
34
+ "iPhone 16",
35
+ "iPhone 15 Pro Max",
36
+ "iPhone 15 Pro",
37
+ "iPhone 15 Plus",
38
+ "iPhone 15",
39
+ "iPhone 14 Pro Max",
40
+ "iPhone 14 Pro",
41
+ "iPhone 14 Plus",
42
+ "iPhone 14",
43
+ "iPhone 13 Pro Max",
44
+ "iPhone 13 Pro",
45
+ "iPhone 13",
46
+ "iPhone 13 mini",
47
+ "Ray-Ban Meta Smart Glasses"
48
+ ],
49
+ "type": "string"
50
+ },
51
+ {
52
+ "type": "null"
53
+ }
54
+ ],
55
+ "default": null,
56
+ "description": "Make media appear as if created on this device. Adds authenticity and helps bypass platform detection. Random device if not specified.",
57
+ "title": "Rewrite Device"
58
+ },
59
+ "image_urls": {
60
+ "description": "List of image URLs to include in slideshow (1-100 images)",
61
+ "items": {
62
+ "type": "string"
63
+ },
64
+ "maxItems": 100,
65
+ "minItems": 1,
66
+ "title": "Image Urls",
67
+ "type": "array"
68
+ },
69
+ "duration_per_image": {
70
+ "default": 0.5,
71
+ "description": "Duration each image is displayed (seconds). Use 0.1-0.3 for TikTok style.",
72
+ "maximum": 30.0,
73
+ "minimum": 0.1,
74
+ "title": "Duration Per Image",
75
+ "type": "number"
76
+ },
77
+ "aspect_ratio": {
78
+ "default": "9:16",
79
+ "description": "Aspect ratio: 9:16 (TikTok/Reels), 16:9 (YouTube), 1:1 (Instagram)",
80
+ "enum": [
81
+ "9:16",
82
+ "16:9",
83
+ "1:1"
84
+ ],
85
+ "title": "Aspect Ratio",
86
+ "type": "string"
87
+ },
88
+ "text": {
89
+ "anyOf": [
90
+ {
91
+ "type": "string"
92
+ },
93
+ {
94
+ "type": "null"
95
+ }
96
+ ],
97
+ "default": null,
98
+ "description": "Text to overlay on video (optional)",
99
+ "title": "Text"
100
+ },
101
+ "text_position": {
102
+ "default": "center",
103
+ "description": "Text position: top, center, bottom",
104
+ "enum": [
105
+ "top",
106
+ "center",
107
+ "bottom"
108
+ ],
109
+ "title": "Text Position",
110
+ "type": "string"
111
+ },
112
+ "text_font": {
113
+ "default": "impact",
114
+ "description": "Font: impact, arial, helvetica, roboto, montserrat, oswald, bebas",
115
+ "enum": [
116
+ "impact",
117
+ "arial",
118
+ "helvetica",
119
+ "roboto",
120
+ "montserrat",
121
+ "oswald",
122
+ "bebas"
123
+ ],
124
+ "title": "Text Font",
125
+ "type": "string"
126
+ },
127
+ "text_color": {
128
+ "default": "white",
129
+ "description": "Text color: white, black, yellow, red, blue, green",
130
+ "enum": [
131
+ "white",
132
+ "black",
133
+ "yellow",
134
+ "red",
135
+ "blue",
136
+ "green"
137
+ ],
138
+ "title": "Text Color",
139
+ "type": "string"
140
+ },
141
+ "text_background": {
142
+ "default": "black@0.6",
143
+ "description": "Text background: black@0.6, black@0.8, white@0.6, white@0.8, none",
144
+ "enum": [
145
+ "black@0.6",
146
+ "black@0.8",
147
+ "white@0.6",
148
+ "white@0.8",
149
+ "none"
150
+ ],
151
+ "title": "Text Background",
152
+ "type": "string"
153
+ },
154
+ "text_border_width": {
155
+ "default": 2,
156
+ "description": "Text border/outline width (0 to disable)",
157
+ "enum": [
158
+ 0,
159
+ 1,
160
+ 2,
161
+ 3,
162
+ 4,
163
+ 5
164
+ ],
165
+ "title": "Text Border Width",
166
+ "type": "integer"
167
+ },
168
+ "text_border_color": {
169
+ "default": "black",
170
+ "description": "Text border color",
171
+ "title": "Text Border Color",
172
+ "type": "string"
173
+ }
174
+ },
175
+ "required": [
176
+ "image_urls"
177
+ ],
178
+ "title": "SlideshowToVideoInput",
179
+ "type": "object"
180
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "description": "Output from Slideshow to Video workflow.",
3
+ "properties": {
4
+ "video_url": {
5
+ "description": "URL of generated video",
6
+ "title": "Video Url",
7
+ "type": "string"
8
+ },
9
+ "duration": {
10
+ "description": "Total video duration in seconds",
11
+ "title": "Duration",
12
+ "type": "number"
13
+ },
14
+ "num_images": {
15
+ "description": "Number of images in video",
16
+ "title": "Num Images",
17
+ "type": "integer"
18
+ }
19
+ },
20
+ "required": [
21
+ "video_url",
22
+ "duration",
23
+ "num_images"
24
+ ],
25
+ "title": "SlideshowToVideoOutput",
26
+ "type": "object"
27
+ }
@@ -60,6 +60,100 @@
60
60
  "description": "User text describing what kind of images they want",
61
61
  "title": "Prompt",
62
62
  "type": "string"
63
+ },
64
+ "text": {
65
+ "anyOf": [
66
+ {
67
+ "type": "string"
68
+ },
69
+ {
70
+ "type": "null"
71
+ }
72
+ ],
73
+ "default": null,
74
+ "description": "Text to overlay on video (optional)",
75
+ "title": "Text"
76
+ },
77
+ "text_position": {
78
+ "default": "center",
79
+ "description": "Text position: top, center, bottom",
80
+ "enum": [
81
+ "top",
82
+ "center",
83
+ "bottom"
84
+ ],
85
+ "title": "Text Position",
86
+ "type": "string"
87
+ },
88
+ "text_font": {
89
+ "default": "impact",
90
+ "description": "Font: impact, arial, helvetica, roboto, montserrat, oswald, bebas",
91
+ "enum": [
92
+ "impact",
93
+ "arial",
94
+ "helvetica",
95
+ "roboto",
96
+ "montserrat",
97
+ "oswald",
98
+ "bebas"
99
+ ],
100
+ "title": "Text Font",
101
+ "type": "string"
102
+ },
103
+ "text_font_scale": {
104
+ "default": 30.0,
105
+ "description": "Font scale divisor (height/scale). Lower = bigger text.",
106
+ "maximum": 100.0,
107
+ "minimum": 10.0,
108
+ "title": "Text Font Scale",
109
+ "type": "number"
110
+ },
111
+ "text_color": {
112
+ "default": "white",
113
+ "description": "Text color: white, black, yellow, red, blue, green",
114
+ "enum": [
115
+ "white",
116
+ "black",
117
+ "yellow",
118
+ "red",
119
+ "blue",
120
+ "green"
121
+ ],
122
+ "title": "Text Color",
123
+ "type": "string"
124
+ },
125
+ "text_background": {
126
+ "default": "black@0.6",
127
+ "description": "Text background: black@0.6, black@0.8, white@0.6, white@0.8, none",
128
+ "enum": [
129
+ "black@0.6",
130
+ "black@0.8",
131
+ "white@0.6",
132
+ "white@0.8",
133
+ "none"
134
+ ],
135
+ "title": "Text Background",
136
+ "type": "string"
137
+ },
138
+ "text_border_width": {
139
+ "default": 2,
140
+ "description": "Text border/outline width (0 to disable)",
141
+ "enum": [
142
+ 0,
143
+ 1,
144
+ 2,
145
+ 3,
146
+ 4,
147
+ 5
148
+ ],
149
+ "title": "Text Border Width",
150
+ "type": "integer"
151
+ },
152
+ "text_border_color": {
153
+ "default": "black",
154
+ "description": "Text border color",
155
+ "title": "Text Border Color",
156
+ "type": "string"
63
157
  }
64
158
  },
65
159
  "required": [
package/types.ts CHANGED
@@ -201,6 +201,78 @@ export interface RubyOutput {
201
201
  video_model: string;
202
202
  }
203
203
 
204
+ export interface SlideshowToVideoInput {
205
+ /** Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True) */
206
+ secret_key?: string | null;
207
+ /** Make your content appear as fresh, original uploads. Bypasses duplicate detection and AI content filters on social platforms. */
208
+ rewrite_enabled?: boolean;
209
+ /** Make media appear as if created on this device. Adds authenticity and helps bypass platform detection. Random device if not specified. */
210
+ rewrite_device?:
211
+ | "iPhone 17 Pro Max"
212
+ | "iPhone 17 Pro"
213
+ | "iPhone 17 Plus"
214
+ | "iPhone 17"
215
+ | "iPhone 16 Pro Max"
216
+ | "iPhone 16 Pro"
217
+ | "iPhone 16 Plus"
218
+ | "iPhone 16"
219
+ | "iPhone 15 Pro Max"
220
+ | "iPhone 15 Pro"
221
+ | "iPhone 15 Plus"
222
+ | "iPhone 15"
223
+ | "iPhone 14 Pro Max"
224
+ | "iPhone 14 Pro"
225
+ | "iPhone 14 Plus"
226
+ | "iPhone 14"
227
+ | "iPhone 13 Pro Max"
228
+ | "iPhone 13 Pro"
229
+ | "iPhone 13"
230
+ | "iPhone 13 mini"
231
+ | "Ray-Ban Meta Smart Glasses"
232
+ | null;
233
+ /** List of image URLs to include in slideshow (1-100 images) */
234
+ image_urls: string[];
235
+ /** Duration each image is displayed (seconds). Use 0.1-0.3 for TikTok style. */
236
+ duration_per_image?: number;
237
+ /** Aspect ratio: 9:16 (TikTok/Reels), 16:9 (YouTube), 1:1 (Instagram) */
238
+ aspect_ratio?: "9:16" | "16:9" | "1:1";
239
+ /** Text to overlay on video (optional) */
240
+ text?: string | null;
241
+ /** Text position: top, center, bottom */
242
+ text_position?: "top" | "center" | "bottom";
243
+ /** Font: impact, arial, helvetica, roboto, montserrat, oswald, bebas */
244
+ text_font?:
245
+ | "impact"
246
+ | "arial"
247
+ | "helvetica"
248
+ | "roboto"
249
+ | "montserrat"
250
+ | "oswald"
251
+ | "bebas";
252
+ /** Text color: white, black, yellow, red, blue, green */
253
+ text_color?: "white" | "black" | "yellow" | "red" | "blue" | "green";
254
+ /** Text background: black@0.6, black@0.8, white@0.6, white@0.8, none */
255
+ text_background?:
256
+ | "black@0.6"
257
+ | "black@0.8"
258
+ | "white@0.6"
259
+ | "white@0.8"
260
+ | "none";
261
+ /** Text border/outline width (0 to disable) */
262
+ text_border_width?: 0 | 1 | 2 | 3 | 4 | 5;
263
+ /** Text border color */
264
+ text_border_color?: string;
265
+ }
266
+
267
+ export interface SlideshowToVideoOutput {
268
+ /** URL of generated video */
269
+ video_url: string;
270
+ /** Total video duration in seconds */
271
+ duration: number;
272
+ /** Number of images in video */
273
+ num_images: number;
274
+ }
275
+
204
276
  export interface SlideshowsPinterestInput {
205
277
  /** Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True) */
206
278
  secret_key?: string | null;
@@ -232,6 +304,34 @@ export interface SlideshowsPinterestInput {
232
304
  | null;
233
305
  /** User text describing what kind of images they want */
234
306
  prompt: string;
307
+ /** Text to overlay on video (optional) */
308
+ text?: string | null;
309
+ /** Text position: top, center, bottom */
310
+ text_position?: "top" | "center" | "bottom";
311
+ /** Font: impact, arial, helvetica, roboto, montserrat, oswald, bebas */
312
+ text_font?:
313
+ | "impact"
314
+ | "arial"
315
+ | "helvetica"
316
+ | "roboto"
317
+ | "montserrat"
318
+ | "oswald"
319
+ | "bebas";
320
+ /** Font scale divisor (height/scale). Lower = bigger text. */
321
+ text_font_scale?: number;
322
+ /** Text color: white, black, yellow, red, blue, green */
323
+ text_color?: "white" | "black" | "yellow" | "red" | "blue" | "green";
324
+ /** Text background: black@0.6, black@0.8, white@0.6, white@0.8, none */
325
+ text_background?:
326
+ | "black@0.6"
327
+ | "black@0.8"
328
+ | "white@0.6"
329
+ | "white@0.8"
330
+ | "none";
331
+ /** Text border/outline width (0 to disable) */
332
+ text_border_width?: 0 | 1 | 2 | 3 | 4 | 5;
333
+ /** Text border color */
334
+ text_border_color?: string;
235
335
  }
236
336
 
237
337
  export interface SlideshowsPinterestOutput {