Video trim limits on Sume: 1800 s source, 900 s output, error codes

Video trim takes a source up to 1800 seconds and cuts at most 900 seconds, at least 0.2. Here are the limits, the clamp warning and the stable error codes.

5 min readSume
All posts

Sume video trim reads a source up to 1800 seconds and returns an output of 0.2 to 900 seconds. Send start and exactly one of end or duration. An end past the source clamps and returns the warning trim_clamped_to_source. Anything outside the limits fails with a stable code you can branch on.

The limits

The rate is $0.02 per job. The API does not fetch from the open internet, so the source must be a media.sume.com artifact or asset in your workspace.

From docs.sume.com/models/video-trim, read 2026-10-05
LimitValue
Source lengthat most 1800 s
Output length0.2 s to 900 s
start0 or more, in seconds
end and durationsend exactly one
output width and height256 to 2160, exact precision only
output.fps24, 25, 30 or 60, exact precision only

Exact and keyframe

precision: exact is the default. It re-encodes frame-accurately with libx264 and yuv420p. precision: keyframe is a stream copy. The cut can start up to a GOP early, so re-base your times against actual_start_seconds in the result.

audio is keep (default) or drop. Exact precision remuxes the kept audio as AAC. The output conform (width, height, fps) is available only with exact, and sending it with keyframe returns video_trim_output_requires_exact.

The refusal codes

The server compiles ffmpeg itself, which is why client ffmpeg fields are refused rather than ignored.

CodeCause
video_trim_range_requiredno end and no duration
video_trim_range_conflictboth end and duration
video_trim_range_emptyend not after start, or the range is over 900 s
video_trim_output_requires_exactoutput with precision: keyframe
ffmpeg_fields_rejectedvf, filter, ffmpeg, cmd, codec, crf and related fields
source_duration_exceededsource over 1800 s (worker)
unsupported_media_sourcevideo_url is not on the Sume media host

What the result gives you

When the job is result_ready, GET /v1/jobs/:id/result returns kind: video_trim. It carries video_url (a new artf_, never the source), duration_seconds, actual_start_seconds, precision, audio, output, and optional warnings[]. The source does not change, so you can cut the same clip many times for different hooks.

There is no GET /v1/video-trim/:id. You poll the job envelope. Under hosted MCP the tool is video_trim, a write needs an idempotency_key, and the flow is video_trim, then jobs_wait, then jobs_result.

For a 25-minute source, the source limit of 1800 seconds is fine but a 25-minute output is not. Cut parts of at most 900 seconds and join them with Timeline 1.0, which accepts up to 200 video slots.

Which tool for which job

Trim is material preparation, not placement. It does not assemble clips and it does not inspect them.

You needUse
Probe, stills or a transcriptVideo inspect
The audio track as wav or mp3Audio detach
Dim or crop pixelsVideo filter
Several clips in a sequenceTimeline 1.0
One exact frame at time tVideo frames

A trim that will pass

This request cuts eight seconds starting at second two. Add Idempotency-Key on every submit. The default mode is async, so you poll the job; send mode: "sync" to wait up to 30 seconds for a 200.

curl -sS -X POST "https://api.sume.com/v1/video-trim" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: video-trim-limits-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
    "start": 2,
    "duration": 8,
    "precision": "exact"
  }'

Related posts

More in Media tools

All Media tools posts

Written by Sume