Remix cut refused with only a start time: the 120 s budget
Why a remix media cut with start but no end fails remix_cut_too_long, how the 120 second and 20 span limits add up, and when to use video trim instead.

A remix media cut that sends start without end is judged as if the clip ran to 300 seconds, so it fails remix_cut_too_long unless start is at least 180. The excerpt budget is 120 seconds in total, and the admission check fills a missing end with the 300-second source maximum instead of the real clip length.
This follows from the request schema on origin/main and the Remix media docs, both read 2026-10-11. The verb is meant for short evidence excerpts of a reference, not for producing the finished clip.
What cut accepts
cut takes an understanding_id from a completed probe and one of two selectors: start/end, or keep[]. It returns an MP4 of [start, end), or the kept spans joined on a fresh clock, plus a mapping[] that ties each source span to its place in the output.
- Total kept length is at most 120 seconds, summed across spans.
keep[]holds 1 to 20 spans, each withstartandend.label_time: trueburns the source time into every frame, so a reader of the excerpt can say where in the original each moment sits.start/endandkeep[]together returnremix_cut_selector_conflict; anendat or beforestartreturnsremix_cut_range_invalid.
How the 120 seconds add up
The check runs at admission, using only the request. It cannot know the clip length from the body, so a missing start counts as 0 and a missing end counts as 300.
| Request | Total counted | Result |
|---|---|---|
| start 10, end 40 | 30 s | Accepted |
| start 0, end 120 | 120 s | Accepted (the limit is exceeded only above 120) |
| start 0, end 121 | 121 s | Refused: remix_cut_too_long |
| start 10 only | 290 s | Refused: remix_cut_too_long |
| start 180 only | 120 s | Passes this check |
| no start, no end | 300 s | Refused: remix_cut_too_long |
| keep 0-30, 60-90, 100-130 | 90 s | Accepted |
| keep 0-60 and 100-170 | 130 s | Refused: remix_cut_too_long |
| 21 spans of 1 s | 21 s | Refused by the field limit of 20 spans |
The fix is almost always an explicit end
Read the clip length from the probe, then send both ends. If you want the last 20 seconds of a 95-second reference, send start: 75 and end: 95. If you want several beats, put each in keep[] with its own span and keep the sum under 120 seconds.
A start-only request passes only when the implied span, 300 minus start, is 120 or less. That means start of 180 or more, which only makes sense for a long reference. Because the schema cannot see the clip, the safest habit is to never omit end.
When cut is the wrong verb
cut exists to hand an agent or a reviewer a labeled excerpt. For a production trim the docs point elsewhere: Video trim takes start plus one of end or duration, accepts sources up to 1,800 seconds and outputs up to 900 seconds, and lists a public rate of $0.02 per job.
| Remix media cut | Video trim | |
|---|---|---|
| Purpose | Labeled evidence excerpt | Production range cut |
| Output length | Up to 120 s, up to 20 spans | 0.2 s to 900 s, one range |
| Source length | Probe accepts up to 300 s | Up to 1,800 s |
| Burned source time | Yes, with label_time | No |
| Billing | Modal compute | $0.02 per job |
A worked example with three beats
Suppose a 90-second reference ad has a hook at 0 to 8 seconds, a demo at 30 to 50 and a call to action at 80 to 90. As a hypothetical request, keep would hold those three spans and add up to 8 + 20 + 10 = 38 seconds, well inside the budget. With label_time: true, each frame shows where it came from in the original, and mapping[] lists the three source spans against their nominal output times.
The same idea scales to the full budget: twelve 10-second beats make 120 seconds and use 12 of the 20 spans. Eight more beats fit by span count, but not by seconds, so plan on whichever limit you hit first.
Availability
Remix media is flag-gated: the docs say development has it on and production is opt-in, so confirm the routes appear in your environment before you depend on them. Video trim is documented as available on dest and prod.
Sources
Related posts
More in Media tools
- Remix notes lint: FORMAT.md needs a Captions heading
What the remix media notes verb checks: a Captions heading in FORMAT.md, media.sume.com links only, the 200,000 byte cap, and why a lint failure still saves.
- Remix tile: 96 cells per call, and how to count yours
A remix media tile call is refused above 96 cells with remix_tile_too_many_cells. How each selector is counted, worked examples, and ways to split a request.
- Remix tile accepts a reference ingest id; other verbs do not
Use a finished reference ingest id as understanding_id for remix tile, including around without a transcript job. Boundaries and cut still need a probe.
- Which Sume media routes need a flag, and which are on prod?
Remix media, reference ingest and the trending-videos rebuild are flag-gated; video inspect, frames, trim, detach, filter and timeline are on dest and prod.
Written by Sume