Video trim caps: 1800 s in, 900 s out, and the 901 s refusal
Sume video-trim accepts a source up to 1800 seconds and an output up to 900 seconds. The refusal codes you get past either cap and how to split a long cut.

A single Sume video-trim job reads a source of up to 1800 seconds (30 minutes) and writes an output of up to 900 seconds (15 minutes), at least 0.2 s. Ask for a 901-second range and you get video_trim_range_empty; point it at a 31-minute file and the worker returns source_duration_exceeded (Video trim).
Which cap produces which error
| Request | Result |
|---|---|
start: 0, duration: 900, 1800 s source | Accepted |
start: 0, duration: 901 | video_trim_range_empty |
end less than or equal to start | video_trim_range_empty |
end and duration both sent | video_trim_range_conflict |
Neither end nor duration | video_trim_range_required |
| Source longer than 1800 s | source_duration_exceeded |
end after the end of the source | Clamped, warning trim_clamped_to_source |
Covering a full 30-minute source
Two 900-second jobs cover a file at the source cap. Each is a flat per-job fee, so the whole split costs $0.04.
# first half
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: half-1" \
-d '{"video_url": "https://media.sume.com/artifacts/artf_demo/long.mp4", "start": 0, "end": 900}'
# second half
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: half-2" \
-d '{"video_url": "https://media.sume.com/artifacts/artf_demo/long.mp4", "start": 900, "end": 1800}'Notes
- A source over 30 minutes has to be cut elsewhere first; the worker checks the 1800 s cap and returns
source_duration_exceeded. - Use a distinct
Idempotency-Keyper range, or the second call is treated as a retry of the first. - Check the clamp: a
trim_clamped_to_sourcewarning means yourendwas past the file.
Precision, audio and source rules
precision defaults to exact, a frame-accurate re-encode. keyframe is a stream copy whose cut can start up to one GOP early; read actual_start_seconds in the result to re-base your times. audio is keep by default or drop.
video_url must be a media.sume.com artifact or asset of your workspace. An off-host URL such as https://example.com/clip.mp4 is rejected at admit with unsupported_media_source, so import the clip first. The 900-second ceiling applies to duration and to the span from start to end.
Sources
Related posts
More in Media tools
- video-inspect vs video-frames: which returns the still you need
Video inspect gives a probe, 8 default stills at 768 px and optional STT for clips up to 1800 s; video frames gives exact stills at source size up to 300 s.
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
- How to burn captions onto a video with the Sume API
Send a public HTTPS video URL to POST /v1/video-captions and get a job-backed captioned video, timed by speech-to-text or by text you supply.
- How to extract frames from a video with the Sume API
POST /v1/video-frames returns stills at the times you name from one Sume-hosted clip, as durable images at source size. The call is unbilled.
Written by Sume