adsdotdev 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3544 @@
1
+ export interface paths {
2
+ "/v1/models": {
3
+ parameters: {
4
+ query?: never;
5
+ header?: never;
6
+ path?: never;
7
+ cookie?: never;
8
+ };
9
+ /**
10
+ * List models
11
+ * @description Every model a generation can run, with its price and the JSON Schema of its input. It needs no key.
12
+ */
13
+ get: operations["listModels"];
14
+ put?: never;
15
+ post?: never;
16
+ delete?: never;
17
+ options?: never;
18
+ head?: never;
19
+ patch?: never;
20
+ trace?: never;
21
+ };
22
+ "/v1/models/{id}": {
23
+ parameters: {
24
+ query?: never;
25
+ header?: never;
26
+ path?: never;
27
+ cookie?: never;
28
+ };
29
+ /** Get a model */
30
+ get: operations["getModel"];
31
+ put?: never;
32
+ post?: never;
33
+ delete?: never;
34
+ options?: never;
35
+ head?: never;
36
+ patch?: never;
37
+ trace?: never;
38
+ };
39
+ "/v1/generations": {
40
+ parameters: {
41
+ query?: never;
42
+ header?: never;
43
+ path?: never;
44
+ cookie?: never;
45
+ };
46
+ /**
47
+ * List generations
48
+ * @description Your generations, newest first.
49
+ */
50
+ get: operations["listGenerations"];
51
+ put?: never;
52
+ /**
53
+ * Create a generation
54
+ * @description Queues a generation of one model. It answers at once with the queued generation, or, with `Prefer: wait`, holds the request until it finishes.
55
+ */
56
+ post: operations["createGeneration"];
57
+ delete?: never;
58
+ options?: never;
59
+ head?: never;
60
+ patch?: never;
61
+ trace?: never;
62
+ };
63
+ "/v1/generations/{id}": {
64
+ parameters: {
65
+ query?: never;
66
+ header?: never;
67
+ path?: never;
68
+ cookie?: never;
69
+ };
70
+ /**
71
+ * Get a generation
72
+ * @description With `Prefer: wait`, holds the request until the generation finishes or the wait is up.
73
+ */
74
+ get: operations["getGeneration"];
75
+ put?: never;
76
+ post?: never;
77
+ delete?: never;
78
+ options?: never;
79
+ head?: never;
80
+ patch?: never;
81
+ trace?: never;
82
+ };
83
+ "/v1/generations/{id}/cancel": {
84
+ parameters: {
85
+ query?: never;
86
+ header?: never;
87
+ path?: never;
88
+ cookie?: never;
89
+ };
90
+ get?: never;
91
+ put?: never;
92
+ /**
93
+ * Cancel a generation
94
+ * @description Stops a queued generation at no charge. One the model is already making is stopped where the model allows it; where it does not, it finishes and is charged.
95
+ */
96
+ post: operations["cancelGeneration"];
97
+ delete?: never;
98
+ options?: never;
99
+ head?: never;
100
+ patch?: never;
101
+ trace?: never;
102
+ };
103
+ "/v1/assets": {
104
+ parameters: {
105
+ query?: never;
106
+ header?: never;
107
+ path?: never;
108
+ cookie?: never;
109
+ };
110
+ /**
111
+ * List your library
112
+ * @description The brand's library, newest first: uploads, offer photos and anything liked.
113
+ */
114
+ get: operations["listAssets"];
115
+ put?: never;
116
+ /**
117
+ * Import a file
118
+ * @description Copies a public https file into your library, so later generations can take it by id.
119
+ */
120
+ post: operations["importAsset"];
121
+ delete?: never;
122
+ options?: never;
123
+ head?: never;
124
+ patch?: never;
125
+ trace?: never;
126
+ };
127
+ "/v1/assets/{id}": {
128
+ parameters: {
129
+ query?: never;
130
+ header?: never;
131
+ path?: never;
132
+ cookie?: never;
133
+ };
134
+ /** Get an asset */
135
+ get: operations["getAsset"];
136
+ put?: never;
137
+ post?: never;
138
+ delete?: never;
139
+ options?: never;
140
+ head?: never;
141
+ patch?: never;
142
+ trace?: never;
143
+ };
144
+ "/v1/brand": {
145
+ parameters: {
146
+ query?: never;
147
+ header?: never;
148
+ path?: never;
149
+ cookie?: never;
150
+ };
151
+ /**
152
+ * Get the brand kit
153
+ * @description The brand's identity: voice, rules, colors, type, fonts and logos. `Sandstorm-Brand` picks another brand of the organization.
154
+ */
155
+ get: operations["getBrand"];
156
+ put?: never;
157
+ post?: never;
158
+ delete?: never;
159
+ options?: never;
160
+ head?: never;
161
+ patch?: never;
162
+ trace?: never;
163
+ };
164
+ "/v1/offers": {
165
+ parameters: {
166
+ query?: never;
167
+ header?: never;
168
+ path?: never;
169
+ cookie?: never;
170
+ };
171
+ /**
172
+ * List offers
173
+ * @description What the brand sells: products, services and bundles.
174
+ */
175
+ get: operations["listOffers"];
176
+ put?: never;
177
+ post?: never;
178
+ delete?: never;
179
+ options?: never;
180
+ head?: never;
181
+ patch?: never;
182
+ trace?: never;
183
+ };
184
+ "/v1/offers/{id}": {
185
+ parameters: {
186
+ query?: never;
187
+ header?: never;
188
+ path?: never;
189
+ cookie?: never;
190
+ };
191
+ /**
192
+ * Get an offer
193
+ * @description An offer with its variants and photos; the photos are asset ids that generations take.
194
+ */
195
+ get: operations["getOffer"];
196
+ put?: never;
197
+ post?: never;
198
+ delete?: never;
199
+ options?: never;
200
+ head?: never;
201
+ patch?: never;
202
+ trace?: never;
203
+ };
204
+ "/v1/characters": {
205
+ parameters: {
206
+ query?: never;
207
+ header?: never;
208
+ path?: never;
209
+ cookie?: never;
210
+ };
211
+ /**
212
+ * List characters
213
+ * @description The people, products, places, voices and styles the brand keeps consistent across ads.
214
+ */
215
+ get: operations["listCharacters"];
216
+ put?: never;
217
+ post?: never;
218
+ delete?: never;
219
+ options?: never;
220
+ head?: never;
221
+ patch?: never;
222
+ trace?: never;
223
+ };
224
+ "/v1/voices": {
225
+ parameters: {
226
+ query?: never;
227
+ header?: never;
228
+ path?: never;
229
+ cookie?: never;
230
+ };
231
+ /**
232
+ * Find voices
233
+ * @description Ready-made voices for voiceovers and voice changes.
234
+ */
235
+ get: operations["listVoices"];
236
+ put?: never;
237
+ post?: never;
238
+ delete?: never;
239
+ options?: never;
240
+ head?: never;
241
+ patch?: never;
242
+ trace?: never;
243
+ };
244
+ "/v1/advertisers": {
245
+ parameters: {
246
+ query?: never;
247
+ header?: never;
248
+ path?: never;
249
+ cookie?: never;
250
+ };
251
+ /**
252
+ * Find advertisers
253
+ * @description Brands whose ads Sandstorm tracks, by name.
254
+ */
255
+ get: operations["listAdvertisers"];
256
+ put?: never;
257
+ post?: never;
258
+ delete?: never;
259
+ options?: never;
260
+ head?: never;
261
+ patch?: never;
262
+ trace?: never;
263
+ };
264
+ "/v1/ads": {
265
+ parameters: {
266
+ query?: never;
267
+ header?: never;
268
+ path?: never;
269
+ cookie?: never;
270
+ };
271
+ /**
272
+ * Search ads
273
+ * @description Ads other brands run. Filters alone answer at once; `query` searches what the ads say and show.
274
+ */
275
+ get: operations["listAds"];
276
+ put?: never;
277
+ post?: never;
278
+ delete?: never;
279
+ options?: never;
280
+ head?: never;
281
+ patch?: never;
282
+ trace?: never;
283
+ };
284
+ "/v1/ads/{id}": {
285
+ parameters: {
286
+ query?: never;
287
+ header?: never;
288
+ path?: never;
289
+ cookie?: never;
290
+ };
291
+ /**
292
+ * Get an ad
293
+ * @description All of an ad: its copy, dates, transcript and media.
294
+ */
295
+ get: operations["getAd"];
296
+ put?: never;
297
+ post?: never;
298
+ delete?: never;
299
+ options?: never;
300
+ head?: never;
301
+ patch?: never;
302
+ trace?: never;
303
+ };
304
+ "/v1/me": {
305
+ parameters: {
306
+ query?: never;
307
+ header?: never;
308
+ path?: never;
309
+ cookie?: never;
310
+ };
311
+ /**
312
+ * Get the signed-in person
313
+ * @description Who the Sandstorm sign-in belongs to, and their organizations. It takes a sign-in, not an API key.
314
+ */
315
+ get: operations["getMe"];
316
+ put?: never;
317
+ post?: never;
318
+ delete?: never;
319
+ options?: never;
320
+ head?: never;
321
+ patch?: never;
322
+ trace?: never;
323
+ };
324
+ "/v1/keys": {
325
+ parameters: {
326
+ query?: never;
327
+ header?: never;
328
+ path?: never;
329
+ cookie?: never;
330
+ };
331
+ get?: never;
332
+ put?: never;
333
+ /**
334
+ * Make an API key
335
+ * @description Makes a key for one of your organizations. It takes a sign-in, not an API key; /login.mjs does this for you.
336
+ */
337
+ post: operations["createKey"];
338
+ delete?: never;
339
+ options?: never;
340
+ head?: never;
341
+ patch?: never;
342
+ trace?: never;
343
+ };
344
+ "/v1/webhooks/secret": {
345
+ parameters: {
346
+ query?: never;
347
+ header?: never;
348
+ path?: never;
349
+ cookie?: never;
350
+ };
351
+ /**
352
+ * Get your webhook secret
353
+ * @description Verify `Sandstorm-Signature` with it. It stays the same for as long as the key lives.
354
+ */
355
+ get: operations["getWebhookSecret"];
356
+ put?: never;
357
+ post?: never;
358
+ delete?: never;
359
+ options?: never;
360
+ head?: never;
361
+ patch?: never;
362
+ trace?: never;
363
+ };
364
+ }
365
+ export interface webhooks {
366
+ generation: {
367
+ parameters: {
368
+ query?: never;
369
+ header?: never;
370
+ path?: never;
371
+ cookie?: never;
372
+ };
373
+ get?: never;
374
+ put?: never;
375
+ /**
376
+ * A generation finished
377
+ * @description Sent to a generation's `webhook_url` when it finishes, signed in `sandstorm-signature`. Answer 2xx; anything else is retried 5 times over about 7 hours.
378
+ */
379
+ post: {
380
+ parameters: {
381
+ query?: never;
382
+ header?: never;
383
+ path?: never;
384
+ cookie?: never;
385
+ };
386
+ requestBody?: {
387
+ content: {
388
+ "application/json": components["schemas"]["GenerationEvent"];
389
+ };
390
+ };
391
+ responses: {
392
+ /** @description Received */
393
+ 200: {
394
+ headers: {
395
+ [name: string]: unknown;
396
+ };
397
+ content?: never;
398
+ };
399
+ };
400
+ };
401
+ delete?: never;
402
+ options?: never;
403
+ head?: never;
404
+ patch?: never;
405
+ trace?: never;
406
+ };
407
+ }
408
+ export interface components {
409
+ schemas: {
410
+ CreateGeneration: components["schemas"]["Create_nano_banana_pro"] | components["schemas"]["Create_nano_banana_pro_edit"] | components["schemas"]["Create_nano_banana_2"] | components["schemas"]["Create_nano_banana_2_edit"] | components["schemas"]["Create_nano_banana_2_lite"] | components["schemas"]["Create_nano_banana_2_lite_edit"] | components["schemas"]["Create_gpt_image_2_5_flare"] | components["schemas"]["Create_gpt_image_2_5_flare_edit"] | components["schemas"]["Create_gpt_image_2_5_sunburst"] | components["schemas"]["Create_gpt_image_2_5_sunburst_edit"] | components["schemas"]["Create_seedream_5_pro"] | components["schemas"]["Create_seedream_5_pro_edit"] | components["schemas"]["Create_seedream_5_lite"] | components["schemas"]["Create_seedream_5_lite_edit"] | components["schemas"]["Create_seedream_5_pro_layers"] | components["schemas"]["Create_topaz_upscale"] | components["schemas"]["Create_seedance_2_5_text_to_video"] | components["schemas"]["Create_seedance_2_5_image_to_video"] | components["schemas"]["Create_seedance_2_5_reference_to_video"] | components["schemas"]["Create_seedance_2_5_finish"] | components["schemas"]["Create_kling_3_pro_image_to_video"] | components["schemas"]["Create_kling_o3_pro_reference_to_video"] | components["schemas"]["Create_gemini_omni_flash_text_to_video"] | components["schemas"]["Create_gemini_omni_flash_image_to_video"] | components["schemas"]["Create_gemini_omni_flash_reference_to_video"] | components["schemas"]["Create_gemini_omni_flash_edit"] | components["schemas"]["Create_sync_3_lipsync"] | components["schemas"]["Create_elevenlabs_voiceover"] | components["schemas"]["Create_elevenlabs_music"] | components["schemas"]["Create_elevenlabs_sound_effects"] | components["schemas"]["Create_elevenlabs_voice_changer"] | components["schemas"]["Create_elevenlabs_voice_isolator"] | components["schemas"]["Create_minimax_music"] | components["schemas"]["Create_sonilo_music"];
411
+ /**
412
+ * nano-banana-pro
413
+ * @description Photoreal images from a prompt: people, products and first frames for video. Up to 4K.
414
+ */
415
+ Create_nano_banana_pro: {
416
+ /**
417
+ * @description discriminator enum property added by openapi-typescript
418
+ * @enum {string}
419
+ */
420
+ model: "nano-banana-pro";
421
+ input: {
422
+ /** @description What the image shows, as one paragraph; 150 to 350 words of concrete detail work best. */
423
+ prompt: string;
424
+ /**
425
+ * @description Shape of the image as width:height; 1:1 when left out.
426
+ * @default 1:1
427
+ * @enum {string}
428
+ */
429
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
430
+ /**
431
+ * @description Output resolution; 2K when left out.
432
+ * @default 2K
433
+ * @enum {string}
434
+ */
435
+ resolution?: "1K" | "2K" | "4K";
436
+ /**
437
+ * @description File format; png when left out.
438
+ * @default png
439
+ * @enum {string}
440
+ */
441
+ output_format?: "png" | "jpeg" | "webp";
442
+ /** @description What the output is called in your library; made from the prompt when left out. */
443
+ name?: string;
444
+ };
445
+ /**
446
+ * Format: uri
447
+ * @description An https URL to POST a signed generation event to when it finishes
448
+ */
449
+ webhook_url?: string;
450
+ };
451
+ /**
452
+ * nano-banana-pro/edit
453
+ * @description Change an image or combine several by instruction: a new background, color or setting.
454
+ */
455
+ Create_nano_banana_pro_edit: {
456
+ /**
457
+ * @description discriminator enum property added by openapi-typescript
458
+ * @enum {string}
459
+ */
460
+ model: "nano-banana-pro/edit";
461
+ input: {
462
+ /** @description The change to make, or how the images come together, citing each image by its place in images as @image1, @image2. */
463
+ prompt: string;
464
+ /**
465
+ * @description Shape of the image as width:height, or auto to follow the images given; auto when left out.
466
+ * @default auto
467
+ * @enum {string}
468
+ */
469
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
470
+ /**
471
+ * @description Output resolution; 2K when left out.
472
+ * @default 2K
473
+ * @enum {string}
474
+ */
475
+ resolution?: "1K" | "2K" | "4K";
476
+ /**
477
+ * @description File format; png when left out.
478
+ * @default png
479
+ * @enum {string}
480
+ */
481
+ output_format?: "png" | "jpeg" | "webp";
482
+ /** @description The 1 to 14 images to edit or combine, in the order the prompt cites them, each an asset id (asset_…) or an https URL. */
483
+ images: string[];
484
+ /** @description Integer seed for a more repeatable edit; random when left out. */
485
+ seed?: number;
486
+ /** @description What the output is called in your library; made from the prompt when left out. */
487
+ name?: string;
488
+ };
489
+ /**
490
+ * Format: uri
491
+ * @description An https URL to POST a signed generation event to when it finishes
492
+ */
493
+ webhook_url?: string;
494
+ };
495
+ /**
496
+ * nano-banana-2
497
+ * @description Faster than Pro for many variations, and the only one that makes 4:1 and 8:1 banners.
498
+ */
499
+ Create_nano_banana_2: {
500
+ /**
501
+ * @description discriminator enum property added by openapi-typescript
502
+ * @enum {string}
503
+ */
504
+ model: "nano-banana-2";
505
+ input: {
506
+ /** @description What the image shows, as one paragraph; 150 to 350 words of concrete detail work best. */
507
+ prompt: string;
508
+ /**
509
+ * @description Shape of the image as width:height; 1:1 when left out.
510
+ * @default 1:1
511
+ * @enum {string}
512
+ */
513
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16" | "4:1" | "1:4" | "8:1" | "1:8";
514
+ /**
515
+ * @description Output resolution; 2K when left out.
516
+ * @default 2K
517
+ * @enum {string}
518
+ */
519
+ resolution?: "1K" | "2K" | "4K";
520
+ /**
521
+ * @description File format; png when left out.
522
+ * @default png
523
+ * @enum {string}
524
+ */
525
+ output_format?: "png" | "jpeg" | "webp";
526
+ /** @description What the output is called in your library; made from the prompt when left out. */
527
+ name?: string;
528
+ };
529
+ /**
530
+ * Format: uri
531
+ * @description An https URL to POST a signed generation event to when it finishes
532
+ */
533
+ webhook_url?: string;
534
+ };
535
+ /**
536
+ * nano-banana-2/edit
537
+ * @description Many edits or variations of images you already have, faster than Pro.
538
+ */
539
+ Create_nano_banana_2_edit: {
540
+ /**
541
+ * @description discriminator enum property added by openapi-typescript
542
+ * @enum {string}
543
+ */
544
+ model: "nano-banana-2/edit";
545
+ input: {
546
+ /** @description The change to make, or how the images come together, citing each image by its place in images as @image1, @image2. */
547
+ prompt: string;
548
+ /**
549
+ * @description Shape of the image as width:height, or auto to follow the images given; auto when left out.
550
+ * @default auto
551
+ * @enum {string}
552
+ */
553
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16" | "4:1" | "1:4" | "8:1" | "1:8";
554
+ /**
555
+ * @description Output resolution; 2K when left out.
556
+ * @default 2K
557
+ * @enum {string}
558
+ */
559
+ resolution?: "1K" | "2K" | "4K";
560
+ /**
561
+ * @description File format; png when left out.
562
+ * @default png
563
+ * @enum {string}
564
+ */
565
+ output_format?: "png" | "jpeg" | "webp";
566
+ /** @description The 1 to 14 images to edit or combine, in the order the prompt cites them, each an asset id (asset_…) or an https URL. */
567
+ images: string[];
568
+ /** @description Integer seed for a more repeatable edit; random when left out. */
569
+ seed?: number;
570
+ /** @description What the output is called in your library; made from the prompt when left out. */
571
+ name?: string;
572
+ };
573
+ /**
574
+ * Format: uri
575
+ * @description An https URL to POST a signed generation event to when it finishes
576
+ */
577
+ webhook_url?: string;
578
+ };
579
+ /**
580
+ * nano-banana-2-lite
581
+ * @description The fastest image model, for concepts, previews and lots of options before a final.
582
+ */
583
+ Create_nano_banana_2_lite: {
584
+ /**
585
+ * @description discriminator enum property added by openapi-typescript
586
+ * @enum {string}
587
+ */
588
+ model: "nano-banana-2-lite";
589
+ input: {
590
+ /** @description What the image shows, as one paragraph; 150 to 350 words of concrete detail work best. */
591
+ prompt: string;
592
+ /**
593
+ * @description Shape of the image as width:height; 1:1 when left out.
594
+ * @default 1:1
595
+ * @enum {string}
596
+ */
597
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16" | "4:1" | "1:4" | "8:1" | "1:8";
598
+ /**
599
+ * @description File format; png when left out.
600
+ * @default png
601
+ * @enum {string}
602
+ */
603
+ output_format?: "png" | "jpeg" | "webp";
604
+ /** @description What the output is called in your library; made from the prompt when left out. */
605
+ name?: string;
606
+ };
607
+ /**
608
+ * Format: uri
609
+ * @description An https URL to POST a signed generation event to when it finishes
610
+ */
611
+ webhook_url?: string;
612
+ };
613
+ /**
614
+ * nano-banana-2-lite/edit
615
+ * @description Quick drafts of an edit, and many options to choose from.
616
+ */
617
+ Create_nano_banana_2_lite_edit: {
618
+ /**
619
+ * @description discriminator enum property added by openapi-typescript
620
+ * @enum {string}
621
+ */
622
+ model: "nano-banana-2-lite/edit";
623
+ input: {
624
+ /** @description The change to make, or how the images come together, citing each image by its place in images as @image1, @image2. */
625
+ prompt: string;
626
+ /**
627
+ * @description Shape of the image as width:height, or auto to follow the images given; auto when left out.
628
+ * @default auto
629
+ * @enum {string}
630
+ */
631
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16" | "4:1" | "1:4" | "8:1" | "1:8";
632
+ /**
633
+ * @description File format; png when left out.
634
+ * @default png
635
+ * @enum {string}
636
+ */
637
+ output_format?: "png" | "jpeg" | "webp";
638
+ /** @description The 1 to 14 images to edit or combine, in the order the prompt cites them, each an asset id (asset_…) or an https URL. */
639
+ images: string[];
640
+ /** @description Integer seed for a more repeatable edit; random when left out. */
641
+ seed?: number;
642
+ /** @description What the output is called in your library; made from the prompt when left out. */
643
+ name?: string;
644
+ };
645
+ /**
646
+ * Format: uri
647
+ * @description An https URL to POST a signed generation event to when it finishes
648
+ */
649
+ webhook_url?: string;
650
+ };
651
+ /**
652
+ * gpt-image-2.5-flare
653
+ * @description Images that carry copy and typography, follow an exact layout or need a transparent background.
654
+ */
655
+ Create_gpt_image_2_5_flare: {
656
+ /**
657
+ * @description discriminator enum property added by openapi-typescript
658
+ * @enum {string}
659
+ */
660
+ model: "gpt-image-2.5-flare";
661
+ input: {
662
+ /** @description Single-paragraph image prompt (150-350 words), with any words the image must show written out exactly. */
663
+ prompt: string;
664
+ /**
665
+ * @description Shape of the image as width:height; 1:1 when left out.
666
+ * @default 1:1
667
+ * @enum {string}
668
+ */
669
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
670
+ /**
671
+ * @description Output resolution; 2K when left out.
672
+ * @default 2K
673
+ * @enum {string}
674
+ */
675
+ resolution?: "1K" | "2K" | "4K";
676
+ /** @description Exact width in pixels for a fixed placement, passed with height in place of aspect_ratio and resolution, with both sides multiples of 16 up to 3840, at most 3:1 either way, and 655,360 to 8,294,400 pixels in all; none when left out. */
677
+ width?: number;
678
+ /** @description Exact height in pixels, passed with width under the same rules; none when left out. */
679
+ height?: number;
680
+ /**
681
+ * @description transparent for a cutout with no background, opaque for a filled one, or auto to let the model choose; auto when left out.
682
+ * @default auto
683
+ * @enum {string}
684
+ */
685
+ background?: "auto" | "transparent" | "opaque";
686
+ /**
687
+ * @description File format; png when left out, and a transparent background needs png or webp.
688
+ * @default png
689
+ * @enum {string}
690
+ */
691
+ output_format?: "png" | "jpeg" | "webp";
692
+ /** @description What the output is called in your library; made from the prompt when left out. */
693
+ name?: string;
694
+ };
695
+ /**
696
+ * Format: uri
697
+ * @description An https URL to POST a signed generation event to when it finishes
698
+ */
699
+ webhook_url?: string;
700
+ };
701
+ /**
702
+ * gpt-image-2.5-flare/edit
703
+ * @description Ads built around your product or logo images, with the copy set in the image. Up to 16 references.
704
+ */
705
+ Create_gpt_image_2_5_flare_edit: {
706
+ /**
707
+ * @description discriminator enum property added by openapi-typescript
708
+ * @enum {string}
709
+ */
710
+ model: "gpt-image-2.5-flare/edit";
711
+ input: {
712
+ /** @description The change to make, or how the images come together, citing each image by its place in images as @image1, @image2 and writing out exactly any words the image must show. */
713
+ prompt: string;
714
+ /**
715
+ * @description Shape of the image as width:height, or auto to let the model pick the size; auto when left out.
716
+ * @default auto
717
+ * @enum {string}
718
+ */
719
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
720
+ /**
721
+ * @description Output resolution, not used when aspect_ratio is auto; 2K when left out.
722
+ * @default 2K
723
+ * @enum {string}
724
+ */
725
+ resolution?: "1K" | "2K" | "4K";
726
+ /** @description Exact width in pixels for a fixed placement, passed with height in place of aspect_ratio and resolution, with both sides multiples of 16 up to 3840, at most 3:1 either way, and 655,360 to 8,294,400 pixels in all; none when left out. */
727
+ width?: number;
728
+ /** @description Exact height in pixels, passed with width under the same rules; none when left out. */
729
+ height?: number;
730
+ /**
731
+ * @description transparent for a cutout with no background, opaque for a filled one, or auto to let the model choose; auto when left out.
732
+ * @default auto
733
+ * @enum {string}
734
+ */
735
+ background?: "auto" | "transparent" | "opaque";
736
+ /**
737
+ * @description File format; png when left out, and a transparent background needs png or webp.
738
+ * @default png
739
+ * @enum {string}
740
+ */
741
+ output_format?: "png" | "jpeg" | "webp";
742
+ /** @description The 1 to 16 images to edit or combine, in the order the prompt cites them, each an asset id (asset_…) or an https URL. */
743
+ images: string[];
744
+ /** @description An image the size of the first of images, as an asset id (asset_…) or an https URL, with an alpha channel that is fully transparent where that image should change; the model takes it as guidance, so the rest can shift slightly. None when left out, so the prompt alone scopes the change. */
745
+ mask?: string;
746
+ /** @description What the output is called in your library; made from the prompt when left out. */
747
+ name?: string;
748
+ };
749
+ /**
750
+ * Format: uri
751
+ * @description An https URL to POST a signed generation event to when it finishes
752
+ */
753
+ webhook_url?: string;
754
+ };
755
+ /**
756
+ * gpt-image-2.5-sunburst
757
+ * @description The slower, precision GPT model, for intricate detail and final passes.
758
+ */
759
+ Create_gpt_image_2_5_sunburst: {
760
+ /**
761
+ * @description discriminator enum property added by openapi-typescript
762
+ * @enum {string}
763
+ */
764
+ model: "gpt-image-2.5-sunburst";
765
+ input: {
766
+ /** @description Single-paragraph image prompt (150-350 words), with any words the image must show written out exactly. */
767
+ prompt: string;
768
+ /**
769
+ * @description Shape of the image as width:height; 1:1 when left out.
770
+ * @default 1:1
771
+ * @enum {string}
772
+ */
773
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
774
+ /**
775
+ * @description Output resolution; 2K when left out.
776
+ * @default 2K
777
+ * @enum {string}
778
+ */
779
+ resolution?: "1K" | "2K" | "4K";
780
+ /** @description Exact width in pixels for a fixed placement, passed with height in place of aspect_ratio and resolution, with both sides multiples of 16 up to 3840, at most 3:1 either way, and 655,360 to 8,294,400 pixels in all; none when left out. */
781
+ width?: number;
782
+ /** @description Exact height in pixels, passed with width under the same rules; none when left out. */
783
+ height?: number;
784
+ /**
785
+ * @description transparent for a cutout with no background, opaque for a filled one, or auto to let the model choose; auto when left out.
786
+ * @default auto
787
+ * @enum {string}
788
+ */
789
+ background?: "auto" | "transparent" | "opaque";
790
+ /**
791
+ * @description File format; png when left out, and a transparent background needs png or webp.
792
+ * @default png
793
+ * @enum {string}
794
+ */
795
+ output_format?: "png" | "jpeg" | "webp";
796
+ /** @description What the output is called in your library; made from the prompt when left out. */
797
+ name?: string;
798
+ };
799
+ /**
800
+ * Format: uri
801
+ * @description An https URL to POST a signed generation event to when it finishes
802
+ */
803
+ webhook_url?: string;
804
+ };
805
+ /**
806
+ * gpt-image-2.5-sunburst/edit
807
+ * @description Precision edits from up to 16 reference images.
808
+ */
809
+ Create_gpt_image_2_5_sunburst_edit: {
810
+ /**
811
+ * @description discriminator enum property added by openapi-typescript
812
+ * @enum {string}
813
+ */
814
+ model: "gpt-image-2.5-sunburst/edit";
815
+ input: {
816
+ /** @description The change to make, or how the images come together, citing each image by its place in images as @image1, @image2 and writing out exactly any words the image must show. */
817
+ prompt: string;
818
+ /**
819
+ * @description Shape of the image as width:height, or auto to let the model pick the size; auto when left out.
820
+ * @default auto
821
+ * @enum {string}
822
+ */
823
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
824
+ /**
825
+ * @description Output resolution, not used when aspect_ratio is auto; 2K when left out.
826
+ * @default 2K
827
+ * @enum {string}
828
+ */
829
+ resolution?: "1K" | "2K" | "4K";
830
+ /** @description Exact width in pixels for a fixed placement, passed with height in place of aspect_ratio and resolution, with both sides multiples of 16 up to 3840, at most 3:1 either way, and 655,360 to 8,294,400 pixels in all; none when left out. */
831
+ width?: number;
832
+ /** @description Exact height in pixels, passed with width under the same rules; none when left out. */
833
+ height?: number;
834
+ /**
835
+ * @description transparent for a cutout with no background, opaque for a filled one, or auto to let the model choose; auto when left out.
836
+ * @default auto
837
+ * @enum {string}
838
+ */
839
+ background?: "auto" | "transparent" | "opaque";
840
+ /**
841
+ * @description File format; png when left out, and a transparent background needs png or webp.
842
+ * @default png
843
+ * @enum {string}
844
+ */
845
+ output_format?: "png" | "jpeg" | "webp";
846
+ /** @description The 1 to 16 images to edit or combine, in the order the prompt cites them, each an asset id (asset_…) or an https URL. */
847
+ images: string[];
848
+ /** @description An image the size of the first of images, as an asset id (asset_…) or an https URL, with an alpha channel that is fully transparent where that image should change; the model takes it as guidance, so the rest can shift slightly. None when left out, so the prompt alone scopes the change. */
849
+ mask?: string;
850
+ /** @description What the output is called in your library; made from the prompt when left out. */
851
+ name?: string;
852
+ };
853
+ /**
854
+ * Format: uri
855
+ * @description An https URL to POST a signed generation event to when it finishes
856
+ */
857
+ webhook_url?: string;
858
+ };
859
+ /**
860
+ * seedream-5-pro
861
+ * @description Apparel and product imagery, swimwear included, and in-image text in 14 languages.
862
+ */
863
+ Create_seedream_5_pro: {
864
+ /**
865
+ * @description discriminator enum property added by openapi-typescript
866
+ * @enum {string}
867
+ */
868
+ model: "seedream-5-pro";
869
+ input: {
870
+ /** @description Single-paragraph image prompt, at most 600 words, with the exact words the image must show written out. */
871
+ prompt: string;
872
+ /**
873
+ * @description Shape of the image as width:height; 1:1 when left out.
874
+ * @default 1:1
875
+ * @enum {string}
876
+ */
877
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
878
+ /**
879
+ * @description Output resolution, 1.5K for drafts at half the price and 2K for finals; 2K when left out.
880
+ * @default 2K
881
+ * @enum {string}
882
+ */
883
+ resolution?: "1.5K" | "2K";
884
+ /**
885
+ * @description File format; png when left out.
886
+ * @default png
887
+ * @enum {string}
888
+ */
889
+ output_format?: "png" | "jpeg";
890
+ /** @description What the output is called in your library; made from the prompt when left out. */
891
+ name?: string;
892
+ };
893
+ /**
894
+ * Format: uri
895
+ * @description An https URL to POST a signed generation event to when it finishes
896
+ */
897
+ webhook_url?: string;
898
+ };
899
+ /**
900
+ * seedream-5-pro/edit
901
+ * @description Targeted changes that keep the rest of the frame, from up to 10 images.
902
+ */
903
+ Create_seedream_5_pro_edit: {
904
+ /**
905
+ * @description discriminator enum property added by openapi-typescript
906
+ * @enum {string}
907
+ */
908
+ model: "seedream-5-pro/edit";
909
+ input: {
910
+ /** @description The change to make as one paragraph, at most 600 words, citing each image by its place in images as @image1, @image2, with the exact words the result must show written out. */
911
+ prompt: string;
912
+ /**
913
+ * @description Shape of the result as width:height, or auto to keep the shape the images suggest; auto when left out.
914
+ * @default auto
915
+ * @enum {string}
916
+ */
917
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
918
+ /**
919
+ * @description Output resolution, 1.5K for drafts at half the price and 2K for finals; 2K when left out.
920
+ * @default 2K
921
+ * @enum {string}
922
+ */
923
+ resolution?: "1.5K" | "2K";
924
+ /**
925
+ * @description File format; png when left out.
926
+ * @default png
927
+ * @enum {string}
928
+ */
929
+ output_format?: "png" | "jpeg";
930
+ /** @description The images to edit or combine, in the order the prompt cites them, at most 10, each an asset id (asset_…) or an https URL. */
931
+ images: string[];
932
+ /** @description What the output is called in your library; made from the prompt when left out. */
933
+ name?: string;
934
+ };
935
+ /**
936
+ * Format: uri
937
+ * @description An https URL to POST a signed generation event to when it finishes
938
+ */
939
+ webhook_url?: string;
940
+ };
941
+ /**
942
+ * seedream-5-lite
943
+ * @description Faster than Pro, for drafts and 3K or 4K finals.
944
+ */
945
+ Create_seedream_5_lite: {
946
+ /**
947
+ * @description discriminator enum property added by openapi-typescript
948
+ * @enum {string}
949
+ */
950
+ model: "seedream-5-lite";
951
+ input: {
952
+ /** @description Single-paragraph image prompt, at most 600 words, with the exact words the image must show written out. */
953
+ prompt: string;
954
+ /**
955
+ * @description Shape of the image as width:height; 1:1 when left out.
956
+ * @default 1:1
957
+ * @enum {string}
958
+ */
959
+ aspect_ratio?: "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
960
+ /**
961
+ * @description Output resolution, 2K, 3K or 4K, all at one price; 2K when left out.
962
+ * @default 2K
963
+ * @enum {string}
964
+ */
965
+ resolution?: "2K" | "3K" | "4K";
966
+ /** @description What the output is called in your library; made from the prompt when left out. */
967
+ name?: string;
968
+ };
969
+ /**
970
+ * Format: uri
971
+ * @description An https URL to POST a signed generation event to when it finishes
972
+ */
973
+ webhook_url?: string;
974
+ };
975
+ /**
976
+ * seedream-5-lite/edit
977
+ * @description Fast edits from up to 14 images, at up to 4K.
978
+ */
979
+ Create_seedream_5_lite_edit: {
980
+ /**
981
+ * @description discriminator enum property added by openapi-typescript
982
+ * @enum {string}
983
+ */
984
+ model: "seedream-5-lite/edit";
985
+ input: {
986
+ /** @description The change to make as one paragraph, at most 600 words, citing each image by its place in images as @image1, @image2, with the exact words the result must show written out. */
987
+ prompt: string;
988
+ /**
989
+ * @description Shape of the result as width:height, or auto to keep the shape the images suggest; auto when left out.
990
+ * @default auto
991
+ * @enum {string}
992
+ */
993
+ aspect_ratio?: "auto" | "1:1" | "21:9" | "16:9" | "3:2" | "4:3" | "5:4" | "4:5" | "3:4" | "2:3" | "9:16";
994
+ /**
995
+ * @description Output resolution, 2K, 3K or 4K, all at one price; 2K when left out.
996
+ * @default 2K
997
+ * @enum {string}
998
+ */
999
+ resolution?: "2K" | "3K" | "4K";
1000
+ /** @description The images to edit or combine, in the order the prompt cites them, at most 14, each an asset id (asset_…) or an https URL. */
1001
+ images: string[];
1002
+ /** @description What the output is called in your library; made from the prompt when left out. */
1003
+ name?: string;
1004
+ };
1005
+ /**
1006
+ * Format: uri
1007
+ * @description An https URL to POST a signed generation event to when it finishes
1008
+ */
1009
+ webhook_url?: string;
1010
+ };
1011
+ /**
1012
+ * seedream-5-pro/layers
1013
+ * @description Split one image into editable layers: background, product, headline and logo.
1014
+ */
1015
+ Create_seedream_5_pro_layers: {
1016
+ /**
1017
+ * @description discriminator enum property added by openapi-typescript
1018
+ * @enum {string}
1019
+ */
1020
+ model: "seedream-5-pro/layers";
1021
+ input: {
1022
+ /** @description The image to split into layers, as an asset id (asset_…) or an https URL. */
1023
+ image: string;
1024
+ /**
1025
+ * @description One sentence on how to split, group or name the layers; asks for English names and descriptions when left out.
1026
+ * @default Return name and description in english.
1027
+ */
1028
+ prompt?: string;
1029
+ /**
1030
+ * @description Resolution of the layers, 1.5K for drafts and 2K for finals; 2K when left out.
1031
+ * @default 2K
1032
+ * @enum {string}
1033
+ */
1034
+ resolution?: "1.5K" | "2K";
1035
+ /** @description What the output is called in your library; made from the prompt when left out. */
1036
+ name?: string;
1037
+ };
1038
+ /**
1039
+ * Format: uri
1040
+ * @description An https URL to POST a signed generation event to when it finishes
1041
+ */
1042
+ webhook_url?: string;
1043
+ };
1044
+ /**
1045
+ * topaz/upscale
1046
+ * @description Enlarge an image and recover sharpness without inventing content.
1047
+ */
1048
+ Create_topaz_upscale: {
1049
+ /**
1050
+ * @description discriminator enum property added by openapi-typescript
1051
+ * @enum {string}
1052
+ */
1053
+ model: "topaz/upscale";
1054
+ input: {
1055
+ /** @description The image to enlarge, as an asset id (asset_…) or an https URL. */
1056
+ image: string;
1057
+ /**
1058
+ * @description How many times wider and taller the image comes out, from 1 to 4, so 2 makes four times the pixels; 2 when left out.
1059
+ * @default 2
1060
+ */
1061
+ upscale_factor?: number;
1062
+ /**
1063
+ * @description standard suits most photos, high_fidelity keeps the fine detail of a professional shot, low_resolution recovers a small or compressed source, cgi suits renders and illustrations, and text keeps lettering and shapes crisp; standard when left out.
1064
+ * @default standard
1065
+ * @enum {string}
1066
+ */
1067
+ preset?: "standard" | "high_fidelity" | "low_resolution" | "cgi" | "text";
1068
+ /**
1069
+ * @description Whether faces get their detail recovered; true when left out, and false for a shot with no people in it.
1070
+ * @default true
1071
+ */
1072
+ face_enhancement?: boolean;
1073
+ /**
1074
+ * @description jpeg is the smaller file and png keeps every pixel; jpeg when left out.
1075
+ * @default jpeg
1076
+ * @enum {string}
1077
+ */
1078
+ output_format?: "jpeg" | "png";
1079
+ /** @description What the output is called in your library; made from the prompt when left out. */
1080
+ name?: string;
1081
+ };
1082
+ /**
1083
+ * Format: uri
1084
+ * @description An https URL to POST a signed generation event to when it finishes
1085
+ */
1086
+ webhook_url?: string;
1087
+ };
1088
+ /**
1089
+ * seedance-2.5/text-to-video
1090
+ * @description A clip from a prompt alone, with sound, speech and music. 4 to 30 seconds.
1091
+ */
1092
+ Create_seedance_2_5_text_to_video: {
1093
+ /**
1094
+ * @description discriminator enum property added by openapi-typescript
1095
+ * @enum {string}
1096
+ */
1097
+ model: "seedance-2.5/text-to-video";
1098
+ input: {
1099
+ /** @description What happens in the clip. */
1100
+ prompt: string;
1101
+ /**
1102
+ * @description Shape of the clip as width:height, or auto to let the model decide; auto when left out.
1103
+ * @default auto
1104
+ * @enum {string}
1105
+ */
1106
+ aspect_ratio?: "auto" | "21:9" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16";
1107
+ /**
1108
+ * @description Whether to make a cheap 480p draft, whatever resolution says, that seedance-2.5/finish can finish at 1080p within 7 days; false when left out.
1109
+ * @default false
1110
+ */
1111
+ draft?: boolean;
1112
+ /**
1113
+ * @description Length in whole seconds from 4 to 30, or auto to let the model decide; auto when left out.
1114
+ * @default auto
1115
+ */
1116
+ duration?: "auto" | number;
1117
+ /**
1118
+ * @description Output resolution; 720p when left out.
1119
+ * @default 720p
1120
+ * @enum {string}
1121
+ */
1122
+ resolution?: "480p" | "720p" | "1080p";
1123
+ /**
1124
+ * @description Whether the clip gets sound, speech and music made for it; true when left out.
1125
+ * @default true
1126
+ */
1127
+ generate_audio?: boolean;
1128
+ /**
1129
+ * @description Video codec; auto when left out.
1130
+ * @default auto
1131
+ * @enum {string}
1132
+ */
1133
+ codec?: "auto" | "H264" | "H265";
1134
+ /**
1135
+ * @description high asks for a larger, higher quality file; standard when left out.
1136
+ * @default standard
1137
+ * @enum {string}
1138
+ */
1139
+ bitrate_mode?: "standard" | "high";
1140
+ /**
1141
+ * @description mp4 plays anywhere, mov keeps more color for grading; mp4 when left out.
1142
+ * @default mp4
1143
+ * @enum {string}
1144
+ */
1145
+ output_format?: "mp4" | "mov";
1146
+ /**
1147
+ * @description Whether the last frame is also saved as an image, to start the next clip from; false when left out.
1148
+ * @default false
1149
+ */
1150
+ return_last_frame?: boolean;
1151
+ /** @description What the output is called in your library; made from the prompt when left out. */
1152
+ name?: string;
1153
+ };
1154
+ /**
1155
+ * Format: uri
1156
+ * @description An https URL to POST a signed generation event to when it finishes
1157
+ */
1158
+ webhook_url?: string;
1159
+ };
1160
+ /**
1161
+ * seedance-2.5/image-to-video
1162
+ * @description Bring a still to life, or join two frames with motion. 4 to 30 seconds.
1163
+ */
1164
+ Create_seedance_2_5_image_to_video: {
1165
+ /**
1166
+ * @description discriminator enum property added by openapi-typescript
1167
+ * @enum {string}
1168
+ */
1169
+ model: "seedance-2.5/image-to-video";
1170
+ input: {
1171
+ /** @description What happens in the clip, from the start image to the end image when one is given. */
1172
+ prompt: string;
1173
+ /** @description The image the clip opens on, as an asset id (asset_…) or an https URL; the clip takes its shape. */
1174
+ start_image: string;
1175
+ /** @description The image the clip ends on, as an asset id (asset_…) or an https URL; none when left out, so the model picks the ending. */
1176
+ end_image?: string;
1177
+ /**
1178
+ * @description Whether to make a cheap 480p draft, whatever resolution says, that seedance-2.5/finish can finish at 1080p within 7 days; false when left out.
1179
+ * @default false
1180
+ */
1181
+ draft?: boolean;
1182
+ /**
1183
+ * @description Length in whole seconds from 4 to 30, or auto to let the model decide; auto when left out.
1184
+ * @default auto
1185
+ */
1186
+ duration?: "auto" | number;
1187
+ /**
1188
+ * @description Output resolution; 720p when left out.
1189
+ * @default 720p
1190
+ * @enum {string}
1191
+ */
1192
+ resolution?: "480p" | "720p" | "1080p";
1193
+ /**
1194
+ * @description Whether the clip gets sound, speech and music made for it; true when left out.
1195
+ * @default true
1196
+ */
1197
+ generate_audio?: boolean;
1198
+ /**
1199
+ * @description Video codec; auto when left out.
1200
+ * @default auto
1201
+ * @enum {string}
1202
+ */
1203
+ codec?: "auto" | "H264" | "H265";
1204
+ /**
1205
+ * @description high asks for a larger, higher quality file; standard when left out.
1206
+ * @default standard
1207
+ * @enum {string}
1208
+ */
1209
+ bitrate_mode?: "standard" | "high";
1210
+ /**
1211
+ * @description mp4 plays anywhere, mov keeps more color for grading; mp4 when left out.
1212
+ * @default mp4
1213
+ * @enum {string}
1214
+ */
1215
+ output_format?: "mp4" | "mov";
1216
+ /**
1217
+ * @description Whether the last frame is also saved as an image, to start the next clip from; false when left out.
1218
+ * @default false
1219
+ */
1220
+ return_last_frame?: boolean;
1221
+ /** @description What the output is called in your library; made from the prompt when left out. */
1222
+ name?: string;
1223
+ };
1224
+ /**
1225
+ * Format: uri
1226
+ * @description An https URL to POST a signed generation event to when it finishes
1227
+ */
1228
+ webhook_url?: string;
1229
+ };
1230
+ /**
1231
+ * seedance-2.5/reference-to-video
1232
+ * @description Motion that keeps the look of images, the movement of clips or the sound of audio you pass.
1233
+ */
1234
+ Create_seedance_2_5_reference_to_video: {
1235
+ /**
1236
+ * @description discriminator enum property added by openapi-typescript
1237
+ * @enum {string}
1238
+ */
1239
+ model: "seedance-2.5/reference-to-video";
1240
+ input: {
1241
+ /** @description What happens in the clip, citing each image, video or audio by its place in its list as @image1, @video1 or @audio1. */
1242
+ prompt: string;
1243
+ /**
1244
+ * @description reference makes a new clip from the references, editing changes the first of videos, extension continues it; auto when left out, which lets the model decide.
1245
+ * @default auto
1246
+ * @enum {string}
1247
+ */
1248
+ task?: "auto" | "reference" | "editing" | "extension";
1249
+ /**
1250
+ * @description Up to 30 images, each an asset id (asset_…) or an https URL; none when left out.
1251
+ * @default []
1252
+ */
1253
+ images?: string[];
1254
+ /**
1255
+ * @description Up to 10 videos, each an asset id (asset_…) or an https URL; none when left out. Past 30 seconds together the longer ones are cut to their opening seconds, and beside audio their own sound is left out; editing and extension take them whole, so those must run 30 seconds or less together.
1256
+ * @default []
1257
+ */
1258
+ videos?: string[];
1259
+ /**
1260
+ * @description Up to 10 audio files, each an asset id (asset_…) or an https URL; none when left out. Past 30 seconds together the longer ones are cut to their opening seconds.
1261
+ * @default []
1262
+ */
1263
+ audio?: string[];
1264
+ /**
1265
+ * @description Shape of the clip as width:height, or auto to follow the references; auto when left out.
1266
+ * @default auto
1267
+ * @enum {string}
1268
+ */
1269
+ aspect_ratio?: "auto" | "21:9" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16";
1270
+ /** @description Integer seed for a more repeatable take; random when left out. */
1271
+ seed?: number;
1272
+ /**
1273
+ * @description Whether to make a cheap 480p draft, whatever resolution says, that seedance-2.5/finish can finish at 1080p within 7 days; false when left out.
1274
+ * @default false
1275
+ */
1276
+ draft?: boolean;
1277
+ /**
1278
+ * @description Length in whole seconds from 4 to 30, or auto to let the model decide; auto when left out.
1279
+ * @default auto
1280
+ */
1281
+ duration?: "auto" | number;
1282
+ /**
1283
+ * @description Output resolution; 720p when left out.
1284
+ * @default 720p
1285
+ * @enum {string}
1286
+ */
1287
+ resolution?: "480p" | "720p" | "1080p";
1288
+ /**
1289
+ * @description Whether the clip gets sound, speech and music made for it; true when left out.
1290
+ * @default true
1291
+ */
1292
+ generate_audio?: boolean;
1293
+ /**
1294
+ * @description Video codec; auto when left out.
1295
+ * @default auto
1296
+ * @enum {string}
1297
+ */
1298
+ codec?: "auto" | "H264" | "H265";
1299
+ /**
1300
+ * @description high asks for a larger, higher quality file; standard when left out.
1301
+ * @default standard
1302
+ * @enum {string}
1303
+ */
1304
+ bitrate_mode?: "standard" | "high";
1305
+ /**
1306
+ * @description mp4 plays anywhere, mov keeps more color for grading; mp4 when left out.
1307
+ * @default mp4
1308
+ * @enum {string}
1309
+ */
1310
+ output_format?: "mp4" | "mov";
1311
+ /**
1312
+ * @description Whether the last frame is also saved as an image, to start the next clip from; false when left out.
1313
+ * @default false
1314
+ */
1315
+ return_last_frame?: boolean;
1316
+ /** @description What the output is called in your library; made from the prompt when left out. */
1317
+ name?: string;
1318
+ };
1319
+ /**
1320
+ * Format: uri
1321
+ * @description An https URL to POST a signed generation event to when it finishes
1322
+ */
1323
+ webhook_url?: string;
1324
+ };
1325
+ /**
1326
+ * seedance-2.5/finish
1327
+ * @description Finish a 480p draft at 1080p, within 7 days of making it.
1328
+ */
1329
+ Create_seedance_2_5_finish: {
1330
+ /**
1331
+ * @description discriminator enum property added by openapi-typescript
1332
+ * @enum {string}
1333
+ */
1334
+ model: "seedance-2.5/finish";
1335
+ input: {
1336
+ /** @description The draft to finish: the asset id of a Seedance 2.5 clip made with draft set to true. */
1337
+ draft: string;
1338
+ /** @description What the output is called in your library; made from the prompt when left out. */
1339
+ name?: string;
1340
+ };
1341
+ /**
1342
+ * Format: uri
1343
+ * @description An https URL to POST a signed generation event to when it finishes
1344
+ */
1345
+ webhook_url?: string;
1346
+ };
1347
+ /**
1348
+ * kling-3-pro/image-to-video
1349
+ * @description A clip that opens on your image and can end on a second one.
1350
+ */
1351
+ Create_kling_3_pro_image_to_video: {
1352
+ /**
1353
+ * @description discriminator enum property added by openapi-typescript
1354
+ * @enum {string}
1355
+ */
1356
+ model: "kling-3-pro/image-to-video";
1357
+ input: {
1358
+ /** @description What happens in the clip, up to 2500 characters; leave it out when multi_prompt gives the shots instead. */
1359
+ prompt?: string;
1360
+ /** @description Shots cut end to end in one clip, in order, which together run 3 to 15 seconds; in place of prompt and duration, and none when left out. */
1361
+ multi_prompt?: {
1362
+ /** @description What happens in this shot. */
1363
+ prompt: string;
1364
+ /**
1365
+ * @description Length of this shot in whole seconds from 1 to 15; 5 when left out.
1366
+ * @default 5
1367
+ */
1368
+ duration?: number;
1369
+ }[];
1370
+ /** @description The image the clip opens on, as an asset id (asset_…) or an https URL. */
1371
+ start_image: string;
1372
+ /** @description The image the clip ends on, as an asset id (asset_…) or an https URL; none when left out, so the model picks the ending. */
1373
+ end_image?: string;
1374
+ /** @description What the clip must not show, such as "lens flare, morphing faces"; Kling's own "blur, distort, and low quality" when left out. */
1375
+ negative_prompt?: string;
1376
+ /**
1377
+ * @description How closely the clip keeps to the prompt, from 0 to 1; 0.5 when left out.
1378
+ * @default 0.5
1379
+ */
1380
+ cfg_scale?: number;
1381
+ /** @description Length in whole seconds from 3 to 15; 5 when left out, and left out with multi_prompt, whose shot lengths add up to the clip's. */
1382
+ duration?: number;
1383
+ /**
1384
+ * @description Whether the clip gets sound and speech made for it; true when left out.
1385
+ * @default true
1386
+ */
1387
+ generate_audio?: boolean;
1388
+ /**
1389
+ * @description customize cuts multi_prompt shots as written, intelligent lets Kling decide the shot structure; customize when left out.
1390
+ * @default customize
1391
+ * @enum {string}
1392
+ */
1393
+ shot_type?: "customize" | "intelligent";
1394
+ /** @description What the output is called in your library; made from the prompt when left out. */
1395
+ name?: string;
1396
+ };
1397
+ /**
1398
+ * Format: uri
1399
+ * @description An https URL to POST a signed generation event to when it finishes
1400
+ */
1401
+ webhook_url?: string;
1402
+ };
1403
+ /**
1404
+ * kling-o3-pro/reference-to-video
1405
+ * @description Keeps a person, product or character true to up to 4 reference images.
1406
+ */
1407
+ Create_kling_o3_pro_reference_to_video: {
1408
+ /**
1409
+ * @description discriminator enum property added by openapi-typescript
1410
+ * @enum {string}
1411
+ */
1412
+ model: "kling-o3-pro/reference-to-video";
1413
+ input: {
1414
+ /** @description What happens in the clip, up to 2500 characters; leave it out when multi_prompt gives the shots instead. */
1415
+ prompt?: string;
1416
+ /** @description Shots cut end to end in one clip, in order, which together run 3 to 15 seconds; in place of prompt and duration, and none when left out. */
1417
+ multi_prompt?: {
1418
+ /** @description What happens in this shot. */
1419
+ prompt: string;
1420
+ /**
1421
+ * @description Length of this shot in whole seconds from 1 to 15; 5 when left out.
1422
+ * @default 5
1423
+ */
1424
+ duration?: number;
1425
+ }[];
1426
+ /** @description The image the clip opens on, as an asset id (asset_…) or an https URL; none when left out, so the model composes the opening from the prompt and the references. */
1427
+ start_image?: string;
1428
+ /** @description The image the clip ends on, as an asset id (asset_…) or an https URL; none when left out, so the model picks the ending. */
1429
+ end_image?: string;
1430
+ /**
1431
+ * @description Up to 4 images whose subject or look the clip keeps, each an asset id (asset_…) or an https URL, cited in the prompt as @image1, @image2 in this order; none when left out.
1432
+ * @default []
1433
+ */
1434
+ images?: string[];
1435
+ /**
1436
+ * @description Characters or objects held to one look across the clip, cited in the prompt as @element1, @element2 in this order; images and elements take 4 together at most, and none when left out.
1437
+ * @default []
1438
+ */
1439
+ elements?: ({
1440
+ /** @description A front view of the character or object, as an asset id (asset_…) or an https URL. */
1441
+ frontal_image: string;
1442
+ /** @description 1 to 3 more views of the same character or object, from other angles, each an asset id (asset_…) or an https URL. */
1443
+ reference_images: string[];
1444
+ } | {
1445
+ /** @description A clip of the character or object of at least 3 seconds, as an asset id (asset_…) or an https URL, in place of images; past 10 seconds it is cut to its opening 10, and outside 720 to 2160 px a side it is resized to fit. */
1446
+ video: string;
1447
+ })[];
1448
+ /**
1449
+ * @description Shape of the clip as width:height; 16:9 when left out.
1450
+ * @default 16:9
1451
+ * @enum {string}
1452
+ */
1453
+ aspect_ratio?: "16:9" | "9:16" | "1:1";
1454
+ /** @description Length in whole seconds from 3 to 15; 5 when left out, and left out with multi_prompt, whose shot lengths add up to the clip's. */
1455
+ duration?: number;
1456
+ /**
1457
+ * @description Whether the clip gets sound and speech made for it; true when left out.
1458
+ * @default true
1459
+ */
1460
+ generate_audio?: boolean;
1461
+ /**
1462
+ * @description customize cuts multi_prompt shots as written, intelligent lets Kling decide the shot structure; customize when left out.
1463
+ * @default customize
1464
+ * @enum {string}
1465
+ */
1466
+ shot_type?: "customize" | "intelligent";
1467
+ /** @description What the output is called in your library; made from the prompt when left out. */
1468
+ name?: string;
1469
+ };
1470
+ /**
1471
+ * Format: uri
1472
+ * @description An https URL to POST a signed generation event to when it finishes
1473
+ */
1474
+ webhook_url?: string;
1475
+ };
1476
+ /**
1477
+ * gemini-omni-flash/text-to-video
1478
+ * @description A clip from a prompt, from a 360p draft to a 4K take.
1479
+ */
1480
+ Create_gemini_omni_flash_text_to_video: {
1481
+ /**
1482
+ * @description discriminator enum property added by openapi-typescript
1483
+ * @enum {string}
1484
+ */
1485
+ model: "gemini-omni-flash/text-to-video";
1486
+ input: {
1487
+ /** @description What happens in the clip, with any spoken line in double quotes. */
1488
+ prompt: string;
1489
+ /**
1490
+ * @description Shape of the clip, portrait 9:16 or landscape 16:9; 9:16 when left out.
1491
+ * @default 9:16
1492
+ * @enum {string}
1493
+ */
1494
+ aspect_ratio?: "9:16" | "16:9";
1495
+ /**
1496
+ * @description Length in whole seconds from 3 to 10; 8 when left out.
1497
+ * @default 8
1498
+ */
1499
+ duration?: number;
1500
+ /**
1501
+ * @description Output resolution, 360p for a cheap draft up to 4k, and the price per second rises with it; 720p when left out.
1502
+ * @default 720p
1503
+ * @enum {string}
1504
+ */
1505
+ resolution?: "360p" | "720p" | "1080p" | "4k";
1506
+ /** @description What the output is called in your library; made from the prompt when left out. */
1507
+ name?: string;
1508
+ };
1509
+ /**
1510
+ * Format: uri
1511
+ * @description An https URL to POST a signed generation event to when it finishes
1512
+ */
1513
+ webhook_url?: string;
1514
+ };
1515
+ /**
1516
+ * gemini-omni-flash/image-to-video
1517
+ * @description A clip that opens on your image, from 360p to 4K.
1518
+ */
1519
+ Create_gemini_omni_flash_image_to_video: {
1520
+ /**
1521
+ * @description discriminator enum property added by openapi-typescript
1522
+ * @enum {string}
1523
+ */
1524
+ model: "gemini-omni-flash/image-to-video";
1525
+ input: {
1526
+ /** @description How the image comes to life, up to the end image when one is given, with any spoken line in double quotes. */
1527
+ prompt: string;
1528
+ /** @description The image the clip opens on, as an asset id (asset_…) or an https URL. */
1529
+ start_image: string;
1530
+ /** @description The image the clip ends on, as an asset id (asset_…) or an https URL; none when left out, so the model picks the ending. */
1531
+ end_image?: string;
1532
+ /**
1533
+ * @description Shape of the clip, portrait 9:16 or landscape 16:9; 9:16 when left out.
1534
+ * @default 9:16
1535
+ * @enum {string}
1536
+ */
1537
+ aspect_ratio?: "9:16" | "16:9";
1538
+ /**
1539
+ * @description Length in whole seconds from 3 to 10; 8 when left out.
1540
+ * @default 8
1541
+ */
1542
+ duration?: number;
1543
+ /**
1544
+ * @description Output resolution, 360p for a cheap draft up to 4k, and the price per second rises with it; 720p when left out.
1545
+ * @default 720p
1546
+ * @enum {string}
1547
+ */
1548
+ resolution?: "360p" | "720p" | "1080p" | "4k";
1549
+ /** @description What the output is called in your library; made from the prompt when left out. */
1550
+ name?: string;
1551
+ };
1552
+ /**
1553
+ * Format: uri
1554
+ * @description An https URL to POST a signed generation event to when it finishes
1555
+ */
1556
+ webhook_url?: string;
1557
+ };
1558
+ /**
1559
+ * gemini-omni-flash/reference-to-video
1560
+ * @description A clip guided by up to 10 images or 3 short clips.
1561
+ */
1562
+ Create_gemini_omni_flash_reference_to_video: {
1563
+ /**
1564
+ * @description discriminator enum property added by openapi-typescript
1565
+ * @enum {string}
1566
+ */
1567
+ model: "gemini-omni-flash/reference-to-video";
1568
+ input: {
1569
+ /** @description What happens in the clip, citing each image or video by its place in its list as @image1 or @video1, with any spoken line in double quotes. */
1570
+ prompt: string;
1571
+ /**
1572
+ * @description Up to 10 images of the faces, products or places to keep, each an asset id (asset_…) or an https URL; none when left out.
1573
+ * @default []
1574
+ */
1575
+ images?: string[];
1576
+ /**
1577
+ * @description Up to 3 videos for a likeness or a motion to copy, whose sound is ignored, each an asset id (asset_…) or an https URL and cut to its opening 3 seconds when longer; none when left out.
1578
+ * @default []
1579
+ */
1580
+ videos?: string[];
1581
+ /**
1582
+ * @description Shape of the clip, portrait 9:16 or landscape 16:9; 9:16 when left out.
1583
+ * @default 9:16
1584
+ * @enum {string}
1585
+ */
1586
+ aspect_ratio?: "9:16" | "16:9";
1587
+ /**
1588
+ * @description Length in whole seconds from 3 to 10; 8 when left out.
1589
+ * @default 8
1590
+ */
1591
+ duration?: number;
1592
+ /**
1593
+ * @description Output resolution, 360p for a cheap draft up to 4k, and the price per second rises with it; 720p when left out.
1594
+ * @default 720p
1595
+ * @enum {string}
1596
+ */
1597
+ resolution?: "360p" | "720p" | "1080p" | "4k";
1598
+ /** @description What the output is called in your library; made from the prompt when left out. */
1599
+ name?: string;
1600
+ };
1601
+ /**
1602
+ * Format: uri
1603
+ * @description An https URL to POST a signed generation event to when it finishes
1604
+ */
1605
+ webhook_url?: string;
1606
+ };
1607
+ /**
1608
+ * gemini-omni-flash/edit
1609
+ * @description Change one thing in a clip of 10 seconds or less, such as the background or the weather.
1610
+ */
1611
+ Create_gemini_omni_flash_edit: {
1612
+ /**
1613
+ * @description discriminator enum property added by openapi-typescript
1614
+ * @enum {string}
1615
+ */
1616
+ model: "gemini-omni-flash/edit";
1617
+ input: {
1618
+ /** @description One simple change to make, ending with "Keep everything else the same." to hold the rest of the scene. */
1619
+ prompt: string;
1620
+ /** @description The video to edit, 10 seconds or shorter, as an asset id (asset_…) or an https URL. */
1621
+ video: string;
1622
+ /**
1623
+ * @description Output resolution; the source video's own when left out, so set it only to step the clip up or down.
1624
+ * @enum {string}
1625
+ */
1626
+ resolution?: "360p" | "720p" | "1080p" | "4k";
1627
+ /** @description What the output is called in your library; made from the prompt when left out. */
1628
+ name?: string;
1629
+ };
1630
+ /**
1631
+ * Format: uri
1632
+ * @description An https URL to POST a signed generation event to when it finishes
1633
+ */
1634
+ webhook_url?: string;
1635
+ };
1636
+ /**
1637
+ * sync-3/lipsync
1638
+ * @description Re-sync the speaker’s lips to new audio: dubs, new lines and fixed takes.
1639
+ */
1640
+ Create_sync_3_lipsync: {
1641
+ /**
1642
+ * @description discriminator enum property added by openapi-typescript
1643
+ * @enum {string}
1644
+ */
1645
+ model: "sync-3/lipsync";
1646
+ input: {
1647
+ /** @description The video to re-sync, as an asset id (asset_…) or an https URL, showing one clear, front-facing speaker. */
1648
+ video: string;
1649
+ /** @description The speech the lips follow, as an asset id (asset_…) or an https URL: a new voiceover, a dub, or the clip's own track saved as audio. */
1650
+ audio: string;
1651
+ /**
1652
+ * @description What happens when the audio and the video differ in length: cut_off ends the clip at the shorter one, loop and bounce replay the video, from the start or forward then back, until the audio ends, silence keeps the longer one with silence after the audio, and remap retimes the video to the audio; cut_off when left out.
1653
+ * @default cut_off
1654
+ * @enum {string}
1655
+ */
1656
+ sync_mode?: "cut_off" | "loop" | "bounce" | "silence" | "remap";
1657
+ /** @description What the output is called in your library; made from the prompt when left out. */
1658
+ name?: string;
1659
+ };
1660
+ /**
1661
+ * Format: uri
1662
+ * @description An https URL to POST a signed generation event to when it finishes
1663
+ */
1664
+ webhook_url?: string;
1665
+ };
1666
+ /**
1667
+ * elevenlabs/voiceover
1668
+ * @description Speak a script aloud in any library voice.
1669
+ */
1670
+ Create_elevenlabs_voiceover: {
1671
+ /**
1672
+ * @description discriminator enum property added by openapi-typescript
1673
+ * @enum {string}
1674
+ */
1675
+ model: "elevenlabs/voiceover";
1676
+ input: {
1677
+ /** @description The script to read aloud, up to 5000 characters, written as it should sound: inline audio tags in square brackets direct the delivery, such as [whispering], [laughs], [excited], [pause] or [door slams], and a word in IPA between slashes, such as /ˈnaɪki/, fixes its pronunciation. */
1678
+ text: string;
1679
+ /**
1680
+ * @description The voice that reads the script: a premade voice name, or a voice id from GET /v1/voices; Jessica when left out.
1681
+ * @default Jessica
1682
+ */
1683
+ voice?: string;
1684
+ /**
1685
+ * @description creative varies the delivery most and robust keeps it steadiest; natural when left out.
1686
+ * @default natural
1687
+ * @enum {string}
1688
+ */
1689
+ stability?: "creative" | "natural" | "robust";
1690
+ /**
1691
+ * @description How closely the speech holds to the voice, from 0 to 1; high values can carry the quirks of its source recording, and 0.75 when left out.
1692
+ * @default 0.75
1693
+ */
1694
+ similarity_boost?: number;
1695
+ /** @description The language to speak in, as a two-letter ISO 639-1 code such as en, pt or es; read from the script when left out. */
1696
+ language_code?: string;
1697
+ /** @description What the output is called in your library; made from the prompt when left out. */
1698
+ name?: string;
1699
+ };
1700
+ /**
1701
+ * Format: uri
1702
+ * @description An https URL to POST a signed generation event to when it finishes
1703
+ */
1704
+ webhook_url?: string;
1705
+ };
1706
+ /**
1707
+ * elevenlabs/music
1708
+ * @description Background tracks, jingles and songs, with or without vocals.
1709
+ */
1710
+ Create_elevenlabs_music: {
1711
+ /**
1712
+ * @description discriminator enum property added by openapi-typescript
1713
+ * @enum {string}
1714
+ */
1715
+ model: "elevenlabs/music";
1716
+ input: {
1717
+ /** @description The track: genre, mood, instruments, tempo, and any lyrics or vocal style, up to 4100 characters. */
1718
+ prompt: string;
1719
+ /**
1720
+ * @description Length in whole seconds from 3 to 600, or auto to let the model decide; auto when left out.
1721
+ * @default auto
1722
+ */
1723
+ duration?: "auto" | number;
1724
+ /**
1725
+ * @description true guarantees a track with no vocals; false when left out.
1726
+ * @default false
1727
+ */
1728
+ force_instrumental?: boolean;
1729
+ /** @description What the output is called in your library; made from the prompt when left out. */
1730
+ name?: string;
1731
+ };
1732
+ /**
1733
+ * Format: uri
1734
+ * @description An https URL to POST a signed generation event to when it finishes
1735
+ */
1736
+ webhook_url?: string;
1737
+ };
1738
+ /**
1739
+ * elevenlabs/sound-effects
1740
+ * @description Impacts, ambiences, foley and interface sounds from a description.
1741
+ */
1742
+ Create_elevenlabs_sound_effects: {
1743
+ /**
1744
+ * @description discriminator enum property added by openapi-typescript
1745
+ * @enum {string}
1746
+ */
1747
+ model: "elevenlabs/sound-effects";
1748
+ input: {
1749
+ /** @description The sound in plain words, such as "glass shattering on a tile floor", up to 450 characters. */
1750
+ prompt: string;
1751
+ /**
1752
+ * @description Length in seconds from 0.5 to 22, or auto to fit the sound; auto when left out.
1753
+ * @default auto
1754
+ */
1755
+ duration?: "auto" | number;
1756
+ /**
1757
+ * @description How closely the sound follows the prompt, from 0 to 1; 0.3 when left out.
1758
+ * @default 0.3
1759
+ */
1760
+ prompt_influence?: number;
1761
+ /**
1762
+ * @description Whether the sound loops seamlessly end to start; false when left out.
1763
+ * @default false
1764
+ */
1765
+ loop?: boolean;
1766
+ /** @description What the output is called in your library; made from the prompt when left out. */
1767
+ name?: string;
1768
+ };
1769
+ /**
1770
+ * Format: uri
1771
+ * @description An https URL to POST a signed generation event to when it finishes
1772
+ */
1773
+ webhook_url?: string;
1774
+ };
1775
+ /**
1776
+ * elevenlabs/voice-changer
1777
+ * @description Re-voice a recording into another voice, keeping its timing and emotion.
1778
+ */
1779
+ Create_elevenlabs_voice_changer: {
1780
+ /**
1781
+ * @description discriminator enum property added by openapi-typescript
1782
+ * @enum {string}
1783
+ */
1784
+ model: "elevenlabs/voice-changer";
1785
+ input: {
1786
+ /** @description The recording to re-voice, as an asset id (asset_…) or an https URL, at most 5 minutes; clean single-speaker audio works best. */
1787
+ audio: string;
1788
+ /** @description The voice id the recording is re-voiced into, from GET /v1/voices. */
1789
+ voice: string;
1790
+ /**
1791
+ * @description Whether to strip background noise from the recording first; only for a noisy source, since it can hurt a clean one; false when left out.
1792
+ * @default false
1793
+ */
1794
+ remove_background_noise?: boolean;
1795
+ /** @description What the output is called in your library; made from the prompt when left out. */
1796
+ name?: string;
1797
+ };
1798
+ /**
1799
+ * Format: uri
1800
+ * @description An https URL to POST a signed generation event to when it finishes
1801
+ */
1802
+ webhook_url?: string;
1803
+ };
1804
+ /**
1805
+ * elevenlabs/voice-isolator
1806
+ * @description Pull the voice out of a recording, removing noise, music and ambience.
1807
+ */
1808
+ Create_elevenlabs_voice_isolator: {
1809
+ /**
1810
+ * @description discriminator enum property added by openapi-typescript
1811
+ * @enum {string}
1812
+ */
1813
+ model: "elevenlabs/voice-isolator";
1814
+ input: {
1815
+ /** @description The audio to isolate the voice in, as an asset id (asset_…) or an https URL. */
1816
+ audio: string;
1817
+ /** @description What the output is called in your library; made from the prompt when left out. */
1818
+ name?: string;
1819
+ };
1820
+ /**
1821
+ * Format: uri
1822
+ * @description An https URL to POST a signed generation event to when it finishes
1823
+ */
1824
+ webhook_url?: string;
1825
+ };
1826
+ /**
1827
+ * minimax/music
1828
+ * @description Songs sung from your lyrics, or instrumentals.
1829
+ */
1830
+ Create_minimax_music: {
1831
+ /**
1832
+ * @description discriminator enum property added by openapi-typescript
1833
+ * @enum {string}
1834
+ */
1835
+ model: "minimax/music";
1836
+ input: {
1837
+ /** @description The style of the track: genre, mood, instruments, tempo and where it plays, from 10 to 2000 characters. */
1838
+ prompt: string;
1839
+ /** @description The words to sing, a line per line with tags such as [Verse], [Chorus] and [Bridge], up to 3500 characters, or auto to have MiniMax write them from the prompt; none when left out or empty, which makes an instrumental. */
1840
+ lyrics?: "auto" | string;
1841
+ /** @description What the output is called in your library; made from the prompt when left out. */
1842
+ name?: string;
1843
+ };
1844
+ /**
1845
+ * Format: uri
1846
+ * @description An https URL to POST a signed generation event to when it finishes
1847
+ */
1848
+ webhook_url?: string;
1849
+ };
1850
+ /**
1851
+ * sonilo/music
1852
+ * @description Instrumental music to the exact second, trained only on licensed music and cleared for ads.
1853
+ */
1854
+ Create_sonilo_music: {
1855
+ /**
1856
+ * @description discriminator enum property added by openapi-typescript
1857
+ * @enum {string}
1858
+ */
1859
+ model: "sonilo/music";
1860
+ input: {
1861
+ /** @description The track: genre, mood, instruments, tempo and where it plays. */
1862
+ prompt: string;
1863
+ /** @description Length in whole seconds from 1 to 600; the track runs exactly this long. */
1864
+ duration: number;
1865
+ /** @description What the output is called in your library; made from the prompt when left out. */
1866
+ name?: string;
1867
+ };
1868
+ /**
1869
+ * Format: uri
1870
+ * @description An https URL to POST a signed generation event to when it finishes
1871
+ */
1872
+ webhook_url?: string;
1873
+ };
1874
+ GenerationEvent: {
1875
+ /** @description The same for every delivery of one event, so a retry can be told apart */
1876
+ id: string;
1877
+ /** @enum {string} */
1878
+ object: "event";
1879
+ /** @enum {string} */
1880
+ type: "generation.succeeded" | "generation.failed" | "generation.canceled";
1881
+ created_at: string;
1882
+ data: components["schemas"]["Generation"];
1883
+ };
1884
+ Generation: {
1885
+ /** @example gen_6c1f0e9a7b2d4c55a1e3f08b9d2c4e71 */
1886
+ id: string;
1887
+ /** @enum {string} */
1888
+ object: "generation";
1889
+ model: string;
1890
+ /**
1891
+ * @description queued, then running, then succeeded, failed or canceled
1892
+ * @enum {string}
1893
+ */
1894
+ status: "queued" | "running" | "succeeded" | "failed" | "canceled";
1895
+ /** @description What it made, saved to your library; the main file comes first */
1896
+ output: {
1897
+ id: string;
1898
+ /** @enum {string} */
1899
+ object: "asset";
1900
+ /** @enum {string} */
1901
+ type: "image" | "video" | "audio";
1902
+ name: string | null;
1903
+ url: string;
1904
+ content_type: string;
1905
+ width?: number;
1906
+ height?: number;
1907
+ duration?: number;
1908
+ /** @enum {string} */
1909
+ role: "main" | "last_frame" | "layer";
1910
+ layer?: {
1911
+ name: string | null;
1912
+ description: string | null;
1913
+ x: number;
1914
+ y: number;
1915
+ width: number;
1916
+ height: number;
1917
+ z_index: number;
1918
+ };
1919
+ }[];
1920
+ /** @description Why it failed; failed generations are free */
1921
+ error: {
1922
+ /** @enum {string} */
1923
+ code: "invalid_input" | "insufficient_credits" | "generation_failed";
1924
+ message: string;
1925
+ } | null;
1926
+ /** @description What it was charged, in credits of $0.05, once it finished */
1927
+ credits: number | null;
1928
+ created_at: string;
1929
+ started_at: string | null;
1930
+ completed_at: string | null;
1931
+ };
1932
+ ModelList: {
1933
+ /** @enum {string} */
1934
+ object: "list";
1935
+ data: components["schemas"]["Model"][];
1936
+ has_more: boolean;
1937
+ /** @description Pass as `cursor` for the next page */
1938
+ next_cursor: string | null;
1939
+ };
1940
+ Model: {
1941
+ id: string;
1942
+ /** @enum {string} */
1943
+ object: "model";
1944
+ name: string;
1945
+ /** @enum {string} */
1946
+ type: "image" | "video" | "audio";
1947
+ task: string;
1948
+ summary: string;
1949
+ /** @description What a generation costs per unit, in USD. A generation is charged in credits of $0.05, rounded up, and only when it succeeds. */
1950
+ pricing: {
1951
+ rates: {
1952
+ /** @description What one rate is for: an image, a second, a minute, a character, a request or a token */
1953
+ unit: string;
1954
+ usd: number;
1955
+ /** @description The inputs, by their names in input, that this rate applies to; a media input is true when given and false when not; empty when it applies to all. A rate charged on the input itself carries `input`: the tokens of text or image, or true for an input file it charges for */
1956
+ when: {
1957
+ [key: string]: unknown;
1958
+ };
1959
+ /** @description Whether a generation that leaves these inputs at their defaults pays this rate */
1960
+ default: boolean;
1961
+ }[];
1962
+ };
1963
+ /** @description The JSON Schema of `input` */
1964
+ input_schema: {
1965
+ [key: string]: unknown;
1966
+ };
1967
+ };
1968
+ Error: {
1969
+ error: {
1970
+ /** @enum {string} */
1971
+ type: "invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "billing_error" | "rate_limit_error" | "api_error";
1972
+ /** @description A stable code to branch on, such as invalid_input or insufficient_credits */
1973
+ code: string;
1974
+ /** @description What went wrong and how to fix it */
1975
+ message: string;
1976
+ /** @description The part of the request at fault, such as input.prompt */
1977
+ param?: string;
1978
+ request_id: string;
1979
+ };
1980
+ };
1981
+ GenerationList: {
1982
+ /** @enum {string} */
1983
+ object: "list";
1984
+ data: components["schemas"]["Generation"][];
1985
+ has_more: boolean;
1986
+ /** @description Pass as `cursor` for the next page */
1987
+ next_cursor: string | null;
1988
+ };
1989
+ LibraryAssetList: {
1990
+ /** @enum {string} */
1991
+ object: "list";
1992
+ data: components["schemas"]["LibraryAsset"][];
1993
+ has_more: boolean;
1994
+ /** @description Pass as `cursor` for the next page */
1995
+ next_cursor: string | null;
1996
+ };
1997
+ LibraryAsset: {
1998
+ id: string;
1999
+ /** @enum {string} */
2000
+ object: "asset";
2001
+ /** @enum {string} */
2002
+ type: "image" | "video" | "audio" | "file";
2003
+ name: string | null;
2004
+ url: string | null;
2005
+ content_type: string | null;
2006
+ width?: number;
2007
+ height?: number;
2008
+ duration?: number;
2009
+ /** @description What the image shows, when it has been described */
2010
+ caption: string | null;
2011
+ liked: boolean;
2012
+ /** @description The offer the file is a photo of, offer_… */
2013
+ offer: string | null;
2014
+ created_at: string;
2015
+ };
2016
+ Asset: {
2017
+ id: string;
2018
+ /** @enum {string} */
2019
+ object: "asset";
2020
+ /** @enum {string} */
2021
+ type: "image" | "video" | "audio" | "file";
2022
+ name: string | null;
2023
+ url: string | null;
2024
+ content_type: string | null;
2025
+ width?: number;
2026
+ height?: number;
2027
+ duration?: number;
2028
+ };
2029
+ Brand: {
2030
+ /** @enum {string} */
2031
+ object: "brand";
2032
+ /** @description Send it as `Sandstorm-Brand` to work on this brand with a key made on another */
2033
+ id: string;
2034
+ name: string;
2035
+ summary: string | null;
2036
+ /** @description How the brand sounds, by surface */
2037
+ voice: string | null;
2038
+ audience: string | null;
2039
+ positioning: string | null;
2040
+ /** @description Taboos and preferences found in what the brand published */
2041
+ preferences: string | null;
2042
+ /** @description Rules people at the brand stated, newest first. They outrank everything above. */
2043
+ rules: {
2044
+ /** @enum {string} */
2045
+ kind: "preference" | "taboo";
2046
+ text: string;
2047
+ }[];
2048
+ colors: {
2049
+ hex: string;
2050
+ role: string | null;
2051
+ name: string | null;
2052
+ }[];
2053
+ typography: {
2054
+ /** @description heading1 to heading4, body, cta, link or overline */
2055
+ role: string;
2056
+ font_family: string | null;
2057
+ font_size: string | null;
2058
+ font_weight: string | null;
2059
+ letter_spacing: string | null;
2060
+ text_transform: string | null;
2061
+ }[];
2062
+ /** @description The site's primary call-to-action button */
2063
+ button: {
2064
+ text: string;
2065
+ color: string | null;
2066
+ background_color: string | null;
2067
+ border_radius: string | null;
2068
+ font_family: string | null;
2069
+ font_size: string | null;
2070
+ font_weight: string | null;
2071
+ } | null;
2072
+ fonts: {
2073
+ family: string;
2074
+ headings: boolean;
2075
+ body: boolean;
2076
+ files: {
2077
+ weight: string;
2078
+ style: string;
2079
+ url: string;
2080
+ }[];
2081
+ }[];
2082
+ logos: {
2083
+ /** @description An asset id, usable as a media input */
2084
+ id: string;
2085
+ /**
2086
+ * @description icon for a small mark, light for dark backgrounds, dark for light ones
2087
+ * @enum {string}
2088
+ */
2089
+ variant: "icon" | "light" | "dark";
2090
+ format: string | null;
2091
+ width: number | null;
2092
+ height: number | null;
2093
+ url: string | null;
2094
+ }[];
2095
+ };
2096
+ OfferList: {
2097
+ /** @enum {string} */
2098
+ object: "list";
2099
+ data: components["schemas"]["OfferSummary"][];
2100
+ has_more: boolean;
2101
+ /** @description Pass as `cursor` for the next page */
2102
+ next_cursor: string | null;
2103
+ };
2104
+ OfferSummary: {
2105
+ id: string;
2106
+ /** @enum {string} */
2107
+ object: "offer";
2108
+ name: string;
2109
+ /** @description product, service, bundle */
2110
+ kind: string;
2111
+ /** @description hero, evergreen, seasonal */
2112
+ priority: string;
2113
+ summary: string;
2114
+ photo_count: number;
2115
+ variant_count: number;
2116
+ };
2117
+ Offer: {
2118
+ id: string;
2119
+ /** @enum {string} */
2120
+ object: "offer";
2121
+ name: string;
2122
+ /** @description product, service, bundle */
2123
+ kind: string;
2124
+ /** @description hero, evergreen, seasonal */
2125
+ priority: string;
2126
+ photo_count: number;
2127
+ description: string | null;
2128
+ /** @description Notes on how to sell it */
2129
+ context: string | null;
2130
+ variants: {
2131
+ id: string;
2132
+ name: string;
2133
+ sku: string | null;
2134
+ price: string | null;
2135
+ compare_at_price: string | null;
2136
+ sizes: string[];
2137
+ photo_count: number;
2138
+ photos: {
2139
+ /** @description An asset id, usable as a media input */
2140
+ id: string;
2141
+ url: string | null;
2142
+ width: number | null;
2143
+ height: number | null;
2144
+ orientation: string | null;
2145
+ shot_type: string | null;
2146
+ caption: string | null;
2147
+ liked: boolean;
2148
+ }[];
2149
+ }[];
2150
+ /** @description Photos of the offer that belong to no one variant */
2151
+ photos: {
2152
+ /** @description An asset id, usable as a media input */
2153
+ id: string;
2154
+ url: string | null;
2155
+ width: number | null;
2156
+ height: number | null;
2157
+ orientation: string | null;
2158
+ shot_type: string | null;
2159
+ caption: string | null;
2160
+ liked: boolean;
2161
+ }[];
2162
+ };
2163
+ CharacterList: {
2164
+ /** @enum {string} */
2165
+ object: "list";
2166
+ data: components["schemas"]["Character"][];
2167
+ has_more: boolean;
2168
+ /** @description Pass as `cursor` for the next page */
2169
+ next_cursor: string | null;
2170
+ };
2171
+ Character: {
2172
+ id: string;
2173
+ /** @enum {string} */
2174
+ object: "character";
2175
+ name: string;
2176
+ /** @description subject, product, place, voice, style */
2177
+ kind: string;
2178
+ description: string | null;
2179
+ usage: string | null;
2180
+ /** @description What every image of it has to keep, such as Face or Wardrobe */
2181
+ must_match: string[];
2182
+ items: {
2183
+ /** @description An asset id, usable as a media input */
2184
+ asset: string;
2185
+ /** @enum {string} */
2186
+ type: "image" | "video" | "audio";
2187
+ /** @description reference, first_frame, last_frame */
2188
+ role: string;
2189
+ angle: string | null;
2190
+ usage: string | null;
2191
+ url: string | null;
2192
+ }[];
2193
+ };
2194
+ VoiceList: {
2195
+ /** @enum {string} */
2196
+ object: "list";
2197
+ data: components["schemas"]["Voice"][];
2198
+ has_more: boolean;
2199
+ /** @description Pass as `cursor` for the next page */
2200
+ next_cursor: string | null;
2201
+ };
2202
+ Voice: {
2203
+ /** @description Pass as `voice` to a voiceover or voice change */
2204
+ id: string;
2205
+ /** @enum {string} */
2206
+ object: "voice";
2207
+ name: string;
2208
+ gender: string;
2209
+ age: string;
2210
+ accent: string;
2211
+ descriptive: string;
2212
+ use_case: string;
2213
+ description: string | null;
2214
+ /** @description A public sample to play */
2215
+ preview_url: string | null;
2216
+ };
2217
+ AdvertiserList: {
2218
+ /** @enum {string} */
2219
+ object: "list";
2220
+ data: components["schemas"]["Advertiser"][];
2221
+ has_more: boolean;
2222
+ /** @description Pass as `cursor` for the next page */
2223
+ next_cursor: string | null;
2224
+ };
2225
+ Advertiser: {
2226
+ id: string;
2227
+ /** @enum {string} */
2228
+ object: "advertiser";
2229
+ name: string | null;
2230
+ ads: number;
2231
+ active_ads: number;
2232
+ /** @description Whether your organization follows it */
2233
+ followed: boolean;
2234
+ /** @enum {string} */
2235
+ sync: "synced" | "syncing" | "failed" | "never";
2236
+ synced_at: string | null;
2237
+ };
2238
+ AdList: {
2239
+ /** @enum {string} */
2240
+ object: "list";
2241
+ data: components["schemas"]["AdSummary"][];
2242
+ has_more: boolean;
2243
+ /** @description Pass as `cursor` for the next page */
2244
+ next_cursor: string | null;
2245
+ };
2246
+ AdSummary: {
2247
+ id: string;
2248
+ /** @enum {string} */
2249
+ object: "ad";
2250
+ advertiser: string | null;
2251
+ advertiser_name: string | null;
2252
+ platform: string | null;
2253
+ format: string | null;
2254
+ status: string | null;
2255
+ title: string | null;
2256
+ body: string | null;
2257
+ cta_text: string | null;
2258
+ active_days: number | null;
2259
+ started_at: string | null;
2260
+ ad_library_url: string | null;
2261
+ };
2262
+ Ad: {
2263
+ id: string;
2264
+ /** @enum {string} */
2265
+ object: "ad";
2266
+ advertiser: string | null;
2267
+ advertiser_name: string | null;
2268
+ platform: string | null;
2269
+ format: string | null;
2270
+ status: string | null;
2271
+ title: string | null;
2272
+ body: string | null;
2273
+ cta_text: string | null;
2274
+ active_days: number | null;
2275
+ started_at: string | null;
2276
+ ad_library_url: string | null;
2277
+ duration: number | null;
2278
+ caption: string | null;
2279
+ cta_type: string | null;
2280
+ link_url: string | null;
2281
+ link_description: string | null;
2282
+ ended_at: string | null;
2283
+ first_seen_at: string | null;
2284
+ last_seen_at: string | null;
2285
+ variants: number | null;
2286
+ transcript: string | null;
2287
+ /** @description The ad's image or video */
2288
+ media_url: string | null;
2289
+ };
2290
+ Person: {
2291
+ /** @enum {string} */
2292
+ object: "person";
2293
+ id: string;
2294
+ email: string | null;
2295
+ organizations: {
2296
+ id: string;
2297
+ name: string | null;
2298
+ /** @description The organization Sandstorm opens for this person */
2299
+ current: boolean;
2300
+ role: string | null;
2301
+ /** @description The brand this person last worked on there */
2302
+ brand: string | null;
2303
+ }[];
2304
+ };
2305
+ ApiKey: {
2306
+ /** @enum {string} */
2307
+ object: "api_key";
2308
+ id: string;
2309
+ name: string;
2310
+ /** @description The key itself, shown this once */
2311
+ key: string;
2312
+ prefix: string;
2313
+ organization: {
2314
+ id: string;
2315
+ name: string | null;
2316
+ };
2317
+ brand: {
2318
+ id: string;
2319
+ name: string | null;
2320
+ } | null;
2321
+ created_at: string;
2322
+ };
2323
+ WebhookSecret: {
2324
+ /** @enum {string} */
2325
+ object: "webhook_secret";
2326
+ secret: string;
2327
+ };
2328
+ };
2329
+ responses: never;
2330
+ parameters: never;
2331
+ requestBodies: never;
2332
+ headers: never;
2333
+ pathItems: never;
2334
+ }
2335
+ export type $defs = Record<string, never>;
2336
+ export interface operations {
2337
+ listModels: {
2338
+ parameters: {
2339
+ query?: {
2340
+ /** @description Only image, video or audio models */
2341
+ type?: "image" | "video" | "audio";
2342
+ };
2343
+ header?: never;
2344
+ path?: never;
2345
+ cookie?: never;
2346
+ };
2347
+ requestBody?: never;
2348
+ responses: {
2349
+ /** @description The models */
2350
+ 200: {
2351
+ headers: {
2352
+ [name: string]: unknown;
2353
+ };
2354
+ content: {
2355
+ "application/json": components["schemas"]["ModelList"];
2356
+ };
2357
+ };
2358
+ /** @description The request is not valid; `error.param` names the part at fault */
2359
+ 400: {
2360
+ headers: {
2361
+ [name: string]: unknown;
2362
+ };
2363
+ content: {
2364
+ "application/json": components["schemas"]["Error"];
2365
+ };
2366
+ };
2367
+ /** @description No API key, or not a valid one */
2368
+ 401: {
2369
+ headers: {
2370
+ [name: string]: unknown;
2371
+ };
2372
+ content: {
2373
+ "application/json": components["schemas"]["Error"];
2374
+ };
2375
+ };
2376
+ /** @description More than 300 requests a minute */
2377
+ 429: {
2378
+ headers: {
2379
+ [name: string]: unknown;
2380
+ };
2381
+ content: {
2382
+ "application/json": components["schemas"]["Error"];
2383
+ };
2384
+ };
2385
+ };
2386
+ };
2387
+ getModel: {
2388
+ parameters: {
2389
+ query?: never;
2390
+ header?: never;
2391
+ path: {
2392
+ id: string;
2393
+ };
2394
+ cookie?: never;
2395
+ };
2396
+ requestBody?: never;
2397
+ responses: {
2398
+ /** @description The model */
2399
+ 200: {
2400
+ headers: {
2401
+ [name: string]: unknown;
2402
+ };
2403
+ content: {
2404
+ "application/json": components["schemas"]["Model"];
2405
+ };
2406
+ };
2407
+ /** @description The request is not valid; `error.param` names the part at fault */
2408
+ 400: {
2409
+ headers: {
2410
+ [name: string]: unknown;
2411
+ };
2412
+ content: {
2413
+ "application/json": components["schemas"]["Error"];
2414
+ };
2415
+ };
2416
+ /** @description No API key, or not a valid one */
2417
+ 401: {
2418
+ headers: {
2419
+ [name: string]: unknown;
2420
+ };
2421
+ content: {
2422
+ "application/json": components["schemas"]["Error"];
2423
+ };
2424
+ };
2425
+ /** @description No such thing */
2426
+ 404: {
2427
+ headers: {
2428
+ [name: string]: unknown;
2429
+ };
2430
+ content: {
2431
+ "application/json": components["schemas"]["Error"];
2432
+ };
2433
+ };
2434
+ /** @description More than 300 requests a minute */
2435
+ 429: {
2436
+ headers: {
2437
+ [name: string]: unknown;
2438
+ };
2439
+ content: {
2440
+ "application/json": components["schemas"]["Error"];
2441
+ };
2442
+ };
2443
+ };
2444
+ };
2445
+ listGenerations: {
2446
+ parameters: {
2447
+ query?: {
2448
+ /** @description How many to list, from 1 to 100; 20 when left out */
2449
+ limit?: number;
2450
+ /** @description `next_cursor` from the previous page */
2451
+ cursor?: string;
2452
+ status?: "queued" | "running" | "succeeded" | "failed" | "canceled";
2453
+ model?: string;
2454
+ };
2455
+ header?: never;
2456
+ path?: never;
2457
+ cookie?: never;
2458
+ };
2459
+ requestBody?: never;
2460
+ responses: {
2461
+ /** @description The generations */
2462
+ 200: {
2463
+ headers: {
2464
+ [name: string]: unknown;
2465
+ };
2466
+ content: {
2467
+ "application/json": components["schemas"]["GenerationList"];
2468
+ };
2469
+ };
2470
+ /** @description The request is not valid; `error.param` names the part at fault */
2471
+ 400: {
2472
+ headers: {
2473
+ [name: string]: unknown;
2474
+ };
2475
+ content: {
2476
+ "application/json": components["schemas"]["Error"];
2477
+ };
2478
+ };
2479
+ /** @description No API key, or not a valid one */
2480
+ 401: {
2481
+ headers: {
2482
+ [name: string]: unknown;
2483
+ };
2484
+ content: {
2485
+ "application/json": components["schemas"]["Error"];
2486
+ };
2487
+ };
2488
+ /** @description More than 300 requests a minute */
2489
+ 429: {
2490
+ headers: {
2491
+ [name: string]: unknown;
2492
+ };
2493
+ content: {
2494
+ "application/json": components["schemas"]["Error"];
2495
+ };
2496
+ };
2497
+ };
2498
+ };
2499
+ createGeneration: {
2500
+ parameters: {
2501
+ query?: never;
2502
+ header?: {
2503
+ /** @description `wait=<seconds>`, up to 200, answers the finished generation if it finishes in time */
2504
+ prefer?: string;
2505
+ /** @description Any unique string. Retrying with the same key answers the first generation instead of starting another. */
2506
+ "idempotency-key"?: string;
2507
+ };
2508
+ path?: never;
2509
+ cookie?: never;
2510
+ };
2511
+ requestBody: {
2512
+ content: {
2513
+ "application/json": components["schemas"]["CreateGeneration"];
2514
+ };
2515
+ };
2516
+ responses: {
2517
+ /** @description It finished; `status` says how */
2518
+ 200: {
2519
+ headers: {
2520
+ [name: string]: unknown;
2521
+ };
2522
+ content: {
2523
+ "application/json": components["schemas"]["Generation"];
2524
+ };
2525
+ };
2526
+ /** @description It is queued or running; poll it, wait on it or take the webhook */
2527
+ 202: {
2528
+ headers: {
2529
+ [name: string]: unknown;
2530
+ };
2531
+ content: {
2532
+ "application/json": components["schemas"]["Generation"];
2533
+ };
2534
+ };
2535
+ /** @description The request is not valid; `error.param` names the part at fault */
2536
+ 400: {
2537
+ headers: {
2538
+ [name: string]: unknown;
2539
+ };
2540
+ content: {
2541
+ "application/json": components["schemas"]["Error"];
2542
+ };
2543
+ };
2544
+ /** @description No API key, or not a valid one */
2545
+ 401: {
2546
+ headers: {
2547
+ [name: string]: unknown;
2548
+ };
2549
+ content: {
2550
+ "application/json": components["schemas"]["Error"];
2551
+ };
2552
+ };
2553
+ /** @description Not enough credits */
2554
+ 402: {
2555
+ headers: {
2556
+ [name: string]: unknown;
2557
+ };
2558
+ content: {
2559
+ "application/json": components["schemas"]["Error"];
2560
+ };
2561
+ };
2562
+ /** @description The key cannot use that brand */
2563
+ 403: {
2564
+ headers: {
2565
+ [name: string]: unknown;
2566
+ };
2567
+ content: {
2568
+ "application/json": components["schemas"]["Error"];
2569
+ };
2570
+ };
2571
+ /** @description The Idempotency-Key was used with a different request */
2572
+ 422: {
2573
+ headers: {
2574
+ [name: string]: unknown;
2575
+ };
2576
+ content: {
2577
+ "application/json": components["schemas"]["Error"];
2578
+ };
2579
+ };
2580
+ /** @description More than 300 requests a minute */
2581
+ 429: {
2582
+ headers: {
2583
+ [name: string]: unknown;
2584
+ };
2585
+ content: {
2586
+ "application/json": components["schemas"]["Error"];
2587
+ };
2588
+ };
2589
+ /** @description Sandstorm could not take the request; retry it */
2590
+ 503: {
2591
+ headers: {
2592
+ [name: string]: unknown;
2593
+ };
2594
+ content: {
2595
+ "application/json": components["schemas"]["Error"];
2596
+ };
2597
+ };
2598
+ };
2599
+ };
2600
+ getGeneration: {
2601
+ parameters: {
2602
+ query?: never;
2603
+ header?: {
2604
+ /** @description `wait=<seconds>`, up to 200, answers the finished generation if it finishes in time */
2605
+ prefer?: string;
2606
+ };
2607
+ path: {
2608
+ id: string;
2609
+ };
2610
+ cookie?: never;
2611
+ };
2612
+ requestBody?: never;
2613
+ responses: {
2614
+ /** @description The generation */
2615
+ 200: {
2616
+ headers: {
2617
+ [name: string]: unknown;
2618
+ };
2619
+ content: {
2620
+ "application/json": components["schemas"]["Generation"];
2621
+ };
2622
+ };
2623
+ /** @description The request is not valid; `error.param` names the part at fault */
2624
+ 400: {
2625
+ headers: {
2626
+ [name: string]: unknown;
2627
+ };
2628
+ content: {
2629
+ "application/json": components["schemas"]["Error"];
2630
+ };
2631
+ };
2632
+ /** @description No API key, or not a valid one */
2633
+ 401: {
2634
+ headers: {
2635
+ [name: string]: unknown;
2636
+ };
2637
+ content: {
2638
+ "application/json": components["schemas"]["Error"];
2639
+ };
2640
+ };
2641
+ /** @description No such thing */
2642
+ 404: {
2643
+ headers: {
2644
+ [name: string]: unknown;
2645
+ };
2646
+ content: {
2647
+ "application/json": components["schemas"]["Error"];
2648
+ };
2649
+ };
2650
+ /** @description More than 300 requests a minute */
2651
+ 429: {
2652
+ headers: {
2653
+ [name: string]: unknown;
2654
+ };
2655
+ content: {
2656
+ "application/json": components["schemas"]["Error"];
2657
+ };
2658
+ };
2659
+ };
2660
+ };
2661
+ cancelGeneration: {
2662
+ parameters: {
2663
+ query?: never;
2664
+ header?: never;
2665
+ path: {
2666
+ id: string;
2667
+ };
2668
+ cookie?: never;
2669
+ };
2670
+ requestBody?: never;
2671
+ responses: {
2672
+ /** @description Cancelling */
2673
+ 202: {
2674
+ headers: {
2675
+ [name: string]: unknown;
2676
+ };
2677
+ content: {
2678
+ "application/json": components["schemas"]["Generation"];
2679
+ };
2680
+ };
2681
+ /** @description The request is not valid; `error.param` names the part at fault */
2682
+ 400: {
2683
+ headers: {
2684
+ [name: string]: unknown;
2685
+ };
2686
+ content: {
2687
+ "application/json": components["schemas"]["Error"];
2688
+ };
2689
+ };
2690
+ /** @description No API key, or not a valid one */
2691
+ 401: {
2692
+ headers: {
2693
+ [name: string]: unknown;
2694
+ };
2695
+ content: {
2696
+ "application/json": components["schemas"]["Error"];
2697
+ };
2698
+ };
2699
+ /** @description No such thing */
2700
+ 404: {
2701
+ headers: {
2702
+ [name: string]: unknown;
2703
+ };
2704
+ content: {
2705
+ "application/json": components["schemas"]["Error"];
2706
+ };
2707
+ };
2708
+ /** @description The request conflicts with the current state */
2709
+ 409: {
2710
+ headers: {
2711
+ [name: string]: unknown;
2712
+ };
2713
+ content: {
2714
+ "application/json": components["schemas"]["Error"];
2715
+ };
2716
+ };
2717
+ /** @description More than 300 requests a minute */
2718
+ 429: {
2719
+ headers: {
2720
+ [name: string]: unknown;
2721
+ };
2722
+ content: {
2723
+ "application/json": components["schemas"]["Error"];
2724
+ };
2725
+ };
2726
+ };
2727
+ };
2728
+ listAssets: {
2729
+ parameters: {
2730
+ query?: {
2731
+ type?: "image" | "video" | "audio";
2732
+ /** @description Only photos of this offer, offer_… */
2733
+ offer?: string;
2734
+ /** @description Only liked files */
2735
+ liked?: "true" | "false";
2736
+ /** @description Archived files instead of live ones */
2737
+ archived?: "true" | "false";
2738
+ /** @description How many to list, from 1 to 50; 20 when left out */
2739
+ limit?: number;
2740
+ /** @description `next_cursor` from the previous page */
2741
+ cursor?: string;
2742
+ };
2743
+ header?: never;
2744
+ path?: never;
2745
+ cookie?: never;
2746
+ };
2747
+ requestBody?: never;
2748
+ responses: {
2749
+ /** @description The files */
2750
+ 200: {
2751
+ headers: {
2752
+ [name: string]: unknown;
2753
+ };
2754
+ content: {
2755
+ "application/json": components["schemas"]["LibraryAssetList"];
2756
+ };
2757
+ };
2758
+ /** @description The request is not valid; `error.param` names the part at fault */
2759
+ 400: {
2760
+ headers: {
2761
+ [name: string]: unknown;
2762
+ };
2763
+ content: {
2764
+ "application/json": components["schemas"]["Error"];
2765
+ };
2766
+ };
2767
+ /** @description No API key, or not a valid one */
2768
+ 401: {
2769
+ headers: {
2770
+ [name: string]: unknown;
2771
+ };
2772
+ content: {
2773
+ "application/json": components["schemas"]["Error"];
2774
+ };
2775
+ };
2776
+ /** @description More than 300 requests a minute */
2777
+ 429: {
2778
+ headers: {
2779
+ [name: string]: unknown;
2780
+ };
2781
+ content: {
2782
+ "application/json": components["schemas"]["Error"];
2783
+ };
2784
+ };
2785
+ };
2786
+ };
2787
+ importAsset: {
2788
+ parameters: {
2789
+ query?: never;
2790
+ header?: {
2791
+ "idempotency-key"?: string;
2792
+ };
2793
+ path?: never;
2794
+ cookie?: never;
2795
+ };
2796
+ requestBody: {
2797
+ content: {
2798
+ "application/json": {
2799
+ /** @description A public https link to a png, jpeg, webp, mp4, mov, mp3, m4a or wav file */
2800
+ url: string;
2801
+ /** @description What the file is called in your library */
2802
+ name?: string;
2803
+ };
2804
+ };
2805
+ };
2806
+ responses: {
2807
+ /** @description Imported */
2808
+ 201: {
2809
+ headers: {
2810
+ [name: string]: unknown;
2811
+ };
2812
+ content: {
2813
+ "application/json": components["schemas"]["Asset"];
2814
+ };
2815
+ };
2816
+ /** @description The request is not valid; `error.param` names the part at fault */
2817
+ 400: {
2818
+ headers: {
2819
+ [name: string]: unknown;
2820
+ };
2821
+ content: {
2822
+ "application/json": components["schemas"]["Error"];
2823
+ };
2824
+ };
2825
+ /** @description No API key, or not a valid one */
2826
+ 401: {
2827
+ headers: {
2828
+ [name: string]: unknown;
2829
+ };
2830
+ content: {
2831
+ "application/json": components["schemas"]["Error"];
2832
+ };
2833
+ };
2834
+ /** @description More than 300 requests a minute */
2835
+ 429: {
2836
+ headers: {
2837
+ [name: string]: unknown;
2838
+ };
2839
+ content: {
2840
+ "application/json": components["schemas"]["Error"];
2841
+ };
2842
+ };
2843
+ /** @description Sandstorm could not take the request; retry it */
2844
+ 503: {
2845
+ headers: {
2846
+ [name: string]: unknown;
2847
+ };
2848
+ content: {
2849
+ "application/json": components["schemas"]["Error"];
2850
+ };
2851
+ };
2852
+ };
2853
+ };
2854
+ getAsset: {
2855
+ parameters: {
2856
+ query?: never;
2857
+ header?: never;
2858
+ path: {
2859
+ id: string;
2860
+ };
2861
+ cookie?: never;
2862
+ };
2863
+ requestBody?: never;
2864
+ responses: {
2865
+ /** @description The asset */
2866
+ 200: {
2867
+ headers: {
2868
+ [name: string]: unknown;
2869
+ };
2870
+ content: {
2871
+ "application/json": components["schemas"]["Asset"];
2872
+ };
2873
+ };
2874
+ /** @description The request is not valid; `error.param` names the part at fault */
2875
+ 400: {
2876
+ headers: {
2877
+ [name: string]: unknown;
2878
+ };
2879
+ content: {
2880
+ "application/json": components["schemas"]["Error"];
2881
+ };
2882
+ };
2883
+ /** @description No API key, or not a valid one */
2884
+ 401: {
2885
+ headers: {
2886
+ [name: string]: unknown;
2887
+ };
2888
+ content: {
2889
+ "application/json": components["schemas"]["Error"];
2890
+ };
2891
+ };
2892
+ /** @description No such thing */
2893
+ 404: {
2894
+ headers: {
2895
+ [name: string]: unknown;
2896
+ };
2897
+ content: {
2898
+ "application/json": components["schemas"]["Error"];
2899
+ };
2900
+ };
2901
+ /** @description More than 300 requests a minute */
2902
+ 429: {
2903
+ headers: {
2904
+ [name: string]: unknown;
2905
+ };
2906
+ content: {
2907
+ "application/json": components["schemas"]["Error"];
2908
+ };
2909
+ };
2910
+ };
2911
+ };
2912
+ getBrand: {
2913
+ parameters: {
2914
+ query?: never;
2915
+ header?: never;
2916
+ path?: never;
2917
+ cookie?: never;
2918
+ };
2919
+ requestBody?: never;
2920
+ responses: {
2921
+ /** @description The brand kit */
2922
+ 200: {
2923
+ headers: {
2924
+ [name: string]: unknown;
2925
+ };
2926
+ content: {
2927
+ "application/json": components["schemas"]["Brand"];
2928
+ };
2929
+ };
2930
+ /** @description The request is not valid; `error.param` names the part at fault */
2931
+ 400: {
2932
+ headers: {
2933
+ [name: string]: unknown;
2934
+ };
2935
+ content: {
2936
+ "application/json": components["schemas"]["Error"];
2937
+ };
2938
+ };
2939
+ /** @description No API key, or not a valid one */
2940
+ 401: {
2941
+ headers: {
2942
+ [name: string]: unknown;
2943
+ };
2944
+ content: {
2945
+ "application/json": components["schemas"]["Error"];
2946
+ };
2947
+ };
2948
+ /** @description No such thing */
2949
+ 404: {
2950
+ headers: {
2951
+ [name: string]: unknown;
2952
+ };
2953
+ content: {
2954
+ "application/json": components["schemas"]["Error"];
2955
+ };
2956
+ };
2957
+ /** @description More than 300 requests a minute */
2958
+ 429: {
2959
+ headers: {
2960
+ [name: string]: unknown;
2961
+ };
2962
+ content: {
2963
+ "application/json": components["schemas"]["Error"];
2964
+ };
2965
+ };
2966
+ };
2967
+ };
2968
+ listOffers: {
2969
+ parameters: {
2970
+ query?: {
2971
+ /** @description Words to match */
2972
+ query?: string;
2973
+ /** @description How many to list, from 1 to 50; 20 when left out */
2974
+ limit?: number;
2975
+ /** @description `next_cursor` from the previous page */
2976
+ cursor?: string;
2977
+ };
2978
+ header?: never;
2979
+ path?: never;
2980
+ cookie?: never;
2981
+ };
2982
+ requestBody?: never;
2983
+ responses: {
2984
+ /** @description The offers */
2985
+ 200: {
2986
+ headers: {
2987
+ [name: string]: unknown;
2988
+ };
2989
+ content: {
2990
+ "application/json": components["schemas"]["OfferList"];
2991
+ };
2992
+ };
2993
+ /** @description The request is not valid; `error.param` names the part at fault */
2994
+ 400: {
2995
+ headers: {
2996
+ [name: string]: unknown;
2997
+ };
2998
+ content: {
2999
+ "application/json": components["schemas"]["Error"];
3000
+ };
3001
+ };
3002
+ /** @description No API key, or not a valid one */
3003
+ 401: {
3004
+ headers: {
3005
+ [name: string]: unknown;
3006
+ };
3007
+ content: {
3008
+ "application/json": components["schemas"]["Error"];
3009
+ };
3010
+ };
3011
+ /** @description More than 300 requests a minute */
3012
+ 429: {
3013
+ headers: {
3014
+ [name: string]: unknown;
3015
+ };
3016
+ content: {
3017
+ "application/json": components["schemas"]["Error"];
3018
+ };
3019
+ };
3020
+ };
3021
+ };
3022
+ getOffer: {
3023
+ parameters: {
3024
+ query?: never;
3025
+ header?: never;
3026
+ path: {
3027
+ id: string;
3028
+ };
3029
+ cookie?: never;
3030
+ };
3031
+ requestBody?: never;
3032
+ responses: {
3033
+ /** @description The offer */
3034
+ 200: {
3035
+ headers: {
3036
+ [name: string]: unknown;
3037
+ };
3038
+ content: {
3039
+ "application/json": components["schemas"]["Offer"];
3040
+ };
3041
+ };
3042
+ /** @description The request is not valid; `error.param` names the part at fault */
3043
+ 400: {
3044
+ headers: {
3045
+ [name: string]: unknown;
3046
+ };
3047
+ content: {
3048
+ "application/json": components["schemas"]["Error"];
3049
+ };
3050
+ };
3051
+ /** @description No API key, or not a valid one */
3052
+ 401: {
3053
+ headers: {
3054
+ [name: string]: unknown;
3055
+ };
3056
+ content: {
3057
+ "application/json": components["schemas"]["Error"];
3058
+ };
3059
+ };
3060
+ /** @description No such thing */
3061
+ 404: {
3062
+ headers: {
3063
+ [name: string]: unknown;
3064
+ };
3065
+ content: {
3066
+ "application/json": components["schemas"]["Error"];
3067
+ };
3068
+ };
3069
+ /** @description More than 300 requests a minute */
3070
+ 429: {
3071
+ headers: {
3072
+ [name: string]: unknown;
3073
+ };
3074
+ content: {
3075
+ "application/json": components["schemas"]["Error"];
3076
+ };
3077
+ };
3078
+ };
3079
+ };
3080
+ listCharacters: {
3081
+ parameters: {
3082
+ query?: {
3083
+ /** @description Words in the name */
3084
+ query?: string;
3085
+ kind?: "subject" | "product" | "place" | "voice" | "style";
3086
+ /** @description `next_cursor` from the previous page */
3087
+ cursor?: string;
3088
+ };
3089
+ header?: never;
3090
+ path?: never;
3091
+ cookie?: never;
3092
+ };
3093
+ requestBody?: never;
3094
+ responses: {
3095
+ /** @description The characters */
3096
+ 200: {
3097
+ headers: {
3098
+ [name: string]: unknown;
3099
+ };
3100
+ content: {
3101
+ "application/json": components["schemas"]["CharacterList"];
3102
+ };
3103
+ };
3104
+ /** @description The request is not valid; `error.param` names the part at fault */
3105
+ 400: {
3106
+ headers: {
3107
+ [name: string]: unknown;
3108
+ };
3109
+ content: {
3110
+ "application/json": components["schemas"]["Error"];
3111
+ };
3112
+ };
3113
+ /** @description No API key, or not a valid one */
3114
+ 401: {
3115
+ headers: {
3116
+ [name: string]: unknown;
3117
+ };
3118
+ content: {
3119
+ "application/json": components["schemas"]["Error"];
3120
+ };
3121
+ };
3122
+ /** @description More than 300 requests a minute */
3123
+ 429: {
3124
+ headers: {
3125
+ [name: string]: unknown;
3126
+ };
3127
+ content: {
3128
+ "application/json": components["schemas"]["Error"];
3129
+ };
3130
+ };
3131
+ };
3132
+ };
3133
+ listVoices: {
3134
+ parameters: {
3135
+ query?: {
3136
+ /** @description Words in the name or description */
3137
+ query?: string;
3138
+ gender?: "male" | "female" | "neutral";
3139
+ age?: "young" | "middle_aged" | "old";
3140
+ /** @description Such as american, british or australian */
3141
+ accent?: string;
3142
+ /** @description Such as advertisement, narrative_story or social_media */
3143
+ use_case?: string;
3144
+ /** @description How many to list, from 1 to 20; 20 when left out */
3145
+ limit?: number;
3146
+ };
3147
+ header?: never;
3148
+ path?: never;
3149
+ cookie?: never;
3150
+ };
3151
+ requestBody?: never;
3152
+ responses: {
3153
+ /** @description The voices */
3154
+ 200: {
3155
+ headers: {
3156
+ [name: string]: unknown;
3157
+ };
3158
+ content: {
3159
+ "application/json": components["schemas"]["VoiceList"];
3160
+ };
3161
+ };
3162
+ /** @description The request is not valid; `error.param` names the part at fault */
3163
+ 400: {
3164
+ headers: {
3165
+ [name: string]: unknown;
3166
+ };
3167
+ content: {
3168
+ "application/json": components["schemas"]["Error"];
3169
+ };
3170
+ };
3171
+ /** @description No API key, or not a valid one */
3172
+ 401: {
3173
+ headers: {
3174
+ [name: string]: unknown;
3175
+ };
3176
+ content: {
3177
+ "application/json": components["schemas"]["Error"];
3178
+ };
3179
+ };
3180
+ /** @description More than 300 requests a minute */
3181
+ 429: {
3182
+ headers: {
3183
+ [name: string]: unknown;
3184
+ };
3185
+ content: {
3186
+ "application/json": components["schemas"]["Error"];
3187
+ };
3188
+ };
3189
+ };
3190
+ };
3191
+ listAdvertisers: {
3192
+ parameters: {
3193
+ query: {
3194
+ /** @description A brand name */
3195
+ query: string;
3196
+ /** @description How many to list, from 1 to 20; 20 when left out */
3197
+ limit?: number;
3198
+ };
3199
+ header?: never;
3200
+ path?: never;
3201
+ cookie?: never;
3202
+ };
3203
+ requestBody?: never;
3204
+ responses: {
3205
+ /** @description The advertisers */
3206
+ 200: {
3207
+ headers: {
3208
+ [name: string]: unknown;
3209
+ };
3210
+ content: {
3211
+ "application/json": components["schemas"]["AdvertiserList"];
3212
+ };
3213
+ };
3214
+ /** @description The request is not valid; `error.param` names the part at fault */
3215
+ 400: {
3216
+ headers: {
3217
+ [name: string]: unknown;
3218
+ };
3219
+ content: {
3220
+ "application/json": components["schemas"]["Error"];
3221
+ };
3222
+ };
3223
+ /** @description No API key, or not a valid one */
3224
+ 401: {
3225
+ headers: {
3226
+ [name: string]: unknown;
3227
+ };
3228
+ content: {
3229
+ "application/json": components["schemas"]["Error"];
3230
+ };
3231
+ };
3232
+ /** @description More than 300 requests a minute */
3233
+ 429: {
3234
+ headers: {
3235
+ [name: string]: unknown;
3236
+ };
3237
+ content: {
3238
+ "application/json": components["schemas"]["Error"];
3239
+ };
3240
+ };
3241
+ };
3242
+ };
3243
+ listAds: {
3244
+ parameters: {
3245
+ query?: {
3246
+ /** @description What the ads say or show; across every tracked brand unless `advertiser` narrows it */
3247
+ query?: string;
3248
+ /** @description Only these advertisers, advertiser_…, several separated by commas */
3249
+ advertiser?: string;
3250
+ /** @description Only these platforms: meta, linkedin, google, several separated by commas */
3251
+ platform?: string;
3252
+ /** @description Only these formats: image, video, carousel, dco, several separated by commas */
3253
+ format?: string;
3254
+ status?: "active" | "inactive";
3255
+ /** @description Only ads that ran at least this many days */
3256
+ min_active_days?: number | null;
3257
+ /** @description Only ads that started on or after this day, YYYY-MM-DD */
3258
+ started_after?: string;
3259
+ /** @description Only ads that started before this day, YYYY-MM-DD */
3260
+ started_before?: string;
3261
+ /** @description How many to list, from 1 to 50; 20 when left out */
3262
+ limit?: number;
3263
+ /** @description `next_cursor` from the previous page */
3264
+ cursor?: string;
3265
+ };
3266
+ header?: never;
3267
+ path?: never;
3268
+ cookie?: never;
3269
+ };
3270
+ requestBody?: never;
3271
+ responses: {
3272
+ /** @description The ads */
3273
+ 200: {
3274
+ headers: {
3275
+ [name: string]: unknown;
3276
+ };
3277
+ content: {
3278
+ "application/json": components["schemas"]["AdList"];
3279
+ };
3280
+ };
3281
+ /** @description The request is not valid; `error.param` names the part at fault */
3282
+ 400: {
3283
+ headers: {
3284
+ [name: string]: unknown;
3285
+ };
3286
+ content: {
3287
+ "application/json": components["schemas"]["Error"];
3288
+ };
3289
+ };
3290
+ /** @description No API key, or not a valid one */
3291
+ 401: {
3292
+ headers: {
3293
+ [name: string]: unknown;
3294
+ };
3295
+ content: {
3296
+ "application/json": components["schemas"]["Error"];
3297
+ };
3298
+ };
3299
+ /** @description More than 300 requests a minute */
3300
+ 429: {
3301
+ headers: {
3302
+ [name: string]: unknown;
3303
+ };
3304
+ content: {
3305
+ "application/json": components["schemas"]["Error"];
3306
+ };
3307
+ };
3308
+ };
3309
+ };
3310
+ getAd: {
3311
+ parameters: {
3312
+ query?: never;
3313
+ header?: never;
3314
+ path: {
3315
+ id: string;
3316
+ };
3317
+ cookie?: never;
3318
+ };
3319
+ requestBody?: never;
3320
+ responses: {
3321
+ /** @description The ad */
3322
+ 200: {
3323
+ headers: {
3324
+ [name: string]: unknown;
3325
+ };
3326
+ content: {
3327
+ "application/json": components["schemas"]["Ad"];
3328
+ };
3329
+ };
3330
+ /** @description The request is not valid; `error.param` names the part at fault */
3331
+ 400: {
3332
+ headers: {
3333
+ [name: string]: unknown;
3334
+ };
3335
+ content: {
3336
+ "application/json": components["schemas"]["Error"];
3337
+ };
3338
+ };
3339
+ /** @description No API key, or not a valid one */
3340
+ 401: {
3341
+ headers: {
3342
+ [name: string]: unknown;
3343
+ };
3344
+ content: {
3345
+ "application/json": components["schemas"]["Error"];
3346
+ };
3347
+ };
3348
+ /** @description No such thing */
3349
+ 404: {
3350
+ headers: {
3351
+ [name: string]: unknown;
3352
+ };
3353
+ content: {
3354
+ "application/json": components["schemas"]["Error"];
3355
+ };
3356
+ };
3357
+ /** @description More than 300 requests a minute */
3358
+ 429: {
3359
+ headers: {
3360
+ [name: string]: unknown;
3361
+ };
3362
+ content: {
3363
+ "application/json": components["schemas"]["Error"];
3364
+ };
3365
+ };
3366
+ };
3367
+ };
3368
+ getMe: {
3369
+ parameters: {
3370
+ query?: never;
3371
+ header?: never;
3372
+ path?: never;
3373
+ cookie?: never;
3374
+ };
3375
+ requestBody?: never;
3376
+ responses: {
3377
+ /** @description The person */
3378
+ 200: {
3379
+ headers: {
3380
+ [name: string]: unknown;
3381
+ };
3382
+ content: {
3383
+ "application/json": components["schemas"]["Person"];
3384
+ };
3385
+ };
3386
+ /** @description The request is not valid; `error.param` names the part at fault */
3387
+ 400: {
3388
+ headers: {
3389
+ [name: string]: unknown;
3390
+ };
3391
+ content: {
3392
+ "application/json": components["schemas"]["Error"];
3393
+ };
3394
+ };
3395
+ /** @description No API key, or not a valid one */
3396
+ 401: {
3397
+ headers: {
3398
+ [name: string]: unknown;
3399
+ };
3400
+ content: {
3401
+ "application/json": components["schemas"]["Error"];
3402
+ };
3403
+ };
3404
+ /** @description More than 300 requests a minute */
3405
+ 429: {
3406
+ headers: {
3407
+ [name: string]: unknown;
3408
+ };
3409
+ content: {
3410
+ "application/json": components["schemas"]["Error"];
3411
+ };
3412
+ };
3413
+ };
3414
+ };
3415
+ createKey: {
3416
+ parameters: {
3417
+ query?: never;
3418
+ header?: never;
3419
+ path?: never;
3420
+ cookie?: never;
3421
+ };
3422
+ requestBody?: {
3423
+ content: {
3424
+ "application/json": {
3425
+ /** @description What the key is for */
3426
+ name?: string;
3427
+ /**
3428
+ * Format: uuid
3429
+ * @description Which organization; needed when you belong to several
3430
+ */
3431
+ organization?: string;
3432
+ /**
3433
+ * Format: uuid
3434
+ * @description The brand the key works on; the one you last used when left out
3435
+ */
3436
+ brand?: string;
3437
+ };
3438
+ };
3439
+ };
3440
+ responses: {
3441
+ /** @description The key */
3442
+ 201: {
3443
+ headers: {
3444
+ [name: string]: unknown;
3445
+ };
3446
+ content: {
3447
+ "application/json": components["schemas"]["ApiKey"];
3448
+ };
3449
+ };
3450
+ /** @description The request is not valid; `error.param` names the part at fault */
3451
+ 400: {
3452
+ headers: {
3453
+ [name: string]: unknown;
3454
+ };
3455
+ content: {
3456
+ "application/json": components["schemas"]["Error"];
3457
+ };
3458
+ };
3459
+ /** @description No API key, or not a valid one */
3460
+ 401: {
3461
+ headers: {
3462
+ [name: string]: unknown;
3463
+ };
3464
+ content: {
3465
+ "application/json": components["schemas"]["Error"];
3466
+ };
3467
+ };
3468
+ /** @description The key cannot use that brand */
3469
+ 403: {
3470
+ headers: {
3471
+ [name: string]: unknown;
3472
+ };
3473
+ content: {
3474
+ "application/json": components["schemas"]["Error"];
3475
+ };
3476
+ };
3477
+ /** @description The request conflicts with the current state */
3478
+ 409: {
3479
+ headers: {
3480
+ [name: string]: unknown;
3481
+ };
3482
+ content: {
3483
+ "application/json": components["schemas"]["Error"];
3484
+ };
3485
+ };
3486
+ /** @description More than 300 requests a minute */
3487
+ 429: {
3488
+ headers: {
3489
+ [name: string]: unknown;
3490
+ };
3491
+ content: {
3492
+ "application/json": components["schemas"]["Error"];
3493
+ };
3494
+ };
3495
+ };
3496
+ };
3497
+ getWebhookSecret: {
3498
+ parameters: {
3499
+ query?: never;
3500
+ header?: never;
3501
+ path?: never;
3502
+ cookie?: never;
3503
+ };
3504
+ requestBody?: never;
3505
+ responses: {
3506
+ /** @description The secret */
3507
+ 200: {
3508
+ headers: {
3509
+ [name: string]: unknown;
3510
+ };
3511
+ content: {
3512
+ "application/json": components["schemas"]["WebhookSecret"];
3513
+ };
3514
+ };
3515
+ /** @description The request is not valid; `error.param` names the part at fault */
3516
+ 400: {
3517
+ headers: {
3518
+ [name: string]: unknown;
3519
+ };
3520
+ content: {
3521
+ "application/json": components["schemas"]["Error"];
3522
+ };
3523
+ };
3524
+ /** @description No API key, or not a valid one */
3525
+ 401: {
3526
+ headers: {
3527
+ [name: string]: unknown;
3528
+ };
3529
+ content: {
3530
+ "application/json": components["schemas"]["Error"];
3531
+ };
3532
+ };
3533
+ /** @description More than 300 requests a minute */
3534
+ 429: {
3535
+ headers: {
3536
+ [name: string]: unknown;
3537
+ };
3538
+ content: {
3539
+ "application/json": components["schemas"]["Error"];
3540
+ };
3541
+ };
3542
+ };
3543
+ };
3544
+ }