OpenRouter video lists 4-8 second clips; Sume model ranges run 2-30s
OpenRouter's video guide shows typical 4-8 second durations. Sume validates duration per model, from 2-30s on Wan 3.0 to 3-10s on Omni 1.1. See the table.

A request that works on OpenRouter's video API can fail with a 400 on Sume for a reason that has nothing to do with the endpoint: the duration. OpenRouter's video guide, read 2026-10-05, lists models such as Veo 3.1, Wan 2.7 and Hailuo 3 with typical durations of 4 to 8 seconds. Sume's /v1/videos surface copies the OpenRouter wire format, but it validates duration against each model's own catalog entry, and the ranges differ a lot.
Sume validates; it does not silently clip
The Sume catalog descriptor lists supported_durations, supported_resolutions and supported_aspect_ratios per model. If a value is not advertised, the request fails with 400 rather than being dropped or rounded. That is good for cost control and a surprise for migrating code that sends one default (say 8 seconds) to every model.
| Sume model id | Duration | Notes |
|---|---|---|
seedance-2.5 | 4-30s | 480p, 720p, 1080p |
seedance-2 | 4-15s | 480p, 720p, 1080p |
kling-3 | 4-15s | 720p, 1080p |
wan-3.0 | 2-30s | Audio; 480p, 720p, 1080p |
minimax-h3-max | 5-15s | Native stereo audio |
gemini-omni-flash-1.1 | 3-10s | Default for sume/auto; 8s default |
h3-max-recast | 5-30s | Equals the source video length |
How duration changes the clip count
Planning a 30-second spot shows why this matters. With 8-second clips you need four generations (30 / 8 = 3.75, rounded up) and three or more cuts to stitch. With a 15-second ceiling you need two. With wan-3.0 or seedance-2.5 you can ask for the full 30 seconds in one job, at the price of one long render that is harder to retry on a single bad second. Cost per second does not change with the count, but retries, reference consistency and edit points do.
Remember the guardrails on the default route. sume/auto resolves to Omni 1.1, with a 3-10 second range and an 8-second default, and generate_audio: false fails there. Passing a 12-second duration to sume/auto is a 400 unsupported_capability, and the error names sume/auto, not the resolved model.
- Read
supported_durationsfromGET /v1/videos/modelsbefore you hard-code a default. - Branch your duration per model id in the client, not one global setting.
- For lengths above 15 seconds, check whether one long job or several stitched clips fits your retry budget.
A quick migration test
Send the shortest and the longest duration you plan to use to each model id in a dry staging run, and assert on the error code. It takes minutes and prevents a nightly batch from failing on item 1 because someone copied an OpenRouter example that assumed 4 to 8 seconds.
Sources
Related posts
More in Developers
- Video edit on Sume: video_url cannot ride with image fields
For gemini-omni-flash-1.1 video-to-video edit, video_url is the source, not a reference. Mixing it with image_url or reference lists fails. Fix and examples.
- Video filter 400 video_filter_ops_empty: send one op or a filtergraph
Video filter 1.0 needs at least one op in ops[] (max 8) or a non-empty filtergraph. POST /v1/video-filter/check returns diagnostics for free before you pay.
- video_inspect: fps 2 and a 24-still cap cover only 12 seconds
At fps 2 video_inspect's 24-still cap covers 12 seconds. Pick fps or explicit at[] times by clip length; a table of coverage from 12 s to 96 s per call.
- video_inspect seek fast vs precise: a quick look with keyframe stills
seek: fast moves each still to the keyframe at or before its instant and skips the decode. Use it for a quick look; precise when timing matters.
Written by Sume