Trim and conform a clip to 1080x1920 at 30 fps in one call
video-trim takes an optional output {width, height, fps} that conforms on the way out, exact precision only. Width and height 256-2160, fps 24, 25, 30 or 60.

Add output: { width, height, fps } to POST /v1/video-trim and the cut is conformed on the way out in the same job. It only works with precision: "exact"; with keyframe the request fails video_trim_output_requires_exact.
This is from the Video trim docs, read 2026-09-30.
What values are allowed?
width and height are 256 to 2160; fps is 24, 25, 30 or 60. Omit output to inherit the source. The cut itself takes start and exactly one of end or duration (0.2 to 900 s). The job costs $0.02.
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: trim-conform-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/source.mp4",
"start": 5,
"duration": 10,
"precision": "exact",
"output": { "width": 1080, "height": 1920, "fps": 30 }
}'Why conform before a Timeline?
Timeline 1.0 renders 1080x1920 by default and, without output.fps, follows the source frame rate. A rate that differs from a source's is met by repeating or dropping frames, reported as output_fps_resamples_sources. Conforming clips first to the rate you will render at avoids that resample.
What does the result confirm?
GET /v1/jobs/:id/result is kind: video_trim with video_url (a new artf_, never the source), duration_seconds, actual_start_seconds, precision, audio, output and optional warnings[]. A range past the source clamps and warns trim_clamped_to_source.
| Field | Values | Needs exact |
|---|---|---|
| output.width / height | 256 to 2160 | Yes |
| output.fps | 24, 25, 30, 60 | Yes |
| audio | keep, drop | No |
| precision | exact, keyframe | - |
Sources
Related posts
More in Developers
- Vercel rewrite to an external API times out at 120 seconds
Vercel proxied rewrites to an external destination time out at 120 seconds with ROUTER_EXTERNAL_TARGET_ERROR. A Sume async submit returns at once.
- Video 1.0 4k resolution error: only 720p and 1080p on that URL
Video 1.0 accepts 720p (default) and 1080p from its legacy vocabulary and rejects 4k. For 4K send a sume/auto request to POST /v1/videos instead.
- Video 1.0 bitrate_mode: still in the shape, rejected by Auto
bitrate_mode is retained in Video 1.0's legacy request shape but Auto rejects it. Omit it, and note that Gemini Omni Flash 1.1 has no bitrate_mode either.
- Video 1.0 duration vs duration_seconds: what if they differ?
Video 1.0 accepts duration and its alias duration_seconds. If you send both they must agree; the value is checked against the Auto serving family.
Written by Sume