Hook variations for UGC ads: swap the hook, reuse the body
Make UGC ad hook variations by changing only the opening: one Timeline render per hook over the same body clips and voice, checked free first.

To make hook variations of a UGC ad, keep everything after the opening identical and change only the hook: the first shot, the first line, or both. Make the body once, make one short hook per variant, and render one version per hook, so a test between the versions compares hooks and nothing else.
The test itself runs in your ad platform; this post covers making the files. The Sume facts come from Timeline 1.0, Generate avatar video, and Bulk runs, read on 2026-09-27. For writing the lines themselves, see UGC ad scripts for AI avatar videos.
How do I make hook variations without regenerating the ad?
Generate the body clips once, then one short clip per hook. Sume mirrors every generated output to a Sume-owned media.sume.com URL, and Timeline 1.0 takes only your workspace's media.sume.com URLs. Join each hook to the same body in its own render: the hook fills the first video[] slot at start 0, and the body clips follow in the same order in every version, shifted only by the hook's length.
Today a render's sound comes only from its audio spine and optional soundtrack, not from the clips. So give each version a two-part spine in audio.parts[], the hook's audio and then the body's: the API reference says it joins up to 20 Sume-hosted slices gaplessly, without re-running text-to-speech. A hook clip's own sound becomes a part with audio detach, and a spoken line can come from text-to-speech.
Set the hook slot's duration to its audio part's length so the body's voice and picture start together. In this version, hook B's line runs 3 seconds and the shared body voice 15:
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ugc-ad-hook-b-001" \
-d '{
"audio": {
"parts": [
{ "url": "https://media.sume.com/artifacts/artf_demo/hook-b.wav" },
{ "url": "https://media.sume.com/artifacts/artf_demo/body.wav" }
],
"duration_seconds": 18
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/hook-b.mp4", "start": 0, "duration": 3 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/body-1.mp4", "start": 3, "duration": 8 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/body-2.mp4", "start": 11, "duration": 7 }
]
}'Can I check every variant before paying for renders?
Yes. Send each variant's document to POST /v1/timeline-1.0/plan first. It runs the schema and Sume-host URL checks and the compiler, and returns duration_seconds, segment_count, billable_minutes, and estimated_cost_usd_micros, without creating a job, reserving credits, or downloading media. It can't predict warnings about short sources being padded or looped. More in validate a timeline before rendering.
Idempotency-Key is required on the render, so give each variant its own key.
What if the whole UGC ad is one avatar video?
Then a variant can be its own multi-scene job: send ordered video_inputs scenes, such as the docs' hook, demo, and cta, and change only the first. The whole plan must land between 4 and 60 seconds. Each variant is a separate job that renders the whole video, so nothing guarantees its body scenes match the other variants' frame for frame. The scene fields are covered in multi-scene avatar videos.
To keep the body identical, render the body once and each hook as its own short avatar job (4 seconds at least), then join them as above; joining avatar parts shows how to keep their audio. In current code, avatar speech is English only.
Which way should I make the variants, and what does each cost?
If a catalog Format makes your ads, one bulk request can carry a run per hook, each with its own instruction; see Format bulk runs. Each run makes a whole new ad, so more than the hook changes.
| Way | What changes per variant | Limits | Cost per variant |
|---|---|---|---|
| Timeline hook swap | First video[] slot and first audio.parts[] slice | Up to 20 audio parts, 1–200 slots, 1–1,800 s | The hook's generation, plus a render listed at $0.10 per output minute |
| Avatar multi-scene job | The first scene; the job renders every scene | 4–60 s per video | Avatar video, priced per second on API pricing |
| Format bulk run | The item's instruction; the run makes a whole ad | 1–100 items, 1–16 in flight | One whole Format run |
Sources
Related posts
More in Use cases
- How long should an ad be? Video ad lengths by platform
There is no single right length: each platform publishes its own. YouTube bumpers are 6 s, and Facebook plays in-stream ads of 15 s or less in full.
- How to make an AI avatar influencer: one face, one voice
An AI influencer is one reusable face and voice. Make a Sume avatar once, reuse its handle for videos and voiceovers, and its still for new photos.
- How to make an explainer video with AI: two ways
To make an explainer video with AI, split the script into beats, then have an avatar present them or run a voiceover over B-roll. Join longer parts.
- IVR text to speech: phone menu prompts in telephony formats
Make IVR prompts and voicemail greetings with text to speech: one request per prompt, returned as 8 kHz μ-law or A-law WAV, or as MP3 or other PCM.
Written by Sume