Wan 3.0 duration -1 is Alibaba's smart length; Sume wants 2 to 30 s
Alibaba's Wan3.0 guide lets duration be -1 for smart length. Sume's wan-3.0 takes whole seconds from 2 to 30, so send a number and know the cost.

Alibaba's Wan3.0 guide says a clip can run up to 30 seconds and that duration set to -1 means smart duration, where the model picks the length (read 2026-10-04). Smart length is convenient, but it makes the bill unpredictable.
Sume's wan-3.0 row takes whole seconds from 2 to 30. -1 is not a valid value, and the minimum is 2. Send an explicit duration, as the video generation docs show.
Cost of picking a length
The per-second rates are $0.0625, $0.125 and $0.25.
| Duration | 480p | 720p | 1080p |
|---|---|---|---|
| 2 s | $0.125 | $0.25 | $0.50 |
| 5 s | $0.3125 | $0.625 | $1.25 |
| 15 s | $0.9375 | $1.875 | $3.75 |
| 30 s | $1.875 | $3.75 | $7.50 |
Choose a duration in code
For a vertical Short, pick the length you will keep, not the maximum. This helper rejects values Sume would.
def pick_duration(seconds: int) -> int:
if seconds == -1:
raise ValueError("-1 is Alibaba's smart duration; send a length")
if not 2 <= seconds <= 30:
raise ValueError("wan-3.0 takes whole seconds from 2 to 30")
return seconds
for s in (5, 30):
print(s, pick_duration(s))If a shot needs more than 30 seconds, generate several clips and join them on Timeline.
Sources
Related posts
More in Developers
- Fetch tool to media input: which URLs Sume accepts
A model can fetch a page, but Sume media inputs must be public HTTPS image or video URLs, not web pages. Here is what each Sume endpoint accepts.
- A Sume webhook arrives before your database knows the job: park it
If job.completed lands before your submit handler stored the job id, keep the verified event in a parked table, answer 2xx, and reconcile when the id is saved.
- What a media MCP server should declare at server/discover
MCP 2026-07-28 adds a required server/discover call. A media server has more to say than versions: async jobs, wait limits, scopes. Where Sume documents each.
- Which Lyria ran? job.model vs job.request.routed_model on Sume
On Sume's Music Router, job.model echoes what you sent and job.request.routed_model names the engine that ran. How to read both and pin a Lyria id.
Written by Sume