duration vs duration_seconds on each Sume video route
/v1/videos takes duration; motion control and lip-sync take duration_seconds; recast and edit read the source clip. One table of what each does.

Sume's video routes do not agree on how a length is sent. POST /v1/videos takes an integer duration in seconds. The Kling 3.0 motion control and MiniMax H3 Max lip-sync routes take duration_seconds, which is a reservation basis and not a setting. H3 Max Recast and Gemini Omni Flash edit read the length from the source clip, and the duration you send is at most a hint. Sending the wrong field or the wrong number gives either a 400 or a bill that does not match the clip.
A good client keeps one small table in code that maps each route to the field it wants and to its allowed range, and validates against it before the request leaves. That moves a rejected request from a round trip to a unit test, and it stops a value that is legal on one route, such as 20 seconds on Wan 3.0, from being sent unchanged to a route where it is out of range, such as H3 Max lip-sync.
The table below is the full map. Keep it close if your code builds requests for more than one model.
The map
All rows come from the Sume route docs and the Video Router catalog.
| Route or model | Field | Range | Role |
|---|---|---|---|
| Text, image or reference to video (/v1/videos) | duration | Per model: Wan 3.0 2 to 30 s, Seedance 2.5 4 to 30 s, Omni 3 to 10 s, Kling 3 4 to 15 s, H3 and H3 Max 5 to 15 s | Sets the clip length |
| Gemini Omni Flash 1.1 edit | duration | Hint only, default 8 s | Reserve estimate; source sets output |
| H3 Max Recast | none to send | Source clip 5 to 30 s | The inspected length of the source |
| Higgsfield Genjutsu motion transfer | none to send | Source 4 to 30 s | Length of the input video, rounded up |
| Kling 3.0 motion control | duration_seconds | 1 to 30 | Reservation basis; the motion video sets the length |
| MiniMax H3 Max lip-sync | duration_seconds | 5 to 14.8 | Reservation basis; the audio sets the length |
The two kinds of field
There are two meanings hidden behind the word duration. On the generation routes it is a request: you ask for a length and the model makes it. On the routes that follow an input, it is a declaration: you tell Sume how long your input is so that the price can be reserved, and the output follows the input.
That is why motion control never forwards the value to the provider, and why lip-sync refuses a value outside its window instead of clamping it. A declaration that is wrong would produce a clip that is cut short, or a reservation that is too small.
Rounding and the bill
Both declared fields round up. Motion control bills ceil(duration_seconds) at $0.1575 per second after the margin, and lip-sync bills the rounded-up seconds at the rate for the chosen resolution. A 7.2 second motion reference is billed as 8 seconds, which is $1.26. A 5.1 second audio file on lip-sync at 768p is billed as 6 seconds, $0.60. Send the real length with decimals when the route allows it, and let the route do the rounding.
Check the length before you send
Measure your input before the request. For video, read the duration from the file's metadata, and for audio, check the length of the voiced file, as in checking a TTS file against the lip-sync window. For the generation routes, read supported_durations for the model from GET /v1/videos/models and snap your value to it. When a length is not in the supported set, change your script or your cut and do not rely on the server to round it for you. The older Video 1.0 alias has its own rule, covered in duration and duration_seconds on Video 1.0.
Sources
Related posts
More in Developers
- Fade in and out on a Timeline render: output fade seconds 0 to 5
Set output.fade_in_seconds and fade_out_seconds (0 to 5 s, sum within the render length). The music bed has its own fade_out_seconds, up to 10.
- Fast-cut Shorts in Timeline: eight chained fades, then a hard cut
Timeline refuses more than 8 adjacent fades with too_many_chained_transitions. Transitions must be 1 s or less and half the shorter neighbour. How to plan cuts.
- Fix an underexposed photo: curves first, AI edit only if needed
Underexposed photo? Try Pillow autocontrast and gamma for free, then an ideogram/ideogram-v4.5 edit at $0.075 only if noise or colour needs more.
- How do I fix one sentence in finished AI narration without redoing it?
Retake just the wrong sentence with a one-cent TTS job, then splice it into the original file with a $0.01 Timeline audio concat using source_in and duration.
Written by Sume