Timeline slot under 0.2 s refused: fast-cut hooks for Shorts in Sume
Sume Timeline 1.0 needs every video slot duration to be at least 0.2 s. Merge sub-0.2 s flashes into a neighbor, or hold a still.

A video[] slot in Sume Timeline 1.0 must be at least 0.2 seconds long; the schema's minimum for duration is 0.2. A flash cut of 0.1 seconds, which some fast hooks use, is refused as a validation error on that slot's duration. Merge it into a neighbour, lengthen it to 0.2 seconds or more, or replace it with a hold.
Hook-driven vertical edits tend to be dense. YouTube lists Shorts as vertical video of up to 3 minutes (YouTube Help, read 2026-10-05), and a short opening with several cuts in the first seconds is a common style. The limit is about what the renderer accepts, not about what performs well.
What the limit is
The Timeline 1.0 docs give the program table: video[].duration is the on-screen length, 0.2 seconds or more. At 30 frames per second that is six frames. Transitions follow separate rules: at most 1 second, at most 50 percent of the shorter neighbour, and at least one output frame, with transition_not_frame_aligned for anything below a frame.
| Item | Limit | Frames at 30 fps |
|---|---|---|
| video[].duration | 0.2 s or more | 6 or more |
| transition duration | at most 1 s and 50% of the shorter neighbour | at most 30 |
| transition frame floor | at least one output frame | 1 or more |
| slots per render | 1 to 200 | not applicable |
| adjacent transitions | more than 8 chained is refused | not applicable |
Merging short cuts
If your cut list comes from a beat grid, some entries may be shorter than the floor. The script below folds any slot under 0.2 seconds into the previous one, then rebuilds the starts so they remain strictly increasing and begin at 0. It keeps the total length unchanged.
def merge_short(cuts, floor=0.2):
merged = []
for dur in cuts:
if merged and dur < floor:
merged[-1] += dur
else:
merged.append(dur)
starts, t = [], 0.0
for dur in merged:
starts.append(round(t, 3))
t += dur
return list(zip(starts, merged))
print(merge_short([0.8, 0.1, 0.6, 0.15, 1.2]))Alternatives to a very short cut
Fold the flash into the previous slot and set the picture in the source file, for example by trimming the clip so the flash frames are part of it. Or use a still as a hold of 0.2 seconds or more; stills are static holds in Timeline 1.0 and ignore motion. For a sub-frame-level effect, Sume does not offer a per-frame control through this route.
When not to merge
If the flash is the point of the edit, build it into a single source clip first and import that. Run /plan after any change: it is unbilled, needs no Idempotency-Key and returns segment_count and an estimated cost, but it cannot predict padding or looping warnings that appear only in a real render.
Sources
Related posts
More in Media tools
- Trim an AI clip's slow intro for a Short: keyframe cut or exact cut?
Sume video-trim has two precisions: exact re-encodes to the frame, keyframe is a stream copy that can start a GOP early. Which one to use before a Short.
- Trim an HDR clip: why precision keyframe works and exact does not
Sume video trim refuses HDR sources on the exact re-encode but copies them on keyframe. What each mode keeps, and how to cut an HDR clip without flattening it.
- Trim or filter on a PNG or audio file: the not-a-video refusal
Sume video trim and video filter refuse a still image or a file with no video stream. The reason codes, the probe fields that predict them, and the right tool.
- True pixel art from an AI image: quantize to 16 colors in Pillow
AI models draw pixel-art looks at full resolution. Downscale with NEAREST, quantize to 16 colors without dither, and upscale clean to get real pixel art.
Written by Sume