12 Ad Variants From One Body Clip: Hooks, Renders, Queue Limits

Test 12 opening hooks on one product ad: 3-second Omni Flash hooks, one trimmed body, 12 renders and captions, plus how queue limits shape the batch.

5 min readSume
All posts

The short answer

Twelve hook variants cost about $5.720 before captions on Sume list prices, or $8.120 with captions burned on each. That is one body trim ($0.02), twelve 3-second Omni Flash hooks at 720p ($4.500) and twelve timeline renders under a minute ($1.20). Your plan's queue size decides how many you can submit at once.

Structure

Generate the body once and trim it once with POST /v1/video-trim. Generate 12 hooks of 3 seconds, the shortest Omni Flash 1.1 accepts. Then render 12 timelines, each with one hook slot and the same body slot. Because every render is under 60 seconds, each bills as one minute at $0.10.

If you also want captions, standalone POST /v1/video-captions costs $0.20 per job for videos up to 60 seconds. Burn captions on the finished variant, not on the parts, so the words match what the viewer hears.

Cost of 12 variants (Sume catalog and docs, read 2026-10-09)
LineUnitCountTotal
Video trim, body clip$0.02 per job1$0.02
Omni Flash 1.1 hooks, 720p, 3 s$0.375 each12$4.500
Timeline 1.0 renders$0.10 per job12$1.20
Subtotal$5.720
Standalone captions, up to 60 s$0.20 per job12$2.40
Total with captions$8.120

Queue limits decide the wave size

Docs list accepted job capacity (processing plus queued) by plan: Free 6, Pro 24, Startup 48, Scale 120. On a Free workspace, 12 hook jobs cannot all be accepted at once, and an extra submit returns 429 queue_full. Submit six, let them finish, then submit the next six. On Pro, all 12 fit, but only 4 run at the same time.

Use a stable Idempotency-Key per hook so a retry after a timeout returns the same job and does not charge twice. A 402 insufficient_credits fails before provider work starts, so a low balance never leaves half a batch rendering.

import requests

KEY = "..."  # SUME_API_KEY
HOOKS = ["Stop scrolling", "Wait for the end", "I tried it so you do not have to"]

def submit(i, prompt):
    r = requests.post(
        "https://api.sume.com/v1/video-router/generate",
        headers={"Authorization": f"Bearer {KEY}", "Idempotency-Key": f"hook-{i}"},
        json={"model": "gemini-omni-flash-1.1", "prompt": prompt,
              "duration": 3, "resolution": "720p", "aspect_ratio": "9:16"},
        timeout=30,
    )
    r.raise_for_status()
    return r.json()

# Submit in waves no larger than your plan's accepted job capacity.
for i, h in enumerate(HOOKS):
    print(submit(i, f"Opening shot, text on screen: {h}")["id"])

Reading the test

Change one thing per variant. If hook 7 wins, rerun only hook 7 at 1080p for the final. Omni Flash at 1080p is $0.1875 per second, so a 3-second hook is $0.5625 instead of $0.375 at 720p.

Naming and tracking

Name each output with the hook id, for example hook-07-final, and keep a table of hook id, job id and the ad platform's results. The job id from the submit response is what GET /v1/jobs/:id/result needs later, so store it next to the hook text. A webhook with mode: webhook can tell your server when each render finishes; keep polling as a fallback.

Finally, keep the body and the offer constant across variants. If the hook, the body and the end card all change, a result tells you nothing about which part worked. One variable per test is the whole reason to make 12 cheap hooks instead of 3 expensive ads.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume