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.

5 min readSume
All posts

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.

From Timeline 1.0, Generate avatar video, Bulk runs, and API pricing, read 2026-09-27.
WayWhat changes per variantLimitsCost per variant
Timeline hook swapFirst video[] slot and first audio.parts[] sliceUp to 20 audio parts, 1–200 slots, 1–1,800 sThe hook's generation, plus a render listed at $0.10 per output minute
Avatar multi-scene jobThe first scene; the job renders every scene4–60 s per videoAvatar video, priced per second on API pricing
Format bulk runThe item's instruction; the run makes a whole ad1–100 items, 1–16 in flightOne whole Format run

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume