wan-3.0 duration 1 gives 400: the 2 to 30 s range, 25 cents at 2 s

Sume lists wan-3.0 at 2 to 30 seconds. A 1-second request is a 400 unsupported_capability; a 2-second 720p clip bills 25 cents (list $0.10 per second x 1.25).

5 min readSume
All posts

On Sume, wan-3.0 accepts 2 to 30 seconds. A request for duration: 1 is rejected with 400 unsupported_capability and a details.supported list, and nothing is reserved or billed for it. The shortest clip you can buy is 2 seconds, which at 720p costs 25 cents.

The range and the price

The catalog lists wan-3.0 at $0.10 per second at 720p, $0.05 at 480p and $0.20 at 1080p. Sume bills list x 1.25 and rounds up to the cent. At 720p the product for a 2-second clip is 2 x $0.10 x 1.25 = $0.25 exactly, so there is no rounding. At 3 seconds it is $0.375, which rounds up to 38 cents.

wan-3.0 billable cost at 720p, list $0.10 per second x 1.25, ceil to cents (read 2026-10-08)
DurationArithmeticBillable
1 snot accepted (400 unsupported_capability)none
2 s2 x 0.10 x 1.25 = 0.25$0.25
3 s3 x 0.10 x 1.25 = 0.375$0.38
10 s10 x 0.10 x 1.25 = 1.25$1.25
30 s30 x 0.10 x 1.25 = 3.75$3.75

Check before you submit

If your app lets a user pick a length, clamp it to the model's range instead of letting the API reject it. The model list endpoint returns supported_durations, and the docs tell you to read it before you submit. The snippet below fetches it once and clamps a requested duration. It needs a key, because /v1/videos/models is not a public route.

import os
import requests

def clamp_duration(model: str, wanted: int) -> int:
    r = requests.get(
        "https://api.sume.com/v1/videos/models",
        headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
        timeout=30,
    )
    r.raise_for_status()
    entry = next(m for m in r.json()["data"] if m["id"] == model)
    allowed = entry["supported_durations"]
    return min(max(wanted, min(allowed)), max(allowed))

print(clamp_duration("wan-3.0", 1))  # 2

Where the number comes from

The wan-3.0 entry in the Sume catalog gives resolutions of 480p, 720p and 1080p, aspect ratios of 16:9, 4:3, 1:1, 3:4 and 9:16, and a duration range of 2 to 30 seconds. Its list price is per second and depends on resolution: $0.05 at 480p, $0.10 at 720p and $0.20 at 1080p. Sume multiplies each by 1.25 and rounds the clip total up to the next cent, so a short clip never rounds to zero and a 2-second 480p clip costs 13 cents (0.125 rounded up).

These values come from the catalog data that backs the model list; the docs page for video generation points to GET /v1/videos/models as the place to read them at run time.

What else is in the range

Other models differ. seedance-2.5 takes 4 to 30 seconds, gemini-omni-flash-1.1 takes 3 to 10 seconds at 16:9 or 9:16, and most other catalog models stop at 15 seconds. A port from an API that took 4, 8 or 12 second clips will work on wan-3.0 for all three values; see the Sora seconds and size mapping for those prices.

Cache the model list. Calling it before every submit adds a request for no gain, because the ranges change only when the catalog does.

  • Clamp on the server, not only in the browser.
  • Show the user the minimum price, 25 cents at 720p, if you sell by the clip.
  • On a 400, read details.supported and show it.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume