codai-sdk 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -4611,7 +4611,7 @@ type paths$1 = {
4611
4611
  readonly get?: never;
4612
4612
  readonly put?: never;
4613
4613
  /**
4614
- * Build a deck, doc or sheet creative into a file
4614
+ * Build a deck, doc, sheet, carousel or print creative into a file
4615
4615
  * @description Converts the deck, doc or sheet creative at `seq` (default: the head) back into a documents spec and builds the
4616
4616
  * PPTX, DOCX or XLSX exactly like `POST /v1/studio/documents` (same validation, limits, themes and builders). Each
4617
4617
  * build is a new version of the same document: `based_on` is the newest document built from this creative, so
@@ -4622,6 +4622,19 @@ type paths$1 = {
4622
4622
  * The file is free (`cost_micro_usd: "0"` on `document`). `preview: true` also queues a LibreOffice preview, billed
4623
4623
  * like `POST /v1/studio/documents/{id}/previews` ($0.002 per page, min $0.01). Video and image creatives answer 400
4624
4624
  * `not_supported_for_kind`.
4625
+ *
4626
+ * **Carousel and print creatives** (body `CreativePagedBuildRequest`) answer **202** with an export job in `export`
4627
+ * (poll `GET /v1/studio/exports/{id}` until `succeeded`, then download `url`):
4628
+ * - carousel `format: png` (default): a zip of one PNG per slide (`slide-01.png` …) at the format size;
4629
+ * `format: pdf`: one PDF page per slide (LinkedIn document post), no bleed, no crop marks.
4630
+ * - print `format: pdf`: one sheet per page at the bleed box plus a crop-mark margin, crop marks outside the bleed,
4631
+ * TrimBox and BleedBox set on every page. The prepress check (bleed safety, minimum text size, image resolution,
4632
+ * colours outside a coated-CMYK gamut) runs first and its issues are returned in `lint`; they never block the build.
4633
+ * The PDF is RGB: PDF/X-4 conversion with the output intent is not done by the render worker, which `warnings` states.
4634
+ *
4635
+ * Price: $0.002 per page (min $0.01), held in the wallet before dispatch (402 when short) and billed once when the
4636
+ * job finishes. Files carry machine-readable AI marks (PDF Info `Keywords`, PNG XMP) and the `x-codai-ai-generated`
4637
+ * header. Supports `Idempotency-Key` (24 h).
4625
4638
  */
4626
4639
  readonly post: operations$1['buildCreative'];
4627
4640
  readonly delete?: never;
@@ -5090,6 +5103,32 @@ type paths$1 = {
5090
5103
  readonly patch?: never;
5091
5104
  readonly trace?: never;
5092
5105
  };
5106
+ readonly '/v1/studio/creatives/{id}/nodes/{nodeId}/regenerate': {
5107
+ readonly parameters: {
5108
+ readonly query?: never;
5109
+ readonly header?: never;
5110
+ readonly path?: never;
5111
+ readonly cookie?: never;
5112
+ };
5113
+ readonly get?: never;
5114
+ readonly put?: never;
5115
+ /**
5116
+ * Regenerate the picture of an image node
5117
+ * @description Generates a new image for an `image` node with `codai-image` (billed like `POST /v1/images/generations`: wallet
5118
+ * hold of the quote first, one usage row, the stored asset is AI-marked) and swaps it in through the edit path. When
5119
+ * the node has a `castId`, that cast entry's `refAssetIds` are sent as reference images automatically and its
5120
+ * `description` is appended to the prompt, so the character or product stays the same across shots. The aspect
5121
+ * ratio defaults to the closest supported ratio of the node box. Video nodes: generate a clip with
5122
+ * `POST /v1/videos` and `reference_asset_ids`, then `replaceAsset`.
5123
+ * Supports `Idempotency-Key` (24 h): a retry with the same key and body replays the first response; a different body is 422 `idempotency_key_mismatch`; the first request still running is 409 `idempotency_in_progress`.
5124
+ */
5125
+ readonly post: operations$1['regenerateCreativeNode'];
5126
+ readonly delete?: never;
5127
+ readonly options?: never;
5128
+ readonly head?: never;
5129
+ readonly patch?: never;
5130
+ readonly trace?: never;
5131
+ };
5093
5132
  readonly '/v1/studio/creatives/{id}/ops': {
5094
5133
  readonly parameters: {
5095
5134
  readonly query?: never;
@@ -5142,6 +5181,34 @@ type paths$1 = {
5142
5181
  readonly patch?: never;
5143
5182
  readonly trace?: never;
5144
5183
  };
5184
+ readonly '/v1/studio/creatives/{id}/post-copy': {
5185
+ readonly parameters: {
5186
+ readonly query?: never;
5187
+ readonly header?: never;
5188
+ readonly path?: never;
5189
+ readonly cookie?: never;
5190
+ };
5191
+ readonly get?: never;
5192
+ readonly put?: never;
5193
+ /**
5194
+ * Write social post copy for a creative
5195
+ * @description Writes a caption and hashtags per platform (Instagram, LinkedIn, TikTok, X, Facebook) and one alt text per slide
5196
+ * for a carousel, image or video creative, in Romanian or English: one bounded `codai` turn with a forced tool over
5197
+ * the creative's outline, then every answer is repaired to the platform's hard limits (caption characters including
5198
+ * hashtags, hashtag count, alt text length): hashtags normalised, deduplicated and capped, captions trimmed on a word
5199
+ * end. What was changed is listed in `fixes`. Nothing is written to the creative.
5200
+ *
5201
+ * Billing: token-metered (usage model `codai::post-copy`, prompt caching on) under a small wallet hold
5202
+ * (15 000 µUSD, settled with the real cost; 402 `insufficient_funds` when short). Copy and outlines are never
5203
+ * logged. Supports `Idempotency-Key` (24 h).
5204
+ */
5205
+ readonly post: operations$1['writeCreativePostCopy'];
5206
+ readonly delete?: never;
5207
+ readonly options?: never;
5208
+ readonly head?: never;
5209
+ readonly patch?: never;
5210
+ readonly trace?: never;
5211
+ };
5145
5212
  readonly '/v1/studio/creatives/{id}/render': {
5146
5213
  readonly parameters: {
5147
5214
  readonly query?: never;
@@ -5471,6 +5538,31 @@ type paths$1 = {
5471
5538
  readonly patch?: never;
5472
5539
  readonly trace?: never;
5473
5540
  };
5541
+ readonly '/v1/studio/creatives/{id}/transcript-cut': {
5542
+ readonly parameters: {
5543
+ readonly query?: never;
5544
+ readonly header?: never;
5545
+ readonly path?: never;
5546
+ readonly cookie?: never;
5547
+ };
5548
+ readonly get?: never;
5549
+ readonly put?: never;
5550
+ /**
5551
+ * Edit a video clip by its transcript
5552
+ * @description Deletes word ranges from a video node: the words are the clip asset's cached transcript (written by
5553
+ * `POST /v1/studio/creatives/{id}/captions`, word timings in source time). The removed spans are cut out with
5554
+ * `splitVideo` / `trimVideo` / `setTiming` ops and the pieces are placed back to back from the clip's start, as one
5555
+ * new version through the same edit path as `POST /v1/studio/creatives/{id}/ops` (rebase on a slightly stale
5556
+ * `base_seq`, locks honoured). Free: no transcription, no usage row. No cached transcript -> 409
5557
+ * `captions_required` (run captions on that clip first). Video creatives only.
5558
+ */
5559
+ readonly post: operations$1['transcriptCutCreative'];
5560
+ readonly delete?: never;
5561
+ readonly options?: never;
5562
+ readonly head?: never;
5563
+ readonly patch?: never;
5564
+ readonly trace?: never;
5565
+ };
5474
5566
  readonly '/v1/studio/creatives/{id}/variants': {
5475
5567
  readonly parameters: {
5476
5568
  readonly query?: never;
@@ -9610,6 +9702,8 @@ type components$1 = {
9610
9702
  * @example flat minimalist logo of a paper plane, two colours, white background
9611
9703
  */
9612
9704
  readonly prompt: string;
9705
+ /** @description Your ready studio image assets used as references (e.g. a creative's cast), sent after `reference_images`; together they count against the per-model limit. A missing or foreign asset is 404. */
9706
+ readonly reference_asset_ids?: readonly string[];
9613
9707
  /** @description Images the model must stay consistent with (logo, palette, product, character), sent before the prompt. Per-model limit — `codai-image-fast` accepts 4, the others 14. */
9614
9708
  readonly reference_images?: readonly components$1['schemas']['CoreImageInput'][];
9615
9709
  readonly response_format?: components$1['schemas']['MediaResponseFormat'];
@@ -10260,6 +10354,18 @@ type components$1 = {
10260
10354
  /** @description Number of caption words. */
10261
10355
  readonly words: number;
10262
10356
  };
10357
+ /** Cast entry */
10358
+ readonly CreativeCast: {
10359
+ /** @description Appended to the prompt when the node is regenerated. */
10360
+ readonly description?: string;
10361
+ /** @description Shares the document id namespace with scenes and nodes. */
10362
+ readonly id: string;
10363
+ /** @enum {string} */
10364
+ readonly kind: 'character' | 'product';
10365
+ readonly name: string;
10366
+ /** @description Image assets of the subject. */
10367
+ readonly refAssetIds: readonly string[];
10368
+ };
10263
10369
  /**
10264
10370
  * Frame comment
10265
10371
  * @example {
@@ -10431,6 +10537,8 @@ type components$1 = {
10431
10537
  readonly brand: {
10432
10538
  readonly [key: string]: unknown;
10433
10539
  };
10540
+ /** @description Recurring characters / products (CX-05). An `image` / `video` node binds one with `props.castId`; regenerating that node sends the entry's `refAssetIds` as reference images so the subject looks the same in every shot. */
10541
+ readonly cast?: readonly components$1['schemas']['CreativeCast'][];
10434
10542
  /** @description One of `formats[].id`. */
10435
10543
  readonly defaultFormat: string;
10436
10544
  /** @description Output formats (`{ id, width, height }`); nodes may override their layout per format. */
@@ -10925,6 +11033,11 @@ type components$1 = {
10925
11033
  * (`control: null` clears it), `setMeta { title?, locale?, formats?, defaultFormat?, fps? }`,
10926
11034
  * `setLocaleText { locale, texts, by? }` (`texts`: unit key → translation, `null` removes it),
10927
11035
  * `setLocale { locale, tone?, audio?, captions?, remove? }`, `setLocalization { source?, glossary?, forkOf?, reset? }`.
11036
+ * Video clips (CX-06, video nodes; source in / out points in media ms, `rate` 0.25–4, J / L cuts via the node's
11037
+ * `audioLeadMs` / `audioTailMs` props): `trimVideo { target, inMs?, outMs?, fitTiming? }` (`null` clears a point),
11038
+ * `splitVideo { target, atMs, newId }` (cut at `atMs` after the node start into two nodes),
11039
+ * `setVideoRate { target, rate, fitTiming? }` (`rate: null` = 1x). Cast (CX-05): `addCast { cast }`,
11040
+ * `updateCast { target, patch }`, `removeCast { target }` (drops the `castId` of nodes that used it).
10928
11041
  * Audio ops (any creative's `doc.audio`; songs and podcasts): `addSection { section }`, `updateSection { target, patch }`,
10929
11042
  * `removeSection { target }`, `moveSection { target, startMs }`, `addTrack { track, index? }`,
10930
11043
  * `updateTrack { target, patch }`, `removeTrack { target }`, `splitClip { clipId, atMs, newId }`,
@@ -10943,7 +11056,7 @@ type components$1 = {
10943
11056
  */
10944
11057
  readonly CreativeOp: {
10945
11058
  /** @enum {string} */
10946
- readonly op: 'setProps' | 'setLayout' | 'setTiming' | 'setAnim' | 'insertNode' | 'removeNode' | 'moveNode' | 'addScene' | 'removeScene' | 'updateScene' | 'moveScene' | 'setVar' | 'removeVar' | 'setAsset' | 'replaceAsset' | 'setAudioClip' | 'removeAudioClip' | 'setBrand' | 'restyle' | 'adaptFormat' | 'setControl' | 'setMeta' | 'setLocaleText' | 'setLocale' | 'setLocalization' | 'addSection' | 'updateSection' | 'removeSection' | 'moveSection' | 'addTrack' | 'updateTrack' | 'removeTrack' | 'splitClip' | 'trimClip' | 'moveClip' | 'setFades' | 'addMidiClip' | 'removeMidiClip' | 'updateMidiNotes' | 'setMaster' | 'setLyrics';
11059
+ readonly op: 'setProps' | 'setLayout' | 'setTiming' | 'setAnim' | 'insertNode' | 'removeNode' | 'moveNode' | 'addScene' | 'removeScene' | 'updateScene' | 'moveScene' | 'setVar' | 'removeVar' | 'setAsset' | 'replaceAsset' | 'setAudioClip' | 'removeAudioClip' | 'setBrand' | 'restyle' | 'adaptFormat' | 'setControl' | 'setMeta' | 'setLocaleText' | 'setLocale' | 'setLocalization' | 'trimVideo' | 'splitVideo' | 'setVideoRate' | 'addCast' | 'updateCast' | 'removeCast' | 'addSection' | 'updateSection' | 'removeSection' | 'moveSection' | 'addTrack' | 'updateTrack' | 'removeTrack' | 'splitClip' | 'trimClip' | 'moveClip' | 'setFades' | 'addMidiClip' | 'removeMidiClip' | 'updateMidiNotes' | 'setMaster' | 'setLyrics';
10947
11060
  } & {
10948
11061
  readonly [key: string]: unknown;
10949
11062
  };
@@ -11003,6 +11116,79 @@ type components$1 = {
11003
11116
  readonly [key: string]: unknown;
11004
11117
  };
11005
11118
  };
11119
+ /**
11120
+ * Carousel / print build request
11121
+ * @example {
11122
+ * "format": "pdf",
11123
+ * "format_id": "1x1"
11124
+ * }
11125
+ */
11126
+ readonly CreativePagedBuildRequest: {
11127
+ /**
11128
+ * @description Print only — crop marks outside the bleed.
11129
+ * @default true
11130
+ */
11131
+ readonly crop_marks?: boolean;
11132
+ /** @description File name without extension (default `<slug of the title>-<format_id>`). */
11133
+ readonly filename?: string;
11134
+ /**
11135
+ * @description Output: carousel `png` (zip of slides, default) or `pdf`; print creatives build `pdf` only.
11136
+ * @enum {string}
11137
+ */
11138
+ readonly format?: 'png' | 'pdf';
11139
+ /** @description Layout format of the creative (default its `defaultFormat`), e.g. `4x5`, `1x1`, `a4`, `card`. */
11140
+ readonly format_id?: string;
11141
+ /** @description Accepted for parity with deck builds; ignored. */
11142
+ readonly preview?: boolean;
11143
+ /** @description Creative version to build (default the head). */
11144
+ readonly seq?: number;
11145
+ };
11146
+ /** Prepress issue */
11147
+ readonly CreativePrintLintIssue: {
11148
+ /** @description `print_in_bleed`, `print_outside_safe`, `print_bleed_short`, `print_low_res`, `print_rgb_color`, `print_text_too_small`, `missing_alt`, `svg_empty`. */
11149
+ readonly code: string;
11150
+ readonly fixable?: boolean;
11151
+ readonly format?: string;
11152
+ readonly message: string;
11153
+ /** @enum {string} */
11154
+ readonly severity: 'error' | 'warning';
11155
+ /** @description Node or scene id. */
11156
+ readonly target: string;
11157
+ /** @description Measured value (pt, dpi, mm) where meaningful. */
11158
+ readonly value?: number;
11159
+ };
11160
+ /** Regenerate node request */
11161
+ readonly CreativeRegenerateNodeRequest: {
11162
+ /**
11163
+ * @description Default the closest ratio to the node box.
11164
+ * @enum {string}
11165
+ */
11166
+ readonly aspect_ratio?: '1:1' | '2:3' | '3:2' | '3:4' | '4:3' | '4:5' | '5:4' | '9:16' | '16:9' | '21:9' | '9:21';
11167
+ readonly base_seq?: number;
11168
+ /** @default false */
11169
+ readonly force?: boolean;
11170
+ /** @example codai-image */
11171
+ readonly model?: string;
11172
+ readonly prompt: string;
11173
+ };
11174
+ /** Regenerate node result */
11175
+ readonly CreativeRegenerateNodeResult: {
11176
+ /**
11177
+ * Format: uuid
11178
+ * @description The new image asset.
11179
+ */
11180
+ readonly asset_id: string;
11181
+ readonly cast_id: string | null;
11182
+ readonly changed: readonly string[];
11183
+ readonly cost_micro_usd: string;
11184
+ readonly doc_hash: string;
11185
+ readonly node_id: string;
11186
+ readonly rebased: boolean;
11187
+ /** @description The cast references that were sent. */
11188
+ readonly reference_asset_ids: readonly string[];
11189
+ readonly seq: number;
11190
+ readonly warnings: readonly string[];
11191
+ };
11006
11192
  /** Queued creative render */
11007
11193
  readonly CreativeRenderAccepted: {
11008
11194
  readonly ai_label?: components$1['schemas']['StudioRenderAiLabel'];
@@ -11265,6 +11451,55 @@ type components$1 = {
11265
11451
  */
11266
11452
  readonly type: 'text' | 'image';
11267
11453
  };
11454
+ /**
11455
+ * Transcript cut request
11456
+ * @example {
11457
+ * "node_id": "clip",
11458
+ * "remove": [
11459
+ * {
11460
+ * "from_word": 3,
11461
+ * "to_word": 4
11462
+ * }
11463
+ * ]
11464
+ * }
11465
+ */
11466
+ readonly CreativeTranscriptCutRequest: {
11467
+ /** @description The version to edit (default the head). */
11468
+ readonly base_seq?: number;
11469
+ /**
11470
+ * @description Edit locked nodes too.
11471
+ * @default false
11472
+ */
11473
+ readonly force?: boolean;
11474
+ /** @description The video node to edit. */
11475
+ readonly node_id: string;
11476
+ /** @description Word index ranges (inclusive) of the clip transcript to delete; overlapping ranges are merged. */
11477
+ readonly remove: readonly {
11478
+ readonly from_word: number;
11479
+ readonly to_word: number;
11480
+ }[];
11481
+ };
11482
+ /** Transcript cut result */
11483
+ readonly CreativeTranscriptCutResult: {
11484
+ readonly changed: readonly string[];
11485
+ readonly doc_hash: string;
11486
+ readonly node_id: string;
11487
+ /** @description Ids of the clip pieces in playback order (the first is the original node; empty when everything was cut and the node removed). */
11488
+ readonly pieces: readonly string[];
11489
+ readonly rebased: boolean;
11490
+ /** @description Source spans removed (media ms). */
11491
+ readonly removed: readonly {
11492
+ readonly in_ms: number;
11493
+ readonly out_ms: number;
11494
+ }[];
11495
+ /** @description Playback time removed from the clip (ms at its rate). */
11496
+ readonly removed_ms: number;
11497
+ /** @description The new head version. */
11498
+ readonly seq: number;
11499
+ readonly warnings: readonly string[];
11500
+ /** @description Words in the cached transcript. */
11501
+ readonly words: number;
11502
+ };
11268
11503
  /** Variant */
11269
11504
  readonly CreativeVariant: {
11270
11505
  /** @description Ops applied on top of the original. */
@@ -13081,6 +13316,8 @@ type components$1 = {
13081
13316
  * @default []
13082
13317
  */
13083
13318
  readonly asset_ids?: readonly string[];
13319
+ /** @description image.inpaint / image.erase only: a mask painted in an editor, base64 PNG (white = edit, black = keep, at most 8 MB). Send ONE asset id (the image); the gateway stores the mask as a free private asset and passes it as the second input. A quote validates it without storing anything. */
13320
+ readonly mask_png_b64?: string;
13084
13321
  /**
13085
13322
  * @description Per-op parameters (table above).
13086
13323
  * @default {}
@@ -15674,6 +15911,80 @@ type components$1 = {
15674
15911
  readonly seq: number;
15675
15912
  };
15676
15913
  };
15914
+ /**
15915
+ * Carousel / print build
15916
+ * @description A carousel or print creative queued for its paged export; download it from `export.url` once the export succeeds.
15917
+ * @example {
15918
+ * "object": "studio.creative_build",
15919
+ * "creative_id": "7a1b2c3d-0000-4000-8000-000000000051",
15920
+ * "seq": 3,
15921
+ * "kind": "carousel",
15922
+ * "format": "png",
15923
+ * "format_id": "4x5",
15924
+ * "pages": 6,
15925
+ * "quote_micro_usd": "12000",
15926
+ * "warnings": [],
15927
+ * "lint": [],
15928
+ * "print": null,
15929
+ * "document": null,
15930
+ * "export": {
15931
+ * "id": "3f0c9a7e-1b2d-4c5e-8f90-a1b2c3d4e5f7",
15932
+ * "object": "studio.export",
15933
+ * "kind": "carousel_png",
15934
+ * "status": "queued",
15935
+ * "creative_id": "7a1b2c3d-0000-4000-8000-000000000051",
15936
+ * "seq": 3,
15937
+ * "format": "4x5",
15938
+ * "fps": 0,
15939
+ * "filename": "spring-sale-4x5.zip",
15940
+ * "url": null,
15941
+ * "expires_at": null,
15942
+ * "bytes": null,
15943
+ * "rendered_seconds": null,
15944
+ * "cost_micro_usd": null,
15945
+ * "pages": null,
15946
+ * "boxes": null,
15947
+ * "lint": [],
15948
+ * "warnings": [],
15949
+ * "error": null,
15950
+ * "created_at": "2026-10-20T10:00:00Z"
15951
+ * }
15952
+ * }
15953
+ */
15954
+ readonly StudioCreativePagedBuild: {
15955
+ /** Format: uuid */
15956
+ readonly creative_id: string;
15957
+ readonly document: null;
15958
+ readonly export: components$1['schemas']['StudioExport'];
15959
+ /** @enum {string} */
15960
+ readonly format: 'png' | 'pdf';
15961
+ readonly format_id: string;
15962
+ /** @enum {string} */
15963
+ readonly kind: 'carousel' | 'print';
15964
+ readonly lint: readonly components$1['schemas']['CreativePrintLintIssue'][];
15965
+ /** @enum {string} */
15966
+ readonly object: 'studio.creative_build';
15967
+ readonly pages: number;
15968
+ /** @description Print PDFs only — physical sheet and PDF boxes. */
15969
+ readonly print: {
15970
+ /** @description BleedBox offsets from the TrimBox in points [left, right, top, bottom]. */
15971
+ readonly bleed_offsets_pt?: readonly number[] | null;
15972
+ /** @description Intended press output intent (e.g. `FOGRA39`); the file itself is RGB. */
15973
+ readonly color_profile?: string;
15974
+ readonly crop_marks?: boolean;
15975
+ /** @description Always `false` today (no PDF/X-4 conversion in the worker). */
15976
+ readonly pdf_x4?: boolean;
15977
+ /** @description Sheet (MediaBox) width and height in mm, bleed and crop-mark margin included. */
15978
+ readonly sheet_mm?: readonly number[];
15979
+ /** @description TrimBox offsets from the MediaBox in points [left, right, top, bottom]. */
15980
+ readonly trim_offsets_pt?: readonly number[] | null;
15981
+ } | null;
15982
+ /** @description Price held for the job in µUSD ($0.002 per page, min $0.01). */
15983
+ readonly quote_micro_usd: string;
15984
+ readonly seq: number;
15985
+ /** @description E.g. the PDF/X-4 limitation of print PDFs, or a note that the prepress check found errors. */
15986
+ readonly warnings: readonly string[];
15987
+ };
15677
15988
  /**
15678
15989
  * Studio export
15679
15990
  * @description An export of a video creative, downloadable once `status` is `succeeded`: an FCPXML zip with `project.fcpxml` and its media (`kind: fcpxml`), or a Lottie JSON / dotLottie file (`kind: lottie`, ready at once).
@@ -15698,6 +16009,8 @@ type components$1 = {
15698
16009
  * }
15699
16010
  */
15700
16011
  readonly StudioExport: {
16012
+ /** @description Print PDF only: TrimBox and BleedBox were written on every page; `null` until `succeeded`. */
16013
+ readonly boxes?: boolean | null;
15701
16014
  /** @description Size of the zip in bytes; `null` until `succeeded`. */
15702
16015
  readonly bytes: number | null;
15703
16016
  /**
@@ -15733,12 +16046,16 @@ type components$1 = {
15733
16046
  /** Format: uuid */
15734
16047
  readonly id: string;
15735
16048
  /**
15736
- * @description What was exported: an FCPXML project zip (`export.fcpxml`) or a Lottie file (`export.lottie`).
16049
+ * @description What was exported: an FCPXML project zip (`export.fcpxml`), a Lottie file (`export.lottie`), or a paged build of `POST /v1/studio/creatives/{id}/build`: a carousel PNG zip, a carousel PDF or a print PDF.
15737
16050
  * @enum {string}
15738
16051
  */
15739
- readonly kind?: 'fcpxml' | 'lottie';
16052
+ readonly kind?: 'fcpxml' | 'lottie' | 'carousel_png' | 'carousel_pdf' | 'print_pdf';
16053
+ /** @description Paged builds only: prepress issues found at dispatch. */
16054
+ readonly lint?: readonly components$1['schemas']['CreativePrintLintIssue'][];
15740
16055
  /** @enum {string} */
15741
16056
  readonly object: 'studio.export';
16057
+ /** @description Paged builds only: pages in the file; `null` until `succeeded`. */
16058
+ readonly pages?: number | null;
15742
16059
  /** @description Seconds of video newly rendered for this export (cached segments excluded); `null` until done. */
15743
16060
  readonly rendered_seconds: number | null;
15744
16061
  /** @description The exported creative version. */
@@ -15881,6 +16198,113 @@ type components$1 = {
15881
16198
  /** @description Default voice. */
15882
16199
  readonly voice?: string;
15883
16200
  };
16201
+ /**
16202
+ * Post copy
16203
+ * @example {
16204
+ * "object": "studio.post_copy",
16205
+ * "creative_id": "7a1b2c3d-0000-4000-8000-000000000051",
16206
+ * "seq": 3,
16207
+ * "kind": "carousel",
16208
+ * "language": "ro",
16209
+ * "platforms": [
16210
+ * {
16211
+ * "platform": "linkedin",
16212
+ * "caption": "Primăvara vine cu reduceri de 20% la toată colecția.",
16213
+ * "hashtags": [
16214
+ * "#primăvară",
16215
+ * "#reduceri"
16216
+ * ],
16217
+ * "text": "Primăvara vine cu reduceri de 20% la toată colecția.\n\n#primăvară #reduceri",
16218
+ * "chars": 74,
16219
+ * "limits": {
16220
+ * "caption": 3000,
16221
+ * "hashtags": 10,
16222
+ * "alt": 300
16223
+ * }
16224
+ * }
16225
+ * ],
16226
+ * "alt": [
16227
+ * {
16228
+ * "scene_id": "s1",
16229
+ * "text": "Un buchet de lalele galbene pe o masă albă."
16230
+ * }
16231
+ * ],
16232
+ * "fixes": [],
16233
+ * "cost_micro_usd": "2140"
16234
+ * }
16235
+ */
16236
+ readonly StudioPostCopy: {
16237
+ /** @description One alt text per slide in slide order (the first scene of an image), trimmed to the strictest platform's cap. */
16238
+ readonly alt: readonly {
16239
+ readonly scene_id: string;
16240
+ readonly text: string;
16241
+ }[];
16242
+ /** @description Token cost of the turn in µUSD. */
16243
+ readonly cost_micro_usd: string;
16244
+ /** Format: uuid */
16245
+ readonly creative_id: string;
16246
+ /** @description What the limit repair changed (trimmed captions, dropped or capped hashtags, missing alt texts). */
16247
+ readonly fixes: readonly {
16248
+ /** @enum {string} */
16249
+ readonly field?: 'caption' | 'hashtags' | 'alt';
16250
+ readonly message?: string;
16251
+ readonly platform?: string;
16252
+ }[];
16253
+ /** @enum {string} */
16254
+ readonly kind: 'carousel' | 'image' | 'video';
16255
+ /** @enum {string} */
16256
+ readonly language: 'ro' | 'en';
16257
+ /** @enum {string} */
16258
+ readonly object: 'studio.post_copy';
16259
+ /** @description One entry per requested platform, in request order. */
16260
+ readonly platforms: readonly {
16261
+ readonly caption: string;
16262
+ /** @description Length of `text` in Unicode code points. */
16263
+ readonly chars: number;
16264
+ /** @description Normalised `#tags` (letters, digits, underscore; diacritics kept), deduplicated. */
16265
+ readonly hashtags: readonly string[];
16266
+ readonly limits: {
16267
+ readonly alt?: number;
16268
+ readonly caption?: number;
16269
+ readonly hashtags?: number;
16270
+ };
16271
+ /** @enum {string} */
16272
+ readonly platform: 'instagram' | 'linkedin' | 'tiktok' | 'x' | 'facebook';
16273
+ /** @description The post as published — caption, a blank line, then the hashtags not already in the caption. */
16274
+ readonly text: string;
16275
+ }[];
16276
+ readonly seq: number;
16277
+ };
16278
+ /**
16279
+ * Post copy request
16280
+ * @example {
16281
+ * "platforms": [
16282
+ * "instagram",
16283
+ * "linkedin"
16284
+ * ],
16285
+ * "language": "ro",
16286
+ * "brief": "Reducere 20% până duminică"
16287
+ * }
16288
+ */
16289
+ readonly StudioPostCopyRequest: {
16290
+ /** @description Optional steer — audience, call to action, facts to include. */
16291
+ readonly brief?: string;
16292
+ /**
16293
+ * @default ro
16294
+ * @enum {string}
16295
+ */
16296
+ readonly language?: 'ro' | 'en';
16297
+ /**
16298
+ * @default [
16299
+ * "instagram",
16300
+ * "linkedin"
16301
+ * ]
16302
+ */
16303
+ readonly platforms?: readonly ('instagram' | 'linkedin' | 'tiktok' | 'x' | 'facebook')[];
16304
+ /** @description Creative version to describe (default the head). */
16305
+ readonly seq?: number;
16306
+ readonly tone?: string;
16307
+ };
15884
16308
  /** Studio production */
15885
16309
  readonly StudioProduction: {
15886
16310
  /** @enum {string} */
@@ -27964,6 +28388,8 @@ interface operations$1 {
27964
28388
  readonly parameters: {
27965
28389
  readonly query?: never;
27966
28390
  readonly header?: {
28391
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
28392
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
27967
28393
  /** @description Client correlation id; echoed back as `x-codai-trace-id` and persisted on the usage row. */
27968
28394
  readonly 'x-request-id'?: components$1['parameters']['RequestId'];
27969
28395
  };
@@ -27975,7 +28401,7 @@ interface operations$1 {
27975
28401
  };
27976
28402
  readonly requestBody?: {
27977
28403
  readonly content: {
27978
- readonly 'application/json': components$1['schemas']['CreativeBuildRequest'];
28404
+ readonly 'application/json': components$1['schemas']['CreativeBuildRequest'] | components$1['schemas']['CreativePagedBuildRequest'];
27979
28405
  };
27980
28406
  };
27981
28407
  readonly responses: {
@@ -27988,7 +28414,16 @@ interface operations$1 {
27988
28414
  readonly 'application/json': components$1['schemas']['StudioCreativeBuild'];
27989
28415
  };
27990
28416
  };
27991
- /** @description Invalid body (`invalid_request`), a video or image creative (`not_supported_for_kind`), a converted spec that fails the documents schema (`invalid_spec`, first issues in the message), or any build error of `POST /v1/studio/documents` (`asset_not_found`, `unsupported_image`, `too_many_charts`, `chart_render_failed`). */
28417
+ /** @description Carousel or print creative — export job queued (poll `GET /v1/studio/exports/{id}`). */
28418
+ readonly 202: {
28419
+ headers: {
28420
+ readonly [name: string]: unknown;
28421
+ };
28422
+ content: {
28423
+ readonly 'application/json': components$1['schemas']['StudioCreativePagedBuild'];
28424
+ };
28425
+ };
28426
+ /** @description Invalid body (`invalid_request`, e.g. `format: png` on a print creative or an unknown `format_id`), a video or image creative (`not_supported_for_kind`), a converted spec that fails the documents schema (`invalid_spec`, first issues in the message), a PNG slide larger than 3840 px (`unsupported_format`), or any build error of `POST /v1/studio/documents` (`asset_not_found`, `unsupported_image`, `too_many_charts`, `chart_render_failed`). */
27992
28427
  readonly 400: {
27993
28428
  headers: {
27994
28429
  readonly [name: string]: unknown;
@@ -28009,7 +28444,7 @@ interface operations$1 {
28009
28444
  readonly 'application/json': components$1['schemas']['Error'];
28010
28445
  };
28011
28446
  };
28012
- /** @description The generated file is larger than 50 MB (code `document_too_large`). */
28447
+ /** @description The generated file is larger than 50 MB (code `document_too_large`), or a paged build has more than 60 pages (`too_large`). */
28013
28448
  readonly 413: {
28014
28449
  headers: {
28015
28450
  readonly [name: string]: unknown;
@@ -28018,7 +28453,7 @@ interface operations$1 {
28018
28453
  readonly 'application/json': components$1['schemas']['Error'];
28019
28454
  };
28020
28455
  };
28021
- /** @description Spend cap reached (`rate_limit_exceeded`), or with `preview: true` 3 previews already queued or rendering (`too_many_previews`). */
28456
+ /** @description Spend cap reached (`rate_limit_exceeded`), with `preview: true` 3 previews already queued or rendering (`too_many_previews`), or for carousel / print 3 renders and exports already running (`too_many_renders`). */
28022
28457
  readonly 429: {
28023
28458
  headers: {
28024
28459
  readonly [name: string]: unknown;
@@ -28027,7 +28462,7 @@ interface operations$1 {
28027
28462
  readonly 'application/json': components$1['schemas']['Error'];
28028
28463
  };
28029
28464
  };
28030
- /** @description Studio documents are not configured on this gateway (code `documents_unavailable`). */
28465
+ /** @description Studio documents are not configured on this gateway (code `documents_unavailable`), or for carousel / print the render worker is not (`renders_unavailable`). */
28031
28466
  readonly 503: {
28032
28467
  headers: {
28033
28468
  readonly [name: string]: unknown;
@@ -28872,6 +29307,60 @@ interface operations$1 {
28872
29307
  };
28873
29308
  };
28874
29309
  };
29310
+ readonly regenerateCreativeNode: {
29311
+ readonly parameters: {
29312
+ readonly query?: never;
29313
+ readonly header?: {
29314
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
29315
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
29316
+ /** @description Client correlation id; echoed back as `x-codai-trace-id` and persisted on the usage row. */
29317
+ readonly 'x-request-id'?: components$1['parameters']['RequestId'];
29318
+ };
29319
+ readonly path: {
29320
+ /** @description Creative UUID. A malformed, unknown, deleted or foreign id is 404. */
29321
+ readonly id: components$1['parameters']['CreativeId'];
29322
+ readonly nodeId: string;
29323
+ };
29324
+ readonly cookie?: never;
29325
+ };
29326
+ readonly requestBody: {
29327
+ readonly content: {
29328
+ readonly 'application/json': components$1['schemas']['CreativeRegenerateNodeRequest'];
29329
+ };
29330
+ };
29331
+ readonly responses: {
29332
+ /** @description New version appended. */
29333
+ readonly 200: {
29334
+ headers: {
29335
+ readonly [name: string]: unknown;
29336
+ };
29337
+ content: {
29338
+ readonly 'application/json': components$1['schemas']['CreativeRegenerateNodeResult'];
29339
+ };
29340
+ };
29341
+ /** @description Malformed body, not an image node (`invalid_request`), audio creative (`unsupported_kind`), filtered output (`content_filtered`, nothing charged). */
29342
+ readonly 400: {
29343
+ headers: {
29344
+ readonly [name: string]: unknown;
29345
+ };
29346
+ content: {
29347
+ readonly 'application/json': components$1['schemas']['CreativeError'];
29348
+ };
29349
+ };
29350
+ readonly 401: components$1['responses']['Unauthorized'];
29351
+ readonly 402: components$1['responses']['InsufficientFunds'];
29352
+ readonly 404: components$1['responses']['NotFound'];
29353
+ /** @description The creative changed since `base_seq` and the change overlaps (code `stale`). */
29354
+ readonly 409: {
29355
+ headers: {
29356
+ readonly [name: string]: unknown;
29357
+ };
29358
+ content: {
29359
+ readonly 'application/json': components$1['schemas']['CreativeError'];
29360
+ };
29361
+ };
29362
+ };
29363
+ };
28875
29364
  readonly applyCreativeOps: {
28876
29365
  readonly parameters: {
28877
29366
  readonly query?: never;
@@ -28956,6 +29445,79 @@ interface operations$1 {
28956
29445
  readonly 404: components$1['responses']['NotFound'];
28957
29446
  };
28958
29447
  };
29448
+ readonly writeCreativePostCopy: {
29449
+ readonly parameters: {
29450
+ readonly query?: never;
29451
+ readonly header?: {
29452
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
29453
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
29454
+ /** @description Client correlation id; echoed back as `x-codai-trace-id` and persisted on the usage row. */
29455
+ readonly 'x-request-id'?: components$1['parameters']['RequestId'];
29456
+ };
29457
+ readonly path: {
29458
+ /** @description Creative UUID. A malformed, unknown, deleted or foreign id is 404. */
29459
+ readonly id: components$1['parameters']['CreativeId'];
29460
+ };
29461
+ readonly cookie?: never;
29462
+ };
29463
+ readonly requestBody?: {
29464
+ readonly content: {
29465
+ readonly 'application/json': components$1['schemas']['StudioPostCopyRequest'];
29466
+ };
29467
+ };
29468
+ readonly responses: {
29469
+ /** @description Post copy per platform, within each platform's limits. */
29470
+ readonly 200: {
29471
+ headers: {
29472
+ readonly [name: string]: unknown;
29473
+ };
29474
+ content: {
29475
+ readonly 'application/json': components$1['schemas']['StudioPostCopy'];
29476
+ };
29477
+ };
29478
+ /** @description Invalid body (`invalid_request`), or a deck, doc, sheet, print or audio creative (`not_supported_for_kind`). */
29479
+ readonly 400: {
29480
+ headers: {
29481
+ readonly [name: string]: unknown;
29482
+ };
29483
+ content: {
29484
+ readonly 'application/json': components$1['schemas']['CreativeError'];
29485
+ };
29486
+ };
29487
+ readonly 401: components$1['responses']['Unauthorized'];
29488
+ readonly 402: components$1['responses']['InsufficientFunds'];
29489
+ readonly 403: components$1['responses']['Forbidden'];
29490
+ /** @description Unknown creative or `seq` (`not_found`). */
29491
+ readonly 404: {
29492
+ headers: {
29493
+ readonly [name: string]: unknown;
29494
+ };
29495
+ content: {
29496
+ readonly 'application/json': components$1['schemas']['CreativeError'];
29497
+ };
29498
+ };
29499
+ /** @description The model answer could not be used (`no_post_copy`); only the turn that ran is billed. */
29500
+ readonly 422: {
29501
+ headers: {
29502
+ readonly [name: string]: unknown;
29503
+ };
29504
+ content: {
29505
+ readonly 'application/json': components$1['schemas']['CreativeError'];
29506
+ };
29507
+ };
29508
+ readonly 429: components$1['responses']['RateLimited'];
29509
+ readonly 502: components$1['responses']['UpstreamError'];
29510
+ /** @description The turn did not finish within 60 s (`timeout`). */
29511
+ readonly 504: {
29512
+ headers: {
29513
+ readonly [name: string]: unknown;
29514
+ };
29515
+ content: {
29516
+ readonly 'application/json': components$1['schemas']['CreativeError'];
29517
+ };
29518
+ };
29519
+ };
29520
+ };
28959
29521
  readonly renderCreative: {
28960
29522
  readonly parameters: {
28961
29523
  readonly query?: never;
@@ -29562,6 +30124,56 @@ interface operations$1 {
29562
30124
  };
29563
30125
  };
29564
30126
  };
30127
+ readonly transcriptCutCreative: {
30128
+ readonly parameters: {
30129
+ readonly query?: never;
30130
+ readonly header?: {
30131
+ /** @description Client correlation id; echoed back as `x-codai-trace-id` and persisted on the usage row. */
30132
+ readonly 'x-request-id'?: components$1['parameters']['RequestId'];
30133
+ };
30134
+ readonly path: {
30135
+ /** @description Creative UUID. A malformed, unknown, deleted or foreign id is 404. */
30136
+ readonly id: components$1['parameters']['CreativeId'];
30137
+ };
30138
+ readonly cookie?: never;
30139
+ };
30140
+ readonly requestBody: {
30141
+ readonly content: {
30142
+ readonly 'application/json': components$1['schemas']['CreativeTranscriptCutRequest'];
30143
+ };
30144
+ };
30145
+ readonly responses: {
30146
+ /** @description New version appended. */
30147
+ readonly 200: {
30148
+ headers: {
30149
+ readonly [name: string]: unknown;
30150
+ };
30151
+ content: {
30152
+ readonly 'application/json': components$1['schemas']['CreativeTranscriptCutResult'];
30153
+ };
30154
+ };
30155
+ /** @description Malformed body or word range (`invalid_request`), not a video node / creative (`unsupported_kind`), or the edit rejected by the engine (`invalid`, `locked`). */
30156
+ readonly 400: {
30157
+ headers: {
30158
+ readonly [name: string]: unknown;
30159
+ };
30160
+ content: {
30161
+ readonly 'application/json': components$1['schemas']['CreativeError'];
30162
+ };
30163
+ };
30164
+ readonly 401: components$1['responses']['Unauthorized'];
30165
+ readonly 404: components$1['responses']['NotFound'];
30166
+ /** @description No cached transcript for the clip (`captions_required`, with `node_id`), or the creative changed since `base_seq` (`stale`). */
30167
+ readonly 409: {
30168
+ headers: {
30169
+ readonly [name: string]: unknown;
30170
+ };
30171
+ content: {
30172
+ readonly 'application/json': components$1['schemas']['CreativeError'];
30173
+ };
30174
+ };
30175
+ };
30176
+ };
29565
30177
  readonly listCreativeVariants: {
29566
30178
  readonly parameters: {
29567
30179
  readonly query?: never;
@@ -34213,6 +34825,8 @@ interface operations$1 {
34213
34825
  readonly model?: string;
34214
34826
  readonly negative_prompt?: string;
34215
34827
  readonly prompt: string;
34828
+ /** @description Up to 3 of your ready PNG / JPEG image assets showing ONE subject (character or product) that Veo keeps consistent (Vertex `referenceImages`, `referenceType: asset`). Not combinable with `image`; always 8 s. A missing or foreign asset is 404, another type 400 — checked before anything is held or charged. */
34829
+ readonly reference_asset_ids?: readonly string[];
34216
34830
  /** @enum {string} */
34217
34831
  readonly resolution?: '720p' | '1080p';
34218
34832
  /** @enum {integer} */
@@ -35557,6 +36171,12 @@ export interface VideoRequest {
35557
36171
  b64_json: string;
35558
36172
  mime_type?: 'image/png' | 'image/jpeg';
35559
36173
  };
36174
+ /**
36175
+ * Up to 3 of your ready PNG / JPEG Studio image assets showing ONE subject (character or product) that the model
36176
+ * keeps consistent (e.g. a creative's cast `refAssetIds`). Not combinable with `image`; always 8 s. A missing or
36177
+ * foreign asset is 404, another type 400 — checked before anything is held or charged.
36178
+ */
36179
+ reference_asset_ids?: string[];
35560
36180
  seed?: number;
35561
36181
  }
35562
36182
  export interface VideoJob {
@@ -36062,6 +36682,22 @@ export type CreativeTemplate = Schema<'CreativeTemplate'>;
36062
36682
  export type StudioCreativeFromDocument = Schema<'StudioCreativeFromDocument'>;
36063
36683
  export type CreativeBuildRequest = Mutable<Schema<'CreativeBuildRequest'>>;
36064
36684
  export type StudioCreativeBuild = Schema<'StudioCreativeBuild'>;
36685
+ /** Build request of a carousel (`format: 'png' | 'pdf'`) or print (`format: 'pdf'`) creative. */
36686
+ export type CreativePagedBuildRequest = Mutable<Schema<'CreativePagedBuildRequest'>>;
36687
+ /** HTTP 202 answer of `build` for a carousel / print creative: the queued export job is in `export`. */
36688
+ export type StudioCreativePagedBuild = Schema<'StudioCreativePagedBuild'>;
36689
+ export type CreativePrintLintIssue = Schema<'CreativePrintLintIssue'>;
36690
+ /** `build` answers a stored document version (200, deck / doc / sheet) or a queued export (202, carousel / print). */
36691
+ export type CreativeBuildResult = StudioCreativeBuild | StudioCreativePagedBuild;
36692
+ export type StudioPostCopyRequest = Mutable<Schema<'StudioPostCopyRequest'>>;
36693
+ export type StudioPostCopy = Schema<'StudioPostCopy'>;
36694
+ export type CreativeTranscriptCutRequest = Mutable<Schema<'CreativeTranscriptCutRequest'>>;
36695
+ export type CreativeTranscriptCutResult = Schema<'CreativeTranscriptCutResult'>;
36696
+ export type CreativeRegenerateNodeRequest = Mutable<Schema<'CreativeRegenerateNodeRequest'>>;
36697
+ export type CreativeRegenerateNodeResult = Schema<'CreativeRegenerateNodeResult'>;
36698
+ export type CreativeCast = Schema<'CreativeCast'>;
36699
+ /** True when a `build` answer is the 202 carousel / print export job (poll `exports.wait(r.export.id)`). */
36700
+ export declare const isPagedBuild: (r: CreativeBuildResult) => r is StudioCreativePagedBuild;
36065
36701
  /** `{ brand_kit_id }` or `{ tokens }` (exactly one) + optional `base_seq`, `snap`, `fonts`, `force`. */
36066
36702
  export type CreativeRestyleRequest = Mutable<Body<'restyleCreative'>>;
36067
36703
  /** Same shape as the `edit` answer (`seq`, `doc_hash`, `changed`, `warnings`, `rebased`). */
@@ -36276,8 +36912,45 @@ export declare class Creatives {
36276
36912
  * Studio document (`document`, exactly the `POST /v1/studio/documents` body). Converter notes come back in
36277
36913
  * `warnings`. The file is free; `preview: true` also queues a billed preview (poll it with
36278
36914
  * `documents.waitForPreview`). 400 `not_supported_for_kind` (video / image) or `invalid_spec`.
36915
+ *
36916
+ * A carousel (`format: 'png'` zip of slides or `'pdf'`) or print (`'pdf'`, PDF/X-4 with bleed and optional
36917
+ * `crop_marks`) creative answers HTTP 202 with a queued export job in `export` (`format_id` picks the format,
36918
+ * `quote_micro_usd` is held). Tell the two apart with `isPagedBuild`, poll with `exports.wait(r.export.id)` or use
36919
+ * `buildAndWait`.
36279
36920
  */
36280
- build(id: string, body?: CreativeBuildRequest, opts?: CallOpts$28): Promise<StudioCreativeBuild>;
36921
+ build(id: string, body?: CreativeBuildRequest | CreativePagedBuildRequest, opts?: CallOpts$28): Promise<CreativeBuildResult>;
36922
+ /**
36923
+ * `build`, then — for a carousel / print creative — poll the export job until it has `succeeded` or `failed`
36924
+ * (`exports.wait`). Resolves to the 200 build for deck / doc / sheet, or to the finished `StudioExport`.
36925
+ */
36926
+ buildAndWait(id: string, body?: CreativeBuildRequest | CreativePagedBuildRequest, opts?: ExportWaitOptions): Promise<StudioCreativeBuild | StudioExport>;
36927
+ /**
36928
+ * Social post copy for a carousel, image or video creative: a caption + hashtags per platform (`platforms`,
36929
+ * default Instagram + LinkedIn; `language` `ro` (default) | `en`; optional `brief`, `tone`, `seq`) and one alt text
36930
+ * per slide, every answer repaired to the platform's hard limits (changes listed in `fixes`). Nothing is written to
36931
+ * the creative. Token-metered (`cost_micro_usd`) under a small wallet hold (402 `insufficient_funds`); 400
36932
+ * `not_supported_for_kind`, 422 `no_post_copy`, 504 `timeout`. `idempotencyKey` replays a retry (24 h).
36933
+ */
36934
+ postCopy(id: string, body?: StudioPostCopyRequest, opts?: CallOpts$28 & {
36935
+ idempotencyKey?: string;
36936
+ }): Promise<StudioPostCopy>;
36937
+ /**
36938
+ * Edit a video clip by its transcript: delete word ranges (`remove: [{ from_word, to_word }]`, indexes into the
36939
+ * clip asset's cached transcript from `captions`) from video node `node_id`; the pieces are placed back to back as
36940
+ * one new version (`base_seq` rebased like `edit`, locks honoured unless `force`). Free. 409 `captions_required`
36941
+ * (run `captions` on that clip first) or `stale`; video creatives only.
36942
+ */
36943
+ transcriptCut(id: string, body: CreativeTranscriptCutRequest, opts?: CallOpts$28): Promise<CreativeTranscriptCutResult>;
36944
+ /**
36945
+ * Generate a new picture for an `image` node (`prompt`, optional `model`, `aspect_ratio` — default the closest
36946
+ * ratio of the node box — `base_seq`, `force`) and swap it in as one new version. A node with a `castId` sends that
36947
+ * cast entry's `refAssetIds` as references and appends its `description`, so the subject stays consistent. Billed
36948
+ * like `images.generate` (402 `insufficient_funds`); 400 `content_filtered` charges nothing. `idempotencyKey`
36949
+ * replays a retry (24 h).
36950
+ */
36951
+ regenerateNode(id: string, nodeId: string, body: CreativeRegenerateNodeRequest, opts?: CallOpts$28 & {
36952
+ idempotencyKey?: string;
36953
+ }): Promise<CreativeRegenerateNodeResult>;
36281
36954
  /**
36282
36955
  * Re-apply a brand kit (`brand_kit_id`) or a flat token map (`tokens`) to the creative as one new version: literal
36283
36956
  * colours equal to the old brand become token refs, `snap: true` maps every other colour to the nearest kit colour,
@@ -36497,6 +37170,12 @@ export interface MediaOpInput {
36497
37170
  assetIds?: string[];
36498
37171
  /** Per-op parameters (validated strictly by the gateway; see the docs table). */
36499
37172
  params?: Record<string, unknown>;
37173
+ /**
37174
+ * `image.inpaint` / `image.erase` only: a mask painted in an editor, base64 PNG (white = edit, black = keep, at most
37175
+ * 8 MB). Send ONE asset id (the image); the gateway stores the mask as a free private asset and passes it as the
37176
+ * second input. A quote validates it without storing anything.
37177
+ */
37178
+ maskPngB64?: string;
36500
37179
  }
36501
37180
  export interface MediaOpRunOptions extends CallOpts$24 {
36502
37181
  /** `Idempotency-Key`: a retry with the same key replays the first answer instead of running (and billing) again. */