Price a 20-prompt video regression suite: 360p, 3 seconds on Sume
A 20-prompt golden set rendered at 360p and 3 seconds on Gemini Omni costs $2.40 per run on Sume. The arithmetic, a Python cost check and the request body.

Twenty golden prompts at 3 seconds and 360p on gemini-omni-flash-1.1 cost $0.12 each on Sume, so a full run is 20 x 0.12 = $2.40. That is cheap enough to run on every prompt-template change, which is the point of having a regression suite at all.
OpenAI removed the Sora video models on 2026-09-24 per its deprecations page. After a change like that, the only defense against the next one is a set of prompts you can rerun against whatever model you adopt, with a known price per pass.
The arithmetic
The repo docs list Omni at $0.03 a second at 360p before margin. Sume bills list times 1.25, so 3 seconds is 3 x 0.03 x 1.25 = $0.1125. Each job is rounded up to the cent, so one prompt bills $0.12. The rounding happens per job, which means 20 jobs cost 20 x 0.12 = $2.40, not 20 x 0.1125 = $2.25.
At 720p the same three seconds is 3 x 0.10 x 1.25 = $0.375, billed $0.38, and 20 prompts cost $7.60. So 360p is the right tier for catching a broken prompt and 720p is for the final look.
| Resolution | Per second | One 3 s job | 20 jobs |
|---|---|---|---|
| 360p | $0.0375 | $0.1125, billed $0.12 | $2.40 |
| 720p | $0.125 | $0.375, billed $0.38 | $7.60 |
| 1080p | $0.1875 | $0.5625, billed $0.57 | $11.40 |
The cost check
The script keeps a three-row suite inline so it runs as written; load your own from a JSONL file with one object per line. It prints the cost of a run at both tiers and the exact request body for the first prompt. Compare the printed total to what the dashboard reports after a real run, and investigate if they differ.
import json, math
RATE = {"360p": 0.0375, "720p": 0.125} # Omni per second: list x 1.25
SUITE = """\
{"id": "mug", "prompt": "Steam rising from a ceramic mug, slow dolly-in"}
{"id": "rain", "prompt": "Rain on a window, city lights blurred behind"}
{"id": "shoe", "prompt": "A white sneaker turning on a pedestal, soft light"}
"""
def job_cost(seconds, res):
return math.ceil(round(seconds * RATE[res], 6) * 100) / 100
def body(row, res="360p", seconds=3):
return {"model": "gemini-omni-flash-1.1", "prompt": row["prompt"],
"duration": seconds, "resolution": res, "aspect_ratio": "16:9"}
rows = [json.loads(line) for line in SUITE.splitlines()]
for res in ("360p", "720p"):
total = sum(job_cost(3, res) for _ in rows)
print(f"{len(rows)} prompts, 3 s at {res}: ${total:.2f}")
print(json.dumps(body(rows[0])))
What makes the suite useful
Keep prompts that failed in the past. A clip that once rendered the wrong object, or produced a face you disliked, belongs in the set permanently. Add one prompt per feature you depend on, such as a reference tag, a vertical aspect or a first frame.
Render the suite after every change to a prompt template, and keep the outputs in a folder named for the run. Looking at twenty three-second clips takes a few minutes and catches regressions that no assertion can.
- Do not compare clips for equality; Sume's /v1/videos rejects seed, so renders vary.
- Use the same idempotency key prefix per run label, so a rerun of a label never double-bills.
- Pin the model id in the suite file and change it deliberately.
When the price changes
The rates in the script are the repo-documented list prices times 1.25 as read on 2026-10-05. If the pricing docs change, update the two numbers and the totals follow. The arithmetic stays the same: seconds times rate, rounded up to the cent per job, then multiplied by the number of prompts.
A suite is also a cheap way to see whether a different model is worth switching to. Render the same twenty prompts on two ids at their lowest shared resolution and compare the costs and the clips side by side.
Sources
Related posts
More in Pricing
- Price before you pay: four places Sume shows a cost before a job runs
Video models list pricing_skus, Timeline plan returns an estimate, video-filter check is free, and the usage ledger shows the reserve. Where to look and when.
- Price per concurrency slot: Sume Pro $10, Startup $15, Scale $20
Sume plans sell parallelism, not clips. Pro is $40 for 4 slots, Startup $120 for 8, Scale $400 for 20. Compute the plan fee per slot and queue headroom.
- Product ad with sound: Omni Flash $1.88 or Wan 3.0 $2.50 at 1080p
A 10-second 1080p product clip with audio costs $1.88 on Gemini Omni Flash 1.1 and $2.50 on Wan 3.0 on Sume; Wan reaches 30 s and takes audio references.
- Sume queue_full: is money held for the job that was rejected?
A 429 queue_full means the workspace has no accepted-job capacity left. Sume releases or refunds the reservation for the failed admission. How to confirm it.
Written by Sume