Render ad video
render_adTurn a plan_ad's structured storyboard into a finished video ad with timed shots, clean voiceover, composited text, brand end card, and licensed music, rendered as one clip or stitched acts.
Instructions
RECOMMENDED for finished video ADS: render a plan_ad concept through the SAME quality pipeline as the Hermoso web Studio — timed shot list, exact/clean speech (no garbled words), text composited in post (never model-painted), brand end card, licensed music bed, real product references. Pass plan_ad’s full structured output as creative. Honors the plan’s render_plan structure/duration: a ≤15s storyboard renders as ONE single-pass clip; a longer plan automatically renders as STITCHED ACTS (fewest balanced ≤15s clips) — never time-compressed into one clip. Renders take 1–3 min; keep polling get_job if it returns still-rendering. Spends credits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | video model id from hermoso_capabilities (default: the plan’s pick). Naming one is a DELIBERATE pick — the server asks before ever swapping it (no silent fallback) | |
| music | No | licensed music bed on/off (default on) | |
| dryRun | No | return the routing decision (single pass vs stitched acts, resolved model + act lengths) WITHOUT submitting a render — free, nothing charged | |
| lockup | No | persistent brand-logo lockup overlay on/off | |
| endCard | No | branded end card on/off (default: on, except organic recipes) | |
| captions | No | composited caption pills on/off (default: the recipe decides) | |
| creative | Yes | the FULL structured output of plan_ad (must contain video_storyboard) | |
| ttsVoice | No | voiceover voice name (e.g. Rachel / George) when the plan voices over | |
| resolution | No | '720p' default; '480p' = cheap fast draft pass, '1080p'/'4k' = premium final delivery (more credits) | |
| aspectRatio | No | output aspect ratio, e.g. 9:16 (default) / 1:1 / 16:9 | |
| durationSeconds | No | total ad length in seconds — omit to honor the plan’s own duration |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | the raw job result payload (e.g. images[] for carousel template ads) | |
| url | No | the served URL of the finished media (absent/null while still rendering) | |
| input | No | the assembled render input (dry run only — resolved model, duration, scenes) | |
| jobId | No | the render job id — poll get_job with this id to resume or inspect | |
| model | No | the product-facing label of the model that rendered it | |
| dryRun | No | true when this was a dry run (no job submitted, nothing charged) | |
| jobType | No | the routing decision — 'video' (single pass) or 'stitch' (acts) | |
| stillRendering | No | true when the render is still in progress — keep polling get_job with jobId |