Animatic on Wan 3.0: six 5 s shots, approve, redo, upgrade

Six 5-second Wan 3.0 shots at 480p cost $1.875 in total, the same as one 30-second job. Split by shot so each frame can be approved alone.

4 min readSume
All posts

Six 5-second Wan 3.0 shots at 480p cost $1.875 in total, $0.3125 each, which is exactly the price of one 30-second 480p job. Splitting an animatic by shot costs nothing extra and lets you reject one shot without paying for the other five (read 2026-10-09).

One 30-second job or six shots

An animatic is a moving storyboard, so the shots matter more than the polish. Wan 3.0 is flat per second, so there is no price penalty for splitting and a clear benefit: each shot gets its own prompt and its own first frame from the storyboard panel.

Wan 3.0 customer price (read 2026-10-09). Six-shot column = 6 x the 5-second price; it equals the 30-second job.
ResolutionOne 5 s shotSix shotsOne 30 s job
480p$0.3125$1.875$1.875
720p$0.625$3.75$3.75
1080p$1.25$7.50$7.50

One request per panel

Loop the panels, give each job its own idempotency key built from the shot number, and submit them in parallel; the admission queue holds back what a plan cannot run yet. This builds the body for one panel.

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": "Shot 3: low angle, the hero steps into the doorway, camera tilts up to the skyline", "duration": 5, "resolution": "480p", "aspect_ratio": "16:9", "frame_images": [{"type": "image_url", "image_url": {"url": "https://example.com/panel-03.png"}, "frame_type": "first_frame"}]}
job = requests.post(API, headers={**H, "Idempotency-Key": "animatic-shot-03"}, 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"))
        break

Approve, redo, then upgrade

A realistic flow: render six shots at 480p ($1.875), redo two of them ($0.625), then upgrade the approved six to 720p ($3.75). The total is $6.25.

Skipping the animatic and rendering six 720p shots directly costs $3.75 with no safety net. If even two shots need a redo at 720p, that adds $1.25.

An animatic exists to catch problems cheaply. The most common are a subject that changes between shots and a camera move that fights the next shot's start frame. Both show up at 480p.

Limits

  • Per-shot jobs do not share continuity: character and light can change between shots unless each panel carries the reference.
  • Wan 3.0 accepts up to 10 reference images per request, which covers a character sheet plus a location.
  • A queue_full response means wait for a terminal job or cancel one you no longer need, then retry with the same key.
  • Re-render only the shots the director rejects at 720p; two rejected shots at 720p add $1.25.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume