12 product photos to 4-second clips: price by resolution

Twelve product photos animated into 4-second clips cost $6.00 on Wan 3.0 at 720p. Totals at 480p, 720p and 1080p on Wan 3.0, Omni Flash and Seedance 2.5.

4 min readSume
All posts

Animating 12 product photos into 4-second clips costs $6.00 on Wan 3.0 at 720p ($0.50 each) and $12.00 at 1080p. Seedance 2.5 at 720p, 9:16 costs $27.7344 for the same set.

The photo is the first frame. You send it in frame_images with frame_type: first_frame, and the estimate depends on the model, the resolution, the seconds and, for Seedance, the aspect ratio.

Twelve clips, nine settings

Each clip is 4 seconds. Total = 12 x clip price. Seedance 2.5 is 9:16 and its 4-second length is its minimum.

12 image-to-video clips of 4 seconds (read 2026-10-09)
ModelResolutionOne clipTwelve clips
Wan 3.0480p$0.25$3.00
Wan 3.0720p$0.50$6.00
Wan 3.01080p$1.00$12.00
Gemini Omni Flash 1.1360p$0.15$1.80
Gemini Omni Flash 1.1720p$0.50$6.00
Gemini Omni Flash 1.11080p$0.75$9.00
Seedance 2.5480p$1.0747$12.8965
Seedance 2.5720p$2.3112$27.7344
Seedance 2.51080p$5.6862$68.2344

The request

The body follows the OpenRouter-compatible video shape in the docs. Use one idempotency key per photo.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
photos = ["https://example.com/p1.jpg", "https://example.com/p2.jpg"]

for i, url in enumerate(photos, 1):
    body = {"model": "wan-3.0", "prompt": "Slow push-in, soft light",
            "resolution": "720p", "duration": 4,
            "frame_images": [{"type": "image_url", "image_url": {"url": url},
                              "frame_type": "first_frame"}]}
    r = requests.post("https://api.sume.com/v1/videos", json=body, timeout=60,
                      headers={**H, "Idempotency-Key": f"photo-clip-{i:02d}"})
    print(i, r.status_code)

What to check

Omni Flash starts at 360p, not 480p, so its first row is 360p. Confirm supported_frame_images includes first_frame for the model in GET /v1/videos/models before a batch. Check that every photo URL is a public HTTPS image, because an unreachable URL fails the job rather than the request (image_not_fetchable).

Start with 480p for a look at motion on three photos: 3 Wan 3.0 clips at 480p cost $0.75. Move to 720p or 1080p once a prompt style works.

  • Clips are separate jobs; with a small plan they queue, they do not fail.
  • A failed job is released before capture, a completed clip you dislike is spent.
  • No v1 model takes a seed, so a re-roll is a new generation.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume