A $50 AI video ad test budget split across four jobs on Sume

A $50 test can cover 40 draft hooks, 6 hero shots, 4 spoken clips and 2 4K cuts on Sume for $29.70, leaving $20.30 for re-runs. Prices per job below.

5 min readSume
All posts

A $50 test fits 40 draft hooks, 6 hero shots, 4 spoken clips and 2 4K cuts on Sume with $20.30 left for re-runs, if you match each job to the cheapest model that can do it. The plan costs $29.70: hooks on wan-3.0 at 480p, hero shots on kling-3 at 1080p, spoken clips on gemini-omni-flash-1.1, and the 4K cuts on Omni.

Each job is rounded up to the cent. Rates come from the Video Router guide, read 2026-10-05.

The plan

Sume bills the provider list price times 1.25 and rounds the job up to the cent, so a one-second figure here is a rate, not a charge.

A $50 test plan, priced per job on Sume (read 2026-10-05)
JobModel and settingLengthPer jobCountSubtotal
Draft hookswan-3.0, 480p5 s$0.3240$12.80
Hero shots, silentkling-3, 1080p10 s$1.406$8.40
Spoken clipsgemini-omni-flash-1.1, 720p8 s$1.004$4.00
4K cutsgemini-omni-flash-1.1, 4K6 s$2.252$4.50
Total52$29.70

Why this split

Hooks are many and short, so they use the lowest per-second row that takes 9:16. Hero shots are few and need 1080p, where Kling is the cheapest. Spoken clips need native audio, which Omni always makes. For a true talking head with matching lip movement, the Avatar Video route is a separate product, described on the Generate avatar video page.

Hold back the remainder. Rerolling a hero shot costs another $1.40, and the routes take no seed, so a rerun is a new roll.

  • Set a per-batch cap in your own script from usage.cost on completed jobs.
  • Use Idempotency-Key on every submit.
  • Spend the reserve on the two best hooks at 720p.

Request

A hero shot from the plan.

import os, time, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
payload = {
    "model": "kling-3",
    "prompt": "Slow dolly across a ceramic mug on a marble counter, morning light",
    "duration": 10,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "generate_audio": False,
}
job = requests.post("https://api.sume.com/v1/videos", headers=H, json=payload).json()
while True:
    time.sleep(30)
    s = requests.get(job["polling_url"], headers=H).json()
    if s["status"] in ("completed", "failed", "cancelled"):
        break
print(s["status"], s.get("unsigned_urls"), s.get("usage"))

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume