Generate packaging assets
const url = 'https://api.braiv.co/v1/videos/vid_01JZ8M6A/packaging';const options = { method: 'POST', headers: { 'Idempotency-Key': 'import-launch-demo-20260901', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"automationOptions":{"generateTitle":{"enabled":true,"titleType":"informational","overwriteMode":"fill-if-empty"},"generateDescription":{"enabled":true,"descriptionType":"youtube-description","overwriteMode":"fill-if-empty"},"zeroPromptThumbnail":{"enabled":true,"characterCount":0,"pipelineMode":"thumbnail-precision","autoDetectContentReferences":true,"contentSlotCount":1}}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.braiv.co/v1/videos/vid_01JZ8M6A/packaging \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: import-launch-demo-20260901' \ --data '{ "automationOptions": { "generateTitle": { "enabled": true, "titleType": "informational", "overwriteMode": "fill-if-empty" }, "generateDescription": { "enabled": true, "descriptionType": "youtube-description", "overwriteMode": "fill-if-empty" }, "zeroPromptThumbnail": { "enabled": true, "characterCount": 0, "pipelineMode": "thumbnail-precision", "autoDetectContentReferences": true, "contentSlotCount": 1 } } }'Enables one or more title, description, or zero-prompt-thumbnail
automations. Send fields directly or under automationOptions; the
nested form is recommended. Already-pending automation types are
reported separately and are not duplicated.
Required scope: packaging:write.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Braiv library video document ID.
Example
vid_01JZ8M6AHeader Parameters
Section titled “Header Parameters ”Caller-generated key for safe POST retries. The API retains the first
JSON response for 24 hours. Reusing a key with another path or body
returns 409 IDEMPOTENCY_REPLAY.
Example
import-launch-demo-20260901Request Body
Section titled “Request Body ”object
Packaging automations to enable.
object
Shared fallback brand voice for description and thumbnail automation.
Title generation configuration.
object
Enables title generation.
Tone used for the generated title:
funny is light or relatable; scary emphasizes warnings or
mistakes; informational is direct and useful; mysterious creates
a curiosity gap; and clickbait uses bold, high-energy framing.
Generation policy. fill-if-empty is the default automation mode;
always explicitly allows replacement of the current title; and
never records the automation as skipped without generating a title.
Description generation configuration.
object
Enables description generation.
Generated output format:
youtube-description creates SEO copy with chapters and tags;
social-post creates concise social copy; how-to-guide creates
timestamped Markdown steps; blog-post creates a long-form Markdown
article; and video-summary creates a timestamped narrative summary.
Generation policy. fill-if-empty is the default automation mode;
always explicitly allows replacement of the active description;
and never records the automation as skipped without generating copy.
Brand voice profile used for copy.
Context-derived thumbnail configuration.
object
Enables zero-prompt thumbnail generation.
Number of character references to use.
Character references matching characterCount.
object
Saved character profile ID.
Saved reference image IDs.
Primary character reference URL.
Additional character reference URLs.
Character display name.
Desired composition position.
Desired character pose or action.
Reference payload model. 1 uses the legacy aesthetic, layout, and
design-influence interpretation. 2 separates style recreation
from brand references and enables thumbnail-precision.
Thumbnail generation workflow. thumbnail-v2 supports character,
style, and brand references. thumbnail-precision uses one or two
content-plate references and does not accept character references.
Primary content plate reference.
Precision-mode content plates.
Composition influence image.
Style influence image.
Brand influence image.
Relative brand-style influence passed to generation.
Not available in precision mode.
Character detection workflow. auto accepts detected references and continues; review waits for approval before generation.
Precision only. When omitted and no content plate URLs are sent
Number of distinct content-plate references selected for precision mode. Use 1 for one reference frame or 2 for two complementary frames.
Content-reference detection workflow. auto accepts detected frames and continues; review waits for approval before generation.
Optional focus text that steers opaque key-moment detect.
Optional Precision headline burned into the thumbnail.
When true
Effective only with non-empty thumbnailTranslationLanguageCodes.
Languages for translated thumbnail variants.
Brand voice profile used by thumbnail copy.
object
Shared fallback brand voice for description and thumbnail automation.
Title generation configuration.
object
Enables title generation.
Tone used for the generated title:
funny is light or relatable; scary emphasizes warnings or
mistakes; informational is direct and useful; mysterious creates
a curiosity gap; and clickbait uses bold, high-energy framing.
Generation policy. fill-if-empty is the default automation mode;
always explicitly allows replacement of the current title; and
never records the automation as skipped without generating a title.
Description generation configuration.
object
Enables description generation.
Generated output format:
youtube-description creates SEO copy with chapters and tags;
social-post creates concise social copy; how-to-guide creates
timestamped Markdown steps; blog-post creates a long-form Markdown
article; and video-summary creates a timestamped narrative summary.
Generation policy. fill-if-empty is the default automation mode;
always explicitly allows replacement of the active description;
and never records the automation as skipped without generating copy.
Brand voice profile used for copy.
Context-derived thumbnail configuration.
object
Enables zero-prompt thumbnail generation.
Number of character references to use.
Character references matching characterCount.
object
Saved character profile ID.
Saved reference image IDs.
Primary character reference URL.
Additional character reference URLs.
Character display name.
Desired composition position.
Desired character pose or action.
Reference payload model. 1 uses the legacy aesthetic, layout, and
design-influence interpretation. 2 separates style recreation
from brand references and enables thumbnail-precision.
Thumbnail generation workflow. thumbnail-v2 supports character,
style, and brand references. thumbnail-precision uses one or two
content-plate references and does not accept character references.
Primary content plate reference.
Precision-mode content plates.
Composition influence image.
Style influence image.
Brand influence image.
Relative brand-style influence passed to generation.
Not available in precision mode.
Character detection workflow. auto accepts detected references and continues; review waits for approval before generation.
Precision only. When omitted and no content plate URLs are sent
Number of distinct content-plate references selected for precision mode. Use 1 for one reference frame or 2 for two complementary frames.
Content-reference detection workflow. auto accepts detected frames and continues; review waits for approval before generation.
Optional focus text that steers opaque key-moment detect.
Optional Precision headline burned into the thumbnail.
When true
Effective only with non-empty thumbnailTranslationLanguageCodes.
Languages for translated thumbnail variants.
Brand voice profile used by thumbnail copy.
Example
{ "automationOptions": { "generateTitle": { "enabled": true, "titleType": "informational", "overwriteMode": "fill-if-empty" }, "generateDescription": { "enabled": true, "descriptionType": "youtube-description", "overwriteMode": "fill-if-empty" }, "zeroPromptThumbnail": { "enabled": true, "characterCount": 0, "pipelineMode": "thumbnail-precision", "autoDetectContentReferences": true, "contentSlotCount": 1 } }}Responses
Section titled “ Responses ”New automation jobs queued; pending duplicates identified.
object
Whether at least one new run was created.
Requested automation types already in progress.
Newly queued packaging jobs.
object
Deterministic, pollable job ID.
Product workflow represented by the job.
Current normalized job lifecycle state.
Parent video when applicable.
Target language for a dub or caption job.
Dubbing product used by a dub job.
Packaging automation when type is packaging.
Type-specific ready-state artifacts.
object
Terminal failure details when status is failed.
object
Machine-readable job failure code.
Human-readable job failure explanation.
Type-specific identifiers and context.
object
Example
{ "registered": true, "alreadyPending": [], "jobs": [ { "id": "packaging_vid_01JZ8M6A_generateTitle", "type": "packaging", "status": "queued", "automationType": "generateTitle" } ]}Request fields are missing, malformed, out of bounds, or mutually inconsistent.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "INVALID_ARGUMENT", "message": "The request contains invalid or missing fields.", "details": {} }}A supported authentication header is missing or contains an invalid Public API key.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Examples
Authentication header missing
{ "error": { "code": "UNAUTHENTICATED", "message": "Missing API key.", "details": {} }}API key invalid
{ "error": { "code": "INVALID_API_KEY", "message": "Invalid API key", "details": {} }}Authentication succeeded, but the required scope, workspace role, or resource permission is missing.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Examples
{ "error": { "code": "INSUFFICIENT_SCOPE", "message": "The API key lacks the required scope.", "details": {} }}The resource does not exist or is not accessible to the caller.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "NOT_FOUND", "message": "Resource not found.", "details": {} }}The Idempotency-Key was reused with a different path or request body.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "IDEMPOTENCY_REPLAY", "message": "Idempotency-Key was reused with a different request.", "details": { "pathMatch": true, "hashMatch": false } }}The account has insufficient credits, or the request exceeded a rate limit.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "INSUFFICIENT_CREDITS", "message": "Not enough credits.", "details": { "required": 60, "available": 20, "shortfall": 40 } }}An unexpected server error occurred.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "INTERNAL", "message": "An unexpected error occurred.", "details": {} }}