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 +689 -10
- package/dist/index.js +76 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
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`)
|
|
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
|
|
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`),
|
|
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<
|
|
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. */
|