TikTok split test: how to test AI avatar ad hooks
TikTok's split test changes one variable and lists the opening 2-3 seconds as testable. Render each hook as its own Sume avatar video and run 7+ days.
To test hooks on TikTok, create a split test, choose one variable (Creative Assets, which TikTok says covers the initial "hooks", the opening 2-3 seconds), and give each ad group a video that differs only in that opening. On Sume, each hook is its own POST /v1/avatar-1.0/talking-video job whose first scene changes while the avatar, background, quality and aspect ratio stay fixed. Set the schedule to at least 7 days.
TikTok's side is from Split Testing Variables and How to create a split test, both read 2026-10-03. Sume's side is from Generate avatar video.
What the split test fixes for you
The test design is TikTok's job; the clips are yours. Two rules shape how you render.
| Rule | What TikTok says | What it means for the render |
|---|---|---|
| Variables per test | You can only select one variable for each split test | Change only the hook; keep every other field identical |
| Hook definition | Creative Assets include the initial hooks (the opening 2-3 seconds) | Write the variants as the first 2-3 seconds of speech |
| Schedule | Set the dates to at least 7 days | Render and approve both videos before the test starts |
| Winner | The Key Metric compares the two ad groups | Pick the metric before you generate |
Render the variants so only the hook differs
Use one ready avatar_handle and video_inputs, with the same aspect_ratio (the default is 9:16), quality (the default is plus) and scene background in both requests. Only the voice.script of the first scene changes. Sume's docs say the planned duration must land in the 4-60 second window, so keep both hook lines the same length when you can.
Send a different Idempotency-Key per variant, and reuse a key only to retry the exact same payload. Sume's jobs docs say to reuse a key only for the same operation and payload.
{
"avatar_handle": "sume_clawra",
"aspect_ratio": "9:16",
"quality": "plus",
"video_inputs": [
{
"id": "hook",
"voice": { "type": "text", "script": "Wait, this turned one selfie into a whole video?", "duration": 3 },
"background": { "type": "prompt", "prompt": "Casual bedroom framing, native UGC lighting" }
},
{
"id": "body",
"voice": { "type": "text", "input_text": "You pick a template, drop in your photo, and it builds the clip around you.", "duration": 5 },
"background": { "type": "prompt", "prompt": "Casual bedroom framing, native UGC lighting" }
}
]
}Each variant is a full job
Sume's docs describe every avatar video as its own job billed per second; they do not describe reusing a finished body in a second render. Plan the test as N full renders, not one body plus N openers. If you want to approve framing first, use an avatar video preview, which shows first-frame stills before the full render.
Burn captions with the captions field so the on-screen text matches the spoken hook in every variant.
Sources
Related posts
More in Use cases
- TikTok split test variables: which ones need a new AI video?
TikTok lets a split test change one variable. Only Creative and Creative Assets need new media; the rest reuse one clip. Here is what to render, with Sume.
- Timeline fit modes: cover, contain, stretch, blur for ad clips
Sume Timeline video[].fit has four modes: cover (default), contain, stretch and blur. What each does to a clip that does not match the output frame.
- Estimate an ad video render cost before you pay: timeline plan
Sume's timeline plan endpoint is unbilled and returns billable minutes and an estimated cost before you render. Render is $0.10 per started output minute.
- Trim a UGC ad down to its hook: frame-accurate cut for $0.02
Sume video trim cuts a start/end range from a hosted clip into a new MP4 for $0.02 a job. Exact vs keyframe precision, the 0.2-900 s duration, and import first.
Written by Sume