A 20-second 1080p Wan 3.0 job holds $5.00: what returns if it fails
A 20-second Wan 3.0 job at 1080p reserves $5.00 at submit. A successful job captures it; failed jobs release or refund the reservation where applicable.

A 20-second Wan 3.0 job at 1080p reserves $5.00 at submit, and a successful completion captures it. The docs say failed jobs and failed queue admission release or refund the reservation where applicable, so a failure is not a bill (read 2026-10-09).
What the hold is
Sume reserves the estimated amount when it accepts the request: list price times 1.25. For Wan 3.0 that equals the per-second rate times the length, so you can compute the hold before you submit.
| Length | 720p hold | 1080p hold |
|---|---|---|
| 10 s | $1.25 | $2.50 |
| 20 s | $2.50 | $5.00 |
| 30 s | $3.75 | $7.50 |
Check the outcome
Poll to a terminal state, then read usage.cost on success or error on failure. Retrying a failed submit with the same Idempotency-Key makes the retry safe.
import os, time, requests
API = "https://api.sume.com/v1/videos"
H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
body = {"model": "wan-3.0", "prompt": "Time-lapse of a city crossing at night, rain on asphalt, neon reflections", "duration": 20, "resolution": "1080p", "aspect_ratio": "16:9"}
job = requests.post(API, headers={**H, "Idempotency-Key": "city-night-001"}, json=body, timeout=60).json()
deadline = time.time() + 1800
while time.time() < deadline:
time.sleep(30)
job = requests.get(job["polling_url"], headers=H, timeout=60).json()
if job["status"] == "completed":
print(job["unsigned_urls"][0], job["usage"]["cost"])
break
if job["status"] in ("failed", "cancelled"):
print(job["status"], job.get("error"))
breakPlanning balance for a batch
If you send five 20-second 1080p jobs at once, the reservation is 5 x $5.00 = $25.00. At 720p it is $12.50.
A job that fails releases its hold where applicable, so the balance recovers. A job that completes converts the hold into the final charge shown in usage.cost.
The practical rule is simple. Keep the balance above the sum of all in-flight holds, poll to terminal states, and read usage.cost after each success. If a submit returns 402, the balance is too low for the new hold, not for the jobs already running.
Cancel and 402
- Cancel with
POST /v1/jobs/{id}/cancelworks only before generation starts. After that it returns409 job_generation_already_started. - A balance below the hold returns
402 insufficient_credits: you need $5.00 free for this job, not $0. - Several jobs in flight multiply the hold: ten 20-second 1080p jobs reserve $50.00 together.
- Reservation behavior for each case is described in the generation admission docs; read them before building automatic retries.
Sources
Related posts
More in Pricing
- Wan 3.0 for 29 seconds: $1.81 at 480p, $7.25 at 1080p on Sume
Wan 3.0 takes 2 to 30 seconds per job. A 29-second clip costs $1.81 at 480p, $3.63 at 720p and $7.25 at 1080p on Sume. Arithmetic and limits inside.
- Wan 3.0 720p plus Video Upscale vs native 1080p: 8, 12, 30 seconds
Wan 3.0 at 720p plus Sume Video Upscale at $0.009/s costs 53.6% of native 1080p at 12 s: $1.608 vs $3.00. The table covers 8, 12 and 30 seconds.
- Wan 3.0 price per second: 1080p costs 4x the 480p rate
Wan 3.0 is $0.05, $0.10 and $0.20 per second at 480p, 720p and 1080p on fal. Sume bills list x 1.25. Per-clip prices at 5, 15 and 30 seconds.
- Three Wan 480p drafts then one Seedance 2.5 1080p final: $24.13
A 15-second ad drafted three times on Wan 3.0 at 480p ($0.94 each) and finished once on Seedance 2.5 at 1080p ($21.32) costs $24.13 on Sume.
Written by Sume